POV-Ray : Newsgroups : povray.beta-test : Technical verification build "v3.8.0-beta.668" - Unix package! : Re: Technical verification build "v3.8.0-beta.668" - Unix package! Server Time
23 Apr 2024 19:16:08 EDT (-0400)
  Re: Technical verification build "v3.8.0-beta.668" - Unix package!  
From: Thomas Debe
Date: 29 Jun 2021 04:15:40
Message: <60dad6ac$1@news.povray.org>
Hello !

>> Yes I can confirm the behavior for clang-10,clang-11 and clang-12.
> 
> "Yes" as in "yes, that's specific to the Unix source package", or as in 
> "yes, they also occur when building from the 'raw' repository source"?
> 
> It can't be both, and to invesigate the matter it would help to know 
> which of the two is the case.

I am sorry, but both packages are affected.

MD5SUM:
8e2b067662f6543885e65b71e4ef1377  povunix-v3.8.0-beta.668.tar.gz
8509e003a48ee55d0068c17064186269  povray-3.8.0-pre-beta.668.tar.gz

povunix:
Compilation settings:
   Build architecture:  x86_64-pc-linux-gnu
   Built/Optimized for: x86_64-pc-linux-gnu
   Compiler vendor:     gnu
   Compiler version:    clang++-10 10.0.1
   Compiler flags:      -pipe -Wno-multichar -Wno-write-strings 
-march=znver2 -mtune=znver2 -O2 -mfma -mavx -mavx2 -pthread
   Libraries:           -lSDL -L/usr/lib64 -lSDL -lpthread -lXpm  -lSM 
-lICE -lX11  -lIlmImf -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 
-lIexMath-2_5 -lIlmThread-2_5 -pthread  -lIlmThread -ltiff -ljpeg -lpng 
-lz -lrt -lm -lboost_thread -lboost_system -lamdlibm -lm -pthread

No output for optimized noise.

Now with additional CXX-Flag -fgnuc-version=5 as Bill P. suggested.

Compilation settings:
   Build architecture:  x86_64-pc-linux-gnu
   Built/Optimized for: x86_64-pc-linux-gnu
   Compiler vendor:     gnu
   Compiler version:    clang++-10 10.0.1
   Compiler flags:      -pipe -Wno-multichar -Wno-write-strings 
-march=znver2 -mtune=znver2 -O2 -fgnuc-version=5 -mfma -mavx -mavx2 -pthread
   Libraries:           -lSDL -L/usr/lib64 -lSDL -lpthread -lXpm  -lSM 
-lICE -lX11  -lIlmImf -lIlmImf-2_5 -lImath-2_5 -lHalf-2_5 -lIex-2_5 
-lIexMath-2_5 -lIlmThread-2_5 -pthread  -lIlmThread -ltiff -ljpeg -lpng 
-lz -lrt -lm -lboost_thread -lboost_system -lamdlibm -lm -pthread

Output:


Dynamic optimizations:
   CPU detected: AMD,SSE2,AVX,AVX2,FMA3
   Noise generator: avx-generic (compiler-optimized)

This -fgnuc version=5 causes __GNUC__ to be defined by the clang 
compiler. The query of the compiler
is done in unix/povconfig/syspovconfig.h.

 From the clang documentation:

-fgnuc-version=

     This flag controls the value of __GNUC__ and related macros. This 
flag does not enable or disable any GCC extensions implemented in Clang. 
Setting the version to zero causes Clang to leave __GNUC__ and other 
GNU-namespaced macros, such as __GXX_WEAK__, undefined.

With the background of

http://news.povray.org/povray.unix/thread/%3C5b92aa0d%40news.povray.org%3E/

building POV-Ray with clang instead of gcc

I would recommend to include clang in unix/povconfig/syspovconfig.h. 
Clang has the ability to handle this since version 3.1.

I don't only compile but also test the runtime behavior of povray. In 
this context I noticed with clang builds of povray that the compiler 
flag -ffast-math has a degrading runtime behavior (more than four times 
longer runtime). This is not caused by the noise code and can't be 
explained at first, -Ofast has the same behavior.

regards
Thomas Debe


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.