|
|
In article <40b87180$1@news.povray.org> , use### [at] domaininvalid wrote:
> If you look at the end of a review of Opterons at
> http://www.linuxhardware.org/Features/03/12/17/189239.shtml, you can see
> benchmarks done with Pov-Ray compiled for x86-64 and for regular x86,
> using the same scene description. The images are non-identical, and I'd
> like to know why this is; is it just because all calculations are done
> with 64 bit precision, as the article says, or are there other
> differences in Pov-Ray's behaviour on x86-64 systems?
Their observation that POV-Ray yields slightly different results is correct.
Actually, this is the case whenever you compare renders on any two different
processors. It is also true that comparing a 32 bit and a 64 bit compile on
POV-Ray on an AMD x86 system running in 64 bit mode yields differences.
However, the statement
"It seems that POV-Ray was not written with fixed precision, so the image on
the right has greater precision in its calculations than the left one. This
is apparent most in the shadowing. If you zoom in on shadowed areas, you'll
notice a smoother gradient in the colors. From these results we see that not
only do you get greater precision for free, it's actually "cheaper" and
completes faster than the 32-bit version."
is pure nonsense. No fact at all, just random speculation by someone who
obviously has no understanding of the benchmark he ran. The "64 bit" refer
to the integer unit and the memory addressing capability of a processor,
they have absolutely nothing to do with the floating-point capabilities of a
processor.
To actually explain the differences generated on the same processor when
running in 64 bit vs. 32 bit mode, one needs (unavailable!) details about
the floating-point precision provided by the logic on the processor itself
as well as possible differences of code generated by the compiler used when
targeting a different instruction (sub)set. For certain operations like
division and square-root computation of floating-point numbers, only a
certain minimum precision is required. This is in particular relevant when
performing many computation in series. POV-Ray does not perform rounding of
those results, and as such always uses the maximum floating-point precision
provided by the hardware.
Nevertheless, a floating-point number still has the exactly same size and
bit representation regardless of the processor being "64 bit" or "32 bit"
because as said above already, the "64 bit" only refers to the integer size
supported. In order to understand why floating-point numbers do only have a
certain precision and the order of computations can change that noticeably,
in-depth understanding of the math behind them is needed. So I am not going
to explain this here.
Thorsten
____________________________________________________
Thorsten Froehlich
e-mail: mac### [at] povrayorg
I am a member of the POV-Ray Team.
Visit POV-Ray on the web: http://mac.povray.org
Post a reply to this message
|
|