国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

新時期“GPU并行計算”課程體系與教學(xué)模式設(shè)計

2024-08-23 00:00:00譚立湘李斌鄭重
信息系統(tǒng)工程 2024年8期
關(guān)鍵詞:評價體系教學(xué)模式

摘要:為滿足新時期人工智能交叉方向人才培養(yǎng)需求,對“GPU并行計算”課程體系與教學(xué)模式進行了積極的探索和實踐。理論教學(xué)方面,夯實并行計算基本理論,強化并行算法設(shè)計、GPU并行編程技巧及優(yōu)化方法。實踐教學(xué)方面,通過漸進式實驗項目的反復(fù)迭代,幫助學(xué)生建立實踐經(jīng)驗和應(yīng)用信心。新體系通過多樣的教學(xué)模式使學(xué)生緊跟并行計算研究的前沿技術(shù)。通過鼓勵不斷創(chuàng)新和探索的課程評價體系使學(xué)生能夠自覺、自愿地將并行計算應(yīng)用于科學(xué)研究。

關(guān)鍵詞:GPU并行計算;體系設(shè)計;教學(xué)模式;評價體系

一、前言

隨著多核CPU及GPU(Graphic Processing Unit)硬件產(chǎn)品的普及,并行計算技術(shù)突飛猛進,已成為人工智能高速發(fā)展的算力基石。目前許多高性能個人電腦上已經(jīng)配置了GPU獨立顯卡,組成了CPU+GPU的異構(gòu)并行計算平臺,此平臺的廣泛使用能顯著縮短人工智能各類算法的計算時間[1]。當(dāng)前深度學(xué)習(xí)方向的主要底層實現(xiàn)技術(shù)既包含基于多核CPU硬件架構(gòu),又包含基于多核GPU架構(gòu)的并行計算。

針對非計算機專業(yè)背景研究生計算機理論基礎(chǔ)較弱的問題,筆者研究探索了現(xiàn)代并行計算的有效教學(xué)方法,對現(xiàn)有“GPU并行計算”課程體系和教學(xué)模式進行了改革。課程在傳統(tǒng)并行計算通用原理的基礎(chǔ)上,引入并強化了新計算架構(gòu)下的并行計算技術(shù)、并行程序設(shè)計及優(yōu)化方法。

二、“GPU并行計算”課程體系設(shè)計

本課程是為中國科學(xué)技術(shù)大學(xué)非計算機專業(yè)的研究生開設(shè)的專業(yè)選修課,課程在介紹并行計算基本理論和體系結(jié)構(gòu)的基礎(chǔ)上,深入介紹了多核CPU并行編程和GPU并行編程的平臺配置、算法設(shè)計、編程規(guī)范與技巧和各類程序優(yōu)化方法。

大多數(shù)非計算機專業(yè)的研究生在本科階段都學(xué)習(xí)了程序設(shè)計課程(如C語言、Python語言),養(yǎng)成了根深蒂固的串行計算思維,開始接觸較為難懂的并行計算理論,伴隨著編程調(diào)試上屢屢受挫,可能會放棄自主編寫并行程序,轉(zhuǎn)向直接調(diào)用Python和MATLAB的庫函數(shù),或仍采用傳統(tǒng)的串行編程。因此,筆者不斷探索“上手快,體驗好,愿意用”的教學(xué)方法,保障學(xué)生能夠快速掌握并行編程技術(shù)。

“GPU并行計算”課程教學(xué)安排為理論課30學(xué)時,實踐課40學(xué)時,突出理論與實踐并重,課程體系設(shè)計如圖1所示。本課程貫徹“精講多練”的原則,培養(yǎng)學(xué)生快速進行并行程序設(shè)計的能力,并使學(xué)習(xí)過程遵循算法設(shè)計、精細編程、逐步優(yōu)化、體驗加速的良性循環(huán),在每一次迭代學(xué)習(xí)中不斷獲得成就感。課程教學(xué)內(nèi)容在介紹并行計算基本理論和方法的基礎(chǔ)上,側(cè)重培養(yǎng)學(xué)生的并行計算思維方式和建立算法模型的能力。

理論課程章節(jié)主要內(nèi)容及學(xué)時分配如下:

第一部分 并行計算基礎(chǔ)(共8學(xué)時);

第二部分 多核CPU并行編程(共8學(xué)時);

第三部分 GPU并行編程 (共14學(xué)時)。

