1
用host指代CPU及其内存,用device指代GPU及其内存
CUDA程序中既包含host程序,又包含device程序
host与device之间可以进行通信,之间可以进行数据拷贝
GPU并行化的工作流程:
- CPU发送一种称为kernel的函数到GPU
- GPU同时运行该函数的多个版本,称为threads;
thread可以组合成block,一个kernel里的所有thread称为一个grid
__global__是CUDA C/C++的函数修饰符
表示该函数为一个kernel函数, 且
在调用kernel函数时,函数名后的<<<b, t>>>:
// kernel函数需要运行在4个block上,每个block有2个thread。
#include <stdio.h>
__global__ void myKernel() {
}
int main() {
//your code here
myKernel<<<4, 2>>>();
//end of your code
printf("Hello, World!\n");
return 0;
}
kernel函数需要运行在4个block上,每个block有2个thread。
2
详细介绍函数修饰符:
//在GPU上运行dev1与dev2函数10次。
#include <stdio.h>
__device__ int dev1() {
}
__device__ int dev2() {
}
__global__ void run10Times() {
//your code here
dev1();
dev2();
//end of your code
}
int main() {
run10Times<<<2, 5>>>();
printf("Hello, World!\n");
return 0;
}