多核时代的交叉应用型软件开发人才培养探索与实践

2017-04-07 07:51:54何剑锋游胜玉
关键词:核技术程序设计交叉

刘 琳, 何剑锋, 游胜玉

(东华理工大学 软件学院,江西 南昌 330013)



多核时代的交叉应用型软件开发人才培养探索与实践

刘 琳, 何剑锋, 游胜玉

(东华理工大学 软件学院,江西 南昌 330013)

随着多核并行计算时代的来临,传统的基于冯·诺依曼串行模式程序设计课程已不能满足人才需求和培养。将“多核程序设计”课程与相关传统程序设计课程结合,对课程体系的改革及交叉应用型软件开发人才的培养进行了有益的探索,使学生及时掌握并行计算设计思想与编程习惯,提高编程能力,以应对多核时代。

多核;并行计算;交叉应用;教学实践

刘琳,何剑锋,游胜玉.多核时代的交叉应用型软件开发人才培养探索与实践[J].东华理工大学学报:社会科学版,2017,36(1):83-86.

Liu Lin, He Jian-feng, You Sheng-yu.Exploration and practice of cross-application-oriented software talents’ training in the multi-core Era[J].Journal of East China University of Technology(Social Science),2017,36(1):83-86.

随着信息技术的发展,多核处理器已在PC上普及,相应的软件开发技术也从单线程编程改进为多线程编程,并行计算技术成为关注热点,多核架构给计算机设计理念和方法带来了重大变革。在多核技术迅猛发展的影响下,计算机操作系统、体系结构、编程模型等都发生了较大变化。传统的串行化编程思想指导下的教学模式培养的观念落后,与新兴技术脱节的毕业生注定跟不上技术前进的步伐并终将被淘汰,因此,对于传统观念教学模式的改革刻不容缓。作为软件开发人才培养重要基地的高校,如何在多核并行计算的大潮中探索计算机相关课程的教学改革,培养具有创新能力和高效解决问题能力的人才是一个新的挑战。

“多核程序设计”是一门与其他程序设计类课程交叉较多、综合性要求较高的课程,通过多核技术的灵活运用,能够实现多个专业课程知识融合和体系提升,学生融会贯通所学知识,能够建立完整且系统的专业知识技能体系,在综合应用能力、系统设计能力、实际动手能力能够得到提升的同时专业学术视野得到扩展。为此,本文在多核程序设计课程教学基础上,与传统程序设计课程如JAVA、VISUAL C++、数字图像处理、C#、数据结构等结合,在理论结构安排及实验设计上加入这些课程的内容,采用多视角、交叉思维的方式以促进学生深刻理解多核编程核心思想、灵活运用所学多核技术处理程序设计课程中实际问题,激发学生研究兴趣和创造潜能,帮助他们更有效地开展进一步的科研和工作。

1 “多核程序设计”课程教研现状

国外的高校,如麻省理工学院、乔治亚理工学院早在2003 年就已开设多核课程。

国内高校对于“多核程序设计”课程及其交叉应用也做了长期不懈的探索与实践。王小鸽等基于清华大学多核课程建设成果,介绍了并行计算、高性能计算、多核CPU 逻辑设计课程等[1];陈天洲等积累了“多核程序设计”课程多年经验,总结了多核精品课程建设[2-6]。高云等将多核技术引入到了前导课程“数据结构课程中”,包括课堂教学内容的扩展,多核技术实践大纲及实例,增进学生的认识[7];于芳等提出将多元学与教融合的多核程序设计教学模式,该模式可操作性较强[8];王爱侠等则通过改进教学方法来提高“多核程序设计”教学效果[9]。

国内外对于多核程序设计课程的探索与实践取得了丰硕的成果,积累了大量的经验,但也存在着很多的问题。

(1)虽然多核技术陆续引入到了数据结构、系统结构等课程中,但长期以来,计算机专业程序设计都是在单核的环境中,学生可能会有固有的单核编程思想,短期内不容易改变。将多核技术融入到操作系统、编译原理等课程中时,可能会出现学生对基础算法并行化了解甚少而无法顺利接受新知识的情况。

(2)教学方法单一。教学过程中只注重知识的灌输,没有重视学生创新意识、动手能力的培养,学生除了课本的算法外,很少会主动去改写其他算法。

(3)学习效果评估量化形式不合理。软件专业往往采取最传统的笔试形式对学习效果进行考核,这就与专业的培养方向产生了矛盾,而如果采取分小组上交作品的形式考核,又可能存在个别学习者滥竽充数的情况,同样不能合理量化出学习者的学习效果[10]。

2 多核技术交叉应用课堂知识点扩展

