SuiteParse CHOLMOD在通过所有演示测试的情况下抛出gpu_memorysize错误
SuiteSparse CHOLMOD throwing gpu_memorysize error despite passing all demo tests
Ubuntu 16.04LTS;套件解析4.5.5;CUDA 8.0.61(性能提升);英伟达驱动程序384.98;
我让GPU加速的CHOLMOD成功地实现到我的代码中,并在几个月内正常工作。然后最近突然(源代码没有更改),我开始在我的输出中看到这些错误:
GPU failure in cholmod_gpu: gpu_memorysize 8.38861e+06 0 MB
CHOLMOD error: gpu memorysize failure
. file: ../GPU/cholmod_gpu.c line: 384
CHOLMOD error: CUBLAS initialization. file: ../GPU/cholmod_gpu.c line: 433
CHOLMOD error: cudaMemcpy(d_Ls). file: ../Supernodal/../GPU/t_cholmod_gpu.c line: 129
CHOLMOD error: CUDA stream. file: ../Supernodal/../GPU/t_cholmod_gpu.c line: 140
我怀疑是第三方图书馆在无人看管的情况下进行了自我更新。但我对CHOLMOD/Demo/CHOLMOD_l_Demo(导出CHOLMOD_USE_GPU=1)的测试证明,CHOLMOD本身工作得非常好,并且使用了完整的GPU(使用nvidia-smi监控活动)。同样,Cuda/样品都运行良好。我已经清除并重新安装了所有东西,包括Cuda、Nvidia驱动程序和SuiteParse。我试过Cuda 8.0和Cuda 9.0的各种组合。毫无效果,Cuda/samples和CHOLMOD/Demos仍然工作得很好,但我的CHOLMOD实现也出现了同样的错误。
我已经将问题追溯到cudaMemGetInfo()函数。由于某种原因,它报告GPU上有0个可用字节,导致第一个错误(GPU_memoryize)!剩下的错误似乎是从第一个开始的。CHOLMOD/Demo/CHOLMOD_l_Demo脚本中没有出现此错误,这表明我的实现有问题。然而,我在执行过程中没有任何改变。有人知道为什么cudaMemGetInfo()会报告0个可用字节吗?我认为这个问题的答案将有助于指导我找到解决方案。
我查阅了我的无人值守升级历史记录,在我开始看到错误的时候,我似乎更新了一些linux头文件和nvidia驱动程序。但我不太确定英伟达驱动程序更新是罪魁祸首,因为CHOLMOD/Demo/CHOLMOD_l_Demo运行得很好。所以我怀疑这可能是linux头的问题。。。
我的实现分布在几个文件中,因此可能值得查看Github提交。但正如我所提到的,与过去几个月CHOLMOD gpu加速工作时相比,我没有更改任何源文件。
非常感谢您的任何建议!
cudaMemGetInfo()报告0个可用字节的原因是我的程序在libcublas和libcudart上没有可执行权限。当我运行前面有"sudo"的程序时,GPU就被使用了,CHOLMOD的工作方式和几周前一样。
我不确定内核是否更改了权限,或者某些.so安装是否需要新的权限。这有点神秘。但解决方案是使用"sudo"来运行程序。
- 在没有太多条件句的情况下,我如何避免被零除
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 在未初始化映射的情况下,将值插入到映射的映射中
- 是默认情况下分配给char数组常量的值
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- 如何在不产生任何垃圾的情况下获得C中的像素
- 在已经使用Git的情况下减少编译时间
- 为什么在Windows上的VS 2019和Clang 9中"size_t"在没有标题的情况下工作
- 如何在没有信号的情况下从C++执行QML插槽
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 为什么在某些情况下不写入此文件?
- 为什么Mat类的两个对象可以在不重载运算符+的情况下添加
- 在没有Xcode的情况下在Mac捆绑包中嵌入框架
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 为什么需要复制构造函数,在哪些情况下它们非常有用
- 在C++中如何在没有pow的情况下进行基础计算
- 松弛原子与无同步情况下的记忆连贯性
- opengl调用可以在没有GPU的情况下运行吗
- OpenCV:不支持GPU(该库是在不支持CUDA的情况下编译的)
- 是否可以在没有完全定义着色器的情况下测试缓冲区数据是否成功加载到GPU上?(C++、OpenGL 4.4、GLFW)