您好我有哪些成功运行 CUDA程序这里是CUDA程序代码CUDA和C++的问题
#include <stdio.h>
#include <cuda.h>
__global__ void square_array(float *a, int N)
{
int idx = blockIdx.x * blockDim.x + threadIdx.x;
if (idx<N)
a[idx] = a[idx] * a[idx];
}
int main(void)
{
float *a_h, *a_d;
const int N = 10;
size_t size = N * sizeof(float);
a_h = (float *)malloc(size);
cudaMalloc((void **) &a_d, size);
for (int i=0; i<N; i++) a_h[i] = (float)i;
cudaMemcpy(a_d, a_h, size, cudaMemcpyHostToDevice);
int block_size = 4;
int n_blocks = N/block_size + (N%block_size == 0 ? 0:1);
square_array <<< n_blocks, block_size >>> (a_d, N);
cudaMemcpy(a_h, a_d, sizeof(float)*N, cudaMemcpyDeviceToHost);
// Print results
for (int i=0; i<N; i++) printf("%d %f\n", i, a_h[i]);
free(a_h);
cudaFree(a_d);
}
现在我想这段代码分为两个文件意味着应该有两个文件,一个用于C++代码或c代码和其他一个.cu文件的内核。我只是想为了学习而做,而且我不想一次又一次地写同样的内核代码。 任何人都可以告诉我该怎么做? 如何将这段代码分成两个不同的文件? 比如何编译它? 如何为它编写makefile? 如何到
thax的帮助我动了我的kenel代码到seprate文件名squre .CU#包括 的#include __global__无效square_array(浮动*一,INT N) { int idx = blockIdx.x * blockDim.x + threadIdx。X; if(idx
user513164
2011-03-16 09:10:18