我的kernel.cu类有问题
打电话nvcc -v kernel.cu -o kernel.o给我收到这个错误:
kernel.cu(17): error: identifier "atomicAdd" is undefined
Run Code Online (Sandbox Code Playgroud)
我的代码:
#include "dot.h"
#include <cuda.h>
#include "device_functions.h" //might call atomicAdd
__global__ void dot (int *a, int *b, int *c){
__shared__ int temp[THREADS_PER_BLOCK];
int index = threadIdx.x + blockIdx.x * blockDim.x;
temp[threadIdx.x] = a[index] * b[index];
__syncthreads();
if( 0 == threadIdx.x ){
int sum = 0;
for( int i = 0; i<THREADS_PER_BLOCK; i++)
sum += temp[i];
atomicAdd(c, sum);
}
}
Run Code Online (Sandbox Code Playgroud)
有人建议?
tal*_*ies 14
您需要指定nvcc支持原子内存操作的体系结构(默认体系结构为1.0,不支持原子).尝试:
nvcc -arch=sm_11 -v kernel.cu -o kernel.o
Run Code Online (Sandbox Code Playgroud)
看看会发生什么.
编辑在2015年注意到CUDA 7.0中的默认架构现在是2.0,它支持原子内存操作,因此在新的工具包版本中这应该不是问题.
| 归档时间: |
|
| 查看次数: |
12525 次 |
| 最近记录: |