https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107660

            Bug ID: 107660
           Summary: Running binaries compiled with g++11 or later produces
                    different results than g++ version 10 or earlier
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: t3suzuki at ucsd dot edu
  Target Milestone: ---

[gcc version]
$ ./g++ -v
Using built-in specs.
COLLECT_GCC=./g++
COLLECT_LTO_WRAPPER=/home/tomoya-s/gcc-12.2.0/install/libexec/gcc/x86_64-pc-linux-gnu/12.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: ./configure --prefix=/home/tomoya-s/gcc-12.2.0/install
--disable-multilib
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 12.2.0 (GCC)

[the command line that triggers the bug]
% git clone https://github.com/sbeamer/gapbs.git
% cd gapbs
% make bfs
% ./bfs -g 10 -n 1

[the output by using g++-12.2.0 (or g++-11) ]
Generate Time:       0.00282
Build Time:          0.00044
Graph has 1024 nodes and 10496 undirected edges for degree: 10
Source:                  204
    i                0.00001
   td          2     0.00000
   td         59     0.00000
    e                0.00000
   bu        711     0.00003
   bu        123     0.00001
   bu          0     0.00001
    c                0.00000
Trial Time:          0.00017
Average Time:        0.00017

[the output by using g++-10 or earlier or clang++]
Generate Time:       0.00797
Build Time:          0.00102
Graph has 1024 nodes and 10496 undirected edges for degree: 10
Source:                  204
    i                0.00001
   td         15     0.00001
    e                0.00000
   bu        615     0.00004
   bu        264     0.00001
   bu          1     0.00001
    c                0.00000
   td          0     0.00000
Trial Time:          0.00017
Average Time:        0.00017

Of course, the execution time is different.

We expect the numbers 2 and 59 and 711 after td and bu to be the same.
This is because the input and the process itself are the same, and there is no
randomness inside the process (random seed is fixed).

Note that this program uses OpenMP, but even if we disable it, the results will
be different depending on the g++ version as well.

Reply via email to