理論課程的教學(xué)重點是:并行程序的基本設(shè)計思想及其性能評價方法;多核CPU的實現(xiàn)模型及OpenMP編程技術(shù);GPU的硬件架構(gòu)及CUDA編程技術(shù)和程序優(yōu)化方法。

實驗課程主要圍繞理論課程教學(xué)內(nèi)容開展,通過漸進式實驗項目來強化學(xué)生對所學(xué)內(nèi)容的理解,培養(yǎng)學(xué)生進行并行程序設(shè)計的能力,見表1。實驗教學(xué)中采用項目驅(qū)動實踐的模式,學(xué)生自主規(guī)劃項目進度,將本專業(yè)的實際課題用并行計算實現(xiàn)。

通過案例的學(xué)習(xí)和分析能幫助學(xué)生盡快建立并行計算的應(yīng)用模型,因此在近幾年的課程教學(xué)中建立并不斷完善了面向大規(guī)模計算、圖像處理、視覺計算、深度學(xué)習(xí)等典型應(yīng)用的實驗案例庫。

三、“GPU并行計算”課程教學(xué)模式改革

“GPU并行計算”課程教學(xué)模式改革的目標是面向新時代多專業(yè)人才的培養(yǎng)需求,既講授各種并行計算模型的設(shè)計思想和體系結(jié)構(gòu),又在實踐環(huán)節(jié)中培養(yǎng)學(xué)生開發(fā)并行程序的應(yīng)用能力。筆者設(shè)計了“理實交融”的課程教學(xué)模式,具體包括如下四點:

理論講授:并行算法設(shè)計及編程模型——被動學(xué)習(xí);

實驗設(shè)計:漸進式實驗項目——主動學(xué)習(xí);

交流學(xué)習(xí):典型應(yīng)用案例庫、課程設(shè)計交流報告會——交流探討;

融合創(chuàng)新:完善課程設(shè)計,激發(fā)創(chuàng)新思維——提升能力。

本課程教學(xué)中采取了三大舉措,讓學(xué)生愛上并行編程。

(一)課程教學(xué)中貫穿“上手快”

為了讓學(xué)生對并行計算的原理和基本算法能快速入門,“第一部分 并行計算基礎(chǔ)”涉及的內(nèi)容就能使學(xué)生快速了解并行程序設(shè)計的精髓。通過對MPI、OpenMP、CUDA小程序的剖析了解程序的基本構(gòu)成,通過簡單的模仿練習(xí)解決實際問題,培育并行編程的興趣和能力。

在課堂教學(xué)中采用類比式教學(xué)把抽象的并行系統(tǒng)結(jié)構(gòu)、計算模型用通俗易懂的類比講解,如將CPU的每個核類比為大學(xué)生,能力強,適合做粗粒度并行;GPU的每個核類比為小學(xué)生,能力稍弱但人數(shù)眾多,適合做細粒度并行[2]。

(二)實驗教學(xué)中貫穿“體驗好”

實驗教學(xué)中側(cè)重全方位的能力培養(yǎng),不再局限于學(xué)習(xí)單一的并行編程環(huán)境,而是引導(dǎo)學(xué)生了解硬件架構(gòu)和軟件體系。課堂上,學(xué)生被動學(xué)習(xí)各種并行計算模型和使用規(guī)范。實驗中,通過學(xué)習(xí)案例逐漸培養(yǎng)自己的并行計算思維和并行編程技能,熟練掌握問題中的數(shù)據(jù)劃分、任務(wù)劃分技巧。通過精講多練的反復(fù)迭代,實現(xiàn)自身并行編程能力的提升。這種迭代學(xué)習(xí)的教學(xué)模式與人類天生的主動學(xué)習(xí)模式相吻合。

從一開始修改串行程序,只增加少量的編譯指導(dǎo)語句來實現(xiàn)并行程序的執(zhí)行,到后期熟練地把各類問題模型化、直接編寫并行程序,并考慮到數(shù)據(jù)讀取的快慢盡可能地使用離核最近的存儲器,使用各種優(yōu)化方法不斷加速程序的執(zhí)行。學(xué)生們在實踐環(huán)節(jié)不斷獲得的成就感增強了他們進行并行計算的信心,形成了依托并行計算思維開發(fā)并行程序解決實際問題的良性循環(huán)。

