[SYCL-MLIR][RODINIA]: Rodinia performance benchmarks for SYCL #7641
Open
Description
The Rodinia benchmarks have been ported to SYCL and are available publicly at: https://github.com/zjin-lcf/Rodinia_SYCL.
I have forked the repository and modified the Makefiles to be able to compile the benchmarks with the Intel clang++
SYCL compiler and with the SYCL-MLIR
compiler. The fork with the required changes (use branch sycl_mlir) is at: https://github.com/etiotto/Rodinia_SYCL/tree/sycl_mlir.
We can initially focus on 5 bmks: backprop
, gaussian
, particlefilter
, streamcluster
and lud
. These 5 bmks compile and run cleanly using the clang++ SYCL Intel compiler, and gaussian
also compiles and runs when the SYCL-MLIR/cgeist compiler is used. The remaining 4 bmks fail to compile, with the same symptom:
/iusers/etiotto/intel-llvm/build/bin/clang++ -w -fsycl -fsycl-targets=spir64-unknown-unknown-syclmlir -std=c++17 -Wall -DBLOCK_SIZE=256 -O3 ex_particle_SYCL_single_seq.cpp -c
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0. Program arguments: /localdisk2/etiotto/intel-llvm/build/bin/cgeist -emit-llvm -w ex_particle_SYCL_single_seq.cpp -o /tmp/ex_particle_SYCL_single_seq-d3a65b.bc --args -cc1 -triple spir64-unknown-unknown-syclmlir -aux-triple x86_64-unknown-linux-gnu -fsycl-is-device -fdeclare-spirv-builtins -mllvm -sycl-opt -fenable-sycl-dae -fsycl-instrument-device-code -Wno-sycl-strict -fsycl-int-header=/tmp/ex_particle_SYCL_single_seq-header-af3a7d.h -fsycl-int-footer=/tmp/ex_particle_SYCL_single_seq-footer-6eb86f.h -sycl-std=2020 -fsycl-unique-prefix=9204d406c7a65583 -Wspir-compat -emit-llvm-bc -emit-llvm-uselists -disable-free -clear-ast-before-backend -main-file-name ex_particle_SYCL_single_seq.cpp -fsycl-use-main-file-name -full-main-file-name ex_particle_SYCL_single_seq.cpp -mrelocation-model static -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -fno-verbose-asm -mconstructor-aliases -aux-target-cpu x86-64 -mllvm -treat-scalable-fixed-error-as-warning -debugger-tuning=gdb -resource-dir /localdisk2/etiotto/intel-llvm/build/lib/clang/16 -internal-isystem /iusers/etiotto/intel-llvm/build/bin/../include/sycl -internal-isystem /iusers/etiotto/intel-llvm/build/bin/../include -D BLOCK_SIZE=256 -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8 -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8/x86_64-redhat-linux -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8/backward -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8 -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8/x86_64-redhat-linux -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../include/c++/8/backward -internal-isystem /localdisk2/etiotto/intel-llvm/build/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -internal-isystem /localdisk2/etiotto/intel-llvm/build/lib/clang/16/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -Wall -w -std=c++17 -fdeprecated-macro -fdebug-compilation-dir=/nfs/site/home/etiotto/projects/Rodinia_SYCL/sycl/particlefilter -ferror-limit 19 -fgnuc-version=4.2.1 -no-opaque-pointers -fcxx-exceptions -fexceptions -fcolor-diagnostics -vectorize-loops -vectorize-slp -faddrsig -D __GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/ex_particle_SYCL_single_seq-d3a65b.bc -x c++ ex_particle_SYCL_single_seq.cpp
1. <eof> parser at end of file
#0 0x00007fa77cd73f53 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/localdisk2/etiotto/intel-llvm/build/bin/../lib/libLLVMSupport.so.16git+0x1d4f53)
#1 0x00007fa77cd721c0 llvm::sys::RunSignalHandlers() (/localdisk2/etiotto/intel-llvm/build/bin/../lib/libLLVMSupport.so.16git+0x1d31c0)
#2 0x00007fa77cd7443f SignalHandler(int) Signals.cpp:0:0
#3 0x00007fa793942b20 __restore_rt sigaction.c:0:0
#4 0x00007fa785e75233 mlir::MemRefType::getElementType() const (/localdisk2/etiotto/intel-llvm/build/bin/../lib/libMLIRIR.so.16git+0xc9233)
#5 0x00000000004457d2 isSYCLInheritType(mlir::Type&, mlir::Value&) driver.cc:0:0
#6 0x00000000004332f1 MLIRScanner::GetAddressOfBaseClass(mlir::Value, clang::CXXRecordDecl const*, llvm::ArrayRef<clang::Type const*>, llvm::ArrayRef<bool>) (/localdisk2/etiotto/intel-llvm/build/bin/cgeist+0x4332f1)
#7 0x0000000000430465 MLIRScanner::init(mlir::FunctionOpInterface, FunctionToEmit const&) (/localdisk2/etiotto/intel-llvm/build/bin/cgeist+0x430465)
#8 0x000000000044a1b5 MLIRASTConsumer::run() (/localdisk2/etiotto/intel-llvm/build/bin/cgeist+0x44a1b5)
#9 0x00007fa776ae1da0 clang::ParseAST(clang::Sema&, bool, bool) (/localdisk2/etiotto/intel-llvm/build/bin/../lib/../lib/libclangParse.so.16git+0x38da0)
#10 0x00007fa782d53221 clang::FrontendAction::Execute() (/localdisk2/etiotto/intel-llvm/build/bin/../lib/libclangFrontend.so.16git+0x12c221)
#11 0x00000000004549a8 processInputFiles(llvm::cl::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, llvm::cl::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, bool, llvm::cl::parser<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>> const&, mlir::MLIRContext&, mlir::OwningOpRef<mlir::ModuleOp>&, llvm::DataLayout&, llvm::Triple&, char const*, bool) driver.cc:0:0
#12 0x000000000044fb2e main (/localdisk2/etiotto/intel-llvm/build/bin/cgeist+0x44fb2e)
#13 0x00007fa77bece493 __libc_start_main (/lib64/libc.so.6+0x23493)
#14 0x000000000042d32e _start (/localdisk2/etiotto/intel-llvm/build/bin/cgeist+0x42d32e)
clang-16: error: unable to execute command: Segmentation fault (core dumped)
clang-16: error: cgeist command failed due to signal (use -v to see invocation)
clang version 16.0.0 (https://github.com/etiotto/intel-llvm.git 1bc16875da18bf80d183cb59744e95f9273faa51)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /iusers/etiotto/intel-llvm/build/bin
clang-16: error: unable to execute command: Segmentation fault (core dumped)
clang-16: note: diagnostic msg: Error generating preprocessed source(s).
make: *** [Makefile:58: ex_particle_SYCL_single_seq.o] Error 1
######## Finish particlefilter #########