盛樂標

摘? 要: 高性能計算在眾多領域的廣泛應用,使得開展高性能計算教學變得更加迫切,但目前國內對非計算機專業的高性能計算課程教學沒有太多的經驗。在考慮學生和科研工作實際需求的基礎上,結合教學實踐經驗,摸索出一套合理的高性能計算課程教學內容及教學方法。課程內容包含了Linux基礎知識、OpenMP/MPI編程、異構編程等,通過具體的計算示例,介紹高性能計算在不同學科中的應用,以提高學生的學習興趣,鍛煉學生解決實際問題的能力。
關鍵詞: 高性能計算; 教學方法; 教學實踐; 課程內容
中圖分類號:G642? ? ? ? ? 文獻標志碼:A? ? ? 文章編號:1006-8228(2019)07-56-03
Abstract: The wide application of high performance computing make it needful to give a related course. However, there is not much experience in the teaching of high performance computing courses for the non-computer specialties in China. By considering the basic need of the students and the scientific research, a rational content setting and teaching method of high performance computing course is proposed based on the teaching experience. The course content includes Linux basics, OpenMP/MPI programming, heterogeneous programming, etc. Through the specific calculation examples, the applications of high-performance computing in different disciplines are introduced to improve students' interest in learning and to train students' ability to solve practical problems.
Key words: high performance computing; teaching method; teaching practice; course content
0 引言
高性能計算已被公認為是繼理論科學和實驗科學之后的第三大科學研究方法,它在促進國民經濟發展、國防建設和科技進步方面具有重要的戰略地位。高性能計算的水平已經成為衡量一個國家綜合實力的重要標志之一[1]。從傳統學科到新興學科眾多領域,對高性能計算都有著強烈的需求。一方面,國內多家高校和研究機構都建設了大型的高性能計算平臺,一些課題組也紛紛采購規模不等的計算機集群;然而卻很少有高校針對高性能計算開設專門的課程。所以在本科高年級階段和研究生階段開設高性能計算課程就顯得非常必要。該課程的開設能促進學生科研水平提升,也有助于培養學生高性能計算集群使用技能和掌握高性能計算程序編寫技巧。
高性能計算是一門綜合性學科,包括硬件系統、軟件研制、建模、算法等一系列內容,是一個知識密集的創新研究領域。針對非計算機專業的高性能計算課程是一門新的課程,沒有太多經驗可供借鑒[2]。該課程既不是單純的計算方法課,也不是Linux操作系統課程或者編程課,若要面面俱到地將高性能計算所涉及的內容都作為課程教學,那將占用大量課時,與我們引領學生快速掌握高性能計算基本知識的初衷背道而馳。因此,只有結合實際情況,有針對性地設置教學內容,才能使學生用最少的時間掌握最有用的高性能計算知識。南京大學是較早開展高性能計算教學的高校,通過近幾年教學經驗的總結,我們探索出了一個相對穩定的高性能計算課程的教學模式和教學內容結構,在實際講授過程中取得了不錯的效果。
1 高性能計算課程的內容設置
由于高性能計算課程的授課對象主要是即將或者已經開始進行科學計算相關工作的學生,因此課程的內容設置必須能滿足他們的科研工作需要,并且具有更多的實用性。在這樣的前提下,我們就需要合理增加與科研工作相關的作業調度系統、并行編程等方面的內容,而相應減少操作系統原理、集群管理等方面的內容。表1列出了我們所總結出來的比較合理的“高性能計算”課程課時安排。這些課程內容不僅有提高學生學習興趣的高性能計算發展歷史介紹,也包括了基礎的Linux知識和并行編程知識,還包括了高性能計算在不同學科中的具體應用示例,并結合最近比較熱門的人工智能相關知識,從多個方面幫助學生盡快掌握高性能計算知識。下面將分四個方面分別介紹該課程所安排的具體內容。
1.1 Linux基礎知識
高性能計算機集群一般運行的都是Linux操作系統。不了解Linux的基本知識,往往要被高性能計算拒之門外,不懂Linux就相當于在微軟Windows操作系統中使用畫圖程序但不知道如何使用鼠標一樣。因此,在學習其他技能之前,學生必須掌握一定的Linux基礎知識[3-6]。在介紹完高性能計算的發展歷史和計算機集群架構后,本課程將首先介紹用戶管理、進程管理、常用網絡命令、系統監控命令等基本Linux操作命令,并穿插講解進程、線程、地址空間等編寫并行程序時會接觸的內容。
Linux系統上的文件系統與Windows系統上有著很大的區別。學生還需掌握Linux的樹型目錄結構,了解系統特定文件目錄的位置和作用,以及對文件、目錄的權限管理等。大型的高性能計算機集群一般都使用并行文件系統,我們也應對Linux的并行文件系統作簡單的介紹。