/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
/中文/
NVIDIA CUDA 11是NVIDIA推出的運(yùn)算平臺,通過該平臺可以使程序在支持CUDA的處理器上以高性能運(yùn)算,繼10代針對圖靈結(jié)構(gòu)做出優(yōu)化知乎,不知道11會是否會針對30系列的Ampere結(jié)構(gòu)做出對應(yīng)的調(diào)整,有需要的用戶不要錯(cuò)過了,歡迎下載使用!
CUDA ®是NVIDIA發(fā)明了一種并行計(jì)算平臺和編程模型。通過利用圖形處理單元(GPU)的功能,可以顯著提高計(jì)算性能。
CUDA的開發(fā)考慮了幾個(gè)設(shè)計(jì)目標(biāo):
提供對標(biāo)準(zhǔn)編程語言(例如C)的一小部分?jǐn)U展,這些擴(kuò)展可實(shí)現(xiàn)并行算法的直接實(shí)現(xiàn)。使用CUDA C / C ++,程序員可以專注于算法的并行化任務(wù),而不必花時(shí)間在其實(shí)現(xiàn)上。
在應(yīng)用程序同時(shí)使用CPU和GPU的情況下支持異構(gòu)計(jì)算。應(yīng)用程序的串行部分在CPU上運(yùn)行,并行部分被卸載到GPU。這樣,CUDA可以增量地應(yīng)用于現(xiàn)有應(yīng)用程序。CPU和GPU被視為具有各自內(nèi)存空間的單獨(dú)設(shè)備。此配置還允許在CPU和GPU上同時(shí)進(jìn)行計(jì)算,而不會爭用內(nèi)存資源。
具有CUDA功能的GPU具有數(shù)百個(gè)內(nèi)核,這些內(nèi)核可以共同運(yùn)行數(shù)千個(gè)計(jì)算線程。這些內(nèi)核具有共享資源,包括寄存器文件和共享內(nèi)存。片上共享內(nèi)存允許在這些內(nèi)核上運(yùn)行的并行任務(wù)共享數(shù)據(jù),而無需通過系統(tǒng)內(nèi)存總線發(fā)送數(shù)據(jù)。
評估
對于現(xiàn)有項(xiàng)目,第一步是評估應(yīng)用程序,以找到負(fù)責(zé)大部分執(zhí)行時(shí)間的代碼部分。有了這些知識,開發(fā)人員就可以評估這些瓶頸以進(jìn)行并行化,并開始研究GPU加速。
通過了解最終用戶的要求和約束并應(yīng)用阿姆達(dá)爾定律和古斯塔夫森定律,開發(fā)人員可以通過加速應(yīng)用程序已識別部分來確定性能改進(jìn)的上限。
平行化
在確定了熱點(diǎn)并完成了設(shè)置目標(biāo)和期望的基本練習(xí)之后,開發(fā)人員需要并行處理代碼。根據(jù)原始代碼,這可以像調(diào)用現(xiàn)有的GPU優(yōu)化庫一樣簡單,例如立方玻璃, 傅立葉變換, 要么 推力,也可以像向并行化編譯器添加一些預(yù)處理器指令一樣簡單。
另一方面,某些應(yīng)用程序的設(shè)計(jì)將需要進(jìn)行一些重構(gòu)以暴露其固有的并行性。由于甚至CPU架構(gòu)也需要公開并行性以改善或簡單地維護(hù)順序應(yīng)用程序的性能,因此CUDA并行編程語言家族(CUDA C ++,CUDA Fortran等)旨在使這種并行性的表達(dá)盡可能地簡單。 ,同時(shí)在支持CUDA的GPU上啟用操作,這些GPU設(shè)計(jì)用于實(shí)現(xiàn)最大并行吞吐量。
優(yōu)化
在完成每一輪應(yīng)用程序并行化之后,開發(fā)人員可以著手優(yōu)化實(shí)現(xiàn)以提高性能。由于可以考慮許多可能的優(yōu)化,因此充分了解應(yīng)用程序的需求可以幫助使過程盡可能地流暢。但是,與整個(gè)APOD一樣,程序優(yōu)化是一個(gè)反復(fù)的過程(確定優(yōu)化機(jī)會,應(yīng)用和測試優(yōu)化,驗(yàn)證所實(shí)現(xiàn)的加速并重復(fù)),這意味著程序員在看到良好的加速效果之前不必花費(fèi)大量時(shí)間來記住所有可能的優(yōu)化策略。相反,可以在學(xué)習(xí)策略時(shí)逐步應(yīng)用它們。
從重疊的數(shù)據(jù)傳輸?shù)接?jì)算一直到微調(diào)浮點(diǎn)運(yùn)算序列,優(yōu)化可以應(yīng)用于各種級別?捎玫母乓治龉ぞ邔τ谥笇(dǎo)此過程非常有用,因?yàn)樗鼈兛梢詭椭ㄗh開發(fā)人員進(jìn)行優(yōu)化工作的最佳方案,并為該指南的優(yōu)化部分的相關(guān)部分提供參考。
部署
完成應(yīng)用程序一個(gè)或多個(gè)組件的GPU加速后,可以將結(jié)果與原始期望進(jìn)行比較。回想一下,初始評估步驟允許開發(fā)人員確定通過加速給定熱點(diǎn)可獲得的潛在加速的上限。
在解決其他熱點(diǎn)以提高總體速度之前,開發(fā)人員應(yīng)考慮采用部分并行的實(shí)現(xiàn),并將其付諸實(shí)踐。這很重要,原因有很多;例如,它允許用戶盡早從他們的投資中獲利(提速可能是部分的,但仍然是有價(jià)值的),并且通過向開發(fā)者提供一組漸進(jìn)而不是革命性的更改,將開發(fā)人員和用戶的風(fēng)險(xiǎn)降至最低。應(yīng)用。
GPU加速庫
CUDA-X庫
IndeX框架(IndeX)
語言解決方案
OpenACC編譯器指令
NVIDIA CUDA C / C ++編譯器(NVCC)
參考資料
CUDA C / C ++代碼示例
CUDA文檔
開發(fā)工具
NVTAGS
DIGITS深度學(xué)習(xí)培訓(xùn)系統(tǒng)
Nsight集成開發(fā)環(huán)境
可視分析器
CUDA-GDB命令行調(diào)試器
CUDA-MEMCHECK內(nèi)存分析儀
關(guān)于騰牛 | 聯(lián)系方式 | 發(fā)展歷程 | 版權(quán)聲明 | 下載幫助(?) | 廣告聯(lián)系 | 網(wǎng)站地圖 | 友情鏈接
Copyright 2005-2024 QQTN.com 【騰牛網(wǎng)】 版權(quán)所有 鄂ICP備2022005668號-1 | 鄂公網(wǎng)安備 42011102000260號
聲明:本站非騰訊QQ官方網(wǎng)站 所有軟件和文章來自互聯(lián)網(wǎng) 如有異議 請與本站聯(lián)系 本站為非贏利性網(wǎng)站 不接受任何贊助和廣告