(sorry, I'm new new gcc bug reports so I have no clue which triplets shall I
report)

cat shuffe_bug.cpp 
#include<vector>
#include<algorithm>
#include<numeric>
#include<iostream>
int main() {

  std::vector<int> v(1000000,1);
  std::partial_sum(v.begin(),v.end(),v.begin());
  std::random_shuffle(v.begin(),v.end());

  for (std::vector<int>::const_iterator p=v.begin();p!=v.begin()+10;p++)
    std::cout << (*p) << " ";
  std::cout << std::endl;

  return 0;
}

uname -a
Linux lxbuild113.cern.ch 2.6.25.1-pfm080429 #1 SMP Tue May 6 17:53:24 CEST 2008
x86_64 x86_64 x86_64 GNU/Linux
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/bin/c++ -v -O2
-D_GLIBCXX_PARALLEL -fopenmp -pthread shuffe_bug.cpp
Using built-in specs.
Target: x86_64-unknown-linux-gnu
Configured with: /build/LCG/work/gcc-4.3.1/configure
--prefix=/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34
--with-mpfr=/afs/cern.ch/sw/lcg/contrib/mpfr/2.3.1/slc4_amd64_gcc34
--with-gmp=/afs/cern.ch/sw/lcg/contrib/gmp/4.2.2/slc4_amd64_gcc34
Thread model: posix
gcc version 4.3.1 (GCC) 
COLLECT_GCC_OPTIONS='-v' '-O2' '-D_GLIBCXX_PARALLEL' '-fopenmp' '-pthread'
'-shared-libgcc' '-mtune=generic' '-pthread'

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/libexec/gcc/x86_64-unknown-linux-gnu/4.3.1/cc1plus
-quiet -v -D_GNU_SOURCE -D_REENTRANT -D_GLIBCXX_PARALLEL shuffe_bug.cpp -quiet
-dumpbase shuffe_bug.cpp -mtune=generic -auxbase shuffe_bug -O2 -version
-fopenmp -o /tmp/innocent/ccaeIswI.s
ignoring nonexistent directory
"/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../x86_64-unknown-linux-gnu/include"
#include "..." search starts here:
#include <...> search starts here:

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../include/c++/4.3.1

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../include/c++/4.3.1/x86_64-unknown-linux-gnu

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../include/c++/4.3.1/backward
 /usr/local/include
 /afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/include

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/include

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/include-fixed
 /usr/include
End of search list.
GNU C++ (GCC) version 4.3.1 (x86_64-unknown-linux-gnu)
        compiled by GNU C version 4.3.1, GMP version 4.2.2, MPFR version 2.3.1.
warning: GMP header version 4.2.2 differs from library version 4.1.4.
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 430f7ac2667711e9fed5f89e3e054e7c
COLLECT_GCC_OPTIONS='-v' '-O2' '-D_GLIBCXX_PARALLEL' '-fopenmp' '-pthread'
'-shared-libgcc' '-mtune=generic' '-pthread'
 as -V -Qy -o /tmp/innocent/ccHt8TCj.o /tmp/innocent/ccaeIswI.s
GNU assembler version 2.15.92.0.2 (x86_64-redhat-linux) using BFD version
2.15.92.0.2 20040927
COMPILER_PATH=/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/libexec/gcc/x86_64-unknown-linux-gnu/4.3.1/:/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/libexec/gcc/x86_64-unknown-linux-gnu/4.3.1/:/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/libexec/gcc/x86_64-unknown-linux-gnu/:/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/:/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/
LIBRARY_PATH=/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/:/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../lib64/:/lib/../lib64/:/usr/lib/../lib64/:/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../:/lib/:/usr/lib/
Reading specs from
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../libgomp.spec
COLLECT_GCC_OPTIONS='-v' '-O2' '-D_GLIBCXX_PARALLEL' '-fopenmp' '-pthread'
'-shared-libgcc' '-mtune=generic' '-pthread'

/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/libexec/gcc/x86_64-unknown-linux-gnu/4.3.1/collect2
--eh-frame-hdr -m elf_x86_64 -dynamic-linker /lib64/ld-linux-x86-64.so.2
/usr/lib/../lib64/crt1.o /usr/lib/../lib64/crti.o
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/crtbegin.o
-L/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1
-L/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../../../lib64
-L/lib/../lib64 -L/usr/lib/../lib64
-L/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/../../..
/tmp/innocent/ccHt8TCj.o -lstdc++ -lm -lgomp -lgcc_s -lgcc -lpthread -lc
-lgcc_s -lgcc
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib/gcc/x86_64-unknown-linux-gnu/4.3.1/crtend.o
/usr/lib/../lib64/crtn.o

ldd a.out
        libstdc++.so.6 =>
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib64/libstdc++.so.6
(0x00007f5a954d1000)
        libm.so.6 => /lib64/tls/libm.so.6 (0x0000003a00d00000)
        libgomp.so.1 =>
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib64/libgomp.so.1
(0x00007f5a953a3000)
        libgcc_s.so.1 =>
/afs/cern.ch/sw/lcg/contrib/gcc/4.3.1/slc4_amd64_gcc34/lib64/libgcc_s.so.1
(0x00007f5a9528d000)
        libpthread.so.0 => /lib64/tls/libpthread.so.0 (0x0000003a01700000)
        libc.so.6 => /lib64/tls/libc.so.6 (0x0000003a00a00000)
        librt.so.1 => /lib64/tls/librt.so.1 (0x0000003a06100000)
        /lib64/ld-linux-x86-64.so.2 (0x0000003a00800000)

=================================================

unsetenv OMP_NUM_THREADS
./a.out 
8063 522681 545115 829330 854254 199905 143161 41182 625621 683678 
setenv OMP_NUM_THREADS 2
./a.out
141698 99042 418031 167073 981771 346367 857412 676616 162943 49175 
setenv OMP_NUM_THREADS 1
./a.out
1 2 3 4 5 6 7 8 9 10


-- 
           Summary: the parallel version of std::random_shuffle does not
                    shuffle for OMP_NUM_THREADS=1
           Product: gcc
           Version: 4.3.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: libstdc++
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: vincenzo dot innocente at cern dot ch


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=36729

Reply via email to