2017-04-20 23 views
0

다음은 코드가 width = 809 인 cuda에서 3D 배열을 시작하는 경우입니다. 높이 = 127; 층수 = 2160;쿠다 2D 레이어드 문자 크기 : 너무 큽니까?

cudaArray *sinor; 
    cudaExtent volumeSize = make_cudaExtent(809, 127, 2160); 
const cudaChannelFormatDesc channelDesc = cudaCreateChannelDesc<float>(); 
gpuErrchk(cudaMalloc3DArray(&sinor, &channelDesc, volumeSize, cudaArrayLayered)); 

마지막 줄에 "잘못된 인수"오류가 반환됩니다. 내 레이어 수가 너무 많기 때문입니까? 나는 1940 년을 시도했다. 그리고 그것은 멋졌다. 이렇게 많은 수의 레이어를 처리 할 수 ​​없다면 여기서 해결해야 할 작업은 무엇입니까? 고마워.

+1

레이어 제한은 2048입니다. check'deviceQuery' –

+0

@RobertCrovella : 해결 방법이 있습니까? –

+0

[두 개의 텍스처 개체/참조] (https://devblogs.nvidia.com/parallelforall/cuda-pro-tip-kepler-texture-objects-improve-performance-and-flexibility/)를 선택할 수 있습니다. 두 개는 레이어 인덱스를 기반으로합니다. –

답변

1

텍스처 레이어 깊이 제한은 here 문서에서 확인할 수 있습니다. 당신이 추측했듯이, 계층화 된 텍스처와 서페이스의 심도 한계는 2048입니다.

의견에서 제안했듯이 실제 해결 방법은 데이터를 여러 텍스처 개체로 나누고 가상의 인덱스를 기반으로 개체를 선택하는 것입니다 결합 된 텍스처.