Search code examples
pythonpython-3.xanacondanumba-proaccelerate

Anaconda Accelerate check_cuda()


What is the correct anaconda accelerate function to check cuda?

With numba-pro you could use:

>>> from numbapro import check_cuda
numbapro:1: ImportWarning: The numbapro package is deprecated in favour of the accelerate package. Please update your code to use equivalent functions from accelerate.
>>> check_cuda()
CUDA is not available...

or

>>> numbapro.check_cuda()
------------------------------libraries detection-------------------------------
Finding cublas
    located at /home/usr/miniconda3/envs/cuda/lib/libcublas.so.7.0.28
    trying to open library...   ok
Finding cusparse
    located at /home/usr/miniconda3/envs/cuda/lib/libcusparse.so.7.0.28
    trying to open library...   ok
Finding cufft
    located at /home/usr/miniconda3/envs/cuda/lib/libcufft.so.7.0.35
    trying to open library...   ok
Finding curand
    located at /home/usr/miniconda3/envs/cuda/lib/libcurand.so.7.0.28
    trying to open library...   ok
Finding nvvm
    located at /home/usr/miniconda3/envs/cuda/lib/libnvvm.so.3.0.0
    trying to open library...   ok
    finding libdevice for compute_20... ok
    finding libdevice for compute_30... ok
    finding libdevice for compute_35... ok
-------------------------------hardware detection-------------------------------
Found 2 CUDA devices
id 0    b'GeForce GTX TITAN X'                              [SUPPORTED]
                      compute capability: 5.2
                           pci device id: 0
                              pci bus id: 1
id 1    b'GeForce GTX TITAN X'                              [SUPPORTED]
                      compute capability: 5.2
                           pci device id: 0
                              pci bus id: 4
Summary:
    2/2 devices are supported
PASSED
True

numbapro now gives a deprecation warning, and I have not been able to locate the equivalent check_conda() method under the anaconda accelerate module.


Solution

  • I didn't see a direct analog, but the underlying routines still seem to be present, now in numba: First part is from numba.cuda.cudadrv.libs.test() which generates searches for CUDA libraries. The second is numba.cuda.api.detect() which searches for devices. (In accelerate proper, you might try the less detailed accelerate.cuda.cuda_compatible(), which just returns true or false) E.g.,

    import numba.cuda.api,numba.cuda.cudadrv.libs
    numba.cuda.cudadrv.libs.test()
    numba.cuda.api.detect()
    Finding cublas
        located at S:\programs\x64\Anaconda3\DLLs\cublas64_75.dll
        trying to open library...   ok
    Finding cusparse
        located at S:\programs\x64\Anaconda3\DLLs\cusparse64_75.dll
        trying to open library...   ok
    Finding cufft
        located at S:\programs\x64\Anaconda3\DLLs\cufft64_75.dll
        trying to open library...   ok
    Finding curand
        located at S:\programs\x64\Anaconda3\DLLs\curand64_75.dll
        trying to open library...   ok
    Finding nvvm
        located at S:\programs\x64\Anaconda3\DLLs\nvvm64_30_0.dll
        trying to open library...   ok
        finding libdevice for compute_20... ok
        finding libdevice for compute_30... ok
        finding libdevice for compute_35... ok
    Found 1 CUDA devices
    id 0      b'GeForce GTX 960'                              [SUPPORTED]
                          compute capability: 5.2
                               pci device id: 0
                                  pci bus id: 4
    Summary:
        1/1 devices are supported
    True