![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
CUDA并行计算
文章平均质量分 64
CUDA并行计算
Blizzard_v
An explorer
展开
-
【CUDA】错误处理的理解以及错误的传播特性
1.若cuda核函数出错,由于他是异步的(执行后立马返回,但其实内部并没有执行完毕,即虽然返回了但仍在执行中),所以立即执行cudaPeekAtLastError只会拿到对输入参数校验是否正确的状态,而不会拿到核函数是否执行正确的状态。2.因此需要等待核函数执行完毕后,才真的知道当前核函数是否出错,一般通过设备同步或者流同步进行等待。原创 2022-11-03 19:20:32 · 772 阅读 · 0 评论 -
cuda---共享内存
1.sharedMemPerBlock 指示了block中最大可用的共享内存,所以可以使得 block 内的threads可以相互通信。其中第三个参数12,是指定动态共享内存dynamic_shared_memory的大小。2.共享内存是片上内存,更靠近计算单元,因此比globalMem速度更快,通常可以充当缓存使用。3)因此你的变量之间如果存在空隙,可能小于全部大小的共享内存就会报错。1)不同类型的静态共享变量定义,其内存划分并不一定是连续的。3)静态分配的地址比动态分配的地址低。原创 2022-09-19 19:54:19 · 1671 阅读 · 0 评论 -
【cuda】核函数的定义和使用
1)所有核函数都可以访问,其取值由执行器维护和改变2)gridDim[x, y, z]:网格维度,线程布局的大小,是核函数启动时指定的,gridDim对应的索引是blockIdx,比如gridDim的shape是3乘3,那么blockIdx范围就是0,1,2。即gridDim是多少,那么blockIdx就是在它范围之内的。3)blockDim[x, y, z]:块维度,线程布局的大小,是核函数启动时指定的4)blockIdx。原创 2022-09-19 18:44:31 · 3438 阅读 · 0 评论 -
cuda流stream,异步任务的管理
句柄可以认为是系统对资源(如线程)的分配的一个编号,是一个long类型的数字,关闭这个编号,对于不同的资源,效果不尽相同。对于线程来说,原创 2022-09-19 13:42:51 · 1046 阅读 · 0 评论 -
cuda内存模型,操作数据复制
而Pageable memory是普通房间,在酒店房间不够时,选择性得把你的房间腾出来给其他人交换用,你就到硬盘去待着,这就可以容纳更多人了。性能要比Pageable memory好,因为Pageable memory会降低你程序的优先级,把内存交换给别人用。SharedMemory离GPU最近,其实pageable memory是最远的,但因为GPU不能直接访问pageable memory,所以就比较起来也没有意义。只需要知道,谁距离计算芯片近,谁速度就越快,空间越小,价格越贵,原创 2022-09-19 12:56:00 · 1039 阅读 · 0 评论 -
CUDA中的上下文context
Context上下文就是指设备与特定进程相关连的所有状态。比如,你写的一段kernel code内核代码对GPU的使用会造成不同状态(内存映射、分配、加载的code),gpu 的 context 相当于 cpu 的 program,一块gpu上可以有多个contexts,但是它们之间是相互隔离的。我们建议一块设备就一个context。3.cpu与gpu之间的unified memory。2.持有加载进该设备的kernel code。1.持有分配的内存列表。原创 2022-09-12 16:48:49 · 952 阅读 · 0 评论