2017-11-07 21 views
-2

우분투 16.04LTS; SuiteSparse 4.5.5; CUDA 8.0.61 (성능 향상); 엔비디아 드라이버 384.98;SuiteSparse CHOLMOD 모든 데모 테스트를 통과 함에도 불구하고 gpu_memorysize 오류 발생

나는 GPU를 가속화하여 성공적으로 코드에 구현되었으며 몇 달 동안 정상적으로 작동합니다. 그리고 최근 블루 (소스 코드 변경없이)에서, 내 출력에 이러한 오류를보기 시작 : 나는 제 3 자 라이브러리 자체가 자동 업데이트했다고 의심

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 (export CHOLMOD_USE_GPU = 1) 테스트는 CHOLMOD 자체가 완벽하게 작동하고 있으며 전체 GPU (nvidia-smi로 모니터링 활동)를 사용하고 있음을 증명합니다. 비슷하게, Cuda/samples은 모두 잘 작동합니다. 나는 Cuda, Nvidia 드라이버 및 SuiteSparse를 포함한 모든 것을 제거하고 다시 설치했습니다. 필자는 Cuda 8.0과 Cuda 9.0의 다양한 조합을 시도했습니다. 아무 소용이 Cuda/샘플 및 CHOLMOD/데모 여전히 완벽하게 작동하지만 내 CHOLMOD 구현 같은 오류가 throw됩니다.

나는이 문제를 cudaMemGetInfo() 함수로 추적했다. 어떤 이유로 GPU에서 사용 가능한 0 개의 바이트가보고되어 첫 번째 오류 (gpu_memorysize)가 발생합니다! 나머지 오류는 처음부터 연쇄 적으로 보인다. 이 오류는 CHOLMOD/Demo/cholmod_l_demo 스크립트에서 발생하지 않습니다. 이는 내 구현에 문제가 있음을 나타냅니다. 그러나, 나는 구현에서 아무것도 변경했습니다. 누구 cudaMemGetInfo() 사용할 수있는 0 바이트보고하는 이유를 알고 있습니까? 나는이 질문에 대한 해답이 나를 해결책으로 이끌어 줄 것이라고 생각한다.

무인 업그레이드 기록을 살펴본 결과 오류가 발생하기 시작한 시점에서 일부 Linux-Header 및 NVIDIA 드라이버가 업데이트 된 것처럼 보입니다. 하지만 나는 CHOLMOD/Demo/cholmod_l_demo가 완벽하게 작동하기 때문에 nvidia 드라이버 업데이트가 비난받을 것이라고 확신하지 못합니다. 그래서 나는 그것이 리눅스 헤더 문제 일 수 있다고 생각한다 ...

내 구현은 여러 파일에 걸쳐 있기 때문에 Github commit을 살펴볼 가치가있다. 그러나 내가 언급했듯이, CHOLMOD gpu 가속화가 지난 몇 개월 동안 작동했던 것과 비교하여 소스 파일을 전혀 변경하지 않았습니다.

모든 의견을 매우 높이 평가합니다.

+0

정말 downvotes 고맙습니다. 나는 stackoverflow에서 훨씬 더 많은 것을 기대할 수 있을지 확신하지 못한다 :-) – trickleboast

답변

0

내 프로그램에 libcublas 및 libcudart에 대한 실행 권한이 없기 때문에 cudaMemGetInfo()가 0 개의 사용 가능 바이트를보고 한 이유가있었습니다. 앞에서 "sudo"를 사용하여 프로그램을 실행하자마자 GPU가 사용되며 CHOLMOD는 몇 주 전에 작동했습니다.

커널이 권한을 변경했는지 또는 특정 .so 설치에 새로운 권한이 필요한지 확실하지 않습니다. 그것은 수수께끼의 비트입니다. 그러나 해결책은 "sudo"를 사용하여 프로그램을 실행하는 것입니다.

+0

미안하지만이 답변은 의미가 없다. 실행 파일에는 다른 파일에 대한 권한이 없습니다. * 사용자 *에게 권한이 있습니다. 루트 사용자로만 CUDA 코드를 실행할 수있는 경우 사용자 ID에 더 이상 (예 : NVIDIA 드라이버로 만든/dev 항목 또는 드라이버 패키지에 포함 된 파일) 올바른 사용 권한이 없습니다. – talonmies

+0

[nvidia] (http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html)에 제시된 지침에 따라 cuda를 설치하므로 정확한 권한이없는 이유가 확실하지 않습니다. 그 파일들에. – trickleboast