1.通信
2.通信的不同类型以及并行计算中,不同的通信模型(about how to map tasks(which are threads in cuda) and meory together)
通信的模式叫做映射(communication pattern is called map)
有在黄格子里的每个元素,你将对每个元素进行同样的函数或者计算任务
这是一个线程的简单映射
有些不是这么简单的
比如依次取三个数的平均值或者用一个像素周围像素的平均值来表示此像素的这种模糊计算
除了这种聚集操作,还有分散操作
还有模板操作(stencil):用给定的模板对周围的像素进行着色
模板有几个小块,每个小块就会被重复读取多少次
另一种操作:转置(transpose )【数组运算,矩阵,图像操作】按顺序读不按顺序写
这种操作不仅适用于【数组运算,矩阵,图像操作】
也适用于各种数据结构(本质是任务重新排序内存中的数据元素)
比如
测试
又引出两种:归约和扫描
3.线程如何一齐有效的访问内存?
先讨论一个子问题:如何利用数据重用(how to exploit the data reuse)——有很多线程经常同时访问相同数据,我们如何利用这一点来减少在内存上花费的总时间?
4.线程如何通过 共享内存 来交流部分结果?(communicate partial results by sharin