初识GPU编程

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初识GPU编程

基本概念

CPU和主存被称为主机(Host),GPU和显存(显卡内存)被称为设备(Device),CPU无法直接读显存,GPU无法直接读主存,通过Bus相互通信。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ysiCWmT5-1651995724963)(image-20220507193517306.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程序是顺序执行的,一般需要:

  1. 初始化
  2. CPU计算
  3. 得到计算结果

CUDA编程中,GPU流程:

  1. 初始化, 将必要数据拷贝到GPU设别的显存
  2. CPU调用GPU函数,启动GPU多核同时计算
  3. CPU和GPU异步计算
  4. 将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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值