白天总是不想来看这些东西啊,总会六点左右的时候想起来要看看了,然后开始看,一直看到自己脑袋晕到不行,才开始整理今天的所得。
这篇文章总算是看完了,除了少部分没有看懂之外,也基本知道是个怎么回事了,自以为我也算是入门了吧。哈哈哈,不要见怪啊。
还是继续说说今天的所得吧。
今天是从第二个程序的进一步改良开始看的,现在综合起来啊,改良无非就是从以下以下几点出发考虑啊:
1.要是并行计算,而且要真正隐藏运算的latency,即一个block里的thread要连续存取显存的内容。
2.带宽问题:这一点有多个影响因素,比如合理配置block数目以及block里面thread数目;减少对显存的重复读取,这虽然只是一句话,却牵涉到很多方面,比如改进算法或者利用线性代数方法进行分块等等。
3.指令周期问题:在一个算法里面,关于矩阵地址的乘法运算、if判断语句以及循环语句等都将需要更多的运算。
4.数据精度问题:数据的精度不仅仅会影响执行效率问题也会影响数据精度。
当然说是说得简单啊,说出来了,大家都知道,问题是当自己编程序的时候是否充分考虑到了相关的问题了呢??在做程序优化的时候是否能够考虑全面呢??所以多多训练,多多请教是很有必要的。
还有一个就是今天总算是领教到了threadIdx变量设置hreadIdx.x 和 threadIdx.y两个值时对于以矩阵块存取shared memory的优势了。
明天就要开始看那个全英文的Programming Guide了,哈哈哈,我还是会看了就写一点点的,算是对自己的督促和鼓励吧。
加油啊。。。。。。。。。。。。。。。。
ps:我将我做了一点点笔记的《深入浅出CUDA》的文档贴在后面,有兴趣的可以一起研习研习啊。 点击下载
)