针对多核程序设计课程教研过程中存在的问题,笔者计划从以往的单核环境出发,循序渐进地启发学生思路转变;研究适用于多核环境的程序设计课程,并将多核内容加入到其教学大纲中;课堂上加入大量实践内容,并让学生在实验中加以验证和创新;除了经典算法之外,引导学生广泛研究其他课程算法并学习加速方法,进而能够对陌生的算法也有改造的思路。考察方式也可以将思路打开,每人上交不同的作品,算法可不限领域,只要能将多核编程的思想引入算法完成加速即可。鼓励学生参加多核编程大赛。争取能够令学生思路开阔、具有一定的创新能力及对多核编程有浓厚兴趣。

2.1 多核技术交叉应用相关课程设计

多核程序设计课程知识点多、学时相对较少,因此在将其他相关课程引入到授课内容中时必须注意学时的限制,同时这些课程最好是学生上学期已学课程或本学期正在进行中的课程,这样在引入过程中,不需要占用过多课时去介绍其他课程内容,而将重点放在多核技术本身的交叉应用上。我们的教学内容重点在于并行的必要性、并行的可行性、并行化的依据以及并行的方法,而将其他课程的多核技术交叉应用具体实现放在课程网站的参考资料中。这样既便于学生了解多核编程的实质,开阔思路,又能够给感兴趣的同学提供学习的资料。如图1所示,计算机专业开设课程中与多核技术密切相关的有数字图像处理、C#.NET程序设计、数据结构、操作系统、计算机体系结构、JAVA程序设计、Visual C++程序设计等课程,其中大部分课程都是学生在学习多核之前半年内已开课程。

图1 多核技术交叉应用相关交叉课程

2.2 多核技术交叉应用相关知识点设计

如表1所示,多核程序课程主要内容可分为六个单元。

表1 多核技术交叉应用相关知识点设计

根据“多核程序设计”教学大纲章节与知识点设置,在不占用原有课时与内容讲授的同时,将多门课程内容以问题、思考、引导的方式穿插在授课中,在激发学生兴趣、扩展知识面的同时,能够将原有知识进行巩固与提高。具体设计如下。

(1) 第一单元多核体系结构:主要介绍并行计算机概念、多核处理器架构、多核处理器的支持方法等,本单元内容较为抽象,为使学生更好理解和接受片上多核处理器架构,可先引入计算机体系结构和操作系统相关内容,循序渐进地了解并行计算机概念并掌握操作系统对多核处理器的支持方法。

(2)第二单元并行化程序设计方法:在完成并行程序开发流程与模型选择的基本授课内容后,可将学生同步学习的数字图像算法作为扩展思考题目,在通过对图像平滑、图像逆转、图像放缩等简单算法的分析后,能够根据不同算法选择相应的并行程序设计模型,并初步体会任务分解、数据分解、数据流分解等划分模式对于并行算法的影响。

(3)第三单元问题描述与算法设计:本单元可使用数据结构经典算法如排序算法作为引入问题,学生对于这些算法较为熟悉,不需要占用原课时去介绍。学生可在对算法进行分解、设计的过程中体会到数据竞争情况的存在,为下一步编程实现打好理论基础。

(4)第四单元Windows API 多线程编程:Windows API编程入门较为复杂,学生在接触API函数时,容易产生畏难心理,因此在此单元内容讲授之前,可以用学生上学期完成的“C#.NET程序设计”中的方法去完成线程创建、同步、调度相关内容,在学生熟悉线程相关技术后,再顺理成章地在相同原理的基础上用Visual C++技术进行线程初步的操作。由易到难,由浅至深的过程会帮助学生更好吸收课堂知识。

(5)第五单元OpenMP多线程编程:本单元可在完成课堂基本内容授课后,基于学生对于第二单元算法进行初步分析、分解的基础上,利用OpenMP技术对数字图像相关算法进行具体实验,学生可以直观地判断算法设计优劣及性能提升程度,掌握线程执行和资源存取的方法。

(6)第六单元并行化程序性能调优:本单元主要介绍多核开发辅助工具,学生可将数据结构算法导入工具后,观察串行计算结果,利用性能分析、线程检查等工具对算法进行分析,将结果与第三单元初步分析方案进行对比,并利用Wondows API或OpenMP所学技术对其进行并行开发,掌握多核开发辅助工具的使用。

3 课程实验教学模式探讨

加强教学与实践的结合,立足于交叉应用,是“多核程序设计”课程建设的重要特色。由于课程实验学时较少,因此在实验课程开始之前,将5个涉及其他课程交叉的题目通过网上教学平台发布,使学生带着问题和任务去进行实验学习,在最后一次课时提交其中1-2个题目答案即可获得实验成绩加分。

