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

NVIDIA CUDA驅(qū)動基本簡介
CUDA的開發(fā)考慮了幾個設(shè)計目標:
提供對標準編程語言(例如C)的一小部分擴展,這些擴展可實現(xiàn)并行算法的直接實現(xiàn)。使用CUDA C / C ++,程序員可以專注于算法的并行化任務(wù),而不必花時間在其實現(xiàn)上。
在應(yīng)用程序同時使用CPU和GPU的情況下支持異構(gòu)計算。應(yīng)用程序的串行部分在CPU上運行,并行部分被卸載到GPU。這樣,CUDA可以增量地應(yīng)用于現(xiàn)有應(yīng)用程序。CPU和GPU被視為具有各自內(nèi)存空間的單獨設(shè)備。此配置還允許在CPU和GPU上同時進行計算,而不會爭用內(nèi)存資源。
具有CUDA功能的GPU具有數(shù)百個內(nèi)核,這些內(nèi)核可以共同運行數(shù)千個計算線程。這些內(nèi)核具有共享資源,包括寄存器文件和共享內(nèi)存。片上共享內(nèi)存允許在這些內(nèi)核上運行的并行任務(wù)共享數(shù)據(jù),而無需通過系統(tǒng)內(nèi)存總線發(fā)送數(shù)據(jù)。
NVIDIA CUDA驅(qū)動使用方法
評估
對于現(xiàn)有項目,第一步是評估應(yīng)用程序,以找到負責(zé)大部分執(zhí)行時間的代碼部分。有了這些知識,開發(fā)人員可以平行評估這些瓶頸,并開始研究GPU加速。
開發(fā)人員可以通過了解最終用戶的要求和約束,并應(yīng)用阿姆達爾定律和古斯塔夫森定律來確定性能改進的上限。
平行化
開發(fā)人員在確定熱點并完成設(shè)定目標和期望的基本實踐后,需要并行處理代碼。根據(jù)原始代碼,它可以像調(diào)用現(xiàn)有的GPU優(yōu)化庫一樣簡單,如立方玻璃、傅立葉變換、推力或向并行編譯器添加一些預(yù)處理器指令。
另一方面,一些應(yīng)用程序的設(shè)計需要進行一些重構(gòu),以暴露其固有的并行性。CUDA并行編程語言家族(CUDAC++、CUDAFortran等)旨在盡可能簡單地表達這種并行性,因為甚至CPU架構(gòu)也需要公開并行性來提高或簡單地維護順序應(yīng)用程序的性能。同時,在支持CUDA的GPU上啟用這些GPU設(shè)計,以實現(xiàn)最大并行吞吐量。
優(yōu)化
在完成每一輪應(yīng)用程序并行化后,開發(fā)人員可以開始優(yōu)化以提高性能。充分了解應(yīng)用程序的需求可以幫助使過程盡可能順利,因為可以考慮許多可能的優(yōu)化。然而,像整個應(yīng)用程序OD一樣,程序優(yōu)化是一個重復(fù)的過程(確定優(yōu)化機會、應(yīng)用程序和測試優(yōu)化,驗證實現(xiàn)的加速和重復(fù)),這意味著程序員在看到良好的加速效果之前不需要花很多時間來記住所有可能的優(yōu)化策略。相反,它們可以在學(xué)習(xí)策略時逐漸應(yīng)用。
從重疊數(shù)據(jù)傳輸?shù)接嬎阍俚轿⒄{(diào)浮點計算序列,優(yōu)化可應(yīng)用于各級。可用的概要分析工具對指導(dǎo)這一過程非常有用,因為它們可以幫助建議開發(fā)人員優(yōu)化工作的最佳方案,并為指南優(yōu)化部分的相關(guān)部分提供參考。
部署
在完成應(yīng)用程序中一個或多個組件的GPU加速后,結(jié)果可以與原始預(yù)期進行比較。回顧過去,初始評估步驟允許開發(fā)人員通過加速給定的熱點來確定潛在加速的上限。
在解決其他熱點以提高整體速度之前,開發(fā)人員應(yīng)考慮并行實現(xiàn),并將其付諸實踐。這是非常重要的,有很多原因;例如,它允許用戶盡快從他們的投資中獲利(加速可能是部分的,但仍然有價值),并通過向開發(fā)人員提供一組漸進的變化,而不是革命性的變化,將開發(fā)人員和用戶的風(fēng)險降到最低。應(yīng)用程序。
NVIDIA CUDA驅(qū)動軟件組成
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)、臺式工作站、企業(yè)數(shù)據(jù)中心、基于云的平臺和 HPC 超級計算機中開發(fā)、優(yōu)化和部署應(yīng)用。此工具包中包含多個 GPU 加速庫、多種調(diào)試和優(yōu)化工具、一個 C/C++ 編譯器以及一個用于在主要架構(gòu)(包括 x86、Arm 和 POWER)上構(gòu)建和部署應(yīng)用的運行時庫。
借助多 GPU 配置中用于分布式計算的多項內(nèi)置功能,科學(xué)家和研究人員能夠開發(fā)出可從單個 GPU 工作站擴展到配置數(shù)千個 GPU 的云端設(shè)施的應(yīng)用。