在課堂理論教學(xué)中,講解的程序范例從向量的求和、向量的點積、排序算法、矩陣相乘、經(jīng)典迭代算法、快速傅里葉變換、到2D圖像濾波、3D光線追蹤等,由淺入深,循序漸進,讓學(xué)生在編程實戰(zhàn)中體會成就感。實驗課上,學(xué)生面對的是一個個精心設(shè)計并與上課內(nèi)容相匹配的漸進式實驗項目,每一個項目的完成都將鞏固課堂上學(xué)習(xí)的知識點,融會貫通使用并行思維解決實際問題。課程配備的助教老師具有豐富的并行編程經(jīng)驗,線上、線下都會耐心指導(dǎo)實驗中遇到困難的同學(xué),并根據(jù)實驗結(jié)果的完成度和優(yōu)化方案的實現(xiàn)來給出成績。

(三)課程教學(xué)導(dǎo)向圍繞“愿意用”

對于大多數(shù)非計算機專業(yè)的研究生來說,并行計算難點在于算法模型的設(shè)計,以及編程調(diào)試中會遇到許多難以理解的BUG。解決之道無非是多練多做,并在教學(xué)班上培植出一種“人人都會并行計算”的氛圍。

GPU體系結(jié)構(gòu)和CUDA編程技術(shù)是本課程的重點和難度,這部分內(nèi)容包含大量術(shù)語,并且每隔一年GPU就會推出新的架構(gòu)和硬件產(chǎn)品。如果缺乏對GPU硬件架構(gòu)和軟件生態(tài)的了解,用戶很難像簡單的串行編程語言一樣,通過模仿程序示例寫出正確、高效的CUDA并行程序[3]。在長期的課程教學(xué)中,筆者探索出了保障學(xué)生快速掌握CUDA并行編程的三項舉措。

1.快速生成CUDA主函數(shù)

CUDA主函數(shù)運行在CPU端,主要完成分配和初始化內(nèi)存空間和顯存空間、將要計算的數(shù)據(jù)從主機內(nèi)存上傳輸?shù)紾PU顯存上、按指定的參數(shù)提交給GPU去執(zhí)行核函數(shù)、將計算后存在于GPU顯存上的結(jié)果數(shù)據(jù)傳輸至主機內(nèi)存并做進一步處理,最后釋放顯存空間。

2.快速生成CUDA核函數(shù)

核函數(shù)是在GPU設(shè)備端上執(zhí)行的代碼,編程時要具有并行思維和想象力,站在線程的角度合理劃分數(shù)據(jù)和任務(wù),用代碼描述清楚線程間的分工合作和具體要進行的計算步驟和數(shù)據(jù)訪問。在核函數(shù)的編寫中可以使用CUDA的內(nèi)建變量直接獲得不同維度的線程號。

3. 逐步優(yōu)化獲得高加速比

能夠正確運行的并行程序并不意味著任務(wù)的完成,它只是一個程序的雛形,是逐步進行優(yōu)化的起點。只有了解GPU的硬件架構(gòu)才能充分利用機器的資源,從而獲得優(yōu)良的加速比。常見的優(yōu)化包括根據(jù)顯卡的配置調(diào)整blocks、threads的數(shù)目,優(yōu)化指令流,合理使用共享內(nèi)存、常量內(nèi)存、紋理內(nèi)存,保證數(shù)據(jù)的連續(xù)性,優(yōu)化顯存訪問,避免顯存帶寬成為瓶頸等。

四、鼓勵不斷創(chuàng)新和探索的課程評價體系

在學(xué)生最關(guān)注的成績評定環(huán)節(jié),本課程堅持鼓勵不斷創(chuàng)新和探索的精神。學(xué)生的項目設(shè)計和實踐不是簡單地重復(fù)已有算法,而是要求學(xué)生能將本專業(yè)的密集計算問題抽象出并行算法模型并加以編程實現(xiàn),初步完成的程序作為優(yōu)化的起點,之后再結(jié)合不同架構(gòu)下GPU顯卡的特點逐步進行線程配置優(yōu)化、指令優(yōu)化、存儲優(yōu)化。在項目設(shè)計和實現(xiàn)過程中,能逐步發(fā)現(xiàn)問題并解決問題、逐步優(yōu)化提高加速比的學(xué)生將得到成績上的鼓勵。

