[GRASS-dev] [GRASS GIS] #2854: results in winGRASS7 32bit vs 64bit: should they be identical?

GRASS GIS trac at osgeo.org
Mon Feb 29 04:30:34 PST 2016


#2854: results in winGRASS7 32bit vs 64bit: should they be identical?
---------------------+---------------------------------
  Reporter:  hellik  |      Owner:  grass-dev@…
      Type:  defect  |     Status:  new
  Priority:  normal  |  Milestone:  7.0.4
 Component:  Raster  |    Version:  svn-releasebranch70
Resolution:          |   Keywords:
       CPU:  x86-64  |   Platform:  MSWindows 7
---------------------+---------------------------------

Comment (by hellik):

 Replying to [comment:12 mmetz]:
 > Replying to [comment:9 glynn]:
 > > Replying to [comment:7 neteler]:
 > >
 > > > Doesn't this qualify for "basically identical results as much as
 different architectures can achieve"?
 > >
 > > In theory, it should be possible to obtain identical results on any
 architecture using IEEE-754 floating-point for calculations using only +,
 -, *, / and sqrt() (no transcendental functions such as sin, cos, log,
 exp, etc). But that may have a noticeable performance cost (e.g. using
 -ffloat-store to discard excess precision, forgoing certain optimisations,
 etc).
 >
 > According to the GCC compiler options used for WinGRASS, WinGRASS does
 not necessarily adhere to IEEE-754 standards, see
 [https://gcc.gnu.org/wiki/FAQ#PR323]
 >
 > The results are thus as precise as requested per GCC compiler options
 for the given architecture. The same GCC compiler options can lead to
 different results under different architectures.
 >
 > Generally, with limited fp precision,
 >
 > (a * b) / c != a * (b / c)
 >
 > I tested this with r.watershed and got differences in the range also
 observed between 32bit and 64bit architectures. The differences between
 architectures are thus within the expected range of floating-point
 results. Identical results for different architectures could maybe
 obtained with gcc -fexcess-precision=standard -std=c99.
 >
 > In other words, the results obtained with WinGRASS 32bit and WinGRASS
 64bit are both correct, even if they differ from each other. The results
 are as precise as possible / as requested.

 >Identical results for different architectures could maybe
  obtained with gcc -fexcess-precision=standard -std=c99.

 should this be tested?

--
Ticket URL: <https://trac.osgeo.org/grass/ticket/2854#comment:13>
GRASS GIS <https://grass.osgeo.org>



More information about the grass-dev mailing list