[Openmp-dev] Using OpenMP target offloading in llvm-8.0.0

Stephane Genaud via Openmp-dev openmp-dev at lists.llvm.org
Wed Nov 13 06:30:23 PST 2019




Hello,

i came across this message on the list and found no better place to ask for help on a similar problem.
I am just experimenting offloading to x86_64 code from a x86_64 host system (ubuntu 18.04).
I have the packages:
- libomp-8-dev , containing among others :
   /usr/lib/llvm-8/lib/libomptarget.so
   /usr/lib/llvm-8/lib/libgomp.so
   /usr/lib/llvm-8/lib/libiomp5.so
   /usr/lib/llvm-8/lib/libomp.so
- clang-8 

I compiled the same offload.c program as the one given in the referenced mail.

My first try was :
$ clang-8 -g -fopenmp -fopenmp-targets=x86_64-pc-linux-gnu offload.c 

which did produce a binary a.out,  but this one fails with the cryptic error message:
$ export LD_LIBRARY_PATH=/usr/lib/llvm-8/lib/
$ ./a.out 
Libomptarget fatal error 1: default offloading policy must switched to mandatory or disabled

Second try, after reading some of the hints was 
$ clang-8 -g -I//usr/lib/llvm-8/include/ -L/usr/lib/llvm-8/lib -Xopenmp-target -march=x86-64 -fopenmp -fopenmp-targets=x86_64-pc-linux-gnu offload.c 

which resulted in the same error.
By the way, i have no clue why -Xopenmp-target -march=x86-64 would be required, which quite seem redundant with -fopenmp_targets.

I went to see the source code at
https://github.com/llvm-mirror/openmp/blob/master/libomptarget/src/interface.cpp  line:56
but still can’t figure out what makes libomptarget unhappy.
In case this is related to ‘device’, i tested omp_get_default_device() which returns 1.

Any help would be appreciated.
Thanks.


> Hi,

> When trying to use openmp target offloading with llvm I get the following error
> *$ cat offload.cpp*
> > #include <omp.h> 
> > int main() { 
> > #pragma omp target teams distribute parallel for 
> > for(int i=0; i<100; i++); 
> > return 0; 
> > } 
> > *$ clang++ -fopenmp -fopenmp-targets=nvptx64-nvidia-cuda 
> > --cuda-path=$CUDA_TOOLKIT_ROOT_DIR offload.cpp -o offload* 
> > *$ ./offload* 
> > Libomptarget fatal error 1: default offloading policy must switched to 
> > mandatory or disabled 
> > *$* 
> I have llvm-8.0.0 installed in my system at LLVM_PATH. I downloaded openmp-8.0.0 source from the llvm download page. To build openmp I used the following command: $ mkdir build && cd build > $ cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=$LLVM_PATH 
> > -DCMAKE_C_COMPILER=$LLVM_PATH/bin/clang -DCMAKE_CXX_COMPILER= $LLVM_PATH/bin/clang++ 
> > -DLIBOMPTARGET_NVPTX_COMPUTE_CAPABILITIES=35,60,70 .. 
> > $ make && make install 
> > $ 
> OpenMP got built without giving any error. But when trying to use target offloading with OpenMP I get the above mentioned fatal error. I tried this on 3 different machines, with same result. -- Thank You. Regards, Alok


More information about the Openmp-dev mailing list