C++类和 CUDA 错误
C++ class and CUDA error
我正在尝试编写一个具有一些 CUDA 功能的简单C++类。我收到此错误,无法弄清楚出了什么问题:
main.cu:错误:指向绑定函数的指针只能用于调用函数
这是代码:
//add_values.cu
#include "add.h"
__global__ void add::add_values(int *a, int *b, int *c){
int tid = threadIdx.x + blockIdx.x * blockDim.x;
while (tid < N){
{
c[tid] = a[tid] + b[tid];
cout << c[i] << endl;
tid += blockDim.x * gridDim.x;
}
}
//main.cu
#include "add.h"
#define N (33*1024)
int main(void){
add add_test;
int a[N], b[N], c[N];
int *dev_a, *dev_b, *dev_c;
cudaMalloc((void**)&dev_a, N*sizeof(int));
cudaMalloc((void**)&dev_b, N*sizeof(int));
cudaMalloc((void**)&dev_c, N*sizeof(int));
for (int i = 0; i < N; i++){
a[i] = i;
b[i] = i*i;
c[i] = 0;
}
cudaMemcpy (dev_a, a, N*sizeof(int), cudaMemcpyHostToDevice);
cudaMemcpy (dev_b, b, N*sizeof(int), cudaMemcpyHostToDevice);
add_test.add_values<<<128, 128>>>(dev_a, dev_b, dev_c); //Error?
cudaMemcpy (dev_c, c, N*sizeof(int), cudaMemcpyDeviceToHost);
cudaFree(dev_a);
cudaFree(dev_b);
cudaFree(dev_c);
return 0;
}
当我尝试在main中调用add_values函数时出错。谢谢!!
__global__ void add::add_values(int *a, int *b, int *c){ // level1
...
while (tid < N){ // level2
{ // level3
c[tid] = a[tid] + b[tid];
cout << c[i] << endl;
tid += blockDim.x * gridDim.x;
} // end of level3
} // end of level2
您没有关闭级别 1
相关文章:
- cuda-gdb 给出错误"warning: Cuda API error detected: cudaLaunchKernel returned (0x7)"
- CUDA返回值错误35的含义是什么
- 链接器错误-在ubuntu中找不到CMake和Cuda 10.1的lcudart
- 在尝试使用CUDA分配内存时,我遇到了访问冲突写入位置错误
- Cuda 编译错误:已定义类模板
- 致命错误:cuda.h:没有用于 c++ 的此类文件或目录
- 带有大结构变量的 CUDA 内核函数给出了错误的结果
- NPP 和 CUDA 错误检查
- cmake cuda在Windows上单独的编译静态LIB链接错误,但在Ubuntu上没有
- GCC(通过 CUDA)内部函数的编译器错误,但我没有使用任何
- 推力(cuda)错误:无法使用给定参数列表调用函数
- cuda 内核调用/传递参数中的编译错误
- 使用 QtCreator 构建 CUDA/C++ 测试程序时出现错误 2
- CUDA 错误:"dynamic initialization is not supported for __device__, __constant__ and __shared__ variabl
- CUDA 编译错误:未定义__hmul和__hneg
- CUDA 模板错误:没有与参数列表匹配的函数模板实例
- Microsoft Visual Studio发现我所有的CUDA设备端函数都有错误
- 如何调试错误代码 77:cudaErrorIllegal地址当 cuda-memcheck 没有发现问题时
- 为什么 CUDA .cu 文件中会出现多个定义错误
- 咖啡错误 == cuda成功(77 与 0)遇到非法内存访问