cryosparc运行报错 [CUresult.CUDA_ERROR_INVALID_VALUE] Call to cuMemHostAlloc results in CUDA_ERROR_INVAL

问题描述

cryosparc运行报错:File "/home/software/cryoSparc/cryosparc_worker/deps/anaconda/envs/cryosparc_worker_env/lib/python3.10/site-packages/numba/cuda/cudadrv/driver.py", line 408, in _check_cuda_python_error raise CudaAPIError(retcode, msg) numba.cuda.cudadrv.driver.CudaAPIError: [CUresult.CUDA_ERROR_INVALID_VALUE] Call to cuMemHostAlloc results in CUDA_ERROR_INVALID_VALUE

报错解释:程序在运行中,调用服务器的内存时报错,无法分配内存(不是显存,也不是硬盘)

可能原因1:实际物理内存不足,一般可能会出现在Non-uniform refinement等需要过多占用内存的任务中

解决方案:加内存条;减少参数设置(如CTF相关参数,单独使用任务计算),降低计算所需内存量

可能原因2:cuda或nvidia驱动版本不匹配cryosparc需求

检查cuda版本 nvcc -V:官方推荐 cuda 11.8
检查驱动版本 nvidia-smi:Nvidia Driver 520.61.05 or newer

可能原因3:物理内存空间足够,但就是无法分配

查询内存的使用情况 watch -n 3 free -h :输出

              total        used        free      shared  buff/cache   available
Mem:          251Gi       105Gi       4.3Gi        20Mi       141Gi       144Gi
Swap:          39Gi       9.0Mi        39Gi

缓存区(buff/cache)的占用 无法释放或程序无法使用,一般缓存区是动态的,根据程序需要再分配的
但是我这里的情况是缓存区的空间只增不减,尝试手动释放所有缓存:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches && free -h

可以正常运行,但只是暂时的,如此确定了是这个原因

最终解决方案
禁用 Page-Locked 内存分配
在 CryoSPARC Worker 的配置文件(cryosparc_worker/config.sh)中加入下面这一行:

export CRYOSPARC_NO_PAGELOCK=true

重启cryosparc服务

cryosparcm restart

可能原因4:linux系统内核太老的问题

官方解释:

There are various unresolved incompatibilities and instabilities when using CUDA applications on older Linux kernels (e.g., 3.10 found in CentOS 7). Several users have reported sporadic occurrences of cufftInvalidPlan and cuMemHostAlloc Failed errors while using CentOS 7.

内核查看命令 uname -r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值