[發(fā)明專利]一種基于CUDA實(shí)現(xiàn)多任務(wù)共享GPU的方法無(wú)效
| 申請(qǐng)?zhí)枺?/td> | 201210115719.0 | 申請(qǐng)日: | 2012-04-19 |
| 公開(公告)號(hào): | CN102708009A | 公開(公告)日: | 2012-10-03 |
| 發(fā)明(設(shè)計(jì))人: | 黃錕;陳一峯;蔣吳軍 | 申請(qǐng)(專利權(quán))人: | 華為技術(shù)有限公司;北京大學(xué) |
| 主分類號(hào): | G06F9/50 | 分類號(hào): | G06F9/50 |
| 代理公司: | 北京萬(wàn)象新悅知識(shí)產(chǎn)權(quán)代理事務(wù)所(普通合伙) 11360 | 代理人: | 蘇愛華 |
| 地址: | 518129 廣東省深圳市龍*** | 國(guó)省代碼: | 廣東;44 |
| 權(quán)利要求書: | 查看更多 | 說(shuō)明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 cuda 實(shí)現(xiàn) 任務(wù) 共享 gpu 方法 | ||
技術(shù)領(lǐng)域
本發(fā)明涉及一種多任務(wù)共享GPU的實(shí)現(xiàn)方法,具體涉及在NVIDA的CUDA架構(gòu)中合并多個(gè)任務(wù),實(shí)現(xiàn)任務(wù)并行的方法,屬于GPGPU計(jì)算領(lǐng)域。
背景技術(shù)
GPGPU(General-purpose?computing?on?graphics?processing?units),是利用GPU來(lái)進(jìn)行大規(guī)模計(jì)算的技術(shù)。CUDA是NVIDA公司提供的GPGPU架構(gòu)。CUDA自從推出開始,就成為廣泛應(yīng)用的眾核并行計(jì)算形式。
GPU具有遠(yuǎn)遠(yuǎn)高于CPU的浮點(diǎn)運(yùn)算能力和內(nèi)存帶寬(附圖1),同時(shí)由于其高度的并行性,非常適合于大規(guī)模數(shù)據(jù)處理。
然而,由于GPU的硬件設(shè)計(jì),GPU上的編程和CPU上的并行編程有所不同。一個(gè)顯著的區(qū)別就是,GPU不支持多任務(wù)共享:每個(gè)任務(wù)在GPU上的運(yùn)行都是對(duì)GPU的硬件資源獨(dú)占的,不允許有其他的Kernel也在執(zhí)行。例如,當(dāng)多個(gè)任務(wù)都要使用GPU的時(shí)候,只能夠一個(gè)一個(gè)的順序地執(zhí)行,而不能一起同時(shí)在GPU上運(yùn)行。這一點(diǎn)和CPU上允許進(jìn)程之間進(jìn)行切換是有很大的不同。
目前,尚未發(fā)現(xiàn)有專利或者文獻(xiàn)針對(duì)GPU上的多任務(wù)共享進(jìn)行討論。
發(fā)明內(nèi)容
本發(fā)明所使用的一些術(shù)語(yǔ)定義如下:
Kernel:CUDA架構(gòu)中,GPU一次運(yùn)行所執(zhí)行的代碼。
Thread,Block,Grid:CUDA架構(gòu)中,一個(gè)大的Kernel被劃分為了很多小的基本單位,稱為線程(Thread)。
所有Thread組織成為了兩級(jí)結(jié)構(gòu)。(附圖2)
首先,這些Thread劃分為了若干個(gè)線程塊(Block),每個(gè)Block包含相同數(shù)目的Thread。Thread是以Block為單位分發(fā)到硬件資源上來(lái)執(zhí)行的。在Block內(nèi)部,線程的ID編號(hào)可以采用一維、二維或者三維,這稱為Block維數(shù)。在某一個(gè)確定的Kernel里面,每個(gè)Block都含有相同的維數(shù),以及每一維上相同的大小(這稱為維度)。維數(shù)和維度都是在GPU啟動(dòng)Kernel之前由程序員指定好的,執(zhí)行過(guò)程中是不能改變的。
然后,所有的Block組成的整體(也就是所有的Thread)稱為線程網(wǎng)格(Grid)。和Block的維數(shù)定義類似,Block的ID編號(hào),可以組織成一維、二維或者三維,稱為Grid的維數(shù),每一維上的大小稱為維度。
SM(Streaming?Multiprocessor):GPU上的硬件單元,包括運(yùn)算單元、寄存器、片上存儲(chǔ)器。每個(gè)Block都會(huì)被分配到SM上進(jìn)行執(zhí)行。一個(gè)Block只能在一個(gè)SM上執(zhí)行,一個(gè)SM上可以同時(shí)執(zhí)行一個(gè)或者多個(gè)Block(取決于單個(gè)Block消耗的寄存器、片上存儲(chǔ)器資源的數(shù)目)。
Global?Memory:顯卡上的存儲(chǔ)器,屬于片外存儲(chǔ)器,GPU可以從中讀取,但是速度相對(duì)比較慢。
Shared?Memory:GPU上的一種片上存儲(chǔ)器,每個(gè)SM中擁有一定數(shù)量的Shared?Memory,通常為KB級(jí)大小,可以視作一種可供程序員維護(hù)的Cache,在CUDA架構(gòu)中有非常重要的意義。
任務(wù)分塊:?jiǎn)蝹€(gè)任務(wù)劃分為多個(gè)子任務(wù),每個(gè)子任務(wù)稱為任務(wù)分塊。一個(gè)任務(wù)分塊將會(huì)對(duì)應(yīng)到一個(gè)Block中完成計(jì)算。
本發(fā)明旨在提供一種方法使得在CUDA架構(gòu)上實(shí)現(xiàn)多任務(wù)共享GPU,解決現(xiàn)有GT200架構(gòu)不支持多任務(wù)共享GPU的問(wèn)題。
本發(fā)明的原理包括三點(diǎn):
1.對(duì)每個(gè)Block執(zhí)行的任務(wù)分塊,在GPU運(yùn)行之初由程序員通過(guò)對(duì)一個(gè)映射表的賦值來(lái)確定。通常,每個(gè)Block執(zhí)行的任務(wù)分塊,在算法設(shè)計(jì)的時(shí)候就已經(jīng)固定。本發(fā)明通過(guò)增加一個(gè)映射表,使得能夠在GPU啟動(dòng)之前,程序員可以對(duì)每個(gè)Block執(zhí)行的任務(wù)分塊進(jìn)行重排。
2.利用GPU高并行度的特點(diǎn),把多個(gè)任務(wù)的Block合并到的一個(gè)Kernel中去。
CUDA架構(gòu)中,可以同時(shí)啟動(dòng)成百上千的線程(Thread),進(jìn)行并行度非常高的計(jì)算任務(wù)。所有的Thread被按照一定數(shù)目組織成為若干的Block。本發(fā)明讓一個(gè)GPU在一個(gè)Kernel中同時(shí)啟動(dòng)大量的Block,執(zhí)行所有任務(wù)的任務(wù)分塊。
3.考慮到任務(wù)之間可能具有約束性,利用GPU動(dòng)態(tài)調(diào)度Block到SM上的特性,處理約束關(guān)系。
CPU上一種通常的做法是,如果有約束關(guān)系,那么在需要同步的地方,直接使用原子操作即可。雖然GPU也支持原子操作,但是原子操作的代價(jià)是非常大的,會(huì)帶來(lái)性能上的嚴(yán)重?fù)p失,并且極易造成死鎖。
本發(fā)明充分考慮到了GPU調(diào)度Block的規(guī)律性。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于華為技術(shù)有限公司;北京大學(xué),未經(jīng)華為技術(shù)有限公司;北京大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201210115719.0/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專利網(wǎng)。
- 上一篇:一種基于人體特征的三維服裝放碼方法
- 下一篇:一種孔徑填充裝置及方法
- 一種CUDA環(huán)形網(wǎng)絡(luò)與H265協(xié)議互連的方法
- 一種提高計(jì)算機(jī)并行計(jì)算編程自動(dòng)化程度的方法
- 一種基于CUDA實(shí)現(xiàn)聚類的方法及裝置
- CUDA高性能SAR信號(hào)處理裝置
- 無(wú)線數(shù)據(jù)分析方法、裝置及CUDA實(shí)體
- 基于Docker原生CentOS的CUDA的安裝方法、裝置及設(shè)備
- 一種面向GPU計(jì)算性能問(wèn)題的溯源方法
- 一種高性能的帶權(quán)標(biāo)準(zhǔn)差背景建模方法
- 一種編程語(yǔ)言的轉(zhuǎn)換方法及系統(tǒng)
- CUDA程序移植方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 互動(dòng)業(yè)務(wù)終端、實(shí)現(xiàn)系統(tǒng)及實(shí)現(xiàn)方法
- 街景地圖的實(shí)現(xiàn)方法和實(shí)現(xiàn)系統(tǒng)
- 游戲?qū)崿F(xiàn)系統(tǒng)和游戲?qū)崿F(xiàn)方法
- 圖像實(shí)現(xiàn)裝置及其圖像實(shí)現(xiàn)方法
- 增強(qiáng)現(xiàn)實(shí)的實(shí)現(xiàn)方法以及實(shí)現(xiàn)裝置
- 軟件架構(gòu)的實(shí)現(xiàn)方法和實(shí)現(xiàn)平臺(tái)
- 數(shù)值預(yù)報(bào)的實(shí)現(xiàn)方法及實(shí)現(xiàn)系統(tǒng)
- 空調(diào)及其冬眠控制模式實(shí)現(xiàn)方法和實(shí)現(xiàn)裝置以及實(shí)現(xiàn)系統(tǒng)
- 空調(diào)及其睡眠控制模式實(shí)現(xiàn)方法和實(shí)現(xiàn)裝置以及實(shí)現(xiàn)系統(tǒng)
- 輸入設(shè)備實(shí)現(xiàn)方法及其實(shí)現(xiàn)裝置
- 任務(wù)協(xié)作裝置及方法
- 用于量化任務(wù)價(jià)值的任務(wù)管理方法及裝置
- 用于運(yùn)行任務(wù)的系統(tǒng)、方法和裝置
- 一種分布式任務(wù)調(diào)度系統(tǒng)及方法
- 任務(wù)信息處理方法
- 一種同步任務(wù)異步執(zhí)行的方法和調(diào)度系統(tǒng)
- 數(shù)據(jù)處理方法、裝置、電子設(shè)備及計(jì)算機(jī)可讀介質(zhì)
- 一種自動(dòng)分配和推送的任務(wù)管理平臺(tái)及方法
- 程序執(zhí)行控制的裝置及方法、終端和存儲(chǔ)介質(zhì)
- 基于會(huì)話的任務(wù)待辦方法、系統(tǒng)、電子設(shè)備及存儲(chǔ)介質(zhì)





