Ticket #76 (closed defect: fixed)

Opened 6 years ago

Last modified 6 years ago

platform dependence for number of reading nodes

Reported by: gunnar Owned by: gnugo
Priority: normal Milestone: 3.7.9
Component: source Version:
Severity: normal Keywords:
Cc: patch: yes

Description

As discussed in the thread starting with  http://lists.gnu.org/archive/html/gnugo-devel/2006-01/index.html there's a small difference in the number of reading nodes between "Gcc version 4.0.3 20041201 (Debian Testing) on a Intel(R) Pentium(R) D CPU 3.20GHz." and a set of other platforms.

There are deviations in nngs.tst, century2002.tst, and olympiad2004.tst.

Attachments

arend_7_9.7.diff Download (1.8 KB) - added by arend 6 years ago.
Carefully normalize combinable pattern values to integers

Regression Results

Attachment Rev. PASS FAIL Nodes Status
arend_7_9.7.diff Download never tested

Change History

comment:1 Changed 6 years ago by gunnar

The deviations are more exactly in century2002:190, olympiad2004:501, and nngs:1620.

comment:2 Changed 6 years ago by gunnar

A further localization of the century2002:190 deviation is to change MIN_READING_NODES_TO_REPORT in cache.h to 0 and then run

../interface/gnugo -l games/century21-2002/gnugo-katsunari.sgf -L 26 --decide-owl C3 -d0x8000

This turns up an extra

defend B3(B3) = 5 C1 , 1 nodes W:D3 B:C2 W:C4 B:B4 W:D2 B:A3 W:B2 B:B5 W:B3

for the "common" platforms. This happens in the checking of constraints (possibly implicit ones like move safety) for owl patterns. There might be a difference in which patterns are included in pattern lists, but this is so far uncertain.

comment:3 Changed 6 years ago by arend

I can reproduce the difference on a single machine. For century2002:190, I get

  • 835219 reading nodes when compiled with -O2 -g
  • 835220 reading nodes when complied with -O2 -g -march=pentium-m (my default setting)

This is with gcc (GCC) 4.0.2 20050901 (prerelease) (SUSE Linux).

Changed 6 years ago by arend

Carefully normalize combinable pattern values to integers

comment:4 Changed 6 years ago by arend

  • patch set

As usual, this turned out to be instable floating point comparisons. Owl pattern values are unfortunately stored as floating point. This isn't usually a problem, since they all have integer values. Except that valuate_combinable_pattern_chain() computed the value internally as float and didn't use gg_normalize_float2int when converting back to integer.

This is fixed by the attached arend_7_9.7.diff, which also improves the output of dump_pattern_list(list) a little.

comment:5 Changed 6 years ago by arend

  • Status changed from new to closed
  • Resolution set to fixed

comment:6 Changed 6 years ago by gunnar

  • Milestone changed from 3.8 to 3.7.9
Note: See TracTickets for help on using tickets.