分享最新新版本的英偉達(dá)NVIDIA CUDA驅(qū)動(dòng)同步載,CUDA是NVIDIA發(fā)明了一種并行計(jì)算平臺(tái)和編程模型。通過利用圖形處理單元(GPU)的功能,可以顯著提高計(jì)算性能。歡迎下載體驗(yàn)。
CUDA™是一種由NVIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問題。 它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計(jì)算引擎。 開發(fā)人員現(xiàn)在可以使用C語言來為CUDA™架構(gòu)編寫程序,C語言是應(yīng)用最廣泛的一種高級(jí)編程語言。所編寫出的程序于是就可以在支持CUDA™的處理器上以超高性能運(yùn)行。CUDA3.0已經(jīng)開始支持C++和FORTRAN。

NVIDIA CUDA驅(qū)動(dòng)基本簡介
CUDA的開發(fā)考慮了幾個(gè)設(shè)計(jì)目標(biāo):
提供對(duì)標(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ì)算,而不會(huì)爭用內(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ù)。
NVIDIA CUDA驅(qū)動(dòng)使用方法
評(píng)估
對(duì)于現(xiàn)有項(xiàng)目,第一步是評(píng)估應(yīng)用程序,以找到負(fù)責(zé)大部分執(zhí)行時(shí)間的代碼部分。有了這些知識(shí),開發(fā)人員可以平行評(píng)估這些瓶頸,并開始研究GPU加速。
開發(fā)人員可以通過了解最終用戶的要求和約束,并應(yīng)用阿姆達(dá)爾定律和古斯塔夫森定律來確定性能改進(jìn)的上限。
平行化
開發(fā)人員在確定熱點(diǎn)并完成設(shè)定目標(biāo)和期望的基本實(shí)踐后,需要并行處理代碼。根據(jù)原始代碼,它可以像調(diào)用現(xiàn)有的GPU優(yōu)化庫一樣簡單,如立方玻璃、傅立葉變換、推力或向并行編譯器添加一些預(yù)處理器指令。
另一方面,一些應(yīng)用程序的設(shè)計(jì)需要進(jìn)行一些重構(gòu),以暴露其固有的并行性。CUDA并行編程語言家族(CUDAC++、CUDAFortran等)旨在盡可能簡單地表達(dá)這種并行性,因?yàn)樯踔罜PU架構(gòu)也需要公開并行性來提高或簡單地維護(hù)順序應(yīng)用程序的性能。同時(shí),在支持CUDA的GPU上啟用這些GPU設(shè)計(jì),以實(shí)現(xiàn)最大并行吞吐量。
優(yōu)化
在完成每一輪應(yīng)用程序并行化后,開發(fā)人員可以開始優(yōu)化以提高性能。充分了解應(yīng)用程序的需求可以幫助使過程盡可能順利,因?yàn)榭梢钥紤]許多可能的優(yōu)化。然而,像整個(gè)應(yīng)用程序OD一樣,程序優(yōu)化是一個(gè)重復(fù)的過程(確定優(yōu)化機(jī)會(huì)、應(yīng)用程序和測(cè)試優(yōu)化,驗(yàn)證實(shí)現(xiàn)的加速和重復(fù)),這意味著程序員在看到良好的加速效果之前不需要花很多時(shí)間來記住所有可能的優(yōu)化策略。相反,它們可以在學(xué)習(xí)策略時(shí)逐漸應(yīng)用。
從重疊數(shù)據(jù)傳輸?shù)接?jì)算再到微調(diào)浮點(diǎn)計(jì)算序列,優(yōu)化可應(yīng)用于各級(jí)??捎玫母乓治龉ぞ邔?duì)指導(dǎo)這一過程非常有用,因?yàn)樗鼈兛梢詭椭ㄗh開發(fā)人員優(yōu)化工作的最佳方案,并為指南優(yōu)化部分的相關(guān)部分提供參考。
部署
在完成應(yīng)用程序中一個(gè)或多個(gè)組件的GPU加速后,結(jié)果可以與原始預(yù)期進(jìn)行比較?;仡欉^去,初始評(píng)估步驟允許開發(fā)人員通過加速給定的熱點(diǎn)來確定潛在加速的上限。
在解決其他熱點(diǎn)以提高整體速度之前,開發(fā)人員應(yīng)考慮并行實(shí)現(xiàn),并將其付諸實(shí)踐。這是非常重要的,有很多原因;例如,它允許用戶盡快從他們的投資中獲利(加速可能是部分的,但仍然有價(jià)值),并通過向開發(fā)人員提供一組漸進(jìn)的變化,而不是革命性的變化,將開發(fā)人員和用戶的風(fēng)險(xiǎn)降到最低。應(yīng)用程序。
NVIDIA CUDA驅(qū)動(dò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)存分析儀
CUDA工具包官方介紹:
開發(fā)、優(yōu)化和部署經(jīng) GPU 加速的應(yīng)用
NVIDIA® CUDA® 工具包提供了開發(fā)環(huán)境,可供創(chuàng)建經(jīng) GPU 加速的高性能應(yīng)用。借助 CUDA 工具包,您可以在經(jīng) GPU 加速的嵌入式系統(tǒng)、臺(tái)式工作站、企業(yè)數(shù)據(jù)中心、基于云的平臺(tái)和 HPC 超級(jí)計(jì)算機(jī)中開發(fā)、優(yōu)化和部署應(yīng)用。此工具包中包含多個(gè) GPU 加速庫、多種調(diào)試和優(yōu)化工具、一個(gè) C/C++ 編譯器以及一個(gè)用于在主要架構(gòu)(包括 x86、Arm 和 POWER)上構(gòu)建和部署應(yīng)用的運(yùn)行時(shí)庫。
借助多 GPU 配置中用于分布式計(jì)算的多項(xiàng)內(nèi)置功能,科學(xué)家和研究人員能夠開發(fā)出可從單個(gè) GPU 工作站擴(kuò)展到配置數(shù)千個(gè) GPU 的云端設(shè)施的應(yīng)用。