【发布时间】:2014-11-23 00:29:45
【问题描述】:
我遇到了一个简单的 CUDA 程序问题,它只添加了两个数字。我在 Windows 7 上使用 Geforce GT320M GPU 的笔记本电脑上运行它。我用Visual Studio 2013 编译了这个程序(我不知道这是否意味着什么)。问题是我总是得到0 结果。我试图检查给定的参数(只返回数组中给方法的所有参数),它们似乎都是0。我在另一台计算机(在大学)上运行这个程序,它运行得很好,并返回正确的结果。所以我认为应该有一些设置问题,但我不确定。
#include <cuda.h>
#include <stdio.h>
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
__global__ void add(int a, int b, int* c)
{
*c = a + b;
return;
}
int main(int argc, char** argv)
{
int c;
int* dev_c;
cudaMalloc((void**)&dev_c, sizeof(int));
add << <1, 1 >> >(1, 2, dev_c);
cudaMemcpy(&c, dev_c, sizeof(int), cudaMemcpyDeviceToHost);
printf("a + b = %d\n", c);
cudaFree(dev_c);
return 0;
}
我还运行我在某处找到的这段代码 sn-p。
cudaSetDevice(0);
cudaDeviceSynchronize();
cudaThreadSynchronize();
这没有返回任何东西。
【问题讨论】:
-
我实际上是想找出这里出了什么问题。这看起来不是一个小问题。
-
您可能想从这里阅读接受的答案。看看这是否有效。 stackoverflow.com/questions/10524050/…
-
我按照上面的回答做了错误检查,我得到“无效的设备功能”
-
我认为
return是问题所在。
标签: c++ cuda visual-studio-2013