2
我已經開始使用JCuda。當我編譯程序時,出現「jcuda.cuda exception cuda_error_launch_failed」錯誤。我按照安裝指南中給出的步驟操作,但不起作用。很少有資源可以在線獲得。所以,請幫助me.This是我的代碼:JCuda編譯器錯誤
extern "C"
__global__ void reduce(float *g_idata, float *g_odata, unsigned int n)
{
extern __shared__ float sdata[];
unsigned int tid = threadIdx.x;
unsigned int i = blockIdx.x*blockDim.x*2 + threadIdx.x;
unsigned int gridSize = blockDim.x*2*gridDim.x;
float mySum = 0;
while (i < n)
{
mySum += g_idata[i];
if (i + blockDim.x < n)
mySum += g_idata[i+blockDim.x];
i += gridSize;
}
sdata[tid] = mySum;
__syncthreads();
if (blockDim.x >= 512) { if (tid < 256) { sdata[tid] = mySum = mySum + sdata[tid + 256]; } __syncthreads(); }
if (blockDim.x >= 256) { if (tid < 128) { sdata[tid] = mySum = mySum + sdata[tid + 128]; } __syncthreads(); }
if (blockDim.x >= 128) { if (tid < 64) { sdata[tid] = mySum = mySum + sdata[tid + 64]; } __syncthreads(); }
if (tid < 32)
{
volatile float* smem = sdata;
if (blockDim.x >= 64) { smem[tid] = mySum = mySum + smem[tid + 32]; }
if (blockDim.x >= 32) { smem[tid] = mySum = mySum + smem[tid + 16]; }
if (blockDim.x >= 16) { smem[tid] = mySum = mySum + smem[tid + 8]; }
if (blockDim.x >= 8) { smem[tid] = mySum = mySum + smem[tid + 4]; }
if (blockDim.x >= 4) { smem[tid] = mySum = mySum + smem[tid + 2]; }
if (blockDim.x >= 2) { smem[tid] = mySum = mySum + smem[tid + 1]; }
}
if (tid == 0)
g_odata[blockIdx.x] = sdata[0];
}
我已經安裝了NVIDIA GTX 460 GPU和CUDA驅動程序和工具包。
謝謝你現在的作品。 – user1633170