1
큰 응용 프로그램을 디버깅하려고합니다. 호스트에서 장치로 값을 복사 할 수없는 문제가 있습니다. 나는 최소한 의 예를 제공한다.은 6
을 장치에 복사 한 다음 다시 복사해야한다고 생각한다.Cuda cudaMemcpy "invalid argument"
#include <stdio.h>
__device__ float a_d;
main(){
float a = 6.0;
float b;
puts(cudaGetErrorString(cudaMemcpy(&a_d,&a,sizeof(float),cudaMemcpyHostToDevice)));
puts(cudaGetErrorString(cudaMemcpy(&b,&a_d,sizeof(float),cudaMemcpyDeviceToHost)));
printf("%e",b);
}
64 비트 Linux에서 CUDA 5.5를 사용하면 다음과 같은 결과가 나타납니다.
$ nvcc test.cu -run
invalid argument
invalid argument
0.000000e+00
내가 cudaSuccess
및 6.000000e+00
을 기대할 수있는 반면.
환상적입니다. 감사합니다. 나는 실제로 그것을 사용하려했지만 말도 안되는 유형 (nvidia의 docs에서) 때문에 다른 문제가있었습니다. (http://developer.download.nvidia.com/compute/cuda/4_1/rel/toolkit/docs/online/group__CUDART__MEMORY_gf268fa2004636b6926fdcd3189152a14 .html # gf268fa2004636b6926fdcd3189152a14). –
은 매우 오래된 문서 (CUDA 4.1 2010 년경)에 대한 링크입니다. 현재 문서는 [여기]입니다 (http://docs.nvidia.com/cuda/index.html#). –