From 0a8bbdc9a0413aa1ec907ac27cc68b975b7f54f7 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Sun, 13 Sep 2026 23:06:10 -0500 Subject: [PATCH 1/2] Skip CUDA runtime initialization when a context is current --- conda/recipes/pylibcudf/recipe.yaml | 1 + python/pylibcudf/pylibcudf/utils.pyx | 22 +++++++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/conda/recipes/pylibcudf/recipe.yaml b/conda/recipes/pylibcudf/recipe.yaml index 22f6fca29ae..c5e82d41744 100644 --- a/conda/recipes/pylibcudf/recipe.yaml +++ b/conda/recipes/pylibcudf/recipe.yaml @@ -79,6 +79,7 @@ requirements: - libcudf =${{ version }} - rmm =${{ minor_version }} - cuda-cudart-dev + - cuda-profiler-api - cuda-nvrtc - if: linux and x86_64 then: diff --git a/python/pylibcudf/pylibcudf/utils.pyx b/python/pylibcudf/pylibcudf/utils.pyx index 68b32659c55..b95c236046b 100644 --- a/python/pylibcudf/pylibcudf/utils.pyx +++ b/python/pylibcudf/pylibcudf/utils.pyx @@ -5,6 +5,13 @@ from cython.operator import dereference from cuda.bindings import runtime +from cuda.bindings.cydriver cimport ( + CUDA_ERROR_NOT_INITIALIZED, + CUDA_SUCCESS, + CUcontext, + CUresult, + cuCtxGetCurrent, +) from cuda.bindings.cyruntime cimport ( cudaError_t, cudaFree, @@ -68,11 +75,16 @@ cdef vector[reference_wrapper[const scalar]] _as_vector(list source): cdef inline int _ensure_cuda_context() except -1: - cdef cudaError_t status - with nogil: - status = cudaFree(NULL) - if status != cudaSuccess: - raise RuntimeError(f"Failed to initialize CUDA context: {status}") + cdef CUcontext context = NULL + cdef CUresult status = cuCtxGetCurrent(&context) + cdef cudaError_t runtime_status + if status != CUDA_SUCCESS and status != CUDA_ERROR_NOT_INITIALIZED: + raise RuntimeError(f"Failed to get current CUDA context: {status}") + if status == CUDA_ERROR_NOT_INITIALIZED or context == NULL: + with nogil: + runtime_status = cudaFree(NULL) + if runtime_status != cudaSuccess: + raise RuntimeError(f"Failed to initialize CUDA context: {runtime_status}") return 0 From 9dfdd7056d04b2155c5c55716d56a7a1784d0d78 Mon Sep 17 00:00:00 2001 From: Bradley Dice Date: Mon, 14 Sep 2026 13:21:41 -0500 Subject: [PATCH 2/2] Apply suggestion from @bdice --- conda/recipes/pylibcudf/recipe.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda/recipes/pylibcudf/recipe.yaml b/conda/recipes/pylibcudf/recipe.yaml index c5e82d41744..f6890062506 100644 --- a/conda/recipes/pylibcudf/recipe.yaml +++ b/conda/recipes/pylibcudf/recipe.yaml @@ -79,7 +79,7 @@ requirements: - libcudf =${{ version }} - rmm =${{ minor_version }} - cuda-cudart-dev - - cuda-profiler-api + - cuda-profiler-api # Needed for cuda.bindings.cydriver - cuda-nvrtc - if: linux and x86_64 then: