本篇为学习笔记,学习内容为2019年参加英伟达GTC会议的课程
需要提下学习CUDA的目的,就是为了加速自己的应用,相比于CPU-only的应用程序,可以用GPU实现较大加速,当然程序首先是计算密集型而非...IO密集型
基础
GPU加速系统,又被称异构系统(Heterogeneous),由CPU和GPU组成
如果熟悉C编程,可以很快上手CUDA编程,两者在代码形式上有很多类似地方,一个比较重要概念是GPU的...之后的版本可以分配出CPU/GPU都能访问的内存,API接口为:cudaMallocManaged
关于异常处理:
一些cuda函数的返回值类型为cudaError_t, 可用来检查错误cudaGetErrorString...(err)
无返回值的kernel, 使用cudaGetLastError() 返回cudaError_t类型
另外,如果有一组kernel出错,因为kernel执行是异步的,为了排查错误,可以调用同步函数如...;流是一系列顺序执行的命令,kernel的执行,和许多内存迁移都是发生在流内,不指定的情况下使用default stream
关于控制流的几个规则:
流内的操作是顺序的
不同流内的操作相互之间不保证有任何顺序