[第1课] 第一讲A 课程简介

主题:这一讲是整个课程的介绍,首先教授介绍了这门课开课的原因[0:00:34],教授认为目前处在“软件危机”时期。教授介绍了前两次软件危机,第一次危机时得到了通用机器语言,第二次得到了面向对象编程的语言。目前我们处于第三次危机,因为顺序性能已经被摩尔定律落下[0:04:56],虽然晶体管数量还在继续增加,但性能提升却没有相应增加。主要原因有四点[0:07:50]:功耗、线延时、DRAM访问时间、收益递减,教授一一讲解了这些内容。

[第2课] 第一讲B 课程简介

主题:这一讲是课程介绍的第二部分,首先介绍了这门课的要求,以及完成这门课后能得到什么成果[0:00:28],这门课要求学生具有相当编程经验,将关注比较底层的内容,而不拘泥于代码细节。然后教授讲解了这门课用学生要做的项目[0:02:11]及分组情况。之后教授介绍了课程的设置:学分如何分配,上课有哪些政策[0:07:12]。后面,教授还讲解了教学班子[0:10:17],课程组织[0:12:43],以及具体时间安排[0:15:47]。除了教授以外,另一位主讲来自IBM沃森研究中心,另外课程还会邀请很多IBM及大学的其它专业人员进行客座讲座。最后,教授介绍了这门课要用到的实践设备PS3的情况[0:19:11]。

[第3课] Cell处理器简介

主题:这一讲是IBM技术人员Michael Perrone博士的客座讲座,首先他介绍了Cell的大致背景[0:00:00],它是为索尼游戏机PS3研发的处理器。然后介绍Cell处理器的硬件组成[0:07:10]:其芯片上有9个处理器,8个特殊用途处理器SPE和1个主处理器PPE。之后,Perrone讲解了Cell应用方面擅长什么,以及用于什么领域[0:33:33],其擅长领域包括游戏、医学成像、石油勘探成像、航空航天、国防雷达声呐等。之后讲了软件环境[0:39:56]等方面的内容。

[第4课] 并发编程简介

主题:这一讲讨论并行构架方面的内容[0:00:00],并行可以分为隐式并行性和显式并行性,其中隐式并行性包括硬件和编译器两个层次的并行性,而显式并行性则是程序员编程时可见的并行性。对于并行机器的分类,教授给出了自己的方法[0:26:05],他认为并行机器应该分为:共享指令处理器、共享序列发生器处理器、共享网络处理器、共享存储器处理器。之后教授分别对这些机器进行了讲解。最后,教授讲到这门课最关注的多核处理器[0:49:12]。

[第5课] 并发编程简介

主题:并发执行是多道程序系统中多个程序(逻辑上互相独立)或者一个程序中的多个程序段在执行的过程当中,时间互相重叠,一个程序执行没结束,另一个已经开始[0:00:27]。这一节通过银行帐户等例子讲解了这一问题[0:03:09]。这一节详细讲解了并发中可能存在的各种问题,比如死锁[0:19:23]、竞态条件[0:22:29]这些,并给出了相应解决方法。并发虽然对于当今计算机科学非常重要,但理解和调试起来都非常困难。

[第6课] 并行编程概念

主题:这一节开始讲解并行编程的概念,讲到了性能分析[0:18:30],理解性能的三点:一是覆盖度,二是粒度,三是局部性,课上通过光线跟踪程序的例子讲解了性能问题。这一讲讲到了性能可规模性限制以及阿姆达尔定律[0:21:30],讲到提速等于1/[(1-p)+p/n],其中n是处理器数目,p是并行部分所需时间占比,n趋于无穷大时极限是1/(1-p)。之后详细解释了细粒度和粗粒度的区分。之后讨论了负载均衡的问题[0:30:26]。之后讲了通信成本模型[0:38:20],不同通信模式[0:46:09],并给出了数值积分的例子[0:59:26]。

[第7课] 并行编程设计模式II

主题:并行编程设计模式II

[第8课] StreamIt语言

主题:StreamIt语言

[第9课] 并行程序调试

主题:并行程序调试

[第10课] 性能监测和优化

主题:性能监测和优化

[第11课] 并行编译器

主题:并行编译器

[第12课] StreamIt并行编译器

主题:StreamIt并行编译器

[第13课] 合成并行程序

主题:合成并行程序

[第14课]游戏开发简介

麻省理工学院公开课:多核编程

学校: 麻省理工学院

讲师: Saman Amarasinghe

集数: 18

授课语言: 英文

类型: 国际名校公开课 技能

课程简介: 本课程是并行编程的入门课程,详细介绍了一系列并行编程的理论以及多核架构的设计理念。课堂还为学生提供了宝贵的使用高端开发平台的机会,将所学知识付诸实践,学会设计、运行独创的多核架构。