우분투 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 가속화가 지난 몇 개월 동안 작동했던 것과 비교하여 소스 파일을 전혀 변경하지 않았습니다.
모든 의견을 매우 높이 평가합니다.
정말 downvotes 고맙습니다. 나는 stackoverflow에서 훨씬 더 많은 것을 기대할 수 있을지 확신하지 못한다 :-) – trickleboast