总结了一下个人看Berkeley的《 Architecting Parallel Applications》课程ppt的学习心得:
Lecture1: Introduction and Overview
并行的目的Motivation of parallelism
1、 在硬件上,单处理器性能的提高受到了三方面的壁垒:
功耗、内存以及指令级并行性(ILP),各方面具体内容可参考James Reinders的并行介绍http://www.builder.com.cn/video_intel/video_intel.shtml
2、 Small is beautiful,"smallness within bigness"的思想,提出分而治之的概念,执行一个大的工作任务就等于执行一组相关的小工作任务。
3、 并行化硬件的未来趋势:future general-purpose processors will be built from small (5-9 stage pipeline) energy efficient processing elements
4、 同时在软件并行编程上我们必须满足:Productively: programmer’s time, time-to-market;Efficiently: meeting performance targets that the hardware should be able to realize;Correctly: software meets its functional specification。
目前未能解决的难题How not to solve the problem
有了多核体系架构的支持,我们在并行编程上遇到以下几种可能以及挑战
1、在原有代码上不断地修改并监测其性能,但是经常会失败并且性能难以提高。
2、通过一个新的并行语言来编程,目前200种并行语言仍未有合适所有应用的。
3、通过编写一个超级编译器来将代码编译为并行执行。
在将来,并行编程并不是在于训练编程人员学习如何写并行程序。而是在于各领域的专家去使用并行应用框架来编写应用程序。
解决方法Our approach
以满足productivity efficiency correctness为前提,建立起软件架构-编程模型与环境-编程语言-编译器与调试器-硬件架构,其中的关键在于设计模式design patterns和模式语言pattern language。
Example: CBIR