getkeops / keops

KErnel OPerationS, on CPUs and GPUs, with autodiff and without memory overflows
https://www.kernel-operations.io
MIT License
1.04k stars 64 forks source link

KeOps cannot find GPU, but the cuda toolkit has been downloaded #316

Open Jancwind opened 1 year ago

Jancwind commented 1 year ago

When importing pykeops, the warnings are as follows: [KeOps] Warning : The default C++ compiler could not be found on your system. You need to either define the CXX environment variable or a symlink to the g++ command. For example if g++-8 is the command you can do import os os.environ['CXX'] = 'g++-8' [KeOps] Warning : Cuda libraries were not detected on the system ; using cpu only mode

If I run pykeops.test_torch_bindings(), then the output is: File "D:\study\software\anaconda3\envs\PyTorch\lib\site-packages\pykeops\torch\generic\generic_red.py", line 77, in forward myconv = keops_binder["nvrtc" if tagCPUGPU else "cpp"]( KeyError: 'nvrtc'

However, I have installed cuda-toolkit 11.6 in the same python env using conda install -c nvidia/label/cuda-11.6.0 cuda-toolkit. I wonder how I can deal with this issue?

jeanfeydy commented 1 year ago

Hi @Jancwind ,

Thanks for your interest in this library! Our official Dockerfile is a good reference on what packages are needed to get a full working configuration with KeOps.

In your case, although you seem to have installed the full cuda toolkit from the correct conda channel (I personally use the package cuda instead of cuda-toolkit, but I do not know if this makes any difference), you seem to lack a basic C++ compiler such as g++ or clang, which is listed as one of our dependencies here. With Ubuntu, this is typically provided by the build-essential package. Alternatively, you may try using conda as discussed here, but I have no experience with this solution.

What do you think?

Jancwind commented 1 year ago

I'm running under Windows, and I have already downloaded cuda-toolkit and visual studio, but Pykeops still cannot identify the C++ compiler and cuda libraries.

jeanfeydy commented 1 year ago

Hi @Jancwind ,

I see. KeOps is still not natively supported on Windows: see #281 for reference. Until we perform the merge, you may work via WSL or Docker: both options work seamlessly.

joeylitalien commented 9 months ago

I am getting the same error on Linux in a fresh venv, anyway to fix this without having to resort to Docker?