TickerTape: 使用互动的游戏案例为大学生教授并行编程

在大学计算机科学课程中教授并行化概念来展现高效的编程算法和技巧是个非常具有挑战性的工作。老师们一直在寻找合适的模块和案例用于并行编程教学,特别是在本科阶段的计算机科学课程中,学生们刚刚开始学习多线程和数据并行编程。游戏案例模块是进行并行化概念教学的一种非常好的方法,因为许多计算机科学专业的学生已经非常喜欢游戏,并且游戏中互动的特性使这样的教材更加引人入胜。将已有的游戏案例整合进课程是一种非常有效的充实并行概念相关课程的方法。此外,使用业界标准的代码分析工具来帮助学生们理解和分析他们的代码的性能并进行调优也使得学习效果更佳。

英特尔的TickerTape是一个学术界现成可用的粒子系统演示案例,用来帮助大学二三年级学生学习数据并行编程。粒子系统在游戏中通常被用来增强视觉逼真度和模拟类似火花及爆炸等特效。这个案例模拟了树叶在风中摇摆并在重力的作用下飘落到地面(参见图一)。画面中的控制选项允许用户来控制案例中树叶的数目,模拟使用的线程数目以及其它环境参数来观察应用中并行的关键区域和算法的效果。许多用来更新树叶位置和方向的计算是重复的并且和其它树叶相独立。因此,使用诸如OpenMP和英特尔线程构建模块之类的并行编程构架和API来并行化这些计算密集型的物理计算比较容易。

TickerTape使用SSE指令,DirectX10和英特尔线程构建模块(英特尔TBB)的API。 代码分析取样工具英特尔Amplifier XE也被用来识别应用中的热点(参见图2-4)。模块中的源代码包括Microsoft Visual Studio 2008项目文件,显示出三种不同的物理计算实现:串行(单线程),使用OpenMP的并行及使用英特尔TBB的并行(多线程),由于并行执行物理计算,每种实现较先前的方法提供了改进的性能。这个演示案例专为有C/C++编程基础并对了解更多编程架构和多核处理器上并行编程API的本科生设计。

想要了解更多关于TickerTape的原始版本及观看案例演示,请访问:英特尔视觉计算开发者社区

如果您对TickerTape或下列其它演示案例有疑问,请直接在相应的演示案例网页上提交反馈。您的支持请求将会得到及时相应。您也可以随时发送电子邮件至 gamedevinput@intel.com

查阅来自英特尔的其它游戏演示案例:
萤火虫--可扩展的环绕效果(这个案例能够在多线程或串行模式下运行以便更好地理解多线程化一种环绕效果的性能优势。)
集群--一种高度并行集群模拟技术(使用一种新颖的光线投射技术模拟成千上万个单元。这种实现利用英特尔®线程构建模块来给多个线程和多个框架分配任务,并且使用单指令多数据流来确保指令级的并行化。)


图 1:应用截图
TickerTape.jpg


图 2:使用Intel Amplifier XE分析TickerTape的串行编程实现:请注意在函数中的热点是由消耗了多半时间的大多数串行任务(红色的横条)构成的,几乎没有并行运行。(参见下面绿色的线程使用视图)
AmplifierXE+Analysis+1.1.JPG


图 3:使用Intel Amplifier XE分析OpenMP实现:一些并行任务被执行(顶部橙色和绿色的区域)从而改善了处理器核心的利用率(底部)
AmplifierXE+Analysis+1.2.JPG


图4:分析使用TBB的任务实现:热点(很小的红色区域)中大多数任务被并行执行,改进了线程利用率(底部)
AmplifierXE+Analysis+1.3.JPG

 

Para obtener información más completa sobre las optimizaciones del compilador, consulte nuestro Aviso de optimización.