鄭 紅 李建華 郭衛(wèi)斌 龐毅林
摘要:本文根據(jù)我系的“教育部-Intel精品課程”建設(shè)項(xiàng)目課程建設(shè)經(jīng)驗(yàn),探討了面向計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科生的并行與分布計(jì)算課程的實(shí)驗(yàn)教學(xué)的內(nèi)容和設(shè)計(jì)。
關(guān)鍵詞:并行與分布計(jì)算;實(shí)驗(yàn)教學(xué);教學(xué)改革
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
隨著計(jì)算機(jī)技術(shù)的發(fā)展,作為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)的學(xué)生迫切需要掌握各種新型并行與分布式計(jì)算的理論、模型、方法和技術(shù),以適應(yīng)社會(huì)對(duì)人才不斷增長的需求,因此,近年來,我系為計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)本科生開設(shè)了并行與分布計(jì)算課程,這門課程培養(yǎng)目標(biāo)主要是普及并行計(jì)算技術(shù),使廣大的程序設(shè)計(jì)與開發(fā)者可以發(fā)揮超級(jí)計(jì)算、分布計(jì)算的優(yōu)勢;同時(shí),這門課程也是一門實(shí)踐性很強(qiáng)的課程,除了系統(tǒng)的課堂理論學(xué)習(xí)外,還需要配有足夠數(shù)量的實(shí)驗(yàn)內(nèi)容,以便鞏固和加深學(xué)生對(duì)并行算法理論、設(shè)計(jì)技術(shù)、分析方法和具體實(shí)現(xiàn)等各個(gè)環(huán)節(jié)的整體理解。為此,課程組針對(duì)本科教學(xué)的特點(diǎn),采用泛講、精講和實(shí)驗(yàn)相結(jié)合的方式,設(shè)計(jì)了相應(yīng)的實(shí)驗(yàn)來顯式地說明所教授的理論,根據(jù)并行與分布計(jì)算技術(shù)的本身特點(diǎn),以及我校課程體系的設(shè)置情況,并行與分布計(jì)算技術(shù)涵蓋了從單機(jī)、“多核”、SMP、集群、到Grid的各種尺度的并行技術(shù),將課程平臺(tái)建立在系統(tǒng)結(jié)構(gòu)、算法、程序設(shè)計(jì)實(shí)踐等方面,建立了并行和分布計(jì)算的全面的課程體系。
2008年4月,作為Intel大學(xué)合作計(jì)劃的合作伙伴,華東理工大學(xué)派遣本課程的授課教師參加了相關(guān)技術(shù)培訓(xùn),該課程進(jìn)入“Intel大學(xué)合作計(jì)劃”。2008年5月,雙方正式簽署了合作協(xié)議,Intel公司捐贈(zèng)了部分相關(guān)實(shí)驗(yàn)設(shè)備。2008年6月,華東理工大學(xué)的并行與分布計(jì)算課程被批準(zhǔn)為2008年度“教育部-Intel精品課程”建設(shè)項(xiàng)目。
1實(shí)驗(yàn)條件
根據(jù)并行與分布計(jì)算技術(shù)的本身特點(diǎn),以及我校課程體系的設(shè)置情況,并行與分布計(jì)算技術(shù)涵蓋了從單機(jī)、“多核”、SMP、集群、到Grid的各種尺度的并行技術(shù)。將課程平臺(tái)建立在系統(tǒng)結(jié)構(gòu)、算法、程序設(shè)計(jì)實(shí)踐等方面,建立了并行和分布計(jì)算的全面的課程體系。在本課程開展初期,由于實(shí)驗(yàn)條件的限制,本課程的教學(xué)主要是采用理論教學(xué)和單機(jī)實(shí)驗(yàn)為主。Intel多核計(jì)算機(jī)的出現(xiàn),為教師和學(xué)生提供了良好的實(shí)驗(yàn)條件。本課程將Intel多核架構(gòu)增加到本課程的系統(tǒng)結(jié)構(gòu)部分,在程序設(shè)計(jì)時(shí)重點(diǎn)介紹OpenMP、MPI和微軟的超線程技術(shù)及其在Intel多核架構(gòu)上實(shí)現(xiàn);在硬件建設(shè)上,建立了多核專業(yè)實(shí)驗(yàn)室,用于學(xué)生的實(shí)踐操作;軟件建設(shè)上,建立了OpenMP、MPI編程環(huán)境,從而使學(xué)生能很方便的進(jìn)行并行程序設(shè)計(jì)及多核架構(gòu)實(shí)踐活動(dòng)。
經(jīng)過了數(shù)年教學(xué)實(shí)踐,本課程組編寫了實(shí)驗(yàn)指導(dǎo)講義,通過上機(jī)實(shí)驗(yàn)和課外創(chuàng)新實(shí)踐活動(dòng),使學(xué)生能夠更扎實(shí)地理解和掌握并行和分布計(jì)算的基本理論和實(shí)現(xiàn)技術(shù)。
目前在本校計(jì)算機(jī)教學(xué)實(shí)驗(yàn)中心建立了兩個(gè)多核計(jì)算機(jī)實(shí)驗(yàn)室,擁有多核微機(jī)100多臺(tái),并在這些機(jī)器上安裝相應(yīng)的開源軟件,使得學(xué)生能在該實(shí)驗(yàn)室內(nèi)設(shè)計(jì)和實(shí)踐并行程序。在Web服務(wù)器上建立了本課程的教學(xué)資料和輔導(dǎo)材料的網(wǎng)站,包括課程介紹、教學(xué)資源、教學(xué)實(shí)驗(yàn)等內(nèi)容,使得學(xué)生能夠通過互聯(lián)網(wǎng)進(jìn)行學(xué)習(xí)。此外,還計(jì)劃組織安排學(xué)生參觀我校的上海超級(jí)計(jì)算中心分中心。
2實(shí)驗(yàn)教學(xué)
緊密結(jié)合本學(xué)科和專業(yè)特點(diǎn),根據(jù)學(xué)生知識(shí)結(jié)構(gòu)因材施教,本課程實(shí)驗(yàn)教學(xué)注重學(xué)生對(duì)并行程序設(shè)計(jì)的掌握,強(qiáng)調(diào)對(duì)學(xué)生“創(chuàng)新性能力”的培養(yǎng),提高學(xué)生解決實(shí)際問題的能力。
2.1實(shí)驗(yàn)內(nèi)容
課程基礎(chǔ)實(shí)驗(yàn)注重提高學(xué)生掌握基于多核架構(gòu)的并行計(jì)算編程技術(shù)的能力,包括了在Windows和Linux操作系統(tǒng)下的多核基礎(chǔ)編程及各個(gè)工具軟件的使用。實(shí)驗(yàn)包括了在Windows和Linux操作系統(tǒng)下的多核架構(gòu)的熟悉、基于多核的基礎(chǔ)編程及各個(gè)工具軟件的使用。對(duì)基礎(chǔ)實(shí)驗(yàn)的考核指標(biāo):完成時(shí)間與性能參數(shù)。對(duì)基礎(chǔ)實(shí)驗(yàn)的設(shè)計(jì),將Intel多核架構(gòu)增加到本課程的系統(tǒng)結(jié)構(gòu)部分,在程序設(shè)計(jì)時(shí)重點(diǎn)介紹OpenMP多線程技術(shù)及其在Intel多核架構(gòu)上實(shí)現(xiàn);在硬件建設(shè)上,建立多核專業(yè)實(shí)驗(yàn)室,用于學(xué)生的實(shí)踐操作;軟件建設(shè)上,建立OpenMP編程環(huán)境,使學(xué)生能很方便的進(jìn)行編程實(shí)踐活動(dòng)。
(1) 多核軟件設(shè)計(jì)技術(shù)
主要講授基于Windows和Linux等操作系統(tǒng)平臺(tái)上多線程程序設(shè)計(jì)的基本操作系統(tǒng)原語,如Windows平臺(tái)上的多線程API接口函數(shù),包括線程創(chuàng)建、撤銷、掛起/恢復(fù)、優(yōu)先級(jí)設(shè)置、睡眠、臨界區(qū)等。以及OpenMP的基本設(shè)計(jì)方法,以期讓學(xué)生掌握使用多線程方法進(jìn)行多核軟件設(shè)計(jì)的基本技能。
(2) 并行程序設(shè)計(jì)基本方法
主要講授并行計(jì)算程序設(shè)計(jì)的一般原理和并行程序設(shè)計(jì)實(shí)例。通過對(duì)兩個(gè)經(jīng)典串行問題(優(yōu)先級(jí)查找和K值算法)并行化改造過程的實(shí)驗(yàn),提高分析和解決問題的能力,以及實(shí)際動(dòng)手編程的能力。
(3) 工具軟件的使用
工具軟件包括:Intel C++和Fortran編譯器、Intel數(shù)學(xué)核心函數(shù)庫和Intel集成性能元件庫、Intel TuneTM性能分析器、Intel線程檢測器和Intel調(diào)試器、Intel線程直方統(tǒng)計(jì)器等。這些基本工具的熟練使用能力可為實(shí)際環(huán)境中多核技術(shù)的運(yùn)用打好堅(jiān)實(shí)的基礎(chǔ)。由于基于多核的編程與操作系統(tǒng)環(huán)境和編譯有密切的關(guān)系,所以在講解編程工具使用方法之前,主要介紹多核編譯的知識(shí)以及操作系統(tǒng)對(duì)多核的支持。
2.2實(shí)驗(yàn)設(shè)計(jì)和基本要求
對(duì)于這門課的實(shí)驗(yàn)教學(xué),課程主講教師直接指導(dǎo)實(shí)驗(yàn)各個(gè)環(huán)節(jié)。實(shí)驗(yàn)強(qiáng)調(diào)學(xué)生對(duì)多核架構(gòu)及編程技術(shù)的掌握和實(shí)際運(yùn)用能力的培養(yǎng)和訓(xùn)練。試驗(yàn)的目的不是“為學(xué)習(xí)而學(xué)習(xí),為編程而編程”,而是著重于提高學(xué)生在本學(xué)科領(lǐng)域中多核技術(shù)的應(yīng)用能力,注重“個(gè)性化”和創(chuàng)新能力的培養(yǎng),提高學(xué)生靈活運(yùn)用知識(shí)的能力。
依托學(xué)校Intel實(shí)驗(yàn)室平臺(tái),我們的實(shí)驗(yàn)設(shè)計(jì)主要針對(duì)兩種情況,一種是配合本課程核心教學(xué)內(nèi)容學(xué)生獨(dú)立完成指定的實(shí)驗(yàn)任務(wù),包括問題分析、總體設(shè)計(jì)、上機(jī)實(shí)現(xiàn)、調(diào)試與部署、觀察并記錄結(jié)果等步驟,實(shí)驗(yàn)的學(xué)時(shí)數(shù)16學(xué)時(shí),學(xué)生需要提前預(yù)習(xí),每個(gè)試驗(yàn)大約4學(xué)時(shí)的實(shí)驗(yàn)時(shí)間。要求每一位學(xué)生都要參與本課程的上機(jī)實(shí)驗(yàn)環(huán)節(jié),在實(shí)驗(yàn)前充分做好實(shí)驗(yàn)準(zhǔn)備,在實(shí)驗(yàn)過程中認(rèn)真記錄實(shí)驗(yàn)情況與結(jié)果,在實(shí)驗(yàn)后做好總結(jié),并提交實(shí)驗(yàn)報(bào)告。根據(jù)學(xué)生的上機(jī)實(shí)驗(yàn)結(jié)果,以及提交的實(shí)驗(yàn)報(bào)告綜合評(píng)價(jià)學(xué)生的本課程的成績。
其中每個(gè)學(xué)生必須獨(dú)立完成以下實(shí)驗(yàn)中的四個(gè):
① Intel多核計(jì)算機(jī)上OpenMP的配置;
② OpenMP環(huán)境下PI計(jì)算(并行域并行化);
③ OpenMP環(huán)境下PI計(jì)算(共享任務(wù)結(jié)構(gòu)并行化);
④ OpenMP環(huán)境下PI計(jì)算(并行歸約并行化);
⑤ MPI的配置;
⑥ MPI環(huán)境下PI的計(jì)算。
另外,我們還根據(jù)學(xué)校的“大學(xué)生創(chuàng)新實(shí)踐”活動(dòng),建立一些實(shí)踐性的實(shí)驗(yàn)設(shè)計(jì)課題,如排隊(duì)模型、數(shù)據(jù)挖掘等,以拓寬課程設(shè)計(jì)內(nèi)涵和內(nèi)容,同時(shí)對(duì)學(xué)生開放專業(yè)實(shí)驗(yàn)室,讓更多的學(xué)生可以利用實(shí)驗(yàn)室平臺(tái)進(jìn)行業(yè)余時(shí)間的創(chuàng)新活動(dòng),促進(jìn)學(xué)生學(xué)習(xí)。
通過以上各種措施,豐富了教學(xué)形式,極大地提高了學(xué)生學(xué)習(xí)的積極性和創(chuàng)造性實(shí)踐的能力,使教學(xué)質(zhì)量達(dá)到一個(gè)新的高點(diǎn)。
3總結(jié)
并行計(jì)算系列課程是一門實(shí)踐性很強(qiáng)的課程,除了系統(tǒng)的課堂理論學(xué)習(xí)外,還需要配有豐富的實(shí)驗(yàn)內(nèi)容,以鞏固和加深學(xué)生對(duì)并行算法理論、設(shè)計(jì)技術(shù)、分析方法和具體實(shí)現(xiàn)等各個(gè)環(huán)節(jié)的整體理解。實(shí)踐證明,這些實(shí)驗(yàn)教學(xué)環(huán)節(jié)是十分重要的,它可以激發(fā)學(xué)生學(xué)習(xí)并行與分計(jì)算的積極性,從而縮小理論教學(xué)和實(shí)際應(yīng)用能力之間的差距,培養(yǎng)學(xué)生的學(xué)習(xí)興趣和自我探索創(chuàng)新能力,為學(xué)生今后的工作和學(xué)習(xí)打下良好的基礎(chǔ)。
參考文獻(xiàn):
[1] 陳國良,孫廣中,等.并行計(jì)算課程的教學(xué)方法[J].中國大學(xué)教學(xué),2004(2).
[2] M. Paprzycki, Integrating Parallel and Distributed Computing in Computer Science Curricula, IEEE Distributed Systems Online, 2006, 7(2).