日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

GPU并行环境

發(fā)布時間:2023/11/28 生活经验 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GPU并行环境 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

GPU并行環(huán)境

圖1. CPU和GPU架構(gòu)
CPU 由專為順序串行處理而優(yōu)化的幾個核心組成。GPU則由數(shù)以千計的更小、更高效的核心組成,這些核心專為同時處理多任務(wù)而設(shè)計。

圖2. 串行運算示意圖

圖3. 并行運算示意圖
容易地理解串行運算和并行運算之間的區(qū)別。傳統(tǒng)的串行編寫軟件具備以下幾個特點:
? 要運行在一個單一的具有單一中央處理器(CPU)的計算機(jī)上;
? 一個問題分解成一系列離散的指令;
? 指令必須一個接著一個執(zhí)行;
? 只有一條指令可以在任何時刻執(zhí)行。
而并行計算則改進(jìn)了很多重要細(xì)節(jié):
? 要使用多個處理器運行;
? 一個問題可以分解成可同時解決的離散指令;
? 每個部分進(jìn)一步細(xì)分為一系列指示;
? 每個部分的問題可以同時在不同處理器上執(zhí)行。
提高了算法的處理速度。
GPU加速技術(shù)
CUDA
為充分利用GPU的計算能力,NVIDIA在2006年推出了CUDA(ComputeUnifiedDevice Architecture,統(tǒng)一計算設(shè)備架構(gòu))這一編程模型。CUDA是一種由NVIDIA推出的通用并行計算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計算問題。包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計算引擎。開發(fā)人員現(xiàn)在可以使用C語言來為CUDA架構(gòu)編寫程序。
通過這個技術(shù),用戶可利用NVIDIA的GeForce 8以后的GPU和較新的QuadroGPU進(jìn)行計算。以GeForce 8800 GTX為例,其核心擁有128個內(nèi)處理器。利用CUDA技術(shù),就可以將那些內(nèi)處理器串通起來,成為線程處理器去解決數(shù)據(jù)密集的計算。而各個內(nèi)處理器能夠交換、同步和共享數(shù)據(jù)。
從CUDA體系結(jié)構(gòu)的組成來說,包含了三個部分:開發(fā)庫、運行期環(huán)境和驅(qū)動。
開發(fā)庫是基于CUDA技術(shù)所提供的應(yīng)用開發(fā)庫。CUDA的1.1版提供了兩個標(biāo)準(zhǔn)的數(shù)學(xué)運算庫:CUFFT (離散快速傅立葉變換)和CUBLAS(離散基本線性計算)的實現(xiàn)。這兩個數(shù)學(xué)運算庫所解決的是典型的大規(guī)模的并行計算問題,也是在密集數(shù)據(jù)計算中非常常見的計算類型。開發(fā)人員在開發(fā)庫的基礎(chǔ)上可以快速、方便的建立起自己的計算應(yīng)用。此外,開發(fā)人員也可以在CUDA的技術(shù)基礎(chǔ)上實現(xiàn)出更多的開發(fā)庫。
運行期環(huán)境提供了應(yīng)用開發(fā)接口和運行期組件,包括基本數(shù)據(jù)類型的定義和各類計算、類型轉(zhuǎn)換、內(nèi)存管理、設(shè)備訪問和執(zhí)行調(diào)度等函數(shù)?;贑UDA開發(fā)的程序代碼在實際執(zhí)行中分為兩種,一種是運行在CPU上的宿主代碼(HostCode),一種是運行在GPU上的設(shè)備代碼(Device Code)。
不同類型的代碼由于其運行的物理位置不同,能夠訪問到的資源不同,因此對應(yīng)的運行期組件也分為公共組件、宿主組件和設(shè)備組件三個部分,基本上囊括了所有在GPGPU開發(fā)中所需要的功能和能夠使用到的資源接口,開發(fā)人員可以通過運行期環(huán)境的編程接口實現(xiàn)各種類型的計算。
由于目前存在著多種GPU版本的NVIDIA顯卡,不同版本的GPU之間都有不同的差異,因此驅(qū)動部分基本上可以理解為是CUDA-enable的GPU的設(shè)備抽象層,提供硬件設(shè)備的抽象訪問接口。CUDA提供運行期環(huán)境也是通過這一層來實現(xiàn)各種功能的。由于體系結(jié)構(gòu)中硬件抽象層的存在,CUDA今后也有可能發(fā)展成為一個通用的GPU標(biāo)準(zhǔn)接口,兼容不同廠商的GPU產(chǎn)品。

