www.ydma.com
GPU 并行编程题库
第一周:GPU 基础和 CUDA 编程介绍
原创者:猿代码 — 超算人才智造局 www.ydma.com 转载请注明出处
参加猿代码实训后的作业题目:
1、使用 CUDA 创建一个简单的程序,该程序创建一个在 GPU 上运行的内核,对两个输
入向量进行加法运算,并将结果保存到输出向量中。输入向量的长度自定。
参考答案:
#include <cuda.h>
#include <cuda_runtime.h>
__global__ void add(int *a, int *b, int *c, int N) {
int index = threadIdx.x + blockIdx.x * blockDim.x;
if (index < N)
c[index] = a[index] + b[index];
}
int main() {
int N = 100; // vector size
int a[N], b[N], c[N];
int *dev_a, *dev_b, *dev_c;
// Initialize vectors a and b
for(int i = 0; i < N; i++) {
a[i] = -i;
b[i] = i * i;
}
// Allocate memory on GPU
cudaMalloc((void**)&dev_a, N * sizeof(int));
cudaMalloc((void**)&dev_b, N * sizeof(int));
cudaMalloc((void**)&dev_c, N * sizeof(int));