intel / intel-graphics-compiler

Other
597 stars 155 forks source link

Compiler crashing on my OpenCL kernel #207

Closed sudden6 closed 2 years ago

sudden6 commented 2 years ago

I'm trying to build the kernel clqueens.cl.txt, but the Intel OpenCL compiler causes a segmentation fault, see backtrace.txt

Release is from: https://github.com/intel/compute-runtime/blob/master/opencl/doc/DISTRIBUTIONS.md#opensuse-leap-153 version 1.0.8708-1.suse.lp153

The kernel should be valid OpenCL C 2.0 and 3.0, the AMD OpenCL compiler based LLVM seems to have no issue with it. In case you find it invalid, I'd expect the compiler to reject the kernel with an error message and not crash.

JacekDanecki commented 2 years ago

Moving to IGC project

haonanya commented 2 years ago

@sudden6 , could you please provide branch name and commits of opencl-clang, SPIRV-LLVM-Translator and llvm you are using? Thanks very much.

sudden6 commented 2 years ago

SPIRV-LLVM Translator commit: 4d43f68a30a510b4e7607351caab3df8e7426a6b

opencl-clang Tag: 10.0.0-2

I'm not sure what LLVM commit is used in the package. I'd be also happy to hear if my code compiles on the newest master branches.

haonanya commented 2 years ago

Hi, @sudden6. When try to build IGC from source or prebuild, there are some build errors. Could you please kindly offer more details about IGC build since I am not familiar with the env setting on opensuse? The backtrace show that libopencl-clang.so.11 is used. I'd like to know:

  1. Which build(source, prebuild) mode are we using? When build mode is prebuild, use llvm-11.0.0 it seems that there are build error when generating opencl-clang.dir/options.cpp.o with missing clang/Basic/OpenCLOptions.h. When build mode is source, OpenCL 3.0 feature macro patch is not applied successfully.
  2. Which branch for SPIRV-LLVM is using?
sudden6 commented 2 years ago

@haonanya I don't really now the exact build setup, since I just installed the package that's linked in DISTRIBUTIONS.md

If you can confirm that the kernel successfully compiles on some other platform or with latest master I'd be happy to close this issue and try that platform.

haonanya commented 2 years ago

