接触到了一种新的依赖解决算法问题,英文叫做wavefront algorithm,中文好像叫波前算法吧。大体思路是,对于一个X*Y数组结构的数据,当运算依赖关系是从西北角开始运算,直到覆盖所有的表项,得到最终结果的时候。每一个运算单元,都必须依赖其西,西北和北边相邻的数据才能开始运算时,其运算方式如同水波一样,逐层前进。
如下图模拟,数字增长,表示随着时间推移,运算的顺序:从1-》2-》3-》 -》7结束,完成整个数据的运算。
| 1 | 2 | 3 | 4 |
| 2 | 3 | 4 | 5 |
| 3 | 4 | 5 | 6 |
| 4 | 5 | 6 | 7 |
接触到了一种新的依赖解决算法问题,英文叫做wavefront algorithm,中文好像叫波前算法吧。大体思路是,对于一个X*Y数组结构的数据,当运算依赖关系是从西北角开始运算,直到覆盖所有的表项,得到最终结果的时候。每一个运算单元,都必须依赖其西,西北和北边相邻的数据才能开始运算时,其运算方式如同水波一样,逐层前进。
如下图模拟,数字增长,表示随着时间推移,运算的顺序:从1-》2-》3-》 -》7结束,完成整个数据的运算。
| 1 | 2 | 3 | 4 |
| 2 | 3 | 4 | 5 |
| 3 | 4 | 5 | 6 |
| 4 | 5 | 6 | 7 |
PPE执行的几项任务:
1.检查是否有free spe
2.创建spe结构,分配tag_id
3.创建spe线程并运行
4.等待一个spe运行结果的返回
5.激活一个已经创建的spe结构,让它开始运行
Yesterday is the 7th week meeting with Mr.yamaguchi. I demonstrated what I’ve learned these days and he soleved lots of my questions.
昨天是第七次和山口老师交流,我首先报告了一下我学习了一些什么东西,然后他解答了很多我提出的问题。
After reading the essays about recent research, the main parallelization schemes for optimization on Cell Processor are: optimize the DMA transfer (single buffering, double buffering and multi-way buffering), optimize the implementation models (how to divide the whole data block into different piece and how to connect each program structures) and optimize the get/put methods (using some prefetch mechanism such as pseudo-result, asynchronous unsafe cache and software cache).
通过几天阅读的论文情况,基本上发现了几种加速并行处理的方式:优化DMA传输方式,缓冲,双缓冲和多重缓冲;优化实现的模型,拆分程序流到不同的SPE,不同的计算模型,会得到不同的实现效果;优化数据读取的方式,比如利用预读取,虚拟结果,和异步多流水线缓存和程序缓存的方式。