Nvc++ and stdexec leading to a segfault in my environment but can't pinpoint why

Using WSL2, Ubuntu 22.04, nvc++ 23.1 and/or 23.3 with a 3080, I am running into a segfault that doesn’t show up on the pipeline.

This code, runs just fine on the pipelines V100, but does not on my 3080 with WSL. It seems, that it doesn’t even hit the GPU before it segfaults and I’m lost as to why.

Segfault occurs here, and the problem would seem to be that the code is trying to read memory from a address that doesn’t have read permissions enabled.

I don’t have enough experience with nvc++ to navigate what’s going on here… I feel like WSL might be a problem here but I don’t know. Any ideas? I’m using the exact same Cuda toolkit(12.0), exact same nvc++ version (23.1 and 23.3 both produce this problem).

Turns out unified memory isn’t supported on WSL which is causing this issue. Setting

the env var export CUDA_LAUNCH_BLOCKING=1 has no effect as well, unfortunately. I could try using VMware with a ubuntu OS over WSL I suppose.

edit:

Turns out I needed to just do CUDA_LAUNCH_BLOCKING ./executable and it works.

Excellent, I’m glad you were able to determine the issue.

-Mat

For others reading this, the correct incantation is:

CUDA_LAUNCH_BLOCKING=1 ./executable