2013-04-07 2 views
1

나는 이것을 잠시 동안 행복하게 무시해 왔지만 지금은 꽤 문제가되고있다. 너희들이 나를 도울 수 있기를 바란다.cudaMallocPitch 복사 가이드에도 불구하고 '잘못된 인수'?

나는 cudaMallocPitch를 호출하지만, 무엇을 시도해도 빨간색 밑줄과 '잘못된 인수'오류가 계속 발생합니다. Nvidia CUDA C 프로그래밍 가이드의 소스 코드를 복사해도 오류가 발생합니다. 저는 CUDA를 처음 접했습니다. 문제를 일으킬 수 있다고 생각되는 것을 지적하기를 주저하지 마십시오.

int width = 64, height = 64; 
    float* devPtr; 
    size_t pitch; 
    cudaMallocPitch(&devPtr, pitch, 
        width * sizeof(float), height); 

어떤 의견이 크게 감사합니다, 환호 :

는 여기에 내가 언급하고 정확한 코드입니다.

+0

그래도 컴파일됩니까? –

답변

1

두 번째 매개 변수는 size_t*으로되어 있지만, size_t을 전달 중입니다. 대신 다음을 시도하십시오.

cudaMallocPitch(&devPtr, &pitch, width * sizeof(float), height); 

마지막 매개 변수 유형도 size_t입니다. 아마도 heightsize_t으로 더 좋을 것입니다.

+0

[cudaMallocPitch] (http://docs.nvidia.com/cuda/cuda-runtime-api/index.html#group__CUDART__MEMORY_1g80d689bc903792f906e49be4a0b6d8db)는 피치를 호출 프로세스로보고하기를 기대하므로 피치 주소를 전달해야합니다 변수 (즉, 포인터로 전달, 참조로) 그래서 그것은 호출 프로세스에서'피치'수정할 수 있습니다. 'size_t'보다는'int'로'height'가 중요하지 않아야합니다. –

+0

아직도 운이 없다! 나는 당신의 코드뿐만 아니라 size_t로 높이를 사용했지만 여전히 빨간 밑줄과 같은 오류가 있습니다 – Boyentenbi

+1

빨간 밑줄은 VS에서 CUDA를 사용하는 부작용 일 수 있습니다. 이에 대한 자세한 정보를 보려면 "CUDA red underline"을 검색하는 것이 좋습니다. 코드가 올바르게 컴파일되고 실행되면 [오류 검사 !!!] (http://stackoverflow.com/questions/14038589/what-is-the-canonical-way-to-check-for-errors-using-the)를 사용하십시오. -cuda-runtime-api)) 빨간색 밑줄은 빨간색 청어입니다. 그렇지 않으면 intellisense/visual studio에서 반환 한 값을 사용하는 대신 * 컴파일러 * 및/또는 * 런타임 오류 *가 반환 한 오류를 게시하십시오. –