吳建平,銀???,彭 軍,楊錦輝,汪 祥,張 澤
(國防科技大學 氣象海洋學院,長沙 410073)
課程是學生培養(yǎng)的核心環(huán)節(jié)之一,課程內容是其中最重要的組成部分,因此,雖然在并行計算相關課程的內容設計上,現有研究成果寥寥,但在其他課程內容設計的研究上,確已有很多研究,并獲得了不少研究成果。目前,關于課程內容設計的研究,主要集中在課程內容重復問題、課程體系、模塊化設計等方面。
從單一課程看,在建設時為滿足不同來源的學生尤其是缺乏某些基礎的學生學習的需求,很容易陷入追求自我最大程度的完備,而導致課程內容龐雜、繁多,且與其他課程存在大量重復的問題。張靖[1]發(fā)現本科經濟法教學中,存在課程重復設置交叉且開設時間安排不合理的問題,并提出了要從理論教學、案例應用、實踐教學等方面對課程內容進行最佳組合設計的建議;張霖等[2]發(fā)現我國高等教育學專業(yè)碩士研究生課程存在課程內容重復、先進性不夠、結構不合理等問題,并提出了增加方法論課程、交叉學科課程、跨學科課程等方面的建議;趙玉等[3]發(fā)現在經濟管理類專業(yè)課程群建設中,也存在內容重復的問題,并提出了以提升學生素質和能力為導向,構建精簡教學內容的專業(yè)課程群的對策;劉健智[4]對21 所高校物理學科教學教育碩士課程設置進行的文本研究發(fā)現,部分課程內容之間相互重復或交叉,并提出了對部分課程進行刪除、合并,以及在專業(yè)必修與選修課間進行類別調整等建議。
雖然很多研究都已經指出在課程內容設置上出現重復的問題,但在出現原因與解決方法方面很少提及,或所提出的解決方法非常簡略,可操作性不強。例如,文獻[1]中所提及的對課程內容進行最佳組合設計,但如何進行具體設計并未給出。文獻[3]中提及要對教學內容進行精簡的建議,但如何進行精簡也沒有介紹。文獻[4]中提到了對具體課程的刪除、合并與類別調整等建議,具有一定的可操作性,但主要針對物理學教學教育方面,難以直接應用于其他領域的課程建設。
出于對課程優(yōu)化設計的考慮,一個很自然的想法是對相關課程進行模塊化設計,在這方面已有不少研究人員開展相關研究工作。屈婉玲等[5]針對離散數學課程,對教學內容按知識單元進行模塊化設置,以便根據培養(yǎng)目標的不同,進行教學內容的靈活組織。施成華[6]針對隧道工程課程結構體系松散、內容龐雜的問題,提出將課程劃分成若干模塊,并對不同模塊采用不同的教學與考核的方法。魏英[7]在深入分析大學計算機基礎課程教學所存在的問題的基礎上,根據各部分內容相對獨立的特點,對分層模塊化教學模式進行了研究。蘭長林等[8]采取課程內容模塊化和教師講授、專題報告研究型教學模塊化相結合的方式,開展了模塊化教學方法研究。這些研究雖然針對模塊化教學,但主要限于單一課程內部,也主要側重于對課程內容聚集為少量單元進行組織,而對其間相互關系及其與其他課程之間的關系考慮較少。
在涉及課程之間相互關系的研究上,劉慶昌等[9]對植物生產類專業(yè),提出了“兩體系、三層次、模塊化”的教學體系,將教學體系整體上分為理論教學和實驗實踐教學兩個體系,每個體系分為三個層次,并按不同專業(yè)設置課程模塊,以達到壓縮學分總量、強化基礎、增加實驗實踐的目的。北京大學陳曉林等[10]提出了對主要課程按照模塊化、結構化的要求進行重新組織的思想,以適應學生進行多樣化選擇的需要。李明金等[11]對國外一流工科高校實踐教學體系的特征進行了分析,并發(fā)現實踐教學內容普遍具有多元化、綜合化、模塊化的特征,但其分析的模塊化主要是將實踐分類為基礎實踐、專業(yè)實踐與創(chuàng)新實踐三個類別。王稼軍[12]對大學與中學物理教學的銜接問題進行了研究,并重點分析了新課標中學物理模塊化組織與知識點類別設置給大學物理教學帶來的挑戰(zhàn)。這些研究在進行模塊化研究時,涉及到了課程之間的關系,但沒有具體描述如何識別這些關系,以及如何利用這些關系來進行教學內容的組織。
本文試圖考慮針對所有學歷研究生的課程并行算法與針對大氣科學(氣象海洋預報)專業(yè)本科生的課程并行計算技術,在基于知識點的模塊化基礎上,綜合考慮各方面因素的影響與需求,研究對課程內容的優(yōu)化設計,以期能盡量減少內容上的重復建設,提高不同層次與不同來源學員學習計劃規(guī)劃的針對性。
并行計算類課程在國防科技大學(以下簡稱“我?!保╇m然都還是選修課,但隨著數值模擬作為第三種科學研究手段逐漸成為共識,在氣象海洋環(huán)境數值預報、數值氣候預測、計算流體力學和核科學等各個領域,已經得到廣泛應用。另一方面,在實際應用中,對模擬精度要求越來越高,所要求解的問題規(guī)模越來越大,而單節(jié)點的內存空間與單處理器的計算能力有限,使得人們越來越尋求通過采用高性能并行計算機進行大規(guī)模數值模擬。例如,無論是數值天氣預報,還是海洋環(huán)境數值模擬,國內外多年以前即早已普遍采用并行計算的手段。因此,開設并行計算系列課程,并對其不斷進行改革,具有鮮明的時代背景和現實意義。
我校目前的并行計算類課程不僅在研究生階段開設,而且在本科階段也開設。研究生課程并行算法針對全校的研究生開設,以便學生通過對并行計算基本概念、基本原理、基本方法與基本知識的學習與實踐,為后續(xù)進行大規(guī)??茖W與工程計算領域的研究與工作奠定基礎。該課程總共36 學時,其中課堂實踐3 學時,自20世紀90 年代開設以來,經過多年發(fā)展、幾代老師的經驗積累,教學內容進行了多次迭代優(yōu)化,現已包括并行計算基本知識、并行計算基本概念、基本通信操作、常用任務分解、常用任務調度、常用設計模式、并行算法編程實現、典型數值并行算法與典型非數值并行算法等大的內容模塊,知識層次相對較高,雖然對實踐的要求較高,但理論性相對也較強。
并行計算基本知識主要涉及并行計算的基本概念、為什么要進行并行計算、并行計算的互連網絡、并行計算機的分類與發(fā)展,以及并行計算模型等知識模塊;并行計算的基本概念主要涉及并行算法的定義與分類、并行算法中的基本概念、并行算法的復雜性與并行算法的性能評價等知識模塊;基本通信操作主要介紹常用的廣播、規(guī)約、分散、收集和多對多私有通信等涉及到多個處理器集中參與的聚集型通信操作;常用任務分解主要介紹嵌套分解、數據劃分、探測分解和預測分解等常用的任務分解技術;常用任務調度主要介紹數組分布與圖劃分等常用靜態(tài)調度技術,與集中式動態(tài)調度技術;常用設計模式主要介紹數據并行計算、任務圖、工作池和主從與流水線等常用設計模式;并行算法編程實現主要包括針對共享存儲并行算法的OpenMP 編程與針對分布存儲并行算法的MPI 編程實現;典型非數值并行算法主要介紹雙調排序與快速排序的并行算法設計;典型數值并行算法主要介紹稠密矩陣向量乘、稠密矩陣乘、稠密線性方程組的并行求解、稀疏線性方程組并行求解和快速傅里葉變換的并行算法等知識模塊。
同時,自2019 年起,針對大氣科學(氣象海洋預報)專業(yè)對數值預報技術的能力需求,在本科階段,也開始開設并行計算技術課程,使學生掌握并行計算的基本概念、基本原理、基本方法,以及實現并行計算的典型環(huán)境,以便適應氣象海洋預報保障的能力需求。該課程總共24 學時,其中課堂實踐8 學時,主要包括并行計算基本概念、并行計算牽涉到的主要問題、并行計算基本原理與方法、分布與共享存儲并行計算的基本原理與方法、并行計算環(huán)境基礎、OpenMP 并行編程基礎、MPI 并行編程基礎,以及MPI 編程實踐與氣象應用等大模塊,雖然也有理論知識的介紹,但主要側重于實踐。
并行計算基本概念主要涉及從數值天氣預報的角度對為什么要進行并行計算的介紹、并行計算的基本概念與思維,以及問題、機器、算法三個層面上涉及的并行計算常用基本概念;并行計算牽涉到的問題主要涉及并行計算機的分類與發(fā)展、處理器間互連結構的抽象、高性能計算機主存的抽象、并行計算的LogP 模型、并行計算系統(tǒng)的軟件基礎等知識模塊;并行計算基本原理與方法主要涉及輸出數據劃分、輸入數據劃分等任務分解技術,靜態(tài)調度與動態(tài)調度的概念、塊分布與循環(huán)塊分布等最常用任務調度技術,基于數據的并行算法設計模式等知識模塊;分布與共享存儲并行計算的基本原理與方法主要涉及消息傳遞標準的基本屬性、分布存儲并行算法設計時需注意的問題、單程序多數據與多程序多數據、影響分布存儲并行算法效率的因素,以及共享存儲并行算法的一般結構及其主要性能優(yōu)化技術等知識模塊;并行計算環(huán)境基礎主要涉及Linux 基礎環(huán)境、GNU基礎編譯器、OpenMP 并行計算環(huán)境驗證、MPI 并行計算環(huán)境配置和MPI 并行計算環(huán)境驗證等知識模塊;Open-MP 并行編程基礎與MPI 并行編程基礎主要以C 語言為基礎,介紹共享存儲并行算法與分布存儲并行算法編程實踐的入門級知識;MPI 編程實踐與氣象應用主要介紹Jacobi 迭代的簡單MPI 程序實現與計算通信重疊技術的實現,以及數值天氣預報WRF 模式的安裝、編譯與運行等基本知識。
并行算法課程自開設以來,已為近千名研究生充分利用大規(guī)模數值模擬手段,進行后續(xù)研究與開展工作打下了很好的基礎。并行計算技術的開設與近年來的教學,也已為大氣科學(氣象海洋預報)專業(yè)的本科生進行后續(xù)數值氣象海洋保障能力的培養(yǎng)奠定了大規(guī)模數值模擬的理論與實踐基礎。但在具體教學過程中,發(fā)現還存在諸多現實問題,這里對所發(fā)現的問題進行分析并探尋解決之道。
第一,雖然針對教學目標,按模塊化進行了課程內容的系統(tǒng)性設計,但并行算法與并行計算技術存在明顯的需求層次差異性,目前課程內容設計在針對不同學生的層次性上還有改進空間。并行算法課程已經開設很多年,在內容的設計上已經經過大量修改訂正,已從基本概念、基本理論、基本方法,到編程實現,再到典型并行算法,進行了內容的系統(tǒng)性規(guī)劃。由于面向全校所有專業(yè)的研究生,教學過程中的實際舉例、典型算法、具體實踐都必須圍繞較為通用的知識基礎進行展開。并行計算技術面向的是大氣科學(氣象海洋預報)專業(yè)的大二本科生,尚未系統(tǒng)深入學習大氣科學相關專業(yè)知識,因此,既需要具有一定的專業(yè)針對性,以便于后續(xù)數值預報預測課程的學習,又不能太過針對專業(yè),對所學專業(yè)知識的要求不能太深,這方面尚需要進行進一步優(yōu)化。
第二,目前并行算法與并行計算技術兩課程之間還存在不少重復的內容。在并行計算技術課程開設之前,并行算法課程的開設從系統(tǒng)性角度出發(fā),不僅涉及并行計算基本知識與基本概念,以及基本通信操作、常用任務分解、常用任務調度和常用設計模式等并行算法基本原理與基本方法,而且涉及OpenMP 編程與MPI 編程,以及典型數值并行算法與典型非數值并行算法等具體并行算法的設計分析,教學內容涉及面較廣。在并行計算技術課程開設之后,部分并行計算基本知識與基本概念,以及基本理論和基本編程實踐都已有一定基礎。而目前并行算法課程雖然面向全校研究生,但大氣科學專業(yè)研究生占有較大比例,如何解決本科生層次與研究生層次所學知識之間的重復性?對此,未來有兩方面的解決思路可以結合使用,一是在本科生層次,對并行計算能力需求較高的其他專業(yè),也需要要求學生進行與并行計算技術課程類似的相關知識學習;二是通過對本科生層次與研究生層次并行計算類課程內容大模塊中知識點模塊的進一步梳理,一定程度上去除重復的知識點模塊,或適當區(qū)分本科生層次與研究生層次同一知識點模塊學習時的深度與廣度,例如可以在并行計算技術已介紹并行程序編程實現基礎的實際情況下,不再在并行算法課程中進行此方面內容的介紹。具體實踐時需要用到并行編程實現知識,直接沿用并行計算技術講授內容。
第三,并行算法與并行計算技術同一課程內部及其間都存在較強的模塊依賴關系,課程內容設計時需要考慮理順這種邏輯關系。在大的內容模塊上,并行計算技術中的并行計算基本概念、并行計算牽涉到的主要問題、并行計算基本原理與方法、分布與共享存儲并行計算的基本原理與方法等,是逐層遞進的基本理論知識介紹,是后續(xù)知識介紹與進行課程實踐的基礎。并行計算環(huán)境基礎主要是并行計算實踐環(huán)境的配置與驗證,是后續(xù)進行編程實踐的基礎。OpenMP 與MPI 并行編程主要進行共享與分布存儲并行算法編程實現的入門級介紹,為實際并行編程實踐時進行并行程序編寫提供基礎。此外,在具體知識點模塊上,其間也存在相互依賴關系。例如,并行計算基本概念中,問題規(guī)模、任務分解這二者在邏輯上應優(yōu)先于數據相關性與并行度這兩個概念進行介紹。對并行算法課程,由于牽涉的知識點模塊更多,其間存在的相互依賴關系也更多。并行計算技術中部分知識點模塊,如并行計算環(huán)境基礎,以及以后在并行算法去除并行編程接口內容介紹后,該課程中對應的此部分內容,實際在并行算法課程實踐時是必備前提。在課程內容設計時,如何處理好這些復雜的依賴關系,理順各知識點模塊間的邏輯關系,在教學設計中非常重要。對此,后續(xù)擬采用對課程所含知識模塊進一步優(yōu)化,使之具有一定程度上的內容最小性,即不存在兩個知識點模塊間雙向依賴,且每個知識點模塊內容不超過1 學時的情況,再基于模塊間依賴關系圖進行其間依賴關系綜合分析,在此基礎上進行各門課程具體知識點模塊邏輯關系與課時安排上的仔細設計。
第四,并行算法與并行計算技術課程模塊和其他部分課程相關知識點之間也存在較強的依賴關系,如果課程內容設計不合理,極易導致學生對有些內容的學習不適應。在進行并行計算技術內容設計時,由于學生還只進行了公共課的學習,因此,具體理論內容與案例設計時,應主要結合已學高等數學等課程的知識進行,例如,關于任務分解、任務調度與設計模式等,可以主要以矩陣-向量乘或矩陣-矩陣乘為基礎,適當擴展到數值天氣預報中通用但進行了簡化而易懂的案例。此外,由于學生對計算機編程僅在大學計算機基礎中涉及到C 語言,但后續(xù)數值天氣預報相關課程常用軟件WRF 中,既含有C 也含有Fortran 語言編寫的程序,在需要修改代碼進行高階實踐時,可能涉及到Fortran 程序,因此,在具體理論教學與實踐練習時,主要以C 語言為基礎,但在并行計算環(huán)境等教學內容中,應該適當提及下Fortran 對應的相關操作。并行算法課程需要具有一定的并行計算機體系結構基礎知識,此外,為適應大規(guī)模科學與工程計算中目前以Fortran 最常用的現實,也需要以Fortran 為基礎進行相關編程知識的介紹與相關編程實踐。同時,典型非數值并行算法的介紹主要為排序算法,因此,需要對排序與數據結構具有一定先期學習基礎。在進行典型數值并行算法介紹時,對稠密矩陣相關并行算法,需要具有矩陣乘、Gauss 消去法、LU 分解等知識基礎;對稀疏線性方程組并行求解,需要有一定的圖論、微分方程數值解、線性方程組迭代求解算法等方面的知識;對快速傅里葉變換的并行算法,需要具有一定的快速傅里葉變換相關前期知識基礎。
第五,不同層次并行計算課程存在明顯的學生基礎差異性。并行計算技術針對的是大氣科學(氣象海洋預報)專業(yè)大二的本科生,由于各地高中所學知識的同步性,以及本科期間在同一學校同一專業(yè)就讀,因此,其知識基礎間的差異性相對較小,比較便于進行統(tǒng)一教學。但并行算法課程針對的是全校研究生,學生來源學校、來源專業(yè)各異,導致學生之間已掌握的知識基礎差異很大。有的學生對計算機基礎知識不甚了解;有的學生沒有學習過數值計算方面的知識;有的學生對程序設計與編程實現非常陌生。為應對這種錯綜復雜的情況所導致的具體教學實施上的挑戰(zhàn),可以對課程依賴的外在知識模塊進行梳理,搜集并整理成簡便易學的基本知識內容清單。之后,在具體開展每學期課程教學前,事先就學生對相關知識內容的學習情況進行摸底調查,并在具體實施教學時,根據不熟悉相關知識點的學生的數量多少,決定適當簡要進行知識點集中介紹,或將相關知識點材料散發(fā)給學生先行自學。
并行計算類課程的開設,極大提高了各層次學生進行數值天氣預報等大規(guī)??茖W與工程計算領域后續(xù)課程學習與科研實踐時的適應性與基礎能力,但在課程先后開設后,必然存在內容重復及知識點間相互依賴的問題,同時,由于學生需求層次不同、專業(yè)與學校來源各異等現實問題,難以進行統(tǒng)一規(guī)劃教學。本文針對研究生層次的并行算法與本科生層次的并行計算技術課程,在對授課內容進行模塊化設計的基礎上,具體分析了實施過程中遇到的教學目標可達性、教學內容系統(tǒng)性、知識點間依賴性、模塊內容重復性,以及需求層次差異性、學生基礎差異性等問題,并探討了未來的解決之道,以期進一步優(yōu)化并行算法與并行計算技術的教學內容,并為其他存在類似問題的課程內容建設提供借鑒。