Investigation with CMake
I am now pretty sure that linking is a problem. Because there are the following two scripts that CMake essentially generates, and removing the .rsp files solves the issue for me.
# wrong script
/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/bin/nvcc -forward-unknown-to-host-compiler "--generate-code=arch=compute_52,code=[compute_52,sm_52]" -MD -MT CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o -MF CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o.d -x cu -c /home/jayesh/openacc-cuda-interop/src/saxpy_cuda.cu -o CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o
/usr/bin/ar qc libsaxpy_cuda.a CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o
/usr/bin/ranlib libsaxpy_cuda.a
/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/bin/nvc -acc -MD -MT CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o -MF CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o.d -o CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o -c /home/jayesh/openacc-cuda-interop/src/openacc_c_main.c
/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/bin/nvc++ -Minfo=accel -acc -cuda @CMakeFiles/openacc_c_main.dir/objects1.rsp -o openacc_c_main @CMakeFiles/openacc_c_main.dir/linkLibs.rsp
# correct script
/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/bin/nvcc -forward-unknown-to-host-compiler "--generate-code=arch=compute_52,code=[compute_52,sm_52]" -MD -MT CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o -MF CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o.d -x cu -c /home/jayesh/openacc-cuda-interop/src/saxpy_cuda.cu -o CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o
/usr/bin/ar qc libsaxpy_cuda.a CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o
/usr/bin/ranlib libsaxpy_cuda.a
/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/bin/nvc -acc -MD -MT CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o -MF CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o.d -o CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o -c /home/jayesh/openacc-cuda-interop/src/openacc_c_main.c
/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/bin/nvc++ -Minfo=accel -acc -cuda CMakeFiles/openacc_c_main.dir/src/openacc_c_main.c.o CMakeFiles/saxpy_cuda.dir/src/saxpy_cuda.cu.o -o openacc_c_main
And the only different is the last line. So, next step would be to figure out what is in those .rsp files which causes these issues. Going by the current contents of linkLibs
# linkLibs.rsp
-L/opt/nvidia/hpc_sdk/Linux_x86_64/25.1/compilers/lib libsaxpy_cuda.a -lcudadevrt -lcudart_static -lrt -lpthread -ldl -lnvomp -ldl -lnvhpcatm -latomic -lpthread -lnvcpumath -lnsnvc -lnvc
I'm pretty sure we are running into some linking issue. I suspect that your effort of modifying the CMAKE_LINK_EXECUTABLE is on the correct path, but it is not enough probably. We need to check which linker flags are being passed and how.
Edited by Jayesh Badwaik