1引言
華南理工大學(xué)軟件學(xué)院和計(jì)算機(jī)科學(xué)與工程學(xué)院在多核微處理器系統(tǒng)出現(xiàn)之初,就已經(jīng)意識(shí)到該技術(shù)對(duì)軟件設(shè)計(jì)的重大影響,開(kāi)始研究相關(guān)技術(shù)和規(guī)劃設(shè)立“多核軟件設(shè)計(jì)”課程。2006年12月,作為Intel大學(xué)合作計(jì)劃的合作伙伴,華南理工大學(xué)派遣本課程的負(fù)責(zé)教師參加了相關(guān)技術(shù)培訓(xùn)。2007年3月,該課程進(jìn)入“Intel大學(xué)合作計(jì)劃”,并接收了Intel公司捐贈(zèng)的相關(guān)實(shí)驗(yàn)設(shè)備。2007年6月,該課程被批準(zhǔn)為2007年度“教育部-Intel精品課程”建設(shè)項(xiàng)目。
2“多核軟件設(shè)計(jì)”課程的知識(shí)體系
根據(jù)多核軟件技術(shù)本身的特點(diǎn),以及我校整體課程體系情況,學(xué)院將“多核軟件設(shè)計(jì)”課程的主要內(nèi)容設(shè)定為四
個(gè)主要部分:基本理論知識(shí),多核軟件設(shè)計(jì)技術(shù),基于多核處理器的并行算法設(shè)計(jì)與實(shí)現(xiàn),多核軟件性能分析工具的使用。
2.1基本理論知識(shí)
該部分主要介紹多核軟件設(shè)計(jì)的硬件和操作系統(tǒng)平臺(tái)基礎(chǔ),以期讓學(xué)生掌握多核軟件設(shè)計(jì)的基本原理。
(1) 多核處理器體系結(jié)構(gòu)。此部分將重點(diǎn)講授基于地址空間共享機(jī)制的多核處理器體系結(jié)構(gòu)的主要技術(shù)特征,介紹以Intel公司為代表的主流多核微處理器產(chǎn)品,并根據(jù)多核處理器的發(fā)展介紹其他有代表性的多核微處理器體系結(jié)構(gòu)。
(2) 多核處理器上的操作系統(tǒng)。該部分將首先回顧線程和進(jìn)程的基本概念,繼而討論操作系統(tǒng)對(duì)線程的不同實(shí)現(xiàn)思路(內(nèi)核級(jí)、應(yīng)用級(jí)、混合型)和特點(diǎn)。在此基礎(chǔ)上,介紹多核處理器上操作系統(tǒng)的關(guān)鍵性技術(shù)問(wèn)題,重點(diǎn)介紹Windows 2000操作系統(tǒng)中多核處理器的線程調(diào)度機(jī)制。
2.2多核軟件設(shè)計(jì)技術(shù)
這部分內(nèi)容主要講授基于Linux、Windows等操作系統(tǒng)平臺(tái)上多線程程序設(shè)計(jì)的基本操作系統(tǒng)原語(yǔ),以及OpenMP的基本設(shè)計(jì)方法,以期讓學(xué)生掌握使用多線程方法進(jìn)行多核軟件設(shè)計(jì)的基本技能。
(1) 基于Linux平臺(tái)的多線程程序設(shè)計(jì)方法。該部分主要講授PThread線程庫(kù)中的主要API接口函數(shù),包括線程創(chuàng)建、撤銷、互斥鎖、條件變量、信號(hào)量,等,并通過(guò)N柵欄和生產(chǎn)者/消費(fèi)者兩個(gè)問(wèn)題介紹上述API接口函數(shù)的使用。
(2) 基于Windows平臺(tái)的多線程程序設(shè)計(jì)方法。該部分主要講授Windows平臺(tái)上的多線程API接口函數(shù),包括線程創(chuàng)建、撤銷、掛起/恢復(fù)、優(yōu)先級(jí)設(shè)置、睡眠、臨界區(qū),等。
(3) 基于OpenMP的多核軟件程序設(shè)計(jì)方法。該部分主要講授OpenMP的主要原理和特點(diǎn),編譯制導(dǎo)語(yǔ)句格式,語(yǔ)句中經(jīng)常使用的制導(dǎo)命令和子句,重點(diǎn)介紹變量屬性、線程分配策略、規(guī)約語(yǔ)句主要內(nèi)容。
2.3并行算法設(shè)計(jì)基本方法和實(shí)例分析
這部分內(nèi)容主要講授并行計(jì)算程序設(shè)計(jì)的一般原理,以及結(jié)合實(shí)例說(shuō)明在多核處理器平臺(tái)上使用多線程方法設(shè)計(jì)并行程序的方法。
(1) 并行程序設(shè)計(jì)的基本原理。該部分首先講授任務(wù)依賴圖,引入并發(fā)度、關(guān)鍵路徑、粒度等基本概念,然后介紹了三種基本的任務(wù)分解方法,最后圍繞加速比、執(zhí)行效率、成本等概念,講授Amdahl定律。
(2) 并行程序設(shè)計(jì)實(shí)例分析。該部分有針對(duì)性地選擇了三個(gè)實(shí)例:高斯消去法,多路歸并排序和蒙特卡羅法求PI值。其中,高斯消去法主要介紹數(shù)值類型計(jì)算中的數(shù)據(jù)劃分方法,多路歸并排序主要介紹非數(shù)值計(jì)算中比較復(fù)雜的負(fù)載均衡問(wèn)題,蒙特卡羅法則是通過(guò)多線程共享互斥的隨機(jī)數(shù)產(chǎn)生過(guò)程而對(duì)性能 產(chǎn)生的副作用,來(lái)討論多線程程序設(shè)計(jì)中可能出現(xiàn)的問(wèn)題。
2.4多核軟件的性能分析方法和工具
這部分內(nèi)容以Intel公司的VTune性能分析工具為基礎(chǔ),介紹了多核軟件實(shí)際運(yùn)行性能的分析和優(yōu)化方法。首先介紹了性能分析工具中采樣方式和調(diào)用圖方式的工作原理,然后介紹了Thread Checker工具中關(guān)于數(shù)據(jù)競(jìng)爭(zhēng)、死鎖、關(guān)鍵路徑、負(fù)載均衡等重要問(wèn)題的方法。
3“多核軟件設(shè)計(jì)”課程建設(shè)的幾點(diǎn)經(jīng)驗(yàn)
“多核軟件設(shè)計(jì)”是當(dāng)前新興的軟件設(shè)計(jì)方法和技術(shù),它需要結(jié)合計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)、操作系統(tǒng)等基礎(chǔ)理論知識(shí),還需要掌握并行算法設(shè)計(jì)的基本思想和方法,以改進(jìn)和優(yōu)化已有的串行程序設(shè)計(jì)。這對(duì)課程的教學(xué)和研究都提出了新的要求。我們?cè)谠撜n程的建設(shè)中在以下方面取得了一些經(jīng)驗(yàn)。
3.1重視科研工作和教學(xué)的聯(lián)系,以最新科研成果帶動(dòng)教學(xué)水平的提高
本課程團(tuán)隊(duì)長(zhǎng)期從事計(jì)算機(jī)系統(tǒng)結(jié)構(gòu)和基礎(chǔ)軟件的研究工作,對(duì)當(dāng)前多核處理器技術(shù)的發(fā)展比較了解,充分認(rèn)識(shí)到多核處理器體系結(jié)構(gòu)對(duì)已有軟件設(shè)計(jì)方法提出的新挑戰(zhàn)和新問(wèn)題,并在多核處理器出現(xiàn)之初就搭建了相關(guān)實(shí)驗(yàn)平臺(tái),開(kāi)始了多核軟件設(shè)計(jì)的研究工作。正是這些研究工作使得我們具備了多核軟件設(shè)計(jì)的經(jīng)驗(yàn),掌握了其關(guān)鍵技術(shù),認(rèn)識(shí)到其中可能存在的誤區(qū)和問(wèn)題,這為后續(xù)的課程建設(shè)奠定了堅(jiān)實(shí)的基礎(chǔ)。
同時(shí),在科研工作中我們積累了一批多核軟件的開(kāi)發(fā)成果,這些成果直接為建立多核軟件設(shè)計(jì)的實(shí)踐案例提供了豐富的素材。
3.2重視案例教學(xué)和動(dòng)手實(shí)踐能力的培養(yǎng)
如何通過(guò)多核體系結(jié)構(gòu)提升軟件的性能是本課程的核心目標(biāo),這需要學(xué)生具備一定的并行算法設(shè)計(jì)能力。針對(duì)本科學(xué)生的知識(shí)水平和接收能力,本課程盡量簡(jiǎn)化了相關(guān)的理論內(nèi)容,而采用學(xué)生熟悉的串行算法的并行化過(guò)程作為教學(xué)案例。通過(guò)對(duì)這些教學(xué)案例的深入分析,使得學(xué)生能比較直觀地理解并行算法設(shè)計(jì)的基本思路和方法。
同時(shí),本課程還充分利用已有的多核計(jì)算機(jī)系統(tǒng),特別是Intel公司捐贈(zèng)的4核和8核服務(wù)器,為學(xué)生提供了良好的多核軟件設(shè)計(jì)實(shí)踐環(huán)境。通過(guò)對(duì)兩個(gè)經(jīng)典串行問(wèn)題(優(yōu)先級(jí)查找和K值算法)并行化改造過(guò)程的實(shí)踐,提高分析和解決問(wèn)題的能力,以及實(shí)際動(dòng)手編程的能力。
3.3結(jié)合廣東軟件產(chǎn)業(yè)的實(shí)際情況,設(shè)定教學(xué)內(nèi)容
廣東省國(guó)內(nèi)軟件產(chǎn)業(yè)的重要基地之一,在面向商業(yè)應(yīng)用軟件開(kāi)發(fā)方面具有很強(qiáng)的優(yōu)勢(shì),因此,本課程教學(xué)內(nèi)容和實(shí)驗(yàn)案例中大多以廣東省應(yīng)用最為廣泛的商業(yè)計(jì)算核心并行化為主導(dǎo),突出了經(jīng)典的非數(shù)值計(jì)算問(wèn)題,從而增強(qiáng)學(xué)生的學(xué)習(xí)興趣和未來(lái)解決實(shí)際問(wèn)題的能力。
4總結(jié)
“多核軟件設(shè)計(jì)”是隨著多核處理器的出現(xiàn)而發(fā)展起來(lái)的一門(mén)新興課程,內(nèi)容涉及計(jì)算機(jī)體系結(jié)構(gòu)、操作系統(tǒng)和并行算法等多個(gè)基礎(chǔ)知識(shí)領(lǐng)域。在華南理工大學(xué)的“多核軟件設(shè)計(jì)”課程中,突出了教學(xué)實(shí)踐環(huán)節(jié),強(qiáng)化學(xué)生對(duì)多核軟件設(shè)計(jì)基本技術(shù)的訓(xùn)練,引導(dǎo)學(xué)生自主分析、設(shè)計(jì)、實(shí)現(xiàn)和評(píng)估多核處理器上的經(jīng)典并行算法,并利用多核軟件分析工具對(duì)已有軟件進(jìn)行性能分析和改進(jìn),以期增強(qiáng)學(xué)生利用多核處理器并行特性自主解決實(shí)際問(wèn)題的能力。
多核處理器技術(shù)和相關(guān)的軟件設(shè)計(jì)技術(shù)依然是當(dāng)前發(fā)展非常迅速的一個(gè)領(lǐng)域。在未來(lái)的教學(xué)過(guò)程中,本課程將及時(shí)汲取相關(guān)領(lǐng)域的最新研究成果,不斷更新教學(xué)內(nèi)容,加強(qiáng)實(shí)踐素材,進(jìn)一步提高該課程的教學(xué)質(zhì)量和水平。
課程教材:
[1] Shameem Akhter, Jason Roberts著,李寶峰富弘毅李韜譯,多核程序設(shè)計(jì)技術(shù),電子工業(yè)出版社 , 2007,ISBN 978-7-121-03871-6
課程課件和實(shí)驗(yàn)案例網(wǎng)站:
http://www.gdsoftwarelab.cn/uploadfile/Multicore/index.htm