【发布时间】:2017-09-27 01:44:41
【问题描述】:
我正在尝试遵循我找到的教程 online。我正在使用 Ubuntu 17,从命令行编译。
#include <stdio.h>
#include <iostream>
__global__ void add(int a, int b, int *c)
{
*c = a + b;
}
int main()
{
int a,b,c;
int *d_c;
int size = sizeof(int);
a = 2;
b = 7;
cudaMalloc((void **)&d_c,size;
add<<<1,1>>>(a,b,d_c);
cudaMemcpy(&c,d_c,size,cudaMemcpyHostToDevice);
std::cout << a << " + " << b << " = " << c << std::endl;
cudaFree(d_c);
return 0;
}
当我使用nvcc 编译时,出现以下错误:
nvcc warning : The 'compute_20', 'sm_20', and 'sm_21' architectures are deprecated, and may be removed in a future release (Use -Wno-deprecated-gpu-targets to suppress warning).
我忽略了警告并像往常一样运行a.out,我得到了输出:
2 + 7 = 1
上次我做数学,这是不正确的。我不确定我这样做是否不正确,或者我所遵循的教程是否太旧,或者它是否与警告有关?任何帮助或线索都可以。我还要提到,在安装gcc-5 之前,我无法使用nvcc 进行编译。我相信我已经使用我在这里找到的these instructions 将它们正确链接在一起。
我也在这里查看了this solution。但是,我没有发现答案特别有用,因此如果编译正确,我将不胜感激,为什么这没有正确打印到我的终端。
任何帮助将不胜感激。
【问题讨论】:
标签: c++ parallel-processing cuda gpu