圖4. CUDA處理流程
對于軟件開發(fā)者來說,使用Cuda平臺調(diào)用Cuda的加速庫使用的語言包括:C、C++和Fortran。C/C++編程者使用UDAC/C++并用nvcc進(jìn)行編譯。
Nvidia的LLVM庫是基于C/C++編譯器的。Fortran的開發(fā)者能夠使用CUDA Fortran,編譯使用PGI CUDA Fortran。當(dāng)然CUDA平臺也支持其他的編程接口,包括OpenCL,微軟的DirectCompute、OpenGL ComputeShaders和 C++ AMP。第三方的開發(fā)者也可以使用Python、Perl、Fortran、Java、Ruby、Lua、Haskell、R、MATLAB、IDL由曼賽馬提亞原生支持。
OpenCL
OpenCL全稱Open Computing Language即開放計算語言。OpenCL為異構(gòu)平臺提供了一個編寫程序,尤其是并行程序的開放的框架標(biāo)準(zhǔn)。OpenCL所支持的異構(gòu)平臺可由多核CPU、GPU或其他類型的處理器組成。
CUDA只能夠在NVIDIA的GPU硬件上運行。但是,OpenCL的目標(biāo)是面向任何一種并行處理器,OpenCL是第一種真正的開放自由版權(quán)編程標(biāo)準(zhǔn),適用于異構(gòu)系統(tǒng)上的通用計算。而異構(gòu)平臺可由CPU、GPU、DSP、FPGA或其他類型的處理器搭建。
OpenCL程序同CUDA程序一樣,也是分為兩部分,一是用于編寫內(nèi)核程序(在OpenCL設(shè)備上運行的代碼) 的語言,二是定義并控制平臺的API。OpenCL提供了基于任務(wù)和基于數(shù)據(jù)兩種并行計算機(jī)制,極大地擴(kuò)展了GPU 的應(yīng)用范圍,使之不再局限于圖形領(lǐng)域。
OpenCL由Khronos Group維護(hù)。Khronos Group是一個非盈利性技術(shù)組織,維護(hù)著多個開放的工業(yè)標(biāo)準(zhǔn),例如OpenGL和OpenAL。這兩個標(biāo)準(zhǔn)分別用于三維圖形和計算機(jī)音頻方面。OpenCL源程序既可以在多核CPU上也可以在GPU上編譯執(zhí)行,這大大提高了代碼的性能和可移植性。OpenCL標(biāo)準(zhǔn)由相應(yīng)的標(biāo)準(zhǔn)委員會制訂,委員會的成員來自業(yè)界各個重要廠商。作為用戶和程序員期待已久的東西,OpenCL帶來兩個重要變化:一個跨廠商的非專有軟件解決方案;一個跨平臺的異構(gòu)框架以同時發(fā)揮系統(tǒng)中所有計算單元的能力。
OpenCL是一個用于異構(gòu)平臺上編程的開放性行業(yè)標(biāo)準(zhǔn)。這個平臺可以包括 CPU GPU和其他各類計算設(shè)備,OpenCL會將各類計算設(shè)備組織成一個統(tǒng)一的平臺。OpenCL不僅僅是一種編程語言,更是一個完整的并行編程框架,包括編程語言,API,函數(shù)庫以及運行時系統(tǒng)來支持軟件在整個平臺上的開發(fā)。

參考鏈接:
https://www.eet-china.com/mp/a67644.html

總結(jié)

以上是生活随笔為你收集整理的GPU并行环境的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。