尽管通过了所有演示测试,SuiteSparse CHOLMOD 仍抛出 gpu_memorysize 错误
SuiteSparse CHOLMOD throwing gpu_memorysize error despite passing all demo tests
Ubuntu 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61(性能更新); Nvidia 驱动程序 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 监控 activity)。同样,Cuda/samples 都工作正常。我已经清除并重新安装了所有内容,包括 Cuda、Nvidia 驱动程序和 SuiteSparse。我尝试了 Cuda 8.0 和 Cuda 9.0 的各种组合。无济于事,Cuda/samples 和 CHOLMOD/Demos 仍然工作得很好,但我的 CHOLMOD 实现抛出了同样的错误。
我已将问题追溯到 cudaMemGetInfo() 函数。出于某种原因,它报告 GPU 上的可用字节为 0,导致第一个错误 (gpu_memorysize)!其余的错误似乎首先出现。 CHOLMOD/Demo/cholmod_l_demo 脚本中没有发生此错误,这表明我的实现有问题。然而,我在我的实施中没有改变任何东西。有谁知道为什么 cudaMemGetInfo() 会报告 0 个可用字节?我认为这个问题的答案将有助于指导我找到解决方案。
我查看了我的无人值守升级历史,似乎我有一些 linux-headers 和 nvidia 驱动程序在我开始看到错误的时候更新了。但我不太确定 nvidia 驱动程序更新是罪魁祸首,因为 CHOLMOD/Demo/cholmod_l_demo 工作得很好。所以我怀疑这可能是一个 linux-headers 问题...
我的实现分布在多个文件中,因此可能值得查看 Github commit。但正如我所提到的,与过去几个月 CHOLMOD gpu 加速工作时相比,我已经更改了 none 源文件。
非常感谢任何建议!
cudaMemGetInfo() 报告 0 个可用字节的原因是因为我的程序在 libcublas 和 libcudart 上没有可执行权限。一旦我 运行 我的程序前面有 "sudo",GPU 就会被使用并且 CHOLMOD 像几周前一样工作。
我不确定内核是否更改了权限,或者某些 .so 安装是否需要新权限。这有点神秘。但解决方法是使用"sudo"到运行的程序。
Ubuntu 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61(性能更新); Nvidia 驱动程序 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 监控 activity)。同样,Cuda/samples 都工作正常。我已经清除并重新安装了所有内容,包括 Cuda、Nvidia 驱动程序和 SuiteSparse。我尝试了 Cuda 8.0 和 Cuda 9.0 的各种组合。无济于事,Cuda/samples 和 CHOLMOD/Demos 仍然工作得很好,但我的 CHOLMOD 实现抛出了同样的错误。
我已将问题追溯到 cudaMemGetInfo() 函数。出于某种原因,它报告 GPU 上的可用字节为 0,导致第一个错误 (gpu_memorysize)!其余的错误似乎首先出现。 CHOLMOD/Demo/cholmod_l_demo 脚本中没有发生此错误,这表明我的实现有问题。然而,我在我的实施中没有改变任何东西。有谁知道为什么 cudaMemGetInfo() 会报告 0 个可用字节?我认为这个问题的答案将有助于指导我找到解决方案。
我查看了我的无人值守升级历史,似乎我有一些 linux-headers 和 nvidia 驱动程序在我开始看到错误的时候更新了。但我不太确定 nvidia 驱动程序更新是罪魁祸首,因为 CHOLMOD/Demo/cholmod_l_demo 工作得很好。所以我怀疑这可能是一个 linux-headers 问题...
我的实现分布在多个文件中,因此可能值得查看 Github commit。但正如我所提到的,与过去几个月 CHOLMOD gpu 加速工作时相比,我已经更改了 none 源文件。
非常感谢任何建议!
cudaMemGetInfo() 报告 0 个可用字节的原因是因为我的程序在 libcublas 和 libcudart 上没有可执行权限。一旦我 运行 我的程序前面有 "sudo",GPU 就会被使用并且 CHOLMOD 像几周前一样工作。
我不确定内核是否更改了权限,或者某些 .so 安装是否需要新权限。这有点神秘。但解决方法是使用"sudo"到运行的程序。