熊智 蔡玲如 洪秀秀
摘? 要:并行計(jì)算的應(yīng)用領(lǐng)域越來越廣泛,眾多計(jì)算機(jī)類專業(yè)都將并行程序設(shè)計(jì)作為必修課程。依據(jù)ACM/IEEE計(jì)算課程體系規(guī)范,結(jié)合國產(chǎn)超級計(jì)算機(jī)的發(fā)展,該文梳理該課程的教學(xué)內(nèi)容和包括思政目標(biāo)在內(nèi)的課程目標(biāo),進(jìn)而設(shè)計(jì)全過程多途徑的總體思政方案。思政元素涵蓋所有5個思政目標(biāo),且較好地分布在全部5個知識單元中,教學(xué)方法和工具均根據(jù)各個思政元素的特點(diǎn)量身選擇或設(shè)計(jì)。該文最后論述兩個課程思政設(shè)計(jì)案例供相關(guān)課程參考,包括通過引導(dǎo)加速比上限的討論強(qiáng)調(diào)辯證地理解相關(guān)規(guī)律,以及借助互斥鎖的線上實(shí)踐培養(yǎng)嚴(yán)謹(jǐn)求實(shí)的治學(xué)態(tài)度。
關(guān)鍵詞:并行程序設(shè)計(jì);課程思政;課程目標(biāo);加速比;互斥鎖
中圖分類號:G641? ? ? ? 文獻(xiàn)標(biāo)志碼:A? ? ? ? ? 文章編號:2096-000X(2023)35-0181-04
Abstract: The application areas of parallel computing are becoming more and more extensive, and many computer science majors have taken Parallel Programming as a compulsory course. Based on the specification of ACM/IEEE computing course system, combined with the development of domestic supercomputers, this paper sorts out the teaching content of the course and the objectives of the course including the ideological and political objectives, and then designs a whole process and multi-pathway ideological and political education plan. The ideological and political elements cover all five ideological and political objectives and are well distributed in all five knowledge units, and the teaching methods and tools are selected or designed according to the characteristics of each ideological and political element. Finally, two cases of the ideological and political education are discussed for reference of related courses, including emphasizing the dialectical understanding of the relevant laws by guiding the discussion on the upper limit of the speedup ratio, and cultivating the rigorous and realistic academic attitude with the help of the online practice of mutex locks.
Keywords: Parallel Programming; curriculum ideological and political education; course objective; speedup ratio; mutex lock
在高性能計(jì)算中,通常需要處理大量的數(shù)據(jù)和復(fù)雜的計(jì)算任務(wù),這些任務(wù)需要在短時間內(nèi)完成。并行計(jì)算可以通過將任務(wù)分解成多個子任務(wù),然后在多個處理器或分布式的計(jì)算機(jī)上并行執(zhí)行這些子任務(wù),最后將結(jié)果合并的方法提高計(jì)算速度。越來越多的科學(xué)研究和重大攻關(guān)項(xiàng)目都需要借助于高性能計(jì)算。高性能計(jì)算已經(jīng)成為繼理論分析和實(shí)驗(yàn)研究之后的第三種科學(xué)研究方法和手段,在保障國家安全、開發(fā)新能源、促進(jìn)科技發(fā)展等方面有著直接的作用,是衡量一個國家科技水平和綜合國力的重要標(biāo)志,是當(dāng)今科技進(jìn)步與創(chuàng)新突破的“發(fā)動機(jī)”。
ACM/IEEE計(jì)算課程體系規(guī)范[1]是ACM(國際計(jì)算機(jī)學(xué)會)和IEEE(電氣與電子工程師協(xié)會)計(jì)算機(jī)分會聯(lián)合,組織全球計(jì)算機(jī)教育專家共同制定的計(jì)算機(jī)類專業(yè)課程體系規(guī)范,具有很高的權(quán)威性。隨著云計(jì)算、人工智能和大數(shù)據(jù)的蓬勃發(fā)展,并行計(jì)算的應(yīng)用領(lǐng)域越來越廣泛,眾多計(jì)算機(jī)類專業(yè)都將其作為必修的課程內(nèi)容,例如《計(jì)算機(jī)科學(xué)課程體系規(guī)范2013》將并行和分布式計(jì)算作為一個專門的知識領(lǐng)域;在《計(jì)算機(jī)工程課程體系指南2016》中,算法知識領(lǐng)域包括并行算法和多線程知識單元,計(jì)算機(jī)體系結(jié)構(gòu)和組成知識領(lǐng)域包括分布式系統(tǒng)體系結(jié)構(gòu)知識單元;在《本科數(shù)據(jù)科學(xué)課程計(jì)算能力模型2021》中,大數(shù)據(jù)系統(tǒng)知識領(lǐng)域包括并行計(jì)算框架和并行程序設(shè)計(jì)知識單元。
互聯(lián)網(wǎng)上各種信息魚龍混雜,而大學(xué)生正處于思想活躍階段,極易受到各種思潮的影響[2]。僅通過政治理論課程對大學(xué)生進(jìn)行思想政治教育存在形式單一、效果不佳等問題,社會主義核心價值觀、道德品質(zhì)、職業(yè)素養(yǎng)等方面的教育應(yīng)該出現(xiàn)在所有課程的教學(xué)中,以實(shí)現(xiàn)全程育人、全方位育人。課程思政是指在高等教育中,將思想政治教育融入到各個學(xué)科的專業(yè)課程中,推動思政教育與專業(yè)課程相融合,充分發(fā)揮思政課程與課程思政的合力,從而提升課程育人實(shí)效的創(chuàng)新教育模式[3],是貫徹執(zhí)行黨的二十大報(bào)告中關(guān)于落實(shí)立德樹人根本任務(wù),培養(yǎng)德智體美勞全面發(fā)展的社會主義建設(shè)者和接班人的要求[4],是把思想政治工作貫穿教學(xué)全過程,實(shí)現(xiàn)全程育人的重要舉措。在并行程序設(shè)計(jì)課程中實(shí)施課程思政有助于為我國培養(yǎng)優(yōu)秀的高性能計(jì)算人才,提升我國的科技競爭力。本文探索并行程序設(shè)計(jì)課程多途徑全過程的課程思政方案,給出總體方案和若干具體思政案例的設(shè)計(jì)。
一? 課程內(nèi)容與目標(biāo)
本課程采用基于OBE(Outcome-Based Education,以學(xué)習(xí)成果為導(dǎo)向的教育)理念的課程教學(xué),構(gòu)建“專業(yè)+思政+能力”的OBE課程大綱,并嚴(yán)格按照大綱開展教學(xué)活動。在前期教學(xué)研究與實(shí)踐[5]的基礎(chǔ)上,本課程設(shè)立了12個教學(xué)目標(biāo)(即預(yù)期學(xué)習(xí)結(jié)果),見表1。在專業(yè)方面,本課程的主要內(nèi)容包括并行計(jì)算的基礎(chǔ)知識和并行計(jì)算行業(yè)的4種主流技術(shù):適用于單機(jī)多核的Pthread和OpenMP技術(shù),適用于集群的MPI技術(shù),以及適用于GPU的CUDA技術(shù)。尤其,本課程密切關(guān)注ACM/IEEE計(jì)算課程體系規(guī)范,根據(jù)其中并行計(jì)算相關(guān)的知識單元調(diào)整教學(xué)內(nèi)容。
程序設(shè)計(jì)處處蘊(yùn)含著人類思維的智慧[6],具有豐富的思政元素。在思政方面,本課程深入挖掘教學(xué)內(nèi)容中蘊(yùn)含的思政元素,對于理論部分,注重科學(xué)思維方法的訓(xùn)練和辯證唯物主義的教育,培養(yǎng)學(xué)生探索未知、實(shí)事求是、勇攀科學(xué)高峰的責(zé)任感和使命感;對于實(shí)踐部分,則注重培養(yǎng)學(xué)生精益求精的大國工匠精神,激發(fā)學(xué)生科技報(bào)國的家國情懷和使命擔(dān)當(dāng)??紤]到專業(yè)課的思政目標(biāo)不宜過多,而要少而精,要擲地有聲,經(jīng)過最終精心的篩選與組織,為該課程確立了5個思政目標(biāo),見表1。在能力方面,本課程設(shè)置了較多學(xué)時的實(shí)踐環(huán)節(jié),培養(yǎng)學(xué)生并行計(jì)算的實(shí)踐能力,主要包括并行程序的設(shè)計(jì)與測試、實(shí)踐報(bào)告的撰寫和文獻(xiàn)資料的收集應(yīng)用。尤其,本課程以“神威·太湖之光”和“天河二號”為例,讓學(xué)生了解主流的并行計(jì)算技術(shù)與軟件,并讓實(shí)踐內(nèi)容與超級計(jì)算行業(yè)的實(shí)際應(yīng)用接軌,提升學(xué)生的實(shí)戰(zhàn)能力。
中國工程教育專業(yè)認(rèn)證協(xié)會于2022年7月發(fā)布了新的工程教育認(rèn)證標(biāo)準(zhǔn)[7],其中的畢業(yè)要求包括工程知識、設(shè)計(jì)/開發(fā)解決方案、環(huán)境和可持續(xù)發(fā)展、職業(yè)規(guī)范、溝通等12條要求。對于其中的環(huán)境和可持續(xù)發(fā)展及職業(yè)規(guī)范,計(jì)算機(jī)專業(yè)可將其分別具體化為“正確理解和評價復(fù)雜計(jì)算機(jī)軟硬件系統(tǒng)的工程實(shí)踐對環(huán)境和社會可持續(xù)發(fā)展的影響”和“具備人文社會科學(xué)素養(yǎng)、民族自豪感和社會責(zé)任感,在計(jì)算機(jī)軟硬件系統(tǒng)實(shí)踐中遵守法律法規(guī)、職業(yè)道德和規(guī)范,承擔(dān)責(zé)任、履行義務(wù)”。畢業(yè)要求是確定教學(xué)內(nèi)容的依據(jù)[8],并行程序設(shè)計(jì)12個課程目標(biāo)對畢業(yè)要求的支撐情況見表1,該課程共支撐5條畢業(yè)要求,尤其對職業(yè)規(guī)范有很好支撐,并且是少數(shù)幾門支撐環(huán)境和可持續(xù)發(fā)展這一畢業(yè)要求的課程之一。
二? 課程思政方案的總體設(shè)計(jì)
課程思政以專業(yè)知識為載體,將思想政治內(nèi)容融入其中,賦予專業(yè)知識以思政意義。在講授每個知識點(diǎn)時,教師根據(jù)知識內(nèi)容的特點(diǎn),首先選擇合適的教學(xué)方法,然后在恰當(dāng)?shù)牡胤酵ㄟ^案例、類比、討論、探究或程序演示等方式引入思政元素,讓學(xué)生悟出思政元素,做到水到渠成,潤物無聲,最后教師再給予總結(jié)以夯實(shí)思政效果。并行程序設(shè)計(jì)的總體課程思政方案見表2,主要具有如下兩個特點(diǎn)。
全過程:首先,本課程充分挖掘課程中的思政元素然后進(jìn)行刪選,使得思政元素能涵蓋所有(5個)思政目標(biāo),且在各思政目標(biāo)中分布較為均勻。尤其,思政元素較好地分布在全部(5個)知識單元中,以讓思政教育持續(xù)整個學(xué)期。其次,充分利用課上教學(xué)、課后作業(yè)和課內(nèi)外實(shí)踐等教學(xué)環(huán)節(jié)開展全方位的課程思政,實(shí)現(xiàn)不同層面的育人功能。最后,本課程充分利用新型教學(xué)手段,借助雨課堂、微信群等平臺把握學(xué)生全過程的學(xué)習(xí)參與情況,讓學(xué)生看到自己在習(xí)慣、態(tài)度、規(guī)范和責(zé)任感等方面的不足,并及時糾正或改進(jìn)。
多途徑:本課程根據(jù)各個思政元素的特點(diǎn),量身選擇或設(shè)計(jì)學(xué)生最容易領(lǐng)會的教學(xué)方式、方法和工具。合理應(yīng)用線上和線下教學(xué)方式,靈活運(yùn)用探究式、試錯法、啟發(fā)式和翻轉(zhuǎn)課堂等教學(xué)方法,結(jié)合使用課程網(wǎng)站、微信群、虛擬化軟件、在線會議和MOOC網(wǎng)站等平臺和工具精心設(shè)計(jì)思政方案。尤其本課程注重引導(dǎo)學(xué)生主動思考和探究,以保證課程思政的效果[9]。此外,在線教學(xué)提供了很好的實(shí)踐環(huán)境,學(xué)生在電腦面前,就能夠隨時編寫和運(yùn)行代碼并通過屏幕共享分享實(shí)踐結(jié)果。
三? 課程思政案例
(一)? 加速比上限
采用p個處理器并行化一個串行程序,運(yùn)行時間由T(1)變?yōu)門(p),則加速比為S(p)=T(1)/T(p)。假設(shè)該程序的總計(jì)算量為1,其中串行部分占f(0≤f≤1),并行部分占1-f。在總計(jì)算量不變的前提下,采用越多的處理器計(jì)算運(yùn)行時間越短,因此Amdahl加速比計(jì)算如下:S(p)=T(1)/T(p)=1/(f+(1-f)/p)。容易證明,S(p)≤p和S(p)≤1/f,前者表示加速比不超過處理器的數(shù)量,后者表示即使采用無窮多個處理器,加速比也不可能超過1/f。
針對S(p)≤p,教師給出如下實(shí)例讓學(xué)生討論。給定一個數(shù)組中有400個無序排列的數(shù),現(xiàn)要從中找到指定的一個數(shù),假設(shè)要找的數(shù)位于第308個。由于這些數(shù)沒有排序,因此只能一一比對。如果采用一個處理器,一共需要比對308次即可。如果采用4個處理器,給每個處理器分配100個數(shù),那么第4個處理器只需比對8次即可通知所有處理器結(jié)束比對。因此加速比為308/8=38.5,超過了處理器的數(shù)量4,與加速比不超過處理器數(shù)量的結(jié)論矛盾。讓學(xué)生討論給出解釋。在討論過程中給學(xué)生如下啟發(fā)和引導(dǎo)。
1)加速比公式是唯一的嗎?(不唯一,例如還有Gustafson加速比)。
2)不同加速比的區(qū)別是什么?(前提不同,Amdahl加速比的前提是總計(jì)算量一定,Gustafson加速比的前提是計(jì)算時間一定)。
3)Amdahl加速比適用于這里嗎?(不適用,因?yàn)椴捎?個處理器并行計(jì)算時實(shí)際計(jì)算量發(fā)生了變化,總共比對的次數(shù)變少了)。
經(jīng)過上述啟發(fā),學(xué)生明白了由于實(shí)際總計(jì)算量發(fā)生了變化,因此不適合運(yùn)用Amdahl加速比進(jìn)行評估。最后教師總結(jié):任何規(guī)律都是有前提的,在運(yùn)用一個規(guī)律時,先看前提是否成立,否則就犯了邏輯錯誤。
對于S(p)≤1/f,學(xué)生能夠得到“要想提高加速比就要充分挖掘程序中能夠并行處理的部分”這一結(jié)論。教師進(jìn)一步強(qiáng)調(diào):①上述加速比計(jì)算公式是理想的公式,其忽略了并行化的開銷并假設(shè)負(fù)載絕對均衡;②在并行計(jì)算中,多核、集群、GPU等硬件僅僅只是基礎(chǔ),要想寫出高效的并行程序,還需要設(shè)計(jì)好的方法和算法;③有些結(jié)論看似“悲觀”,但同時也指明了方向。
(二)? 互斥鎖
此部分采用線上方式通過網(wǎng)絡(luò)會議進(jìn)行授課。講完互斥鎖的原理和API后,教師讓學(xué)生立即在線練習(xí),用Pthread編寫4個線程并行計(jì)算0+1+2+…+99的程序。程序的主要代碼片段如下:
void *sum_thread(void *arg) {
int id = *((int *)arg);? ? //線程編號0~3
for (int i=id; i<100; i+=4) {
pthread_mutex_lock(&fastmutex);
sum += i;? ? //sum為全局變量
pthread_mutex_unlock(&fastmutex);
}
}
由于sum是全局變量,因此“sum += i;”為臨界區(qū),需要采用互斥鎖進(jìn)行保護(hù)。程序運(yùn)行結(jié)果為4 950,學(xué)生基本上都能正確寫出該程序。然后讓學(xué)生注釋掉互斥鎖的加鎖和解鎖操作,然后編譯運(yùn)行。雖然該程序是錯誤的,但基本上所有的學(xué)生都發(fā)現(xiàn),運(yùn)行多次結(jié)果依然為4 950。接著,教師將如下shell腳本共享給學(xué)生:
for((i=0;i<1000;i++));
do
./mutex? ? ?#path of the program
done;
讓學(xué)生用該腳本重復(fù)運(yùn)行程序1 000次,觀察結(jié)果。學(xué)生們會紛紛報(bào)告,只有少數(shù)幾次的結(jié)果不為4 950,其他均為4 950。也就是說,在這里即使不用互斥鎖保護(hù)臨界區(qū),絕大多數(shù)情況下結(jié)果都是正確的。
最后教師強(qiáng)調(diào):①并行程序的推進(jìn)存在一定的隨機(jī)性,不能僅靠幾次運(yùn)行來測試程序的正確性,而要有嚴(yán)謹(jǐn)求實(shí)的科學(xué)精神和對用戶負(fù)責(zé)的職業(yè)精神,必須從方法上確保程序正確。②辯證唯物主義認(rèn)為,現(xiàn)實(shí)的任何事物都具有必然和偶然的雙重屬性,只有認(rèn)識必然性才能把握規(guī)律性。錯誤的程序可能偶然結(jié)果正確,但只要運(yùn)行足夠多次,必然會出錯。
四? 結(jié)束語
并行程序設(shè)計(jì)是面向計(jì)算機(jī)類專業(yè)開設(shè)的專業(yè)課程,課程團(tuán)隊(duì)始終堅(jiān)持理論與實(shí)踐相結(jié)合的原則,對教學(xué)內(nèi)容和方法不斷進(jìn)行改進(jìn)以提升教學(xué)質(zhì)量。本課程堅(jiān)持把立德樹人作為中心環(huán)節(jié),積極推進(jìn)課程思政,為實(shí)現(xiàn)中華民族偉大復(fù)興和中國夢培養(yǎng)求真務(wù)實(shí)、精益求精的卓越計(jì)算機(jī)專業(yè)人才。本文梳理了該課程的思政目標(biāo)、知識目標(biāo)和能力目標(biāo),根據(jù)挖掘的各思政元素的特點(diǎn)設(shè)計(jì)思政方案,并給出了兩個課程思政設(shè)計(jì)案例。接下來,課程團(tuán)隊(duì)將進(jìn)一步梳理和優(yōu)化思政元素,并與其他程序設(shè)計(jì)類課程進(jìn)行相互協(xié)調(diào),確保課程思政效果??己耸墙虒W(xué)工作的重要環(huán)節(jié)之一,如何為各個思政目標(biāo)量身定制考核方案也是接下來的研究方向。
參考文獻(xiàn):
[1] ACM, IEEE-CS. Computing Curricula 2020: Paradigms for Global Computing Education [R]. New York: Association for Computing Machinery, 2020.
[2] 方貴盛,王紅梅.工程類專業(yè)課程思政融入路徑探索[J].教育教學(xué)論壇,2023(26):169-172.
[3] 周筱芬,周姣術(shù),陶潔.“三全育人”視域下計(jì)算機(jī)類課程思政資源的探索[J].當(dāng)代教育理論與實(shí)踐,2022,14(3):23-28.
[4] 孫亮,徐震,佟德志.高等工程教育中課程思政的“八個維度”[J].天津師范大學(xué)學(xué)報(bào)(社會科學(xué)版),2023(3):64-71.
[5] 熊智,蔡玲如.基于混合式教學(xué)和課程思政的并行程序設(shè)計(jì)教學(xué)設(shè)計(jì)[J].計(jì)算機(jī)教育,2021(11):167-171.
[6] 張芳芳,姜翠美,肖中俊,等.程序設(shè)計(jì)基礎(chǔ)課程思政建設(shè)[J].高教學(xué)刊,2023(19):189-192.
[7] 中國工程教育專業(yè)認(rèn)證協(xié)會.工程教育認(rèn)證標(biāo)準(zhǔn)[EB/OL].[2023-04-21].https://www.ceeaa.org.cn/gcjyzyrzxh/rzcxjbz/gcjyrzbz/tybz/630662/index.html.
[8] 鄭苑丹.面向工程教育專業(yè)認(rèn)證的“計(jì)算機(jī)網(wǎng)絡(luò)”課程教學(xué)探索[J].工業(yè)和信息化教育,2023(1):40-44.
[9] 王方,柴建,王燕妮.高校教師課程思政的難點(diǎn)、方法與對策[J].高等工程教育研究,2023(1):122-127.
[10] 熊智,趙悅源,許建龍,等.應(yīng)用服務(wù)器集群能耗與性能平衡的在線實(shí)時優(yōu)化[J].控制與決策,2021,36(11):2589-2598.