vcb XeLPG non-determinism
bmwiedemann opened this issue · comments
While working on reproducible builds for openSUSE, I found that
our intel-graphics-compiler
1.0.14062.11 package varied from variations in VCEmulation64.cpp that I traced down to this reproducer with igc-1.0.14508.16 :
cd /home/abuild/rpmbuild/BUILD/build/IGC/VectorCompiler/lib/BiF && for cpu in Gen11 XeHPG XeLP XeHPC Gen9LP XeHP Gen9 Gen8 XeLPG ; do echo -n $cpu: ; for i in $(seq 100) ; do cd /home/abuild/rpmbuild/BUILD/build/IGC/VectorCompiler/lib/BiF && ../../../Release/vcb -o o -cpu $cpu VCBuiltins64.opt.bc ; md5sum o ; done|sort|uniq -c ; done
Gen11: 100 9a9095463c0b6dd5f2028c93dc692b46 o
XeHPG: 100 41c7cd4a685d0b5dc6f5ca85435fb653 o
XeLP: 100 9a9095463c0b6dd5f2028c93dc692b46 o
XeHPC: 100 538f23d13ecab613b6b81eade308ff5a o
Gen9LP: 100 32d2728deb3d1921a9f3b5ac2b9be4d0 o
XeHP: 100 4366882a77a8b2f92348574f2f96f575 o
Gen9: 100 32d2728deb3d1921a9f3b5ac2b9be4d0 o
Gen8: 100 32d2728deb3d1921a9f3b5ac2b9be4d0 o
XeLPG: 2 0a0791dace25d41253f430e3a6876ca3 o
1 48813d22bde7852058ee50bca58e33ab o
1 6bb061d7b1499bbdbfec9dcdee07f7f4 o
1 6bfef90a65eb5cd004a3d423c2d26645 o
2 6c84070de53dc2834aa8b0b2f80a6b6d o
2 b4398c0579f1e3775ab99290b6c14a1b o
79 bb99677103b2465ca33f151d6e6229e0 o
5 be23538d0dfbe65872bcda199e896d13 o
3 c06ef713ad0c419f9caac4e4b5376527 o
3 dcf6f2cc0641c532d56450c2071d6e4e o
1 fc75a6db34701de325d233b2cf6b2cf8 o
or the shorter version
for i in $(seq 30) ; do cd /home/abuild/rpmbuild/BUILD/build/IGC/VectorCompiler/lib/BiF && ../../../Release/vcb -o o -cpu XeLPG VCBuiltins64.opt.bc ; md5sum o ; done|sort|uniq -c|wc -l
4
I found that disabling ASLR with setarch -R
is a workaround to make results deterministic.
I'm unable to reproduce this with your reproducer. This is what I tried:
$ osc build
$ osc shell
$ cd /home/abuild/rpmbuild/BUILD/build/IGC/VectorCompiler/lib/BiF && for cpu in Gen11 XeHPG XeLP XeHPC Gen9LP XeHP Gen9 Gen8 XeLPG ; do echo -n $cpu: ; for i in $(seq 100) ; do cd /home/abuild/rpmbuild/BUILD/build/IGC/VectorCompiler/lib/BiF && ../../../Release/vcb -o o -cpu $cpu VCBuiltins64.opt.bc ; md5sum o ; done|sort|uniq -c ; done
LLVM ERROR: Failed to Parse IR
md5sum: o: No such file or directory
LLVM ERROR: Failed to Parse IR
md5sum: o: No such file or directory
LLVM ERROR: Failed to Parse IR
md5sum: o: No such file or directory
LLVM ERROR: Failed to Parse IR
md5sum: o: No such file or directory
LLVM ERROR: Failed to Parse IR
md5sum: o: No such file or directory
Am I missing something?
IIRC, I ran it after a full build with cmake
+ make
https://code.opensuse.org/package/intel-graphics-compiler/blob/master/f/intel-graphics-compiler.spec#_142
Many thanks for find the issue - I can reproduce it locally. Working on it.
Fix was merged in 4354d0b, locally failure is no more reproduced after this commit. Could you please check?
I tested that the patch indeed made the intel-graphics-compiler
package build reproducible.