共 4 篇文章 |
|
对1.x来讲,多个thread访问同一个bank,就会出现bank conflict,half-wrap内所有thread访问同一个bank除外。对于1.0和1.1的设备来讲,如果一个kernel里面block的大小为512个thread,那么,occupancy为512/768=66%,并且一个multiprocessor中只有一个active block,然而,如果block里面的thread为256个thread,那么,768/256=3,是整数,因此,o... 阅342 转1 评0 公众公开 15-05-08 17:46 |
CUDA存储器。板载显存:local memory,constant memory, texture memory, texture memory,global memory;global memory:存在于显存中,也称为线性内存(显存可以被定义为线性存储器或者CUDA数组);portable memory:让控制不同GPU的主机端线程操作同一块portable memory,实现cpu线程间通信;mapped memory:两个地址:主机端地址(内存地址)... 阅135 转1 评0 公众公开 15-05-08 17:37 |
CUDA优化策略。计算每个SM上active warp和active block的数量:计算每个block使用的资源,并确定active block和active warp数量:计算grid中各个维度上block的数量:grid在x轴上的block数量 = (问题在x轴上的尺寸+每个block在x轴上的尺寸-1)/每个block在x轴上的尺寸;算术指令:尽量使用单精度浮点单元进行运算,在计算能力小于等于1.2的设备... 阅120 转1 评0 公众公开 15-05-08 17:35 |
l 一个warp中的线程存在分支的时候,会造成串行执行不同分支,降低性能,可以通过调整线程执行内容来减少warp中存在的分支,提高性能。l 寄存器数目可能造成的性能悬崖:GT200种每个SM有8192个寄存器,对于16*16的线程块,如果每个线程用到的寄存器为10个,那么可以容纳3个块,如果每个线程用到的寄存器为11个,则只能容纳2个块,这种情况可能... 阅140 转0 评0 公众公开 15-05-08 17:28 |