表2 多核技术交叉综合实验设计

实验与考核题目注重知识交叉,并不局限于以上课程。在最终考核试卷中交叉知识点以一个8—10分的技能提高综合题目出现。考核结果证明,大部分学生能够完成综合应用题目的算法分析、数据分解、线程同步设计与实现,并且学生思维较为发散,出现了使用C#、Visual C++、Java、OpenMP多种技术实现的答案,解题思路也各有不同,这些答案都体现了学生积极思考、灵活运用所学知识的能力。

4 教学与实践经验

将多门专业必修课程相关内容引入多核程序设计课程的教学和实践是多核技术教育方面的一次尝试,是跟随学科发展对多核课程的一次更新。多核技术改变了以往串行化编程的思路,需要帮助学生建立一种多核平台下的并行化程序设计的方法, 所以在教学中引入数据结构、C#.NET程序设计等课程,教学过程可以采用预设问题、以提问、分组讨论、比较论证等多种形式进行启发式、互动式教学,引导学生从易到难、积极思考。另外,基础实验和综合实验结合,交叉应用实验任务始终贯穿整个过程,引导学生反复思考问题进而解决问题。这两部分的反复实践,不断强化学生并行化程序的能力,能够培养学生的自学能力、团队协作能力、解决问题能力、软件开发能力等多种能力。

[1] 薛巍. 多核课程建设[J]. 计算机教育,2007(6):40-43.

[2] 吴继雁. 多核技术及发展趋势[J]. 哈尔滨轴承,2007,28(2):57-58.

[3] 刘近光,梁满贵. 多核多线程处理器的发展及其软件系统架构[J]. 微处理机,2007(1):1-3.

[4] 陈天洲,曹捷,王靖淇.“多核程序设计”概述[J]. 计算机教育,2007(7):39-41.

[5] 陈天洲,刘苏明. 教育部骨干教师培训课程设计:多核技术[J]. 计算机教育,2007(10):65-67.

[6] 陈天洲,王靖淇,刘苏明. 从“教育部-英特尔精品课程”评审看大学对多核技术的课程改革[J]. 计算机教育, 2007(6):37-39.

[7]高云,魏振钢,洪峰,等. 多核技术在数据结构课程中的引入与探讨[J]. 计算机教育,2010(14):84-86,90.

[8]于方. 多元学与教融合的多核程序设计课程教学模式[J]. 计算机时代,2013(6):69-71.

[9] 王爱侠,李晶皎,李贞妮. “多核技术”课程建设研究[J]. 电气电子教学学报,2014(06):27-28+68.

[10] 吴光文,朱兆优,胡文龙,等.基于RTOS平台的嵌入式系统课程群教学研究[J].东华理工大学学报:社会科学版,2016(1):93-96.

Exploration and Practice of Cross-application-oriented Software Talents’ Training in the Multi-core Era

LIU Lin, HE Jian-feng, YOU Sheng-yu

(SchoolofSoftware,EastChinaUniversityofTechnology,Nanchang330013,China)

With the advent of multi-core parallel computing, the traditional computer programming course based on the von neumann serial courses can not meet the demand and training of talents. In this paper, “multi-core programming” and related traditional program design course are combined,and the reform of course system and the training of cross-application-oriented software talents are explored, which can make students grasp parallel computing in design and programming so as to improve the ability of programming and be equal to the multi-core era.

multi-core; parallel computing; cross application; the teaching practice

2016-08-05

东华理工大学校级教改课题“多核技术在程序设计课程中的引入与改革研究”(1310100011); 软件工程专业国家卓越工程师教育培养计划;《Visual C++程序设计》重点课程建设;基于多核集群的大规模地质建模性能优化方法研究(GJJ14491)。

刘 琳(1982—) 女,河南南阳人,讲师,硕士,主要从事高性能计算、图形与图像处理研究。

G642.0

A

1674-3512(2017)01-0083-04

猜你喜欢
核技术程序设计交叉
张宇蔚:民用非动力核技术的“领跑者”
华人时刊(2022年13期)2022-10-27 08:56:20
基于Visual Studio Code的C语言程序设计实践教学探索
计算机教育(2020年5期)2020-07-24 08:52:56
“六法”巧解分式方程
从细节入手,谈PLC程序设计技巧
电子制作(2019年9期)2019-05-30 09:42:04
高职高专院校C语言程序设计教学改革探索
连一连
身边的核技术
扬帆破浪 砥砺前行
——庆祝国防科工局核技术支持中心成立十周年
基于Fast-ICA的Wigner-Ville分布交叉项消除方法
计算机工程(2015年8期)2015-07-03 12:19:54
PLC梯形图程序设计技巧及应用