gpt4 book ai didi

c++ - CUDA 内核不返回任何内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:10:34 25 4
gpt4 key购买 nike

我在 Visual Studio Community 2015 中使用 CUDA Toolkit 8。当我尝试从 NVidia 的 PDF 手册中进行简单的 vector 加法时(减去我没有 *.h 的错误检查),它总是以未定义的值返回,这意味着输出数组从未被填充。当我用 0 预填充它时,这就是我最后得到的。

其他人遇到过这个问题,有些人说这是由于针对错误的计算能力进行编译造成的。但是,我使用的是 NVidia GTX 750 Ti,它应该是 Compute Capability 5。我尝试编译 Compute Capability 2.0(我的 SDK 的最低要求)和 5.0。

我也无法使任何预编译的示例工作,例如 vectoradd.exe 说,“无法分配设备 vector A(错误代码初始化错误)!”和 oceanfft.exe 说,“错误无法找到 GLSL 顶点和片段着色器!”这没有意义,因为 GLSL 和片段着色是非常基本的功能。

我的驱动程序版本是 361.43,其他应用程序(例如 CUDA 模式下的 Blender Cycles 和 Stellarium)运行良好。

这是应该工作的代码:

#include "cuda_runtime.h"
#include "device_launch_parameters.h"

#include <stdio.h>
#include <iostream>
#include <algorithm>
#define N 10

__global__ void add(int *a, int *b, int *c) {
int tid = blockIdx.x; // handle the data at this index
if (tid < N)
c[tid] = a[tid] + b[tid];
}

int main(void) {
int a[N], b[N], c[N];
int *dev_a, *dev_b, *dev_c;
// allocate the memory on the GPU
cudaMalloc((void**)&dev_a, N * sizeof(int));
cudaMalloc((void**)&dev_b, N * sizeof(int));
cudaMalloc((void**)&dev_c, N * sizeof(int));
// fill the arrays 'a' and 'b' on the CPU
for (int i = 0; i<N; i++) {
a[i] = -i;
b[i] = i * i;
}
// copy the arrays 'a' and 'b' to the GPU
cudaMemcpy(dev_a, a, N * sizeof(int),cudaMemcpyHostToDevice);
cudaMemcpy(dev_b, b, N * sizeof(int),cudaMemcpyHostToDevice);
add << <N, 1 >> >(dev_a, dev_b, dev_c);
// copy the array 'c' back from the GPU to the CPU
cudaMemcpy(c, dev_c, N * sizeof(int),cudaMemcpyDeviceToHost);
// display the results
for (int i = 0; i<N; i++) {
printf("%d + %d = %d\n", a[i], b[i], c[i]);
}
// free the memory allocated on the GPU
cudaFree(dev_a);
cudaFree(dev_b);
cudaFree(dev_c);
return 0;
}

我正在尝试开发 CUDA 应用程序,因此非常感谢任何帮助。

最佳答案

这显然是由于使用了与 CUDA 8 工具包不兼容的驱动程序版本造成的。安装随版本 8 工具包分发的驱动程序解决了这个问题。

[答案由评论组成并添加为社区维基条目,以便将问题从 CUDA 标签的未回答队列中移除]

关于c++ - CUDA 内核不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42310476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com