劉 琳, 何劍鋒, 游勝玉
(東華理工大學(xué) 軟件學(xué)院,江西 南昌 330013)
?
多核時(shí)代的交叉應(yīng)用型軟件開發(fā)人才培養(yǎng)探索與實(shí)踐
劉 琳, 何劍鋒, 游勝玉
(東華理工大學(xué) 軟件學(xué)院,江西 南昌 330013)
隨著多核并行計(jì)算時(shí)代的來(lái)臨,傳統(tǒng)的基于馮·諾依曼串行模式程序設(shè)計(jì)課程已不能滿足人才需求和培養(yǎng)。將“多核程序設(shè)計(jì)”課程與相關(guān)傳統(tǒng)程序設(shè)計(jì)課程結(jié)合,對(duì)課程體系的改革及交叉應(yīng)用型軟件開發(fā)人才的培養(yǎng)進(jìn)行了有益的探索,使學(xué)生及時(shí)掌握并行計(jì)算設(shè)計(jì)思想與編程習(xí)慣,提高編程能力,以應(yīng)對(duì)多核時(shí)代。
多核;并行計(jì)算;交叉應(yīng)用;教學(xué)實(shí)踐
劉琳,何劍鋒,游勝玉.多核時(shí)代的交叉應(yīng)用型軟件開發(fā)人才培養(yǎng)探索與實(shí)踐[J].東華理工大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,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.
隨著信息技術(shù)的發(fā)展,多核處理器已在PC上普及,相應(yīng)的軟件開發(fā)技術(shù)也從單線程編程改進(jìn)為多線程編程,并行計(jì)算技術(shù)成為關(guān)注熱點(diǎn),多核架構(gòu)給計(jì)算機(jī)設(shè)計(jì)理念和方法帶來(lái)了重大變革。在多核技術(shù)迅猛發(fā)展的影響下,計(jì)算機(jī)操作系統(tǒng)、體系結(jié)構(gòu)、編程模型等都發(fā)生了較大變化。傳統(tǒng)的串行化編程思想指導(dǎo)下的教學(xué)模式培養(yǎng)的觀念落后,與新興技術(shù)脫節(jié)的畢業(yè)生注定跟不上技術(shù)前進(jìn)的步伐并終將被淘汰,因此,對(duì)于傳統(tǒng)觀念教學(xué)模式的改革刻不容緩。作為軟件開發(fā)人才培養(yǎng)重要基地的高校,如何在多核并行計(jì)算的大潮中探索計(jì)算機(jī)相關(guān)課程的教學(xué)改革,培養(yǎng)具有創(chuàng)新能力和高效解決問(wèn)題能力的人才是一個(gè)新的挑戰(zhàn)。
“多核程序設(shè)計(jì)”是一門與其他程序設(shè)計(jì)類課程交叉較多、綜合性要求較高的課程,通過(guò)多核技術(shù)的靈活運(yùn)用,能夠?qū)崿F(xiàn)多個(gè)專業(yè)課程知識(shí)融合和體系提升,學(xué)生融會(huì)貫通所學(xué)知識(shí),能夠建立完整且系統(tǒng)的專業(yè)知識(shí)技能體系,在綜合應(yīng)用能力、系統(tǒng)設(shè)計(jì)能力、實(shí)際動(dòng)手能力能夠得到提升的同時(shí)專業(yè)學(xué)術(shù)視野得到擴(kuò)展。為此,本文在多核程序設(shè)計(jì)課程教學(xué)基礎(chǔ)上,與傳統(tǒng)程序設(shè)計(jì)課程如JAVA、VISUAL C++、數(shù)字圖像處理、C#、數(shù)據(jù)結(jié)構(gòu)等結(jié)合,在理論結(jié)構(gòu)安排及實(shí)驗(yàn)設(shè)計(jì)上加入這些課程的內(nèi)容,采用多視角、交叉思維的方式以促進(jìn)學(xué)生深刻理解多核編程核心思想、靈活運(yùn)用所學(xué)多核技術(shù)處理程序設(shè)計(jì)課程中實(shí)際問(wèn)題,激發(fā)學(xué)生研究興趣和創(chuàng)造潛能,幫助他們更有效地開展進(jìn)一步的科研和工作。
國(guó)外的高校,如麻省理工學(xué)院、喬治亞理工學(xué)院早在2003 年就已開設(shè)多核課程。
國(guó)內(nèi)高校對(duì)于“多核程序設(shè)計(jì)”課程及其交叉應(yīng)用也做了長(zhǎng)期不懈的探索與實(shí)踐。王小鴿等基于清華大學(xué)多核課程建設(shè)成果,介紹了并行計(jì)算、高性能計(jì)算、多核CPU 邏輯設(shè)計(jì)課程等[1];陳天洲等積累了“多核程序設(shè)計(jì)”課程多年經(jīng)驗(yàn),總結(jié)了多核精品課程建設(shè)[2-6]。高云等將多核技術(shù)引入到了前導(dǎo)課程“數(shù)據(jù)結(jié)構(gòu)課程中”,包括課堂教學(xué)內(nèi)容的擴(kuò)展,多核技術(shù)實(shí)踐大綱及實(shí)例,增進(jìn)學(xué)生的認(rèn)識(shí)[7];于芳等提出將多元學(xué)與教融合的多核程序設(shè)計(jì)教學(xué)模式,該模式可操作性較強(qiáng)[8];王愛俠等則通過(guò)改進(jìn)教學(xué)方法來(lái)提高“多核程序設(shè)計(jì)”教學(xué)效果[9]。
國(guó)內(nèi)外對(duì)于多核程序設(shè)計(jì)課程的探索與實(shí)踐取得了豐碩的成果,積累了大量的經(jīng)驗(yàn),但也存在著很多的問(wèn)題。
(1)雖然多核技術(shù)陸續(xù)引入到了數(shù)據(jù)結(jié)構(gòu)、系統(tǒng)結(jié)構(gòu)等課程中,但長(zhǎng)期以來(lái),計(jì)算機(jī)專業(yè)程序設(shè)計(jì)都是在單核的環(huán)境中,學(xué)生可能會(huì)有固有的單核編程思想,短期內(nèi)不容易改變。將多核技術(shù)融入到操作系統(tǒng)、編譯原理等課程中時(shí),可能會(huì)出現(xiàn)學(xué)生對(duì)基礎(chǔ)算法并行化了解甚少而無(wú)法順利接受新知識(shí)的情況。
(2)教學(xué)方法單一。教學(xué)過(guò)程中只注重知識(shí)的灌輸,沒有重視學(xué)生創(chuàng)新意識(shí)、動(dòng)手能力的培養(yǎng),學(xué)生除了課本的算法外,很少會(huì)主動(dòng)去改寫其他算法。
(3)學(xué)習(xí)效果評(píng)估量化形式不合理。軟件專業(yè)往往采取最傳統(tǒng)的筆試形式對(duì)學(xué)習(xí)效果進(jìn)行考核,這就與專業(yè)的培養(yǎng)方向產(chǎn)生了矛盾,而如果采取分小組上交作品的形式考核,又可能存在個(gè)別學(xué)習(xí)者濫竽充數(shù)的情況,同樣不能合理量化出學(xué)習(xí)者的學(xué)習(xí)效果[10]。
針對(duì)多核程序設(shè)計(jì)課程教研過(guò)程中存在的問(wèn)題,筆者計(jì)劃從以往的單核環(huán)境出發(fā),循序漸進(jìn)地啟發(fā)學(xué)生思路轉(zhuǎn)變;研究適用于多核環(huán)境的程序設(shè)計(jì)課程,并將多核內(nèi)容加入到其教學(xué)大綱中;課堂上加入大量實(shí)踐內(nèi)容,并讓學(xué)生在實(shí)驗(yàn)中加以驗(yàn)證和創(chuàng)新;除了經(jīng)典算法之外,引導(dǎo)學(xué)生廣泛研究其他課程算法并學(xué)習(xí)加速方法,進(jìn)而能夠?qū)δ吧乃惴ㄒ灿懈脑斓乃悸???疾旆绞揭部梢詫⑺悸反蜷_,每人上交不同的作品,算法可不限領(lǐng)域,只要能將多核編程的思想引入算法完成加速即可。鼓勵(lì)學(xué)生參加多核編程大賽。爭(zhēng)取能夠令學(xué)生思路開闊、具有一定的創(chuàng)新能力及對(duì)多核編程有濃厚興趣。
2.1 多核技術(shù)交叉應(yīng)用相關(guān)課程設(shè)計(jì)
多核程序設(shè)計(jì)課程知識(shí)點(diǎn)多、學(xué)時(shí)相對(duì)較少,因此在將其他相關(guān)課程引入到授課內(nèi)容中時(shí)必須注意學(xué)時(shí)的限制,同時(shí)這些課程最好是學(xué)生上學(xué)期已學(xué)課程或本學(xué)期正在進(jìn)行中的課程,這樣在引入過(guò)程中,不需要占用過(guò)多課時(shí)去介紹其他課程內(nèi)容,而將重點(diǎn)放在多核技術(shù)本身的交叉應(yīng)用上。我們的教學(xué)內(nèi)容重點(diǎn)在于并行的必要性、并行的可行性、并行化的依據(jù)以及并行的方法,而將其他課程的多核技術(shù)交叉應(yīng)用具體實(shí)現(xiàn)放在課程網(wǎng)站的參考資料中。這樣既便于學(xué)生了解多核編程的實(shí)質(zhì),開闊思路,又能夠給感興趣的同學(xué)提供學(xué)習(xí)的資料。如圖1所示,計(jì)算機(jī)專業(yè)開設(shè)課程中與多核技術(shù)密切相關(guān)的有數(shù)字圖像處理、C#.NET程序設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)、操作系統(tǒng)、計(jì)算機(jī)體系結(jié)構(gòu)、JAVA程序設(shè)計(jì)、Visual C++程序設(shè)計(jì)等課程,其中大部分課程都是學(xué)生在學(xué)習(xí)多核之前半年內(nèi)已開課程。
圖1 多核技術(shù)交叉應(yīng)用相關(guān)交叉課程
2.2 多核技術(shù)交叉應(yīng)用相關(guān)知識(shí)點(diǎn)設(shè)計(jì)
如表1所示,多核程序課程主要內(nèi)容可分為六個(gè)單元。
表1 多核技術(shù)交叉應(yīng)用相關(guān)知識(shí)點(diǎn)設(shè)計(jì)
根據(jù)“多核程序設(shè)計(jì)”教學(xué)大綱章節(jié)與知識(shí)點(diǎn)設(shè)置,在不占用原有課時(shí)與內(nèi)容講授的同時(shí),將多門課程內(nèi)容以問(wèn)題、思考、引導(dǎo)的方式穿插在授課中,在激發(fā)學(xué)生興趣、擴(kuò)展知識(shí)面的同時(shí),能夠?qū)⒃兄R(shí)進(jìn)行鞏固與提高。具體設(shè)計(jì)如下。
(1) 第一單元多核體系結(jié)構(gòu):主要介紹并行計(jì)算機(jī)概念、多核處理器架構(gòu)、多核處理器的支持方法等,本單元內(nèi)容較為抽象,為使學(xué)生更好理解和接受片上多核處理器架構(gòu),可先引入計(jì)算機(jī)體系結(jié)構(gòu)和操作系統(tǒng)相關(guān)內(nèi)容,循序漸進(jìn)地了解并行計(jì)算機(jī)概念并掌握操作系統(tǒng)對(duì)多核處理器的支持方法。
(2)第二單元并行化程序設(shè)計(jì)方法:在完成并行程序開發(fā)流程與模型選擇的基本授課內(nèi)容后,可將學(xué)生同步學(xué)習(xí)的數(shù)字圖像算法作為擴(kuò)展思考題目,在通過(guò)對(duì)圖像平滑、圖像逆轉(zhuǎn)、圖像放縮等簡(jiǎn)單算法的分析后,能夠根據(jù)不同算法選擇相應(yīng)的并行程序設(shè)計(jì)模型,并初步體會(huì)任務(wù)分解、數(shù)據(jù)分解、數(shù)據(jù)流分解等劃分模式對(duì)于并行算法的影響。
(3)第三單元問(wèn)題描述與算法設(shè)計(jì):本單元可使用數(shù)據(jù)結(jié)構(gòu)經(jīng)典算法如排序算法作為引入問(wèn)題,學(xué)生對(duì)于這些算法較為熟悉,不需要占用原課時(shí)去介紹。學(xué)生可在對(duì)算法進(jìn)行分解、設(shè)計(jì)的過(guò)程中體會(huì)到數(shù)據(jù)競(jìng)爭(zhēng)情況的存在,為下一步編程實(shí)現(xiàn)打好理論基礎(chǔ)。
(4)第四單元Windows API 多線程編程:Windows API編程入門較為復(fù)雜,學(xué)生在接觸API函數(shù)時(shí),容易產(chǎn)生畏難心理,因此在此單元內(nèi)容講授之前,可以用學(xué)生上學(xué)期完成的“C#.NET程序設(shè)計(jì)”中的方法去完成線程創(chuàng)建、同步、調(diào)度相關(guān)內(nèi)容,在學(xué)生熟悉線程相關(guān)技術(shù)后,再順理成章地在相同原理的基礎(chǔ)上用Visual C++技術(shù)進(jìn)行線程初步的操作。由易到難,由淺至深的過(guò)程會(huì)幫助學(xué)生更好吸收課堂知識(shí)。
(5)第五單元OpenMP多線程編程:本單元可在完成課堂基本內(nèi)容授課后,基于學(xué)生對(duì)于第二單元算法進(jìn)行初步分析、分解的基礎(chǔ)上,利用OpenMP技術(shù)對(duì)數(shù)字圖像相關(guān)算法進(jìn)行具體實(shí)驗(yàn),學(xué)生可以直觀地判斷算法設(shè)計(jì)優(yōu)劣及性能提升程度,掌握線程執(zhí)行和資源存取的方法。
(6)第六單元并行化程序性能調(diào)優(yōu):本單元主要介紹多核開發(fā)輔助工具,學(xué)生可將數(shù)據(jù)結(jié)構(gòu)算法導(dǎo)入工具后,觀察串行計(jì)算結(jié)果,利用性能分析、線程檢查等工具對(duì)算法進(jìn)行分析,將結(jié)果與第三單元初步分析方案進(jìn)行對(duì)比,并利用Wondows API或OpenMP所學(xué)技術(shù)對(duì)其進(jìn)行并行開發(fā),掌握多核開發(fā)輔助工具的使用。
加強(qiáng)教學(xué)與實(shí)踐的結(jié)合,立足于交叉應(yīng)用,是“多核程序設(shè)計(jì)”課程建設(shè)的重要特色。由于課程實(shí)驗(yàn)學(xué)時(shí)較少,因此在實(shí)驗(yàn)課程開始之前,將5個(gè)涉及其他課程交叉的題目通過(guò)網(wǎng)上教學(xué)平臺(tái)發(fā)布,使學(xué)生帶著問(wèn)題和任務(wù)去進(jìn)行實(shí)驗(yàn)學(xué)習(xí),在最后一次課時(shí)提交其中1-2個(gè)題目答案即可獲得實(shí)驗(yàn)成績(jī)加分。
表2 多核技術(shù)交叉綜合實(shí)驗(yàn)設(shè)計(jì)
實(shí)驗(yàn)與考核題目注重知識(shí)交叉,并不局限于以上課程。在最終考核試卷中交叉知識(shí)點(diǎn)以一個(gè)8—10分的技能提高綜合題目出現(xiàn)??己私Y(jié)果證明,大部分學(xué)生能夠完成綜合應(yīng)用題目的算法分析、數(shù)據(jù)分解、線程同步設(shè)計(jì)與實(shí)現(xiàn),并且學(xué)生思維較為發(fā)散,出現(xiàn)了使用C#、Visual C++、Java、OpenMP多種技術(shù)實(shí)現(xiàn)的答案,解題思路也各有不同,這些答案都體現(xiàn)了學(xué)生積極思考、靈活運(yùn)用所學(xué)知識(shí)的能力。
將多門專業(yè)必修課程相關(guān)內(nèi)容引入多核程序設(shè)計(jì)課程的教學(xué)和實(shí)踐是多核技術(shù)教育方面的一次嘗試,是跟隨學(xué)科發(fā)展對(duì)多核課程的一次更新。多核技術(shù)改變了以往串行化編程的思路,需要幫助學(xué)生建立一種多核平臺(tái)下的并行化程序設(shè)計(jì)的方法, 所以在教學(xué)中引入數(shù)據(jù)結(jié)構(gòu)、C#.NET程序設(shè)計(jì)等課程,教學(xué)過(guò)程可以采用預(yù)設(shè)問(wèn)題、以提問(wèn)、分組討論、比較論證等多種形式進(jìn)行啟發(fā)式、互動(dòng)式教學(xué),引導(dǎo)學(xué)生從易到難、積極思考。另外,基礎(chǔ)實(shí)驗(yàn)和綜合實(shí)驗(yàn)結(jié)合,交叉應(yīng)用實(shí)驗(yàn)任務(wù)始終貫穿整個(gè)過(guò)程,引導(dǎo)學(xué)生反復(fù)思考問(wèn)題進(jìn)而解決問(wèn)題。這兩部分的反復(fù)實(shí)踐,不斷強(qiáng)化學(xué)生并行化程序的能力,能夠培養(yǎng)學(xué)生的自學(xué)能力、團(tuán)隊(duì)協(xié)作能力、解決問(wèn)題能力、軟件開發(fā)能力等多種能力。
[1] 薛巍. 多核課程建設(shè)[J]. 計(jì)算機(jī)教育,2007(6):40-43.
[2] 吳繼雁. 多核技術(shù)及發(fā)展趨勢(shì)[J]. 哈爾濱軸承,2007,28(2):57-58.
[3] 劉近光,梁滿貴. 多核多線程處理器的發(fā)展及其軟件系統(tǒng)架構(gòu)[J]. 微處理機(jī),2007(1):1-3.
[4] 陳天洲,曹捷,王靖淇.“多核程序設(shè)計(jì)”概述[J]. 計(jì)算機(jī)教育,2007(7):39-41.
[5] 陳天洲,劉蘇明. 教育部骨干教師培訓(xùn)課程設(shè)計(jì):多核技術(shù)[J]. 計(jì)算機(jī)教育,2007(10):65-67.
[6] 陳天洲,王靖淇,劉蘇明. 從“教育部-英特爾精品課程”評(píng)審看大學(xué)對(duì)多核技術(shù)的課程改革[J]. 計(jì)算機(jī)教育, 2007(6):37-39.
[7]高云,魏振鋼,洪峰,等. 多核技術(shù)在數(shù)據(jù)結(jié)構(gòu)課程中的引入與探討[J]. 計(jì)算機(jī)教育,2010(14):84-86,90.
[8]于方. 多元學(xué)與教融合的多核程序設(shè)計(jì)課程教學(xué)模式[J]. 計(jì)算機(jī)時(shí)代,2013(6):69-71.
[9] 王愛俠,李晶皎,李貞妮. “多核技術(shù)”課程建設(shè)研究[J]. 電氣電子教學(xué)學(xué)報(bào),2014(06):27-28+68.
[10] 吳光文,朱兆優(yōu),胡文龍,等.基于RTOS平臺(tái)的嵌入式系統(tǒng)課程群教學(xué)研究[J].東華理工大學(xué)學(xué)報(bào):社會(huì)科學(xué)版,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
東華理工大學(xué)校級(jí)教改課題“多核技術(shù)在程序設(shè)計(jì)課程中的引入與改革研究”(1310100011); 軟件工程專業(yè)國(guó)家卓越工程師教育培養(yǎng)計(jì)劃;《Visual C++程序設(shè)計(jì)》重點(diǎn)課程建設(shè);基于多核集群的大規(guī)模地質(zhì)建模性能優(yōu)化方法研究(GJJ14491)。
劉 琳(1982—) 女,河南南陽(yáng)人,講師,碩士,主要從事高性能計(jì)算、圖形與圖像處理研究。
G642.0
A
1674-3512(2017)01-0083-04