2014-05-14 4 views
1

"기능이 너무 많은 공유 데이터를 사용합니다",하지만 난 때문에 내가 사용하는 autogen.sh의 오류로 (http://www.maisondelasimulation.fr/projects/RAMSES-GPU/html/download.html 실행합니다. 에서 람세스 GPU를 얻기 위해 노력하고 있어요 ./ 구성 작업이 하나있어 그래서 생산 메이크는 다음 NVCC 플래그를 포함 NVCCFLAGS = -gencode=arch=compute_10,code=sm_10 -gencode=arch=compute_11,code=sm_11 -gencode=arch=compute_13,code=sm_13 -gencode=arch=compute_20,code=sm_20 -gencode=arch=compute_20,code=compute_20 -use_fast_math -O3 하지만 내가 여러 ptxas 오류 얻을 수 있도록 사용하여 프로그램을 컴파일하려고하면. 나는이 컴파일하기 위해 노력하고있어CUDA ptxas 오류 나는 C++ 전에 CUDA를 사용하거나 결코

Entry function '_Z30kernel_viscosity_forces_3d_oldPfS_S_S_iiiiiffff' uses too much shared data (0x70d0 bytes + 0x10 bytes system, 0x4000 max) Entry function '_Z26kernel_viscosity_forces_3dPfS_S_S_iiiiiffff' uses too much shared data (0x70d0 bytes + 0x10 bytes system, 0x4000 max) Entry function '_Z32kernel_viscosity_forces_3d_zslabPfS_S_S_iiiiiffff9ZslabInfo' uses too much shared data (0x70e0 bytes + 0x10 bytes system, 0x4000 max) 을 Linux에서 Kernel 2.6 및 CUDA 4.2를 사용하여 코드를 작성했습니다. (필자는 대학에서이 기능을 사용하려고하며 정기적으로 업그레이드하지 않습니다.) NVIDIA C1060 2 대를 사용하여 sm_10, sm_11 및 sm_13에 의해 sm_20, (나는이 수정 여기에 보았다 : Entry function uses too much shared data (0x8020 bytes + 0x10 bytes system, 0x4000 max) - CUDA error)하지만 내 문제가 해결되지 않았다. 의견이 있으십니까? 필요한 경우 Makefile뿐만 아니라 다른 모든 것을 업로드 할 수 있습니다. 도움을 주셔서 감사합니다.

+1

아마도 오류 메시지가 올 바르고 설치 한 GPU 카드에 너무 많은 공유 메모리를 사용하려고합니까? –

답변

5

컴파일하는 코드는 블록 당 28880 바이트 (0x70d0)의 공유 메모리를 정적으로 할당해야합니다. 컴퓨팅 기능 2.x 및 최신 GPU의 경우 최대 48kb의 공유 메모리를 지원하므로 아무런 문제가 없습니다. 그러나 컴퓨팅 기능 1.x 장치의 경우 공유 메모리 제한은 16kb입니다 (커널 인수로 소비 할 수있는 최대 256 바이트). 이 때문에 compute 1.x 장치 용으로 코드를 컴파일 할 수 없으며 컴파일러에서 오류를 생성합니다. 따라서 컴파일러에 sm_13/compute_13을 지정하면 오류가 발생합니다. 이를 제거하면 빌드가 작동합니다.

그러나 악화됩니다. Tesla C1060은 컴퓨팅 기능 1.3 장치입니다. 결과적으로 GPU에서 해당 커널을 컴파일하고 실행할 수 없습니다. 빌드에서 커널을 생략하거나 (필요하지 않은 경우) 코드를 다시 1.x 아키텍처로 포팅하는 해결책은 없습니다. 그게 가능한지 아닌지 나는 모른다. 또는 코드를 실행하는 최신 하드웨어를 찾는 것.