本篇为学习笔记,学习内容为2019年参加英伟达GTC会议的课程
需要提下学习CUDA的目的,就是为了加速自己的应用,相比于CPU-only的应用程序,可以用GPU实现较大加速,当然程序首先是计算密集型而非...IO密集型
基础
GPU加速系统,又被称异构系统(Heterogeneous),由CPU和GPU组成
如果熟悉C编程,可以很快上手CUDA编程,两者在代码形式上有很多类似地方,一个比较重要概念是GPU的...launch kernel
C代码用gcc编译,cuda代码用nvcc编译,nvcc内部会调用gcc
启动核函数的配置 > thread是最小执行单位,由threads组成block,多个block...grid size设置为给定GPU上的SM个数的倍数,防止不对齐导致的资源浪费
SMs创建,管理,调度和执行的单位是一个block中的一组32个threads,叫做wraps;由有half-wrap的概念...默认情况下GPU函数执行时对CPU函数是异步的,而异步拷贝,不仅对CPU,对GPU的kernel也是异步的,可以达到边计算边拷贝数据的目的,从而掩盖数据传输时间,尽量挖掘GPU计算能力