Google Colab选T4 GPU运行时调用numba cuda.to_device遇未知CUDA错误
排查Google Colab中Numba CUDA
cuMemAlloc UNKNOWN_CUDA_ERROR的思路 问题重现
在Google Colab选择T4 GPU运行时后,执行以下代码:
from numba import cuda import numpy as np B = np.random.randint(0, 5, size=(10, 10)) B_device = cuda.to_device(B)
触发错误:
ERROR:numba.cuda.cudadrv.driver:Call to cuMemAlloc results in UNKNOWN_CUDA_ERROR --------------------------------------------------------------------------- CudaAPIError Traceback (most recent call last) <ipython-input-75-c23b10abb298> in <cell line: 2>() 1 B = np.random.randint(0, 5, size=(10, 10)) ----> 2 B_device = cuda.to_device(B) 10 frames /usr/local/lib/python3.10/dist-packages/numba/cuda/cudadrv/driver.py in _check_ctypes_error(self, fname, retcode) 393 if retcode == enums.CUDA_ERROR_NOT_INITIALIZED: 394 self._detect_fork() ---> 395 raise CudaAPIError(retcode, msg) 396 397 def _check_cuda_python_error(self, fname, returned): CudaAPIError: [700] Call to cuMemAlloc results in UNKNOWN_CUDA_ERROR
排查步骤
验证GPU基础可用性:先执行基础检测代码,确认GPU能被正常识别:
from numba import cuda print(cuda.is_available()) print(cuda.gpus)若输出
False或无法列出GPU,说明Colab的GPU分配存在临时故障,尝试通过菜单栏Runtime→Restart runtime重启运行时。检查版本兼容性:Colab的CUDA驱动与Numba版本可能存在适配问题,执行以下命令查看版本信息:
import numba print(numba.__version__) !nvcc --version若版本不匹配,尝试更新Numba后重启运行时:
!pip install --upgrade numba重置CUDA上下文:CUDA上下文异常可能导致分配失败,手动重置后重试:
from numba import cuda cuda.close() # 重新执行测试代码 B = np.random.randint(0, 5, size=(10,10)) B_device = cuda.to_device(B)测试极简CUDA操作:用更基础的设备数组创建操作验证,排除业务代码影响:
from numba import cuda dev_arr = cuda.device_array((10,10), dtype=np.int32)若仍报错,说明GPU资源分配存在问题,可尝试切换其他GPU运行时(如A100,若可选),或等待一段时间后重新分配Colab资源。
检查GPU内存状态:执行命令查看GPU内存占用情况,确认是否有残留进程占用资源:
!nvidia-smi若存在异常占用,重启运行时释放资源。
内容的提问来源于stack exchange,提问作者Etfrerrr
相关产品推荐
相关产品推荐