本課程擯棄了傳統(tǒng)的閉卷考試方式,主要采用的考核方式為平時實驗編程項目,及期末自主選題大型項目加上寫課程報告。自主選題大型項目上,鼓勵各個院系的學(xué)生將并行計算運用于解決本專業(yè)的計算問題。此環(huán)節(jié)是培育創(chuàng)新思維和學(xué)術(shù)交叉能力的重要手段,真正做到活學(xué)活用。在學(xué)期期末舉行課程研討會,由大項目完成優(yōu)秀者做報告展示成果,分享課程項目的設(shè)計思想及并行程序開發(fā)經(jīng)驗,并獲得成績上的加分。此教學(xué)環(huán)節(jié)強化了項目實踐的重要性,培養(yǎng)了學(xué)生公開做學(xué)術(shù)報告的能力,幫助更多同學(xué)拓寬了學(xué)術(shù)視野,促進了交流與融合。

表2是本課程教學(xué)各環(huán)節(jié)的具體評價,體現(xiàn)了注重過程培養(yǎng)、注重專業(yè)知識和鼓勵創(chuàng)新思維、不斷探索的原則。公平、公正、公開的課程評價體系也受到了學(xué)生的擁護,學(xué)生選課積極踴躍,選課名額基本秒光。

通過一個學(xué)期的理論學(xué)習(xí)和實戰(zhàn)經(jīng)歷,學(xué)生們普遍反映通過這門課程的學(xué)習(xí),幫助自己建立起了完整的并行計算知識體系,并且快速掌握了并行編程的方法,為后續(xù)開展人工智能、大規(guī)??茖W(xué)計算的研究打下了基礎(chǔ)。最主要的體會是原來并行計算并不難!通過對算法的設(shè)計、語句的套用、庫函數(shù)的使用就能獲得成百上千倍的加速比。

五、課程教學(xué)面臨的具體問題及解決方法

“GPU并行計算”課程作為研究生的專業(yè)選修課對學(xué)生的編程能力有一定的要求,考慮到C語言是大部分理工類高校的必修編程語言,本課程的教學(xué)以C語言為基礎(chǔ)。在實際教學(xué)中發(fā)現(xiàn)學(xué)生C語言掌握的程度有所不同,有的學(xué)生本科階段沒有使用過Visual Studio集成編譯環(huán)境;有的學(xué)生缺乏用C語言開發(fā)實際應(yīng)用程序的經(jīng)驗;有的學(xué)生C語言中的部分內(nèi)容沒有學(xué)過,如帶參數(shù)的main函數(shù)、指針做函數(shù)的參數(shù)、指針數(shù)組等。這些編程基礎(chǔ)問題都可能對本課程的學(xué)習(xí)帶來很大困擾。為此在理論和實驗教學(xué)中筆者采用了如下措施來夯實學(xué)生的C語言編程基礎(chǔ)。

第一次實驗課上布置安裝并測試機器CPU和GPU顯卡的參數(shù)配置;安裝測試Visual Studio集成編譯環(huán)境,并學(xué)習(xí)設(shè)置OpenMP的編譯環(huán)境和環(huán)境變量;在Visual Studio內(nèi)加裝CUDA和OpenCV等軟件并測試運行CUDA SDK里的范例。實驗課上這種手把手教學(xué)使得編程能力欠缺的學(xué)生學(xué)習(xí)并行計算的信心大增,一次實驗課就基本掌握了本課程所需要的全部軟件編譯環(huán)境。

理論課上為學(xué)生彌補linux操作系統(tǒng)的基本用法,便于學(xué)生課后遠程連接學(xué)校超算中心及實驗室服務(wù)器進行并行程序的編寫和調(diào)試。復(fù)習(xí)C語言中指針做函數(shù)的參數(shù)、帶參數(shù)的main函數(shù)等內(nèi)容,CUDA并行編程中的核函數(shù)和OpenMP并行編程中的主函數(shù)都是基于此類指針的使用。只有夯實了C語言編程的基礎(chǔ)才能在并行程序設(shè)計中不受語言的羈絆,專注于并行算法的設(shè)計與實現(xiàn)。

