Intel® High Level Design
Support for Intel® High Level Synthesis Compiler, DSP Builder, OneAPI for Intel® FPGAs, Intel® FPGA SDK for OpenCL™
661 Discussions

OneAPI error using #pragma unroll

TTwom
Novice
1,526 Views

I am attempting to compile a program on DevCloud node s001-n081 and I am getting the following error:


aocl-llvm-spirv: /nfs/site/disks/swbld_ops_1/TOR/hld/nightly/20.3api/117.1/l64/p4/acl/llvm-project/llvm/include/llvm/ADT/ilist_iterator.h:138: llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::reference llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::operator*() const [with OptionsT = llvm::ilist_detail::node_options<llvm::BasicBlock, true, false, void>; bool IsReverse = false; bool IsConst = false; llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::reference = llvm::BasicBlock&]: Assertion `!NodePtr->isKnownSentinel()' failed.
PLEASE submit a bug report to https://software.intel.com/en-us/support/priority-support and include the crash backtrace.
Stack dump:
0. Program arguments: /glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv -r /home/u37667/tmp/a-f1a585.spv -o /home/u37667/tmp/a-205202.6579.temp/spirv.fpga.bc
#0 0x00007fe7f92cfe1a llvm::sys::PrintStackTrace(llvm::raw_ostream&) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/llvm/bin/../lib/libLLVM-11git.so+0xe3de1a)
#1 0x00007fe7f92cd664 llvm::sys::RunSignalHandlers() (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/llvm/bin/../lib/libLLVM-11git.so+0xe3b664)
#2 0x00007fe7f92cd7b3 SignalHandler(int) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/llvm/bin/../lib/libLLVM-11git.so+0xe3b7b3)
#3 0x00007fe7fee66890 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x12890)
#4 0x00007fe7f77a7e97 raise (/lib/x86_64-linux-gnu/libc.so.6+0x3ee97)
#5 0x00007fe7f77a9801 abort (/lib/x86_64-linux-gnu/libc.so.6+0x40801)
#6 0x00007fe7f779939a (/lib/x86_64-linux-gnu/libc.so.6+0x3039a)
#7 0x00007fe7f7799412 (/lib/x86_64-linux-gnu/libc.so.6+0x30412)
#8 0x00007fe7f93bb400 llvm::DomTreeBuilder::SemiNCAInfo<llvm::DominatorTreeBase<llvm::BasicBlock, false> >::CalculateFromScratch(llvm::DominatorTreeBase<llvm::BasicBlock, false>&, llvm::DomTreeBuilder::SemiNCAInfo<llvm::DominatorTreeBase<llvm::BasicBlock, false> >::BatchUpdateInfo*) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/llvm/bin/../lib/libLLVM-11git.so+0xf29400)
#9 0x000055d0741a53e3 SPIRV::SPIRVToLLVM::transLLVMLoopMetadata(llvm::Function const*) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xcb3e3)
#10 0x000055d0741abd65 SPIRV::SPIRVToLLVM::transFunction(SPIRV::SPIRVFunction*) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd1d65)
#11 0x000055d0741a99e9 SPIRV::SPIRVToLLVM::transValueWithoutDecoration(SPIRV::SPIRVValue*, llvm::Function*, llvm::BasicBlock*, bool) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xcf9e9)
#12 0x000055d0741ab542 SPIRV::SPIRVToLLVM::transValue(SPIRV::SPIRVValue*, llvm::Function*, llvm::BasicBlock*, bool) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd1542)
#13 0x000055d0741abd32 SPIRV::SPIRVToLLVM::transFunction(SPIRV::SPIRVFunction*) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd1d32)
#14 0x000055d0741a99e9 SPIRV::SPIRVToLLVM::transValueWithoutDecoration(SPIRV::SPIRVValue*, llvm::Function*, llvm::BasicBlock*, bool) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xcf9e9)
#15 0x000055d0741ab542 SPIRV::SPIRVToLLVM::transValue(SPIRV::SPIRVValue*, llvm::Function*, llvm::BasicBlock*, bool) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd1542)
#16 0x000055d0741abd32 SPIRV::SPIRVToLLVM::transFunction(SPIRV::SPIRVFunction*) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd1d32)
#17 0x000055d0741b8aee SPIRV::SPIRVToLLVMDbgTran::transFunction(SPIRV::SPIRVExtInst const*) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xdeaee)
#18 0x000055d0741b062b SPIRV::SPIRVToLLVM::translate() (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd662b)
#19 0x000055d0741b093a llvm::convertSpirvToLLVM(llvm::LLVMContext&, SPIRV::SPIRVModule&, std::string&) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd693a)
#20 0x000055d0741b0a91 llvm::readSpirv(llvm::LLVMContext&, SPIRV::TranslatorOpts const&, std::istream&, llvm::Module*&, std::string&) (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0xd6a91)
#21 0x000055d074160606 main (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0x86606)
#22 0x00007fe7f778ab97 __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b97)
#23 0x000055d07416557d _start (/glob/development-tools/versions/oneapi/beta09/inteloneapi/compiler/2021.1-beta09/linux/lib/oclfpga/linux64/bin/../../llvm/bin/aocl-llvm-spirv+0x8b57d)
Error: SPIRV to LLVM IR FAILED
dpcpp: error: fpga compiler command failed with exit code 1 (use -v to see invocation)

This only is an issue when I am trying to use #pragma unroll to unroll a loop for a hardware compilation. I would appreciate any insight on this anyone might have.

It is a single work item kernel and an example of the use that breaks it is:

int rows[2 * COLS + 3]

#pragma unroll
for(int i = (COLS * 2) + 2; i > 0; --i){
  rows[i] = rows[i-1];
}

The same loop works in OpenCL with the same pragma.

0 Kudos
3 Replies
AnilErinch_A_Intel
1,490 Views

Hi ,

Can you share the command used for compilation so that we can have a look.

Thanks and Regards

Anil


0 Kudos
TTwom
Novice
1,485 Views

The commands used for compilation are:

dpcpp -O2 -g -std=c++17 -fintelfpga -c src/sobel-buffers.cpp -o a.o -DFPGA=1
dpcpp -O2 -g -std=c++17 -fintelfpga a.o -o sobel-buffers.fpga -Xshardware -Xsprofile

0 Kudos
AnilErinch_A_Intel
1,410 Views

Hi,

Could you refer to the examples and style given in the below link and inform us whether the norms are followed as described there.

https://github.com/oneapi-src/oneAPI-samples/tree/master/DirectProgramming/DPC%2B%2BFPGA/Tutorials/Features/loop_unroll


if that doesn't help , would you mind sharing the full code so that our experts can have a look and get back to you.

Thanks and Regards

Anil


0 Kudos
Reply