Fiori-like Prototype ( Nvidia CUDA Python )

Fiori-like Prototype ( Nvidia?CUDA Python )

Play with python

python

Calc Nodes

Calc Nodes

Demos / Prototypes / Mockups

ZFiori Studio ( Nvidia CUDA Python Mockups ) S2

ZFiori Studio ( Nvidia CUDA Python Mockups ) S2

Nvidia CUDA Community

Fiori-like Prototype ( Nvidia?CUDA Python )

CUDA 是 NVIDIA 發(fā)明的一種并行計(jì)算平臺(tái)和編程模型。它通過(guò)利用圖形處理器 (GPU) 的處理能力,可大幅提升計(jì)算性能。

2006 年 11 月,NVIDIA? 推出了 CUDA?,這是一種通用并行計(jì)算平臺(tái)和編程模型,它利用 NVIDIA GPU 中的并行計(jì)算引擎以比 CPU 更有效的方式解決許多復(fù)雜的計(jì)算問(wèn)題。

CUDA 附帶一個(gè)軟件環(huán)境,允許開(kāi)發(fā)人員使用 C++ 作為高級(jí)編程語(yǔ)言。

如下圖所示,支持其他語(yǔ)言、應(yīng)用程序編程接口或基于指令的方法,例如 FORTRAN、DirectCompute、OpenACC。


GPU Computes

可擴(kuò)展的編程模型

多核 CPU 和眾核 GPU 的出現(xiàn)意味著主流處理器芯片現(xiàn)在是并行系統(tǒng)。挑戰(zhàn)在于開(kāi)發(fā)能夠透明地?cái)U(kuò)展可并行的應(yīng)用軟件,來(lái)利用不斷增加的處理器內(nèi)核數(shù)量。就像 3D 圖形應(yīng)用程序透明地將其并行性擴(kuò)展到具有廣泛不同內(nèi)核數(shù)量的多核 GPU 一樣。

CUDA 并行編程模型旨在克服這一挑戰(zhàn),同時(shí)為熟悉 C 等標(biāo)準(zhǔn)編程語(yǔ)言的程序員保持較低的學(xué)習(xí)曲線(xiàn)。

其核心是三個(gè)關(guān)鍵抽象——線(xiàn)程組的層次結(jié)構(gòu)、共享內(nèi)存和屏障同步——它們只是作為最小的語(yǔ)言擴(kuò)展集向程序員公開(kāi)。

這些抽象提供了細(xì)粒度的數(shù)據(jù)并行和線(xiàn)程并行,嵌套在粗粒度的數(shù)據(jù)并行和任務(wù)并行中。它們指導(dǎo)程序員將問(wèn)題劃分為可以由線(xiàn)程塊并行獨(dú)立解決的粗略子問(wèn)題,并將每個(gè)子問(wèn)題劃分為可以由塊內(nèi)所有線(xiàn)程并行協(xié)作解決的更精細(xì)的部分。

這種分解通過(guò)允許線(xiàn)程在解決每個(gè)子問(wèn)題時(shí)進(jìn)行協(xié)作來(lái)保留語(yǔ)言表達(dá)能力,同時(shí)實(shí)現(xiàn)自動(dòng)可擴(kuò)展性。實(shí)際上,每個(gè)線(xiàn)程塊都可以在 GPU 內(nèi)的任何可用multiprocessor上以亂序、并發(fā)或順序調(diào)度,以便編譯的 CUDA 程序可以在任意數(shù)量的多處理器上執(zhí)行,如下圖所示,并且只有運(yùn)行時(shí)系統(tǒng)需要知道物理multiprocessor個(gè)數(shù)。

這種可擴(kuò)展的編程模型允許 GPU 架構(gòu)通過(guò)簡(jiǎn)單地?cái)U(kuò)展multiprocessor和內(nèi)存分區(qū)的數(shù)量來(lái)跨越廣泛的市場(chǎng)范圍:

高性能發(fā)燒友 GeForce GPU ,專(zhuān)業(yè)的 Quadro 和 Tesla 計(jì)算產(chǎn)品 。

SM: Streaming Multiprocessors