Hi, @sudden6. I am using llvm11.0.1, latest opencl-clang 11branch and SPIRV llvm_release_110 source build. I got the similar crash information: [haonanya@shliclel311 33566]$ ../ocl-clang-110/build/bin/clang++ -cc1 -emit-llvm -triple spir-unknown-unknown -finclude-default-header -cl-std=CL3.0 -cl-ext=+__opencl_c_device_enqueue block.cl clang++: /export/users/haonanya/ocl-clang-110/llvm/include/llvm/Support/Casting.h:269: typename llvm::cast_retty<X, Y*>::ret_type llvm::cast(Y*) [with X = clang::BlockExpr; Y = const clang::Expr; typename llvm::cast_retty<X, Y*>::ret_type = const clang::BlockExpr*]: Assertionisa(Val) && "cast() argument of incompatible type!"' failed. PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script. Stack dump:

  1. Program arguments: ../ocl-clang-110/build/bin/clang++ -cc1 -emit-llvm -triple spir-unknown-unknown -finclude-default-header -cl-std=CL3.0 -cl-ext=+__opencl_c_device_enqueue block.cl
  2. parser at end of file
  3. block.cl:1:13: LLVM IR generation of declaration 'relaunch_kernel'
  4. block.cl:1:13: Generating code for declaration 'relaunch_kernel'

    0 0x0000000003837ed6 llvm::sys::PrintStackTrace(llvm::raw_ostream&) /export/users/haonanya/ocl-clang-110/llvm/lib/Support/Unix/Signals.inc:564:22

    1 0x0000000003837f69 PrintStackTraceSignalHandler(void*) /export/users/haonanya/ocl-clang-110/llvm/lib/Support/Unix/Signals.inc:625:1

    2 0x0000000003835ffb llvm::sys::RunSignalHandlers() /export/users/haonanya/ocl-clang-110/llvm/lib/Support/Signals.cpp:68:20

    3 0x0000000003837919 SignalHandler(int) /export/users/haonanya/ocl-clang-110/llvm/lib/Support/Unix/Signals.inc:406:1

    4 0x00007f8a6ae49d80 __restore_rt (/lib64/libpthread.so.0+0x12d80)

    5 0x00007f8a698e593f raise (/lib64/libc.so.6+0x3793f)

    6 0x00007f8a698cfc95 abort (/lib64/libc.so.6+0x21c95)

    7 0x00007f8a698cfb69 _nl_load_domain.cold.0 (/lib64/libc.so.6+0x21b69)

    8 0x00007f8a698dddf6 (/lib64/libc.so.6+0x2fdf6)

    9 0x0000000004007381 llvm::cast_retty<clang::BlockExpr, clang::Expr const>::ret_type llvm::cast<clang::BlockExpr, clang::Expr const>(clang::Expr const) /export/users/haonanya/ocl-clang-110/llvm/include/llvm/Support/Casting.h:269:3

    10 0x000000000411311b getBlockExpr(clang::Expr const*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGOpenCLRuntime.cpp:140:1

    11 0x0000000004113363 clang::CodeGen::CGOpenCLRuntime::emitOpenCLEnqueuedBlock(clang::CodeGen::CodeGenFunction&, clang::Expr const*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGOpenCLRuntime.cpp:166:40

    12 0x0000000003ec8eb3 clang::CodeGen::CodeGenFunction::EmitBuiltinExpr(clang::GlobalDecl, unsigned int, clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGBuiltin.cpp:4134:36

    13 0x000000000403cdfa clang::CodeGen::CodeGenFunction::EmitCallExpr(clang::CallExpr const*, clang::CodeGen::ReturnValueSlot) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGExpr.cpp:4760:42

    14 0x0000000004070a48 (anonymous namespace)::ScalarExprEmitter::VisitCallExpr(clang::CallExpr const*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGExprScalar.cpp:581:34

    15 0x0000000004088c36 clang::StmtVisitorBase<std::add_pointer, (anonymous namespace)::ScalarExprEmitter, llvm::Value>::Visit(clang::Stmt) /export/users/haonanya/ocl-clang-110/build/tools/clang/include/clang/AST/StmtNodes.inc:813:1

    16 0x000000000406fcd0 (anonymous namespace)::ScalarExprEmitter::Visit(clang::Expr*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGExprScalar.cpp:412:57

    17 0x00000000040862b2 clang::CodeGen::CodeGenFunction::EmitScalarExpr(clang::Expr const*, bool) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGExprScalar.cpp:4701:35

    18 0x0000000004022d80 clang::CodeGen::CodeGenFunction::EmitAnyExpr(clang::Expr const*, clang::CodeGen::AggValueSlot, bool) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGExpr.cpp:211:55

    19 0x0000000004022d09 clang::CodeGen::CodeGenFunction::EmitIgnoredExpr(clang::Expr const*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGExpr.cpp:196:63

    20 0x0000000003c1b661 clang::CodeGen::CodeGenFunction::EmitStmt(clang::Stmt const, llvm::ArrayRef<clang::Attr const>) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGStmt.cpp:118:56

    21 0x0000000003c1c72e clang::CodeGen::CodeGenFunction::EmitCompoundStmtWithoutScope(clang::CompoundStmt const&, bool, clang::CodeGen::AggValueSlot) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CGStmt.cpp:418:3

    22 0x0000000003cae388 clang::CodeGen::CodeGenFunction::EmitFunctionBody(clang::Stmt const*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenFunction.cpp:1147:36

    23 0x0000000003caef50 clang::CodeGen::CodeGenFunction::GenerateCode(clang::GlobalDecl, llvm::Function*, clang::CodeGen::CGFunctionInfo const&) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenFunction.cpp:1312:21

    24 0x0000000003cd58c5 clang::CodeGen::CodeGenModule::EmitGlobalFunctionDefinition(clang::GlobalDecl, llvm::GlobalValue*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenModule.cpp:4528:3

    25 0x0000000003cced15 clang::CodeGen::CodeGenModule::EmitGlobalDefinition(clang::GlobalDecl, llvm::GlobalValue*) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenModule.cpp:2890:47

    26 0x0000000003ccddd0 clang::CodeGen::CodeGenModule::EmitGlobal(clang::GlobalDecl) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenModule.cpp:2643:5

    27 0x0000000003cd954a clang::CodeGen::CodeGenModule::EmitTopLevelDecl(clang::Decl*) (.localalias.1) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenModule.cpp:5342:37

    28 0x0000000004c3bcc6 (anonymous namespace)::CodeGeneratorImpl::HandleTopLevelDecl(clang::DeclGroupRef) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/ModuleBuilder.cpp:169:7

    29 0x0000000004c35b69 clang::BackendConsumer::HandleTopLevelDecl(clang::DeclGroupRef) /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenAction.cpp:216:7

    30 0x000000000649a89c clang::ParseAST(clang::Sema&, bool, bool) /export/users/haonanya/ocl-clang-110/clang/lib/Parse/ParseAST.cpp:162:20

    31 0x000000000437a91d clang::ASTFrontendAction::ExecuteAction() /export/users/haonanya/ocl-clang-110/clang/lib/Frontend/FrontendAction.cpp:1057:11

    32 0x0000000004c33cb1 clang::CodeGenAction::ExecuteAction() /export/users/haonanya/ocl-clang-110/clang/lib/CodeGen/CodeGenAction.cpp:1185:1

    33 0x000000000437a285 clang::FrontendAction::Execute() /export/users/haonanya/ocl-clang-110/clang/lib/Frontend/FrontendAction.cpp:954:38

    34 0x00000000043138c8 clang::CompilerInstance::ExecuteAction(clang::FrontendAction&) /export/users/haonanya/ocl-clang-110/clang/lib/Frontend/CompilerInstance.cpp:984:42

    35 0x00000000044f22e8 clang::ExecuteCompilerInvocation(clang::CompilerInstance*) /export/users/haonanya/ocl-clang-110/clang/lib/FrontendTool/ExecuteCompilerInvocation.cpp:278:38

    36 0x00000000021052da cc1_main(llvm::ArrayRef<char const>, char const, void*) /export/users/haonanya/ocl-clang-110/clang/tools/driver/cc1_main.cpp:240:40

    37 0x00000000020fb31b ExecuteCC1Tool(llvm::SmallVectorImpl<char const*>&) /export/users/haonanya/ocl-clang-110/clang/tools/driver/driver.cpp:330:20

    38 0x00000000020fba1c main /export/users/haonanya/ocl-clang-110/clang/tools/driver/driver.cpp:407:26

    39 0x00007f8a698d1813 __libc_start_main (/lib64/libc.so.6+0x23813)

    40 0x00000000020f9bae _start (../ocl-clang-110/build/bin/clang+++0x20f9bae)

    Aborted (core dumped) ` I will look into the issue, thanks.

haonanya commented 2 years ago

Small reproducer is attached. block.cl.txt

haonanya commented 2 years ago

I file an issue https://github.com/llvm/llvm-project/issues/53436.

sudden6 commented 2 years ago

@haonanya Thank you very much!

pszymich commented 2 years ago

Hi, due to comments in llvm/llvm-project#53436 refering to invalid kernel I'm closing the issue.