|
|
Hello !
Sorry for the delay !
Am 24.06.21 um 13:19 schrieb clipka:
..
> Can you please double-check whether these problems are specific to the
> Unix source package (povunix-v3.8.0-beta.668.tar.gz), or whether they
> also occur when building form the "raw" repository source
> (https://github.com/c-lipka/povray/archive/refs/tags/v3.8.0-pre-beta.668.tar.gz)?
>
Yes I can confirm the behavior for clang-10,clang-11 and clang-12.
..
> Yes - and that is very much deliberate. When AMD provided us with the
> AVX/FMA4 optimized code back in mid-2017, they also did some thorough
> performance testing on a very diverse farm of ~20 AMD and ~25 Intel
> machines, and ended up strongly recommending to specifically *NOT* use
> the AVX2/FMA3 optimized code (which had been provided by Intel years
> earlier) on AMD processors, but rather give preference to the portable
> code, in a variant compiler-optimized for AVX.
The real background was probably a bug in the FMA3 implementation of the
first Ryzen [1].
The Ryzen was the first processor from AMD to support FMA3. And FMA4 is
not officially supported via the CPU flags.
In german:
[1]
https://www.heise.de/newsticker/meldung/AMD-bestaetigt-FMA3-Bug-bei-Ryzen-3658407.html
>> Solution:
>>
>> bool CPUInfo::IsIntel()
>> {
>> return gpData->cpuidInfo.vendorId == kCPUVendor_Intel|| kCPUVendor_AMD;
>> }
>
> Um... no, that would be broken on multiple levels. For starters, it
> fails to do what you probably intend it to do (it actually makes the
> function always return `true`, even if the vendor is neither Intel nor
> AMD).
Like :
bool CPUInfo::IsIntel()
{
return true;
}
????
regards
Thomas Debe
Post a reply to this message
|
|