pythonlinuxanacondaubuntu-22.04pycuda

How can I solve this error of pycuda installation


I'm trying to install pycuda on Ubuntu 22.04 on an anaconda environment, and I get the following error:

pip install pycuda

Building wheels for collected packages: pycuda
  Building wheel for pycuda (pyproject.toml) ... error
  error: subprocess-exited-with-error
  
  × Building wheel for pycuda (pyproject.toml) did not run successfully.
  │ exit code: 1
  ╰─> [153 lines of output]
      *************************************************************
      *** I have detected that you have not run configure.py.
      *************************************************************
      *** Additionally, no global config files were found.
      *** I will go ahead with the default configuration.
      *** In all likelihood, this will not work out.
      ***
      *** See README_SETUP.txt for more information.
      ***
      *** If the build does fail, just re-run configure.py with the
      *** correct arguments, and then retry. Good luck!
      *************************************************************
      *** HIT Ctrl-C NOW IF THIS IS NOT WHAT YOU WANT
      *************************************************************
      Continuing in 10 seconds...
      Continuing in 9 seconds...
      Continuing in 8 seconds...
      Continuing in 7 seconds...
      Continuing in 6 seconds...
      Continuing in 5 seconds...
      Continuing in 4 seconds...
      Continuing in 3 seconds...
      Continuing in 2 seconds...
      Continuing in 1 seconds...
      running bdist_wheel
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-cpython-38
      creating build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/__init__.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/driver.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/curandom.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/_mymako.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/reduction.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/gpuarray.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/characterize.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/elementwise.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/compiler.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/autoprimaryctx.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/cumath.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/tools.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/_cluda.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/autoinit.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/scan.py -> build/lib.linux-x86_64-cpython-38/pycuda
      copying pycuda/debug.py -> build/lib.linux-x86_64-cpython-38/pycuda
      creating build/lib.linux-x86_64-cpython-38/pycuda/gl
      copying pycuda/gl/__init__.py -> build/lib.linux-x86_64-cpython-38/pycuda/gl
      copying pycuda/gl/autoinit.py -> build/lib.linux-x86_64-cpython-38/pycuda/gl
      creating build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/inner.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/packeted.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/cg.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/__init__.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/coordinate.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/operator.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      copying pycuda/sparse/pkt_build.py -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      creating build/lib.linux-x86_64-cpython-38/pycuda/compyte
      copying pycuda/compyte/__init__.py -> build/lib.linux-x86_64-cpython-38/pycuda/compyte
      copying pycuda/compyte/dtypes.py -> build/lib.linux-x86_64-cpython-38/pycuda/compyte
      copying pycuda/compyte/array.py -> build/lib.linux-x86_64-cpython-38/pycuda/compyte
      running egg_info
      writing pycuda.egg-info/PKG-INFO
      writing dependency_links to pycuda.egg-info/dependency_links.txt
      writing requirements to pycuda.egg-info/requires.txt
      writing top-level names to pycuda.egg-info/top_level.txt
      reading manifest file 'pycuda.egg-info/SOURCES.txt'
      reading manifest template 'MANIFEST.in'
      /tmp/pip-build-env-h2ruo4sj/overlay/lib/python3.8/site-packages/setuptools/_distutils/dist.py:266: UserWarning: Unknown distribution option: 'test_requires'
        warnings.warn(msg)
      warning: no files found matching 'doc/source/*.rst'
      warning: no files found matching 'doc/source/conf.py'
      warning: no files found matching 'doc/source/_static/*.css'
      warning: no files found matching 'doc/source/_templates/*.html'
      warning: no files found matching '*.cpp' under directory 'bpl-subset/bpl_subset/boost'
      warning: no files found matching '*.html' under directory 'bpl-subset/bpl_subset/boost'
      warning: no files found matching '*.inl' under directory 'bpl-subset/bpl_subset/boost'
      warning: no files found matching '*.txt' under directory 'bpl-subset/bpl_subset/boost'
      warning: no files found matching '*.h' under directory 'bpl-subset/bpl_subset/libs'
      warning: no files found matching '*.ipp' under directory 'bpl-subset/bpl_subset/libs'
      warning: no files found matching '*.pl' under directory 'bpl-subset/bpl_subset/libs'
      adding license file 'LICENSE'
      writing manifest file 'pycuda.egg-info/SOURCES.txt'
      creating build/lib.linux-x86_64-cpython-38/pycuda/cuda
      copying pycuda/cuda/pycuda-complex-impl.hpp -> build/lib.linux-x86_64-cpython-38/pycuda/cuda
      copying pycuda/cuda/pycuda-complex.hpp -> build/lib.linux-x86_64-cpython-38/pycuda/cuda
      copying pycuda/cuda/pycuda-helpers.hpp -> build/lib.linux-x86_64-cpython-38/pycuda/cuda
      copying pycuda/sparse/pkt_build_cython.pyx -> build/lib.linux-x86_64-cpython-38/pycuda/sparse
      running build_ext
      building '_driver' extension
      creating build/temp.linux-x86_64-cpython-38
      creating build/temp.linux-x86_64-cpython-38/bpl-subset
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/python
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/python/src
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/python/src/converter
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/python/src/object
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/smart_ptr
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/smart_ptr/src
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/system
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/system/src
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/thread
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/thread/src
      creating build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/thread/src/pthread
      creating build/temp.linux-x86_64-cpython-38/src
      creating build/temp.linux-x86_64-cpython-38/src/cpp
      creating build/temp.linux-x86_64-cpython-38/src/wrapper
      gcc -pthread -B /home/iovi/anaconda3/envs/openmmlab/compiler_compat -Wl,--sysroot=/ -Wsign-compare -fwrapv -Wall -O3 -DNDEBUG -fPIC -DBOOST_ALL_NO_LIB=1 -DBOOST_THREAD_BUILD_DLL=1 -DBOOST_MULTI_INDEX_DISABLE_SERIALIZATION=1 -DBOOST_PYTHON_SOURCE=1 -Dboost=pycudaboost -DBOOST_THREAD_DONT_USE_CHRONO=1 -DPYGPU_PACKAGE=pycuda -DPYGPU_PYCUDA=1 -DHAVE_CURAND=1 -Isrc/cpp -Ibpl-subset/bpl_subset -I/usr/local/cuda-11.8/include -I/tmp/pip-build-env-h2ruo4sj/overlay/lib/python3.8/site-packages/numpy/core/include -I/home/iovi/anaconda3/envs/openmmlab/include/python3.8 -c bpl-subset/bpl_subset/libs/python/src/converter/arg_to_python_base.cpp -o build/temp.linux-x86_64-cpython-38/bpl-subset/bpl_subset/libs/python/src/converter/arg_to_python_base.o
      gcc: fatal error: cannot execute ‘cc1plus’: execvp: No existe el archivo o el directorio
      compilation terminated.
      /tmp/pip-build-env-h2ruo4sj/overlay/lib/python3.8/site-packages/setuptools/command/build_py.py:207: _Warning: Package 'pycuda.cuda' is absent from the `packages` configuration.
      !!
      
              ********************************************************************************
              ############################
              # Package would be ignored #
              ############################
              Python recognizes 'pycuda.cuda' as an importable package[^1],
              but it is absent from setuptools' `packages` configuration.
      
              This leads to an ambiguous overall configuration. If you want to distribute this
              package, please make sure that 'pycuda.cuda' is explicitly added
              to the `packages` configuration field.
      
              Alternatively, you can also rely on setuptools' discovery methods
              (for example by using `find_namespace_packages(...)`/`find_namespace:`
              instead of `find_packages(...)`/`find:`).
      
              You can read more about "package discovery" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/package_discovery.html
      
              If you don't want 'pycuda.cuda' to be distributed and are
              already explicitly excluding 'pycuda.cuda' via
              `find_namespace_packages(...)/find_namespace` or `find_packages(...)/find`,
              you can try to use `exclude_package_data`, or `include-package-data=False` in
              combination with a more fine grained `package-data` configuration.
      
              You can read more about "package data files" on setuptools documentation page:
      
              - https://setuptools.pypa.io/en/latest/userguide/datafiles.html
      
      
              [^1]: For Python, any directory (with suitable naming) can be imported,
                    even if it does not contain any `.py` files.
                    On the other hand, currently there is no concept of package data
                    directory, all directories are treated like packages.
              ********************************************************************************
      
      !!
        check.warn(importable)
      error: command '/usr/bin/gcc' failed with exit code 1
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
  ERROR: Failed building wheel for pycuda
Failed to build pycuda
ERROR: Could not build wheels for pycuda, which is required to install pyproject.toml-based projects

I have install cuda 11.8:

nvcc --version

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2022 NVIDIA Corporation
Built on Wed_Sep_21_10:33:58_PDT_2022
Cuda compilation tools, release 11.8, V11.8.89
Build cuda_11.8.r11.8/compiler.31833905_0

My PATH is the following:

/usr/local/cuda-11.8/bin:/home/iovi/anaconda3/envs/openmmlab/bin:/home/iovi/anaconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

Solution

  • I had gcc 12.3.0 and g++ 11.4.0. I have installed gcc 11.4.0 and I have been able to install pycuda.