09 2019 档案

摘要:GLobal memory的load/store都要经过L2缓存(在计算能力 < 3的卡还有L1缓存),所以目前的主流卡基本上都已经没有L1缓存了,所以后面就只以L2缓存为例. 对齐寻址和临近寻址: Global memory在与L2做数据传输的最小单位为32bytes,称为L2 cahce lin 阅读全文
posted @ 2019-09-20 23:41 灰太狼锅锅 阅读(895) 评论(0) 推荐(0)
摘要:cuda shared memory读写带宽大于global memory(10倍以上),读写延时低(20~30倍),例如cuda parllel reduction的例子就先将数据从global memory搬运至shared memory,然后再做运算,从而提高程序性能. 为了提高读写带宽,cu 阅读全文
posted @ 2019-09-19 18:10 灰太狼锅锅 阅读(2545) 评论(0) 推荐(1)
摘要:1.死锁检测 给定一组线程操作锁的流程,判断是否会发生死锁? 例如:有两个线程和两个资源,线程对锁的操作如下: 其中T表示线程id,L表示锁id,S表示操作(1表示获取锁,0表示释放锁) T L S 1 1 1(线程1获取1号锁) 2 2 2(线程2获取2号锁) 1 2 1(线程1获取2号锁,保持等 阅读全文
posted @ 2019-09-17 22:05 灰太狼锅锅 阅读(5323) 评论(0) 推荐(0)
摘要:求 n = 5x + 2y + z的全部非负整数解.例如n = 5时,有4组解:(0, 0, 5)、(0, 1, 3)、(0, 2, 1)、(1, 0, 0). 1.最普通的解法,三层循环遍历: 优化1:unroll 3rd loop(展开最里层的循环) 优化2:remove if(移除if判断) 阅读全文
posted @ 2019-09-16 21:54 灰太狼锅锅 阅读(652) 评论(0) 推荐(0)
摘要:以uint为例,当计算过程中(比如9999^6)产生大于UINT_MAX(2^32 - 1)的值的时候,编译时会产生integer overflow,即数值溢出,最后的结果也被截断. 1.如何检测 :https://www.quora.com/How-do-I-prevent-integer-ove 阅读全文
posted @ 2019-09-16 21:06 灰太狼锅锅 阅读(551) 评论(0) 推荐(0)