2016-05-06 1 views
-2

私はcudaMalloc関数の使用に対して問題があります。確かに、それは常に以下でもこの例のように非常に単純な場合には、私に「cudaErrorInvalidValue」エラーを返します:cudaMemcpyは常に私を返しますcudaErrorInvalidValue

cudaError_t error; 
int hostTest = 12; 
int* deviceTest = NULL; 
error = cudaMemcpy(deviceTest, &hostTest, sizeof(int), cudaMemcpyHostToDevice); 

しかし、cudaMallocはうまく動作します。それはかなり奇妙です。 私のビルドはコンピューティング機能v5.0(compute_50、sm_50)用に設定されており、グラフィックスカードはGeforce GTX 960Mです。

答えて

2

この例では、メモリはcudaMallocで割り当て、deviceTestに戻すポインタを割り当てる必要があります。この変数はデバイスのメモリをポイントするためです。このような

何かトリックに

int hostTest = 12; 
int *deviceTest; 
cudaMalloc((void **)&deviceTest,sizeof(int)); 
cudaMemcpy(deviceTest, &hostTest,sizeof(int),cudaMemcpyHostToDevice); 
+0

おかげで多くのことを行う必要があります。それは働いている、私はそれを覚えています! – Ant0nin

関連する問題