使用cuda程序运行的代码
时间: 2024-03-15 09:46:28 浏览: 52
cuda程序示例代码.rar
以下是一个简单的CUDA程序示例,可以作为参考:
```cuda
#include <stdio.h>
// 定义核函数,将数组中的每个元素乘以2
__global__ void kernel(double *input, double *output, int n) {
int tid = blockIdx.x * blockDim.x + threadIdx.x;
if (tid < n) {
output[tid] = input[tid] * 2;
}
}
int main() {
const int n = 1024;
double *input, *output;
cudaMalloc((void **)&input, n * sizeof(double));
cudaMalloc((void **)&output, n * sizeof(double));
// 初始化输入数组
for (int i = 0; i < n; i++) {
input[i] = i;
}
// 将输入数组从主机内存复制到设备内存
cudaMemcpy(input, input, n * sizeof(double), cudaMemcpyHostToDevice);
// 定义线程块大小和线程块数量
dim3 blockDim(256, 1, 1);
dim3 gridDim((n + blockDim.x - 1) / blockDim.x, 1, 1);
// 调用核函数
kernel<<<gridDim, blockDim>>>(input, output, n);
// 将结果从设备内存复制到主机内存
cudaMemcpy(output, output, n * sizeof(double), cudaMemcpyDeviceToHost);
// 打印结果
for (int i = 0; i < n; i++) {
printf("%f\n", output[i]);
}
// 释放设备内存
cudaFree(output);
cudaFree(input);
return 0;
}
```
这个程序使用了CUDA C语言编写,定义了一个核函数kernel,将输入数组中的每个元素乘以2,并将结果存储到输出数组中。程序主函数中,首先分配输入数组和输出数组的设备内存空间,然后将输入数组从主机内存复制到设备内存,接着定义线程块大小和线程块数量,调用核函数,计算结果,将结果从设备内存复制到主机内存,最后释放设备内存。
阅读全文