我是一个菜鸟并且遵循教程。
这是一个非常简单的程序。
为什么我的结果为零。
我认为我的for循环有问题,因为当我将for循环值减少到百万时,它运行正常。
老师正在使用1000万的价值,他的程序工作正常,但我无法看到我的程序有什么问题,虽然我正在复制每一个和所有内容。
请看一下。
这是内核。
__global__ void AddIntsCUDA(int* a, int* b)
{
for (int i = 0; i < 10000005; i++)
a[0] += b[0];
}
这是主要的。
int main()
{
int a = 0;
int b = 1;
int *d_a, *d_b;
if (cudaMalloc(&d_a, sizeof(int)) != cudaSuccess)
{
cout << "Error" << endl;
}
if (cudaMalloc(&d_b, sizeof(int)) != cudaSuccess)
{
cout << "Error" << endl;
}
if (cudaMemcpy(d_a, &a, sizeof(int), cudaMemcpyHostToDevice) != cudaSuccess)
{
cout << "Error" << endl;
}
if (cudaMemcpy(d_b, &b, sizeof(int), cudaMemcpyHostToDevice) != cudaSuccess)
{
cout << "Error" << endl;
}
AddIntsCUDA << <1, 1 >> >(d_a, d_b);
if (cudaMemcpy(&a, d_a, sizeof(int), cudaMemcpyDeviceToHost) != cudaSuccess)
{
cout << "Error in back copy" << endl;
cudaFree(d_a);
cudaFree(d_b);
return 0;
}
cout << "The answer is " << a << endl;
cudaFree(d_a);
cudaFree(d_b);
cudaDeviceReset();
system("pause");
return 0;
}
答案 0 :(得分:-1)
这应该可以正常工作。如果您的CUDA设备也用作图形卡,这意味着它将在内核功能完成之前超时。因此答案是错误的。
以下是一些提示: