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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

向量体系结构(2)----SIMD指令集扩展和GPU

發(fā)布時間:2023/12/15 综合教程 48 生活家
生活随笔 收集整理的這篇文章主要介紹了 向量体系结构(2)----SIMD指令集扩展和GPU 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

進(jìn)行SIMD多媒體擴(kuò)展的設(shè)計,源于一個很容易觀察到的事實:

許多多媒體應(yīng)用程序操作的數(shù)據(jù)類型比對32位處理器進(jìn)行針對性優(yōu)化的數(shù)據(jù)類型更窄一些。

圖像三基色,都是8位。音頻采樣也都是8位和16位來表示。

SIMD的多媒體擴(kuò)展指令與標(biāo)準(zhǔn)的SIMD指令相比,它指定的操作數(shù)更少,因此使用的寄存器堆更小。

SIMD擴(kuò)展主要對一下三項進(jìn)行了簡化:

1)多媒體SIMD擴(kuò)展固定了操作代碼中數(shù)據(jù)操作數(shù)的數(shù)目,從而在x86的體系結(jié)構(gòu)的MMX,SSE,AVX中添加了數(shù)百條指令。

2)多媒體SIMD沒有提供向量體系結(jié)構(gòu)的更復(fù)雜的尋址模式,也就是步幅訪問和集中---分散訪問。

3)多媒體SIMD不像向量體系結(jié)構(gòu)那樣,為了支持元素的條件執(zhí)行而提供遮罩寄存器。

做這些擴(kuò)展指令的目的也是加快那些精心編制的庫函數(shù)的運(yùn)行速度,而不是由編譯器來生成的這些庫。

SIMD的優(yōu)點(diǎn):

1)芯片設(shè)計相對向量體系結(jié)構(gòu)來說,較簡單,且不需要那么大的存儲器帶寬。

2)可以比較輕松的引入一些符合新媒體標(biāo)準(zhǔn)的指令。

GPU的祖先是圖形加速器,極強(qiáng)的圖形處理能力是GPU得以存在的原因。當(dāng)前GPU的研究熱點(diǎn)是一種簡化的GPU編程的編程語言。

GPU幾乎擁有所有可以由編程環(huán)境捕獲的并行類型:多線程,MIMD,SIMD,指令級并行

NVIDA開發(fā)的是一種類似于C的語言和編程環(huán)境,通過克服多種并行的挑戰(zhàn)來提高GPU程序員的生產(chǎn)效率。這一系統(tǒng)稱為CUDA。

將所有的這些并行形式統(tǒng)一為CUDA線程,以這種最低級的并行作為編程原型。

編譯器和硬件可以將數(shù)以千計的CUDA線程聚合在一起。CUDA編程模型被定義為"單指令多線程(SIMT)"

執(zhí)行時,以32個線程為一組,稱為線程塊,將執(zhí)行整個線程塊的硬件稱為多線程SIMD處理器。

行執(zhí)行和線程管理由GPU硬件負(fù)責(zé),而不是由應(yīng)用程序或操作系統(tǒng)完成,不同的線程塊之間可以使用全局存儲的原子操作來進(jìn)行協(xié)調(diào),

但是它們之間不能直接通信。

和很多并行系統(tǒng)一樣,CUDA在生產(chǎn)效率和性能之間進(jìn)行了一點(diǎn)折中,提供了一些本身固有的功能,讓程序員能夠顯示控制硬件。

了解編程語言可以平衡生產(chǎn)效率和性能之間的關(guān)系。

AMD推出的與供應(yīng)商無關(guān)的語言,OpenCL。

以NVIDIA系統(tǒng)為例,GPU可以很好的解決數(shù)據(jù)級并行的問題,也擁有著集中---分散數(shù)據(jù)傳送和遮罩寄存器,但是GPU的寄存器要比

向量處理器更多。有一些功能,GPU通過硬件來實現(xiàn),在向量體系結(jié)構(gòu)中通過軟件來實現(xiàn)。

網(wǎng)格是在GPU上運(yùn)行,由一組線程塊構(gòu)成的代碼。例如我們希望兩個向量乘在一起,每個向量長度為8192個元素。執(zhí)行所有8192個

元素乘法的GPU代碼稱為網(wǎng)格(向量化循環(huán))

為了便于管理,網(wǎng)格可以由線程塊(向量化循環(huán)體)組成。每個線程塊最多512個元素。一條SIMD指令一次執(zhí)行32個元素。所以該例子

中,共有16個線程塊

網(wǎng)格和線程塊是GPU硬件中實現(xiàn)的編程抽象,可以幫助程序員組織自己的CUDA代碼。

線程塊調(diào)度程序是將線程塊指定給執(zhí)行該代碼的處理器,我們將這種處理器稱為多線程SIMD處理器。

線程塊調(diào)度程序與向量體系結(jié)構(gòu)中的控制處理器類似。決定了該循環(huán)所需要的線程塊數(shù),以及將他們分配給不同的多線程SIMD處理器。

SIMD多線程處理器與向量處理器類似。但是它的很多功能單元都是深度流水化的。

GPU是一個由多線程SIMD處理器組成的多處理器,加自己的線程塊調(diào)度程度。

GPU硬件中有兩級硬件調(diào)度程序:

1) 線程塊調(diào)度程序,將線程塊分配給多線程SIMD處理器

2) SIMD處理器內(nèi)部的SIMD線程調(diào)度程序,調(diào)度何時運(yùn)行SIMD指令線程

在多線程SIMD處理器中執(zhí)行的指令,由并行功能單元來執(zhí)行,稱為SIMD車道,每個SIMD處理器中的車道數(shù)在各代GPU中是不同的。

對于fermi,每個寬度為32的SIMD指令線程被映射到16個物理SIMD車道,所以每條SIMD指令需要兩個時鐘周期才能完成。

記分板,可以讓SIMD線程調(diào)度程序,了解哪個SIMD指令已經(jīng)做好運(yùn)行準(zhǔn)備。

總結(jié)

以上是生活随笔為你收集整理的向量体系结构(2)----SIMD指令集扩展和GPU的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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