注意:GPU 是圍繞一系列流式多處理器 (SM: Streaming Multiprocessors) 構(gòu)建的(有關(guān)詳細(xì)信息,請(qǐng)參閱硬件實(shí)現(xiàn))。 多線(xiàn)程程序被劃分為彼此獨(dú)立執(zhí)行的線(xiàn)程塊,因此具有更多multiprocessor的 GPU 將比具有更少多處理器的 GPU 在更短的時(shí)間內(nèi)完成程序執(zhí)行。

為什么要使用GPU

GPU(Graphics Processing Unit)在相同的價(jià)格和功率范圍內(nèi),比CPU提供更高的指令吞吐量和內(nèi)存帶寬。許多應(yīng)用程序利用這些更高的能力,在GPU上比在CPU上運(yùn)行得更快(參見(jiàn)GPU應(yīng)用程序)。其他計(jì)算設(shè)備,如FPGA,也非常節(jié)能,但提供的編程靈活性要比GPU少得多。

GPU和CPU在功能上的差異是因?yàn)樗鼈兊脑O(shè)計(jì)目標(biāo)不同。雖然 CPU 旨在以盡可能快的速度執(zhí)行一系列稱(chēng)為線(xiàn)程的操作,并且可以并行執(zhí)行數(shù)十個(gè)這樣的線(xiàn)程。但GPU卻能并行執(zhí)行成千上萬(wàn)個(gè)(攤銷(xiāo)較慢的單線(xiàn)程性能以實(shí)現(xiàn)更大的吞吐量)。

GPU 專(zhuān)門(mén)用于高度并行計(jì)算,因此設(shè)計(jì)時(shí)更多的晶體管用于數(shù)據(jù)處理,而不是數(shù)據(jù)緩存和流量控制。

下圖顯示了 CPU 與 GPU 的芯片資源分布示例:

CPU 與 GPU 的芯片資源分布示例

將更多晶體管用于數(shù)據(jù)處理,例如浮點(diǎn)計(jì)算,有利于高度并行計(jì)算。

GPU可以通過(guò)計(jì)算隱藏內(nèi)存訪(fǎng)問(wèn)延遲,而不是依靠大數(shù)據(jù)緩存和復(fù)雜的流控制來(lái)避免長(zhǎng)時(shí)間的內(nèi)存訪(fǎng)問(wèn)延遲,這兩者在晶體管方面都是昂貴的。

Reference

GPU軟硬件基礎(chǔ)知識(shí)

GPU加速02:超詳細(xì)Python Cuda零基礎(chǔ)入門(mén)教程,沒(méi)有顯卡也能學(xué)

anaconda的安裝和使用(管理python環(huán)境看這一篇就夠了)

Numba Deprecation Notices

CUDA 編程手冊(cè)系列第一章:CUDA 簡(jiǎn)介

為啥 AMD 的 ROCm 沒(méi)有被廣泛使用,Nvidia 的 CUDA 一家獨(dú)大?

ZFiori Studio ( Nvidia CUDA Python Mockups ) S2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 知識(shí)準(zhǔn)備 1.1 中央處理器(CPU) 中央處理器(CPU,Central Processing Unit)...
    貳爺閱讀 1,856評(píng)論 0 2
  • 1.認(rèn)識(shí)CUDA編程 2006年,NVIDIA公司發(fā)布了CUDA(Compute Unified Device A...
    星光下的胖子閱讀 2,155評(píng)論 1 1
  • 1. CPU vs. GPU 1.1 四種計(jì)算機(jī)模型 GPU設(shè)計(jì)的初衷就是為了減輕CPU計(jì)算的負(fù)載,將一部分圖形計(jì)...
    王偵閱讀 21,375評(píng)論 3 20
  • 開(kāi)篇一張圖,后面聽(tīng)我編 1. 知識(shí)準(zhǔn)備 1.1 中央處理器(CPU) 中央處理器(CPU,Central Proc...
    He_Yu閱讀 47,917評(píng)論 7 115
  • GPU優(yōu)勢(shì) 相對(duì)于同等價(jià)位和功率的CPU,圖形處理單元(Graphics Process Unit,GPU)提供更...
    刺猬_f8f7閱讀 1,115評(píng)論 0 0

友情鏈接更多精彩內(nèi)容