初识GPU编程
基本概念
CPU和主存被称为主机(Host),GPU和显存(显卡内存)被称为设备(Device),CPU无法直接读显存,GPU无法直接读主存,通过Bus相互通信。
检查是否安装了CUDA
$conda install cudatoolkit
安装 Numba库
$ conda install numba
检查CUDA与Numba是否安装成功
from numba import cuda
print(cuda.gpus)
cuda会独占一张卡,默认0号,可以使用
CUDA_VISIBLE_DEVICES='5' python example.py
环境变量设置选择某张卡
GPU程序和CPU程序的区别
CPU程序是顺序执行的,一般需要:
- 初始化
- CPU计算
- 得到计算结果
CUDA编程中,GPU流程:
- 初始化, 将必要数据拷贝到GPU设别的显存
- CPU调用GPU函数,启动GPU多核同时计算
- CPU和GPU异步计算
- 将GPU计算结果拷贝回主机,得到计算结果
GPU程序示例
from numba import cuda
def cpu_print():
print("print by cpu.")
@cuda.jit
def gpu_print():
# GPU核函数
print("print by gpu.")
def main():
gpu_print[1, 2]()
cuda.synchronize()
cpu_pri