課程教學(xué)中注重分析并行機器硬件的體系結(jié)構(gòu),對比串行程序和并行程序不同的設(shè)計理念、執(zhí)行模式和調(diào)度策略。引導(dǎo)學(xué)生站在處理器的角度去體會如何獲取數(shù)據(jù)、處理數(shù)據(jù)才能充分地并行執(zhí)行;根據(jù)需要使用正確的存儲器,減少對GPU片外顯存的讀取,提高執(zhí)行單元的利用率,盡可能隱藏訪存延時。為了獲得高性能的計算結(jié)果,進行合理的并行劃分、設(shè)計巧妙的算法,同時兼顧指令吞吐量、數(shù)據(jù)傳輸帶寬等多方因素,所以實際編程中往往是把注意力先集中于并行算法的設(shè)計,優(yōu)先保證編寫出一個能正確運行的并行程序;然后再進行存儲優(yōu)化、指令優(yōu)化、調(diào)度優(yōu)化以獲得滿意的加速比。

六、結(jié)語

“GPU并行計算”課程力求通過理論與實踐并重的課程體系建設(shè)和精心準備的教學(xué)內(nèi)容,在有限的學(xué)時內(nèi)為學(xué)生講授并行計算的核心思想;通過漸進式教學(xué)實驗,提升學(xué)生的并行計算思維和并行算法設(shè)計及編程實現(xiàn)能力;通過多樣的教學(xué)形式使學(xué)生了解并行計算研究的前沿技術(shù)成果;通過鼓勵不斷創(chuàng)新和探索的課程評價體系使學(xué)生能夠更好地理解所學(xué)知識并自覺自愿地將并行計算應(yīng)用于科學(xué)研究。近幾年來,對學(xué)生的調(diào)研結(jié)果及學(xué)生對課程的評價表明,各專業(yè)研究生通過本課程的學(xué)習(xí)能夠較好地掌握基本的并行編程原理和多核CPU、GPU并行編程技術(shù),并能運用這些技術(shù)完成各專業(yè)相關(guān)領(lǐng)域算法的并行加速。

參考文獻

[1]遲學(xué)斌,王彥棢,王玨,等.并行計算與實現(xiàn)技術(shù)[M].北京:科學(xué)出版社,2015:46-56.

[2]雷洪,胡許冰.多核并行高性能計算OpenMP[M].北京:冶金工業(yè)出版社,2016:22-33.

[3]Shane Cook.CUDA并行程序設(shè)計(GPU編程指南)[M].蘇統(tǒng)華,李東,李松澤,魏通,譯.北京:機械工業(yè)出版社,2017:35-47.

基金項目:1.安徽省級質(zhì)量工程教學(xué)研究項目“面向多專業(yè)研究生的‘GPU并行計算’教學(xué)研究與實踐”(項目編號:2020jyxm2271);2.中國科學(xué)技術(shù)大學(xué)質(zhì)量工程教學(xué)研究項目“計算思維在程序設(shè)計類課程中的培育與探索”(項目編號:2021xjyxm064)

作者單位:中國科學(xué)技術(shù)大學(xué)信息科學(xué)技術(shù)學(xué)院

責(zé)任編輯:王穎振、楊惠娟

猜你喜歡
評價體系教學(xué)模式
群文閱讀教學(xué)模式探討
“思”以貫之“學(xué)、練、賽、評”教學(xué)模式的實踐探索
“以讀帶寫,以寫促讀”教學(xué)模式的實踐探索
甘肅教育(2020年12期)2020-04-13 06:25:48
《UG NX機械產(chǎn)品設(shè)計》課程項目化教學(xué)的改革研究
科技視界(2016年18期)2016-11-03 21:50:03
評價體系小改革職業(yè)技能大提升
職業(yè)(2016年10期)2016-10-20 22:00:12
以心育推進學(xué)生綜合素質(zhì)評價體系建立的研究
自然資源資產(chǎn)離任審計評價體系研究
行政事業(yè)單位內(nèi)部控制存在問題及對策
科技視界(2016年20期)2016-09-29 14:08:22
多元智能理論視角下高職院校體育課程評價體系的研究
科技視界(2016年20期)2016-09-29 11:31:29
“一精三多”教學(xué)模式的探索與實踐
罗源县| 黔东| 始兴县| 平果县| 乐东| 旬阳县| 西畴县| 岑溪市| 无为县| 南涧| 平武县| 永吉县| 二连浩特市| 康定县| 淮安市| 贵州省| 东乌| 新巴尔虎右旗| 长武县| 互助| 清水县| 饶阳县| 图片| 思茅市| 大渡口区| 织金县| 泉州市| 抚远县| 庆元县| 南宫市| 鄯善县| 黄骅市| 外汇| 金溪县| 阿拉善盟| 荥经县| 安泽县| 三门峡市| 酉阳| 霸州市| 景宁|