初识GPU编程
基本概念
CPU和主存被称为主机(Host),GPU和显存(显卡内存)被称为设备(Device),CPU无法直接读显存,GPU无法直接读主存,通过Bus相互通信。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ysiCWmT5-1651995724963)(image-20220507193517306.png)]](https://i-blog.csdnimg.cn/blog_migrate/e367d08dca2e4fd6484cc1e2ff35fe93.png)
检查是否安装了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_print(

本文介绍了GPU编程的基础知识,包括GPU与CPU程序的区别、线程层次结构、Block大小设置和内存管理。CUDA编程中,数据需先拷贝到GPU显存,然后由CPU启动GPU进行异步计算。线程组织为Grid和Block结构,通过配置执行配置实现并行计算。内存管理方面,CUDA提供统一内存管理,但可进一步优化数据拷贝以提升效率。
最低0.47元/天 解锁文章
1151

被折叠的 条评论
为什么被折叠?



