趙青+熊聰聰+周婧
摘 要: 近期,Google的“阿法狗”戰(zhàn)勝前世界圍棋第一人、韓國九段名將李世石讓全世界人民都聚焦到“大數(shù)據(jù)”、“深度學(xué)習(xí)”上來。而這些復(fù)雜智能算法的背后,都離不開并行計(jì)算、云計(jì)算技術(shù)的支持。尤其是當(dāng)今隨著高精尖儀器科學(xué)的發(fā)展,各領(lǐng)域所能探測和采集的實(shí)驗(yàn)數(shù)據(jù)都在急劇增長,如何能夠解決海量數(shù)據(jù)下的計(jì)算復(fù)雜度高、耗時長、存儲需求大的問題,并行計(jì)算技術(shù)必不可少,如果說計(jì)算機(jī)科學(xué)是一門工具科學(xué),那么并行計(jì)算技術(shù)就是工具中的工具。它可以提高科研實(shí)驗(yàn)效率,變不可能為可能,開闊科研思路,從而加快科研成果的產(chǎn)出,對各種其他科研方向都有著重要的推進(jìn)作用。
關(guān)鍵詞:并行算法 程序設(shè)計(jì) 改革教學(xué)
中圖分類號:G64 文獻(xiàn)標(biāo)識碼:A 文章編號:1003-9082(2016)10-0178-01
傳統(tǒng)并行計(jì)算教學(xué)主要依靠大型機(jī)器,對硬件的要求高,因此學(xué)生實(shí)踐往往受到限制,今年來,因?yàn)槌杀竞蛿U(kuò)展性方面的優(yōu)勢,由普通商業(yè)機(jī)器組建大型集群也漸成并行分布式領(lǐng)域的主流。而且,隨著多核時代的到來、以及GPU技術(shù)的普及,普通PC機(jī)的性能已經(jīng)大大提高,現(xiàn)在簡單幾臺PC機(jī)就可以成為并行計(jì)算實(shí)驗(yàn)平臺,大大方便了并行計(jì)算課程的課上授課和課下實(shí)踐教學(xué)的展開。因此,如何改革并行算法與程序設(shè)計(jì)課程的實(shí)踐教學(xué)環(huán)境,并推進(jìn)與其他交叉領(lǐng)域的擴(kuò)展和融合,提升并行計(jì)算技術(shù)對其他領(lǐng)域的服務(wù)性是當(dāng)前研究的關(guān)鍵。
本文旨在研究如何合理規(guī)劃并行算法與程序設(shè)計(jì)課程的課時,并在此基礎(chǔ)上探索如何引導(dǎo)學(xué)生根據(jù)各自的科研課題方向自選實(shí)踐課題,培養(yǎng)自主學(xué)習(xí)和實(shí)驗(yàn)的能力,以達(dá)到既能提升并行算法編程能力,又能對所從事的科研方向起到促進(jìn)作用,從而使并行計(jì)算技術(shù)真正成為計(jì)算機(jī)領(lǐng)域科研中一種可以應(yīng)用、會應(yīng)用的有效工具,對于培養(yǎng)當(dāng)今大數(shù)據(jù)時代的信息技術(shù)高級人才至關(guān)重要。
一、改進(jìn)教學(xué)方法—— 實(shí)例驅(qū)動型課程的建設(shè)
并行計(jì)算與程序設(shè)計(jì)課程的學(xué)習(xí)具有一定的復(fù)雜性特征,它以串行程序設(shè)計(jì)、計(jì)算機(jī)體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)、算法分析等課程為基礎(chǔ),且并行算法的思想一般較難理解,在算法設(shè)計(jì)中還要考慮資源競爭中所采取的同步互斥策略,在調(diào)試階段由于調(diào)試工具的不足和運(yùn)行本身的復(fù)雜性,使得問題頻出,調(diào)試難度高。這些都直接導(dǎo)致并行計(jì)算在學(xué)習(xí)上具有一定的難度。因此,在有限的教學(xué)學(xué)時內(nèi)讓學(xué)生充分掌握并行計(jì)算技術(shù)的核心思想和應(yīng)用技巧并不容易。
因此,我們引入了實(shí)例驅(qū)動型授課方式,對并行計(jì)算中的一些較難理解的思想,如劃分與分治方法、同步與互斥中的互斥鎖、信號量等技術(shù),我們把多年教學(xué)和科研中積累的典型場景、典型應(yīng)用引入課堂教學(xué)中,并嘗試采用多媒體教學(xué)工具動態(tài)演示一些較為晦澀的并行執(zhí)行過程,或結(jié)合一些生動有趣的經(jīng)典小故事,讓學(xué)生切實(shí)理解并行思想的精要之處。
實(shí)例驅(qū)動型授課改進(jìn)的重點(diǎn)在于實(shí)例庫的建設(shè)和擴(kuò)充,為此我們既要旁征博引,即參考一些經(jīng)典課本中的典型應(yīng)用案例,又要結(jié)合我們?nèi)粘2⑿杏?jì)算方向科研自主取得的研究成果,也要積累往屆學(xué)生的優(yōu)秀課程作業(yè),從而進(jìn)一步提高實(shí)例化教學(xué)的所占比例,已讓學(xué)生達(dá)到可以活學(xué)活用的目的。
二、自主選題課下實(shí)踐教學(xué)的推進(jìn)與考核體系的建立
為了充分體現(xiàn)并行計(jì)算技術(shù)的實(shí)踐性和服務(wù)性特征,使學(xué)生能夠真正學(xué)有所用,可以成為今后科研實(shí)驗(yàn)的有效手段,同時也為了彌補(bǔ)課時的相對不足,我們鼓勵學(xué)生在課下的實(shí)踐環(huán)節(jié)通過結(jié)合自身科研方向的自主選題展開動手實(shí)踐,讓并行計(jì)算技術(shù)能在各自的研究領(lǐng)域中真正落地,真正能夠?qū)W(xué)生的日??蒲袑?shí)驗(yàn)起到加速的目的,讓并行計(jì)算技術(shù)能在與我學(xué)院的其他優(yōu)勢科研領(lǐng)域的相互融合和交叉中激發(fā)出更多的科研思路。在此基礎(chǔ)上,優(yōu)化當(dāng)前的考核體系,以實(shí)踐成果為主要檢驗(yàn)對象,特別是引導(dǎo)學(xué)生完成從自主選題,到算法設(shè)計(jì)、再到并行平臺搭建和程序運(yùn)行,最后到結(jié)果性能分析和課程論文撰寫的全套科研模式,并以完成質(zhì)量為課程分?jǐn)?shù)的主要衡量標(biāo)準(zhǔn),并在此基礎(chǔ)上進(jìn)一步鼓勵學(xué)生以找到科研交叉點(diǎn),撰寫和發(fā)表小論文為最優(yōu)成果,從而培養(yǎng)研一學(xué)生的科研能力。
三、教學(xué)實(shí)踐云平臺的建設(shè)
Spark是當(dāng)今最新最熱門的類Hadoop MapReduce通用并行框架,它擁有經(jīng)典云平臺Hadoop的所有優(yōu)點(diǎn);但不同于MapReduce的是Job中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫Hadoop文件系統(tǒng),因此Spark能更好地適用于數(shù)據(jù)挖掘與機(jī)器學(xué)習(xí)等需要迭代的MapReduce的算法中。利用機(jī)房的數(shù)十臺普通PC機(jī)器,構(gòu)建Spark云計(jì)算平臺,既能鍛煉學(xué)生理解云計(jì)算、理解分布式計(jì)算處理的能力,又能培養(yǎng)學(xué)生的應(yīng)用并行計(jì)算技術(shù)解決實(shí)際科研領(lǐng)域問題的能力。
四、課下合作小組機(jī)制的建立和健全
并行程序在編程思想上與串行程序差別很大,剛開始學(xué)生很容易難以適應(yīng),而在平臺搭建、程序運(yùn)行調(diào)試等實(shí)驗(yàn)階段,與串行程序相比難度也明顯加大,往往會遇到各種各樣不可預(yù)知的異常錯誤,由于并行執(zhí)行的各個線程或進(jìn)程對系統(tǒng)資源的搶占,每次執(zhí)行順序可能都不盡相同,這就導(dǎo)致很多異常很難再現(xiàn),同時并行調(diào)試工具也相對不足,這些都導(dǎo)致并行程序在實(shí)際運(yùn)行中較為困難。鼓勵學(xué)生成立合作小組,相互合作、多方探討、共同推進(jìn),是提高學(xué)生實(shí)踐積極性的必然出路。經(jīng)過前期的教學(xué)實(shí)踐,這種小組機(jī)制已經(jīng)初見成效,但在小組組織形式、管理模式方面應(yīng)該進(jìn)一步優(yōu)化,提高小組的凝聚力,提高組員的主動性是改革的目標(biāo)。
五、小結(jié)
經(jīng)過多年的“并行算法與程序設(shè)計(jì)”課程教學(xué),我們從中體會到要讓學(xué)生充分領(lǐng)會并行計(jì)算的精要,達(dá)到活學(xué)活用的目的,就要全面改進(jìn)授課方式,提高實(shí)例教學(xué)、實(shí)踐教學(xué)的比例,并充分調(diào)動學(xué)生的課后主動實(shí)踐、主動應(yīng)用的積極性,并結(jié)合研究生階段的各自研究方向,充分探索并行計(jì)算技術(shù)在各交叉學(xué)科中的應(yīng)用能力,提高并行計(jì)算技術(shù)的服務(wù)性作用,并鼓勵學(xué)生以小組為單位,共同合作,迎難而上,已達(dá)到更好的教學(xué)效果。