熊智 蔡玲如 洪秀秀
摘? 要:并行計算的應用領域越來越廣泛,眾多計算機類專業都將并行程序設計作為必修課程。依據ACM/IEEE計算課程體系規范,結合國產超級計算機的發展,該文梳理該課程的教學內容和包括思政目標在內的課程目標,進而設計全過程多途徑的總體思政方案。思政元素涵蓋所有5個思政目標,且較好地分布在全部5個知識單元中,教學方法和工具均根據各個思政元素的特點量身選擇或設計。該文最后論述兩個課程思政設計案例供相關課程參考,包括通過引導加速比上限的討論強調辯證地理解相關規律,以及借助互斥鎖的線上實踐培養嚴謹求實的治學態度。
關鍵詞:并行程序設計;課程思政;課程目標;加速比;互斥鎖
中圖分類號:G641? ? ? ? 文獻標志碼: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
在高性能計算中,通常需要處理大量的數據和復雜的計算任務,這些任務需要在短時間內完成。并行計算可以通過將任務分解成多個子任務,然后在多個處理器或分布式的計算機上并行執行這些子任務,最后將結果合并的方法提高計算速度。越來越多的科學研究和重大攻關項目都需要借助于高性能計算。高性能計算已經成為繼理論分析和實驗研究之后的第三種科學研究方法和手段,在保障國家安全、開發新能源、促進科技發展等方面有著直接的作用,是衡量一個國家科技水平和綜合國力的重要標志,是當今科技進步與創新突破的“發動機”。
ACM/IEEE計算課程體系規范[1]是ACM(國際計算機學會)和IEEE(電氣與電子工程師協會)計算機分會聯合,組織全球計算機教育專家共同制定的計算機類專業課程體系規范,具有很高的權威性。隨著云計算、人工智能和大數據的蓬勃發展,并行計算的應用領域越來越廣泛,眾多計算機類專業都將其作為必修的課程內容,例如《計算機科學課程體系規范2013》將并行和分布式計算作為一個專門的知識領域;在《計算機工程課程體系指南2016》中,算法知識領域包括并行算法和多線程知識單元,計算機體系結構和組成知識領域包括分布式系統體系結構知識單元;在《本科數據科學課程計算能力模型2021》中,大數據系統知識領域包括并行計算框架和并行程序設計知識單元。
互聯網上各種信息魚龍混雜,而大學生正處于思想活躍階段,極易受到各種思潮的影響[2]。僅通過政治理論課程對大學生進行思想政治教育存在形式單一、效果不佳等問題,社會主義核心價值觀、道德品質、職業素養等方面的教育應該出現在所有課程的教學中,以實現全程育人、全方位育人。課程思政是指在高等教育中,將思想政治教育融入到各個學科的專業課程中,推動思政教育與專業課程相融合,充分發揮思政課程與課程思政的合力,從而提升課程育人實效的創新教育模式[3],是貫徹執行黨的二十大報告中關于落實立德樹人根本任務,培養德智體美勞全面發展的社會主義建設者和接班人的要求[4],是把思想政治工作貫穿教學全過程,實現全程育人的重要舉措。在并行程序設計課程中實施課程思政有助于為我國培養優秀的高性能計算人才,提升我國的科技競爭力。本文探索并行程序設計課程多途徑全過程的課程思政方案,給出總體方案和若干具體思政案例的設計。
一? 課程內容與目標
本課程采用基于OBE(Outcome-Based Education,以學習成果為導向的教育)理念的課程教學,構建“專業+思政+能力”的OBE課程大綱,并嚴格按照大綱開展教學活動。在前期教學研究與實踐[5]的基礎上,本課程設立了12個教學目標(即預期學習結果),見表1。在專業方面,本課程的主要內容包括并行計算的基礎知識和并行計算行業的4種主流技術:適用于單機多核的Pthread和OpenMP技術,適用于集群的MPI技術,以及適用于GPU的CUDA技術。尤其,本課程密切關注ACM/IEEE計算課程體系規范,根據其中并行計算相關的知識單元調整教學內容。
程序設計處處蘊含著人類思維的智慧[6],具有豐富的思政元素。在思政方面,本課程深入挖掘教學內容中蘊含的思政元素,對于理論部分,注重科學思維方法的訓練和辯證唯物主義的教育,培養學生探索未知、實事求是、勇攀科學高峰的責任感和使命感;對于實踐部分,則注重培養學生精益求精的大國工匠精神,激發學生科技報國的家國情懷和使命擔當。考慮到專業課的思政目標不宜過多,而要少而精,要擲地有聲,經過最終精心的篩選與組織,為該課程確立了5個思政目標,見表1。在能力方面,本課程設置了較多學時的實踐環節,培養學生并行計算的實踐能力,主要包括并行程序的設計與測試、實踐報告的撰寫和文獻資料的收集應用。尤其,本課程以“神威·太湖之光”和“天河二號”為例,讓學生了解主流的并行計算技術與軟件,并讓實踐內容與超級計算行業的實際應用接軌,提升學生的實戰能力。
中國工程教育專業認證協會于2022年7月發布了新的工程教育認證標準[7],其中的畢業要求包括工程知識、設計/開發解決方案、環境和可持續發展、職業規范、溝通等12條要求。對于其中的環境和可持續發展及職業規范,計算機專業可將其分別具體化為“正確理解和評價復雜計算機軟硬件系統的工程實踐對環境和社會可持續發展的影響”和“具備人文社會科學素養、民族自豪感和社會責任感,在計算機軟硬件系統實踐中遵守法律法規、職業道德和規范,承擔責任、履行義務”。畢業要求是確定教學內容的依據[8],并行程序設計12個課程目標對畢業要求的支撐情況見表1,該課程共支撐5條畢業要求,尤其對職業規范有很好支撐,并且是少數幾門支撐環境和可持續發展這一畢業要求的課程之一。
二? 課程思政方案的總體設計
課程思政以專業知識為載體,將思想政治內容融入其中,賦予專業知識以思政意義。在講授每個知識點時,教師根據知識內容的特點,首先選擇合適的教學方法,然后在恰當的地方通過案例、類比、討論、探究或程序演示等方式引入思政元素,讓學生悟出思政元素,做到水到渠成,潤物無聲,最后教師再給予總結以夯實思政效果。并行程序設計的總體課程思政方案見表2,主要具有如下兩個特點。
全過程:首先,本課程充分挖掘課程中的思政元素然后進行刪選,使得思政元素能涵蓋所有(5個)思政目標,且在各思政目標中分布較為均勻。尤其,思政元素較好地分布在全部(5個)知識單元中,以讓思政教育持續整個學期。其次,充分利用課上教學、課后作業和課內外實踐等教學環節開展全方位的課程思政,實現不同層面的育人功能。最后,本課程充分利用新型教學手段,借助雨課堂、微信群等平臺把握學生全過程的學習參與情況,讓學生看到自己在習慣、態度、規范和責任感等方面的不足,并及時糾正或改進。
多途徑:本課程根據各個思政元素的特點,量身選擇或設計學生最容易領會的教學方式、方法和工具。合理應用線上和線下教學方式,靈活運用探究式、試錯法、啟發式和翻轉課堂等教學方法,結合使用課程網站、微信群、虛擬化軟件、在線會議和MOOC網站等平臺和工具精心設計思政方案。尤其本課程注重引導學生主動思考和探究,以保證課程思政的效果[9]。此外,在線教學提供了很好的實踐環境,學生在電腦面前,就能夠隨時編寫和運行代碼并通過屏幕共享分享實踐結果。
三? 課程思政案例
(一)? 加速比上限
采用p個處理器并行化一個串行程序,運行時間由T(1)變為T(p),則加速比為S(p)=T(1)/T(p)。假設該程序的總計算量為1,其中串行部分占f(0≤f≤1),并行部分占1-f。在總計算量不變的前提下,采用越多的處理器計算運行時間越短,因此Amdahl加速比計算如下:S(p)=T(1)/T(p)=1/(f+(1-f)/p)。容易證明,S(p)≤p和S(p)≤1/f,前者表示加速比不超過處理器的數量,后者表示即使采用無窮多個處理器,加速比也不可能超過1/f。
針對S(p)≤p,教師給出如下實例讓學生討論。給定一個數組中有400個無序排列的數,現要從中找到指定的一個數,假設要找的數位于第308個。由于這些數沒有排序,因此只能一一比對。如果采用一個處理器,一共需要比對308次即可。如果采用4個處理器,給每個處理器分配100個數,那么第4個處理器只需比對8次即可通知所有處理器結束比對。因此加速比為308/8=38.5,超過了處理器的數量4,與加速比不超過處理器數量的結論矛盾。讓學生討論給出解釋。在討論過程中給學生如下啟發和引導。
1)加速比公式是唯一的嗎?(不唯一,例如還有Gustafson加速比)。
2)不同加速比的區別是什么?(前提不同,Amdahl加速比的前提是總計算量一定,Gustafson加速比的前提是計算時間一定)。
3)Amdahl加速比適用于這里嗎?(不適用,因為采用4個處理器并行計算時實際計算量發生了變化,總共比對的次數變少了)。
經過上述啟發,學生明白了由于實際總計算量發生了變化,因此不適合運用Amdahl加速比進行評估。最后教師總結:任何規律都是有前提的,在運用一個規律時,先看前提是否成立,否則就犯了邏輯錯誤。
對于S(p)≤1/f,學生能夠得到“要想提高加速比就要充分挖掘程序中能夠并行處理的部分”這一結論。教師進一步強調:①上述加速比計算公式是理想的公式,其忽略了并行化的開銷并假設負載絕對均衡;②在并行計算中,多核、集群、GPU等硬件僅僅只是基礎,要想寫出高效的并行程序,還需要設計好的方法和算法;③有些結論看似“悲觀”,但同時也指明了方向。
(二)? 互斥鎖
此部分采用線上方式通過網絡會議進行授課。講完互斥鎖的原理和API后,教師讓學生立即在線練習,用Pthread編寫4個線程并行計算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;”為臨界區,需要采用互斥鎖進行保護。程序運行結果為4 950,學生基本上都能正確寫出該程序。然后讓學生注釋掉互斥鎖的加鎖和解鎖操作,然后編譯運行。雖然該程序是錯誤的,但基本上所有的學生都發現,運行多次結果依然為4 950。接著,教師將如下shell腳本共享給學生:
for((i=0;i<1000;i++));
do
./mutex? ? ?#path of the program
done;
讓學生用該腳本重復運行程序1 000次,觀察結果。學生們會紛紛報告,只有少數幾次的結果不為4 950,其他均為4 950。也就是說,在這里即使不用互斥鎖保護臨界區,絕大多數情況下結果都是正確的。
最后教師強調:①并行程序的推進存在一定的隨機性,不能僅靠幾次運行來測試程序的正確性,而要有嚴謹求實的科學精神和對用戶負責的職業精神,必須從方法上確保程序正確。②辯證唯物主義認為,現實的任何事物都具有必然和偶然的雙重屬性,只有認識必然性才能把握規律性。錯誤的程序可能偶然結果正確,但只要運行足夠多次,必然會出錯。
四? 結束語
并行程序設計是面向計算機類專業開設的專業課程,課程團隊始終堅持理論與實踐相結合的原則,對教學內容和方法不斷進行改進以提升教學質量。本課程堅持把立德樹人作為中心環節,積極推進課程思政,為實現中華民族偉大復興和中國夢培養求真務實、精益求精的卓越計算機專業人才。本文梳理了該課程的思政目標、知識目標和能力目標,根據挖掘的各思政元素的特點設計思政方案,并給出了兩個課程思政設計案例。接下來,課程團隊將進一步梳理和優化思政元素,并與其他程序設計類課程進行相互協調,確保課程思政效果。考核是教學工作的重要環節之一,如何為各個思政目標量身定制考核方案也是接下來的研究方向。
參考文獻:
[1] ACM, IEEE-CS. Computing Curricula 2020: Paradigms for Global Computing Education [R]. New York: Association for Computing Machinery, 2020.
[2] 方貴盛,王紅梅.工程類專業課程思政融入路徑探索[J].教育教學論壇,2023(26):169-172.
[3] 周筱芬,周姣術,陶潔.“三全育人”視域下計算機類課程思政資源的探索[J].當代教育理論與實踐,2022,14(3):23-28.
[4] 孫亮,徐震,佟德志.高等工程教育中課程思政的“八個維度”[J].天津師范大學學報(社會科學版),2023(3):64-71.
[5] 熊智,蔡玲如.基于混合式教學和課程思政的并行程序設計教學設計[J].計算機教育,2021(11):167-171.
[6] 張芳芳,姜翠美,肖中俊,等.程序設計基礎課程思政建設[J].高教學刊,2023(19):189-192.
[7] 中國工程教育專業認證協會.工程教育認證標準[EB/OL].[2023-04-21].https://www.ceeaa.org.cn/gcjyzyrzxh/rzcxjbz/gcjyrzbz/tybz/630662/index.html.
[8] 鄭苑丹.面向工程教育專業認證的“計算機網絡”課程教學探索[J].工業和信息化教育,2023(1):40-44.
[9] 王方,柴建,王燕妮.高校教師課程思政的難點、方法與對策[J].高等工程教育研究,2023(1):122-127.
[10] 熊智,趙悅源,許建龍,等.應用服務器集群能耗與性能平衡的在線實時優化[J].控制與決策,2021,36(11):2589-2598.