【CUDA】-编程中的一些问题

1.显示blockDim等变量出现了未定义的错误:


Paste_Image.png

解决方法:添加头文件

#include "device_launch_parameters.h"

2.无法打开 源 文件 "helper_cuda.h"

Paste_Image.png

首先找到这些头文件的位置:
C:\ProgramData\NVIDIA Corporation\CUDA Samples\v7.5\common\inc


【CUDA】-编程中的一些问题_第1张图片
Paste_Image.png

将该位置include到项目中

【CUDA】-编程中的一些问题_第2张图片
Paste_Image.png

但是仍然报错,不过程序可以正确运行了。
第二种方案:If you want to copy the samples to a customized place, you have to copy the whole samples dir, or modify some code/compile options to include staff in common/ dir.
3.使用 __device__ __managed__报错
error : managed variables require architecture compute_30 or higher
Paste_Image.png

解决方法:由于vs 2013默认编译sm_20,但是Unifiled Memory需要3.0以上的计算能力,所以修改编译的条件。
【CUDA】-编程中的一些问题_第3张图片
Paste_Image.png

4.kernel中递归调用出错
【CUDA】-编程中的一些问题_第4张图片
Paste_Image.png

需要设置-rdc=true
5.在一个cu文件中,先include .h文件,再include .cuh文件报错,不知道原因是什么,但是如果先包含cuh文件再包含h文件则可以正确运行。
6.在global核函数中,不能直接使用thrust的device_vector,作为参数传递。 https://stackoverflow.com/questions/5510715/thrust-inside-user-written-kernels

thrust::device_vector dev;
int * raw_ptr = thrust::raw_pointer_cast(&dev[0]);
__global__ void test(int* raw, int len){
....
}
test<<>> test(raw_ptr,dev.size());

你可能感兴趣的:(【CUDA】-编程中的一些问题)