From f0410345844540e013fcb52c1787f6458532546d Mon Sep 17 00:00:00 2001 From: Ashwin Srinath <3190405+shwina@users.noreply.github.com> Date: Wed, 19 Jan 2022 19:48:59 -0500 Subject: [PATCH] Replace custom CUDA bindings previously provided by RMM with official CUDA Python bindings (#10008) This PR replaces custom CUDA bindings that are provided by RMM, with official CUDA Python bindings. This PR should be merged after the RMM PR https://github.com/rapidsai/rmm/pull/930 Authors: - Ashwin Srinath (https://github.com/shwina) Approvers: - Jordan Jacobelli (https://github.com/Ethyling) - Vyas Ramasubramani (https://github.com/vyasr) - Bradley Dice (https://github.com/bdice) URL: https://github.com/rapidsai/cudf/pull/10008 --- conda/environments/cudf_dev_cuda11.5.yml | 1 + conda/recipes/cudf/meta.yaml | 2 +- python/cudf/cudf/utils/gpu_utils.py | 42 +++++++++++------------- 3 files changed, 22 insertions(+), 23 deletions(-) diff --git a/conda/environments/cudf_dev_cuda11.5.yml b/conda/environments/cudf_dev_cuda11.5.yml index bbbc754e850..cb52e656a31 100644 --- a/conda/environments/cudf_dev_cuda11.5.yml +++ b/conda/environments/cudf_dev_cuda11.5.yml @@ -33,6 +33,7 @@ dependencies: - ipython - pandoc=<2.0.0 - cudatoolkit=11.5 + - cuda-python >=11.5,<12.0 - pip - flake8=3.8.3 - black=19.10 diff --git a/conda/recipes/cudf/meta.yaml b/conda/recipes/cudf/meta.yaml index a20749bc8c9..bd1412bc611 100644 --- a/conda/recipes/cudf/meta.yaml +++ b/conda/recipes/cudf/meta.yaml @@ -52,7 +52,7 @@ requirements: - packaging - cachetools - ptxcompiler # [linux64] # CUDA enhanced compatibility. See https://github.com/rapidsai/ptxcompiler - + - cuda-python >=11.5,<12.0 test: # [linux64] requires: # [linux64] - cudatoolkit {{ cuda_version }}.* # [linux64] diff --git a/python/cudf/cudf/utils/gpu_utils.py b/python/cudf/cudf/utils/gpu_utils.py index dbdd68f2df8..8947760e052 100644 --- a/python/cudf/cudf/utils/gpu_utils.py +++ b/python/cudf/cudf/utils/gpu_utils.py @@ -15,10 +15,10 @@ def validate_setup(): import warnings + from cuda.cudart import cudaDeviceAttr, cudaError_t + from rmm._cuda.gpu import ( CUDARuntimeError, - cudaDeviceAttr, - cudaError, deviceGetName, driverGetVersion, getDeviceAttribute, @@ -30,30 +30,30 @@ def _try_get_old_or_new_symbols(): try: # CUDA 10.2+ symbols return [ - cudaError.cudaErrorDeviceUninitialized, - cudaError.cudaErrorTimeout, + cudaError_t.cudaErrorDeviceUninitialized, + cudaError_t.cudaErrorTimeout, ] except AttributeError: # CUDA 10.1 symbols - return [cudaError.cudaErrorDeviceUninitilialized] + return [cudaError_t.cudaErrorDeviceUninitilialized] notify_caller_errors = { - cudaError.cudaErrorInitializationError, - cudaError.cudaErrorInsufficientDriver, - cudaError.cudaErrorInvalidDeviceFunction, - cudaError.cudaErrorInvalidDevice, - cudaError.cudaErrorStartupFailure, - cudaError.cudaErrorInvalidKernelImage, - cudaError.cudaErrorAlreadyAcquired, - cudaError.cudaErrorOperatingSystem, - cudaError.cudaErrorNotPermitted, - cudaError.cudaErrorNotSupported, - cudaError.cudaErrorSystemNotReady, - cudaError.cudaErrorSystemDriverMismatch, - cudaError.cudaErrorCompatNotSupportedOnDevice, + cudaError_t.cudaErrorInitializationError, + cudaError_t.cudaErrorInsufficientDriver, + cudaError_t.cudaErrorInvalidDeviceFunction, + cudaError_t.cudaErrorInvalidDevice, + cudaError_t.cudaErrorStartupFailure, + cudaError_t.cudaErrorInvalidKernelImage, + cudaError_t.cudaErrorAlreadyAcquired, + cudaError_t.cudaErrorOperatingSystem, + cudaError_t.cudaErrorNotPermitted, + cudaError_t.cudaErrorNotSupported, + cudaError_t.cudaErrorSystemNotReady, + cudaError_t.cudaErrorSystemDriverMismatch, + cudaError_t.cudaErrorCompatNotSupportedOnDevice, *_try_get_old_or_new_symbols(), - cudaError.cudaErrorUnknown, - cudaError.cudaErrorApiFailureBase, + cudaError_t.cudaErrorUnknown, + cudaError_t.cudaErrorApiFailureBase, } try: @@ -68,8 +68,6 @@ def _try_get_old_or_new_symbols(): # Cupy throws RunTimeException to get GPU count, # hence obtaining GPU count by in-house cpp api above - # 75 - Indicates to get "cudaDevAttrComputeCapabilityMajor" attribute - # 0 - Get GPU 0 major_version = getDeviceAttribute( cudaDeviceAttr.cudaDevAttrComputeCapabilityMajor, 0 )