空きコンピュータメモリがないため、cudaMallocの割り当てが失敗する可能性はありますか?
GPUメモリが使用可能ですが、RAM(コンピュータメモリ)がいっぱいになるとcudaMallocが失敗します。
私のコードは次のコード例ではsumamrizedすることができます。コンピュータのメモリを使用するとcudaMallocが失敗する
int main()
{
size_t N=sizeof(int)*100000000;
while(true)
{
int *d_a,*d_b;
if (cudaSuccess !=cudaMalloc(&d_a, N)) printf("Error Allocating GPU Memory");
if (cudaSuccess !=cudaMalloc(&d_b, N)) printf("Error Allocating GPU Memory");
cudaMemset(d_a,1,N);
cudaMemset(d_b,2,N);
int *h_a= (int *)malloc(N);
int *h_b=(int *)malloc(N);
if(!h_a || !h_b) printf("Error Allocating CPU Memory");
cudaMemcpy(d_a,h_a, N, cudaMemcpyHostToDevice);
cudaMemcpy(d_b,h_b, N, cudaMemcpyHostToDevice);
cudaFree(d_a);
cudaFree(d_b);
}
getch();
return 1;
}
次のコードは、コンピュータのメモリがいっぱいになった場合にのみ、GPUメモリの割り当てに失敗しました!私が手 エラーは、それがいっぱいになることはありませんので、あなたはすべての反復でGPUのメモリを解放している代わりにError Allocating CPU Memory
おそらく、cudaMallocは完了するためにいくつかのホストメモリも必要とします。 – Anycorn