clang 11 + CUDA + OpenMP broken?

If I have a source file including a CUDA kernel and OpenMP directives, I can compile it like so on my Linux machine:

/usr/local/cuda/bin/nvcc -arch=sm_30 cutest.cu --compiler-options=-fopenmp

I would expect to be able to compile it with clang 11 like so:

clang -fopenmp --cuda-gpu-arch=sm_30 cutest.cu
-L/usr/local/cuda/lib64 -lcudart -ldl -lrt -pthread

But when I try, I get a number of undefined function symbols: __nv_isnand, __nv_isinfd, __nv_copysign, etc.

Am I doing something wrong?

Geoff

Which version of clang is this exactly?
Can you reproduce the error with trunk?
There was a problem that should have been fixed and back ported to the release branch.

~ Johannes

This is with the release branch (11.0.1, updated Tuesday 17 november). I haven’t tried with the trunk… I will try to test the trunk tomorrow.

Thanks,
Geoff

I just tested the master branch, and it works. So apparently the problem is with the 11.x branch.

I think the problem is we never ported the fix back into 11.
Here is the bug report https://bugs.llvm.org/show_bug.cgi?id=48014