專利名稱:一種cpu與協(xié)處理器間的數(shù)據(jù)傳輸方法和裝置的制作方法
一種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法和裝置技術(shù)領(lǐng)域:
本發(fā)明涉及處理器數(shù)據(jù)傳輸技術(shù),尤其涉及一種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法和裝置。背景技術(shù):
如今,以GPU (圖形處理器)為代表的協(xié)處理器已經(jīng)具有越來越強(qiáng)大的計(jì)算能力, 在眾多需要高性能計(jì)算的領(lǐng)域,都會(huì)采用多協(xié)處理器與CPU合作的方式來執(zhí)行計(jì)算任務(wù), 在這個(gè)過程中,經(jīng)常需要CPU與協(xié)處理器以及多個(gè)協(xié)處理器之間的數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)男手苯佑绊懼?jì)算任務(wù)的執(zhí)行效率。
現(xiàn)有的數(shù)據(jù)傳輸方法中,數(shù)據(jù)從CPU傳輸至多個(gè)協(xié)處理器,或者一個(gè)協(xié)處理器將數(shù)據(jù)廣播至多個(gè)協(xié)處理器時(shí),數(shù)據(jù)的傳輸效率都非常低,主要體現(xiàn)在
將一份數(shù)據(jù)從CPU傳輸至多個(gè)協(xié)處理器時(shí),現(xiàn)有的方法通常是CPU依次和這多個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,即每次CPU和一個(gè)協(xié)處理器傳輸完這份數(shù)據(jù)后,再和另一個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,這樣使得CPU和一個(gè)協(xié)處理器在傳輸數(shù)據(jù)時(shí),其余協(xié)處理器的總線都處于空閑狀態(tài),總線利用率非常低。
協(xié)處理器將一份數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí),現(xiàn)有的方法通常是協(xié)處理器先把數(shù)據(jù)發(fā)送至CPU內(nèi)存,再從CPU的內(nèi)存依次傳輸至另一個(gè)協(xié)處理器,或者,直接通過協(xié)處理器生產(chǎn)商提供的傳輸函數(shù),依次將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器,與上述CPU將一份數(shù)據(jù)傳輸至多個(gè)協(xié)處理器類似,這兩種方法同樣會(huì)導(dǎo)致未在傳輸數(shù)據(jù)的協(xié)處理器的總線處于空閑狀態(tài),總線利用率非常低。
如上所述的問題使得CPU與協(xié)處理器以及多個(gè)協(xié)處理器之間的數(shù)據(jù)傳輸效率很低,并且會(huì)直接降低整個(gè)系統(tǒng)的運(yùn)算能力,例如在語音識(shí)別的訓(xùn)練過程中,需要通過多GPU 配合CPU來進(jìn)行計(jì)算,每個(gè)GPU都要有同一份訓(xùn)練數(shù)據(jù),然而由于數(shù)據(jù)傳輸開銷較大,會(huì)導(dǎo)致多GPU的訓(xùn)練速度甚至沒有單GPU快。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法和裝置,能夠提高CPU將數(shù)據(jù)傳送至多個(gè)協(xié)處理器時(shí)以及協(xié)處理器將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí)的數(shù)據(jù)傳輸效率。
具體技術(shù)方案如下
—種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法,該方法包括
根據(jù)CPU生成的N個(gè)線程 并行對(duì)N個(gè)協(xié)處理器的數(shù)據(jù)傳輸進(jìn)行控制,所述N為大于或等于2的整數(shù);
所述控制包括協(xié)處理器接收CPU以數(shù)據(jù)切片形式發(fā)送的數(shù)據(jù);或者,協(xié)處理器接收并存儲(chǔ)CPU或上一協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述方法用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器 時(shí),所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至其中一個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)的線程控 制該目標(biāo)協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上 一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述方法用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器 時(shí),所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至所述N個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)線程控制所 述N個(gè)目標(biāo)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述方法用于由一個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他 N-1個(gè)目標(biāo)協(xié)處理器時(shí),所述CPU通過對(duì)應(yīng)線程控制源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片的形式 發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已 存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至其中一個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)線程控制該目標(biāo)協(xié)處理 器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切 片至下一目標(biāo)協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,如果所述下一目標(biāo)協(xié)處理器為最后一個(gè)目標(biāo)協(xié)處理 器,則通過對(duì)應(yīng)線程控制最后一個(gè)目標(biāo)協(xié)處理器接收并存儲(chǔ)接收到的數(shù)據(jù)分片,否則,通過 對(duì)應(yīng)線程控制所述下一目標(biāo)協(xié)處理器在接收到上一目標(biāo)協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù) 據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器,直至最后一個(gè)目 標(biāo)協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述方法用于由一個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他 N-1個(gè)目標(biāo)協(xié)處理器時(shí),所述CPU通過對(duì)應(yīng)線程通知源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片的形式 從源協(xié)處理器發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片 的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至所述N-1個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)線程 控制所述N-1個(gè)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
一種CPU與協(xié)處理器間的數(shù)據(jù)傳輸裝置,該裝置設(shè)置于CPU,其特征在于,該裝置 包括
線程控制單元,用于生成N個(gè)線程;
傳輸控制單元,用于根據(jù)所述N個(gè)線程并行對(duì)N個(gè)協(xié)處理器的數(shù)據(jù)傳輸進(jìn)行控制, 所述N為大于或等于2的整數(shù);
所述控制包括協(xié)處理器接收CPU以數(shù)據(jù)切片形式發(fā)送的數(shù)據(jù);或者,協(xié)處理器接 收并存儲(chǔ)CPU或上一協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí) 刻的數(shù)據(jù)切片至下一協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述裝置用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器 時(shí),所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至其中一個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根 據(jù)對(duì)應(yīng)的線程控制該協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送 已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述裝置用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器 時(shí),所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至該N個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì) 應(yīng)線程控制所述N個(gè)目標(biāo)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述裝置用于由一個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他N-1個(gè)目標(biāo)協(xié)處理器時(shí),所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí), 發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至其中一個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制該目標(biāo)協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,如果所述下一目標(biāo)協(xié)處理器為最后一個(gè)目標(biāo)協(xié)處理器,則所述傳輸控制單元通過對(duì)應(yīng)線程控制最后一個(gè)目標(biāo)協(xié)處理器接收并存儲(chǔ)接收到的數(shù)據(jù)分片,否則,所述傳輸控制單元通過對(duì)應(yīng)線程控制所述下一目標(biāo)協(xié)處理器在接收到上一目標(biāo)協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器,直至最后一個(gè)目標(biāo)協(xié)處理器。
根據(jù)本發(fā)明一優(yōu)選實(shí)施例,當(dāng)所述裝置用于由一個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他 N-1個(gè)目標(biāo)協(xié)處理器時(shí),所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí), 發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至所述N-1個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制所述N-1個(gè)目標(biāo)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
由以上技術(shù)方案可以看出,本發(fā)明通過生成多線程來控制各個(gè)協(xié)處理器將數(shù)據(jù)以切片的形式傳輸,各個(gè)線程能夠并行控制其對(duì)應(yīng)的協(xié)處理器進(jìn)行相應(yīng)的數(shù)據(jù)切片的接收或傳輸操作。本發(fā)明能夠充分利用各個(gè)協(xié)處理器與CPU之間的總線,以及各個(gè)協(xié)處理器之間的總線,顯著提高了 CPU將數(shù)據(jù)傳送至多個(gè)協(xié)處理器時(shí)和一個(gè)協(xié)處理器將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí)的數(shù)據(jù)傳輸效率。
圖1為本發(fā)明實(shí)施例一提供的數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器時(shí)的方法A示例
圖2為本發(fā)明實(shí)施例一提供的數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器時(shí)的方法B示例 3為本發(fā)明實(shí)施例一提供的數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器時(shí)的方 4為本發(fā)明實(shí)施例一提供的數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器時(shí)的方 5為本發(fā)明實(shí)施例二提供的CPU與協(xié)處理器間的數(shù)據(jù)傳輸裝置示意圖。
圖法C示例圖
圖法D示例圖
圖具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述。
現(xiàn)有的方法中,數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器,或者由協(xié)處理器傳輸至其余多個(gè)協(xié)處理器時(shí),每次只能由CPU與一個(gè)協(xié)處理器或者兩個(gè)協(xié)處 理器之間進(jìn)行數(shù)據(jù)傳輸,而其余協(xié)處理器的總線均處于空閑狀態(tài)。若能提供一種方法使得傳輸能同時(shí)在CPU與多個(gè)協(xié)處理器或者多個(gè)協(xié)處理器之間進(jìn)行,那么傳輸?shù)男蕦⒂酗@著提升。本發(fā)明正是通過CPU生成多線程來控制多個(gè)協(xié)處理器將數(shù)據(jù)以切片的形式進(jìn)行傳輸,來充分利用各處理器的總 線帶寬,從而提高數(shù)據(jù)傳輸效率的。
實(shí)施例一
本發(fā)明實(shí)施例一提供了一種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法,該方法包括數(shù) 據(jù)由CPU傳輸至多個(gè)協(xié)處理器的傳輸方法;數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器的傳 輸方法。
本發(fā)明所提供的方法能夠提高CPU將數(shù)據(jù)傳送至多個(gè)協(xié)處理器時(shí)以及協(xié)處理器 將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí)的數(shù)據(jù)傳輸效率,下面分別對(duì)這兩種情況進(jìn)行描述。
1、數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器的傳輸方法,該方法可以通過以下方法A和方 法B兩種方式來實(shí)現(xiàn)
方法A :通過CPU生成N個(gè)線程分別控制N個(gè)協(xié)處理器,依次將數(shù)據(jù)切片從CPU發(fā) 送至協(xié)處理器1,線程I控制協(xié)處理器I接收并保存CPU發(fā)送的數(shù)據(jù)切片同時(shí)將所保存的數(shù) 據(jù)切片依次發(fā)送至協(xié)處理器2,線程2控制協(xié)處理器2接收并保存協(xié)處理器I發(fā)送的數(shù)據(jù)切 片同時(shí)將所保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器3,以此類推將數(shù)據(jù)發(fā)送至所有的協(xié)處理 器,其中,N為協(xié)處理器的數(shù)量。
為了能夠更好地理解方法A所提供的數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器的傳輸方 式,下面結(jié)合圖1所示示例對(duì)方法A進(jìn)行描述。如圖1所示,CPU需要將一份數(shù)據(jù)傳輸至4 個(gè)協(xié)處理器。分別生成4個(gè)線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,為便于描述, 將該4個(gè)線程分別編號(hào)為線程1、線程2、線程3、線程4,分別控制協(xié)處理器1、協(xié)處理器2、 協(xié)處理器3、協(xié)處理器4。傳輸開始時(shí),CPU從CPU內(nèi)存中依次將該數(shù)據(jù)的每一份切片發(fā)送 至協(xié)處理器1,線程I控制協(xié)處理器I接收CPU所發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器I的內(nèi) 存中,同時(shí),線程I控制協(xié)處理器I將已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器2,線程2控 制協(xié)處理器2接收協(xié)處理器I發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器2的內(nèi)存中,同時(shí),線程2 控制協(xié)處理器2將已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器3,以此類推,線程3控制協(xié)處理 器3接收協(xié)處理器2發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器3的內(nèi)存中,同時(shí),線程3控制協(xié)處 理器3將已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器4,線程4控制協(xié)處理器4接收協(xié)處理器3 發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器4的內(nèi)存中。
該方法能夠充分利用每個(gè)協(xié)處理器之間的總線,在每次傳輸中,CPU將數(shù)據(jù)切片發(fā) 送至一個(gè)協(xié)處理器的同時(shí),其余協(xié)處理器之間也能進(jìn)行數(shù)據(jù)切片的傳輸。例如,如圖1所 不,在某一時(shí)刻的傳輸過程中,同時(shí)進(jìn)行的傳輸有CPU將第Slice_x份數(shù)據(jù)切片發(fā)送至協(xié) 處理器1,協(xié)處理器I將已保存的第Slice_X-l份數(shù)據(jù)切片發(fā)送至協(xié)處理器2,協(xié)處理器2 接收并保存協(xié)處理器I發(fā)送的第Slice_x-1份數(shù)據(jù)切片同時(shí)將已保存的第Slice_x-2份數(shù) 據(jù)切片發(fā)送至協(xié)處理器3,協(xié)處理器3接收并保存協(xié)處理器2發(fā)送的第Slice_X-2份數(shù)據(jù)切 片同時(shí)將已保存的第SI ice_x-3份數(shù)據(jù)切片發(fā)送至協(xié)處理器4,協(xié)處理器4接收并保存協(xié)處 理器3發(fā)送的第Slice_X-3份數(shù)據(jù)切片,其中,線程1-線程4分別控制對(duì)應(yīng)的協(xié)處理器進(jìn) 行相應(yīng)的數(shù)據(jù)切片的接收或發(fā)送工作,在傳輸過程中,這4個(gè)線程之間是并行的,能夠同時(shí) 控制其所對(duì)應(yīng)的協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,與現(xiàn)有技術(shù)相比,該方法在傳輸過程中充分利用 了各個(gè)協(xié)處理器之間的總線,有較高的數(shù)據(jù)傳輸效率。
上述為結(jié)合圖1描述的方法A所提供的數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器的傳輸方法。
方法B :通過CPU生成N個(gè)線程分別控制N個(gè)協(xié)處理器,依次將數(shù)據(jù)切片從CPU發(fā) 送至該N個(gè)協(xié)處理器,每個(gè)線程分別控制其對(duì)應(yīng)的協(xié)處理器依次接收并保存CPU發(fā)送的數(shù) 據(jù)切片,其中,N為協(xié)處理器的數(shù)量。
為了能夠更好地理解方法B所提供的數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器傳輸方式, 下面結(jié)合圖2所示示例對(duì)方法B進(jìn)行描述。如圖2所示,CPU需要將一份數(shù)據(jù)傳輸至4個(gè) 協(xié)處理器。分別生成4個(gè)線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,為便于描述,將 該4個(gè)線程分別編號(hào)為線程1、線程2、線程3、線程4,分別控制協(xié)處理器1、協(xié)處理器2、協(xié) 處理器3、協(xié)處理器4。傳輸開始時(shí),CPU從CPU內(nèi)存依次將該數(shù)據(jù)的每一份切片同時(shí)發(fā)送 至4個(gè)協(xié)處理器,線程1-線程4分別控制其對(duì)應(yīng)的協(xié)處理器接收CPU所發(fā)送的數(shù)據(jù)切片。
該方法能夠充分利用每個(gè)協(xié)處理器與CPU之間的總線,在每次傳輸中,CPU能同時(shí) 將一份數(shù)據(jù)切片發(fā)送至所有協(xié)處理器。例如,如圖2所示,在某一時(shí)刻的傳輸過程中,CPU同 時(shí)將第Slice_x份數(shù)據(jù)切片從CPU內(nèi)存發(fā)送至4個(gè)協(xié)處理器,線程1-線程4同時(shí)控制其對(duì) 應(yīng)的協(xié)處理器接收該第Slice_x份數(shù)據(jù)切片,這4個(gè)線程之間是并行的,能夠同時(shí)控制其所 對(duì)應(yīng)的協(xié)處理器接收CPU發(fā)送的數(shù)據(jù)切片,與現(xiàn)有技術(shù)相比,該方法在傳輸過程中充分利 用了各個(gè)協(xié)處理器與CPU之間的總線,有較高的數(shù)據(jù)傳輸效率。
上述為結(jié)合圖2描述的方法A所提供的數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器的傳輸方法。
上述方法A和方法B為數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器的傳輸方法,兩種方法都 將數(shù)據(jù)以切片的方式進(jìn)行傳輸,兩種方法中的數(shù)據(jù)切片均為預(yù)先設(shè)定大小的數(shù)據(jù)塊,即傳 輸過程中,通過線程控制每次CPU與協(xié)處理器或協(xié)處理器之間傳輸?shù)臄?shù)據(jù)量為一定大小的 數(shù)據(jù)塊,切片的大小可以根據(jù)實(shí)際需求進(jìn)行設(shè)定,但若切片過大,則傳輸延時(shí)過大,若切片 過小,則效率較低,本發(fā)明提供一種優(yōu)選實(shí)施方式對(duì)數(shù)據(jù)進(jìn)行切片將數(shù)據(jù)切片大小設(shè)定為 一個(gè) page,即 4KB。
在上述方法A和方法B中,CPU可以通過線程獲知各個(gè)協(xié)處理器的狀態(tài),并通過線 程控制協(xié)處理器完成相應(yīng)的操作??梢酝ㄟ^自定的數(shù)據(jù)結(jié)構(gòu)在CPU內(nèi)存中記錄各個(gè)協(xié)處理 器的狀態(tài)(如空閑,或接收數(shù)據(jù),或發(fā)送數(shù)據(jù)),以及數(shù)據(jù)切片的發(fā)送情況(已經(jīng)發(fā)送了哪些 數(shù)據(jù)切片,待發(fā)送哪一個(gè)數(shù)據(jù)切片),以便(PU對(duì)各個(gè)線程進(jìn)行控制和調(diào)度,例如當(dāng)兩個(gè)協(xié)處 理器均處于空閑狀態(tài)時(shí),CPU可通過線程控制該兩個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)切片的傳輸。這一 部分為現(xiàn)有技術(shù),在此不過多贅述。
對(duì)于上述方法A和方法B,由于協(xié)處理器與CPU的總線帶寬通常高于協(xié)處理器之間 的總線帶寬,因此,在實(shí)際應(yīng)用中方法B的傳輸效率要高于方法A,但方法B受限于CPU內(nèi)存 的帶寬,適用于CPU內(nèi)存帶寬較高的情況,如可用在多CPU系統(tǒng)中,若CPU內(nèi)存的帶寬不夠 高的情況,則適合選用方法A。
2、數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器的傳輸方法,該方法可以通過以下方 法C和方法D兩種方式來實(shí)現(xiàn)
方法C :通過CPU生成N個(gè)線程分別控制N個(gè)協(xié)處理器,線程I控制協(xié)處理器I依 次將數(shù)據(jù)切片發(fā)送至CPU,將CPU接收到的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器2,線程2控制協(xié) 處理器2接收并保存CPU發(fā)送的數(shù)據(jù)切片同時(shí)將所保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器3,線程3控制協(xié)處理器3接收并保存協(xié)處理器2發(fā)送的數(shù)據(jù)切片同時(shí)將所保存的數(shù)據(jù)切片依 次發(fā)送至協(xié)處理器4,以此類推將數(shù)據(jù)發(fā)送至所有的目標(biāo)協(xié)處理器,其中,N為協(xié)處理器的數(shù)量。
為了能夠更好地理解方法C所提供的數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器 的傳輸方式,下面結(jié)合圖3所示示例對(duì)方法C進(jìn)行描述。如圖3所示,協(xié)處理器I需要將一 份數(shù)據(jù)傳輸至其余3個(gè)協(xié)處理器。分別生成4個(gè)線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù) 據(jù)傳輸,為便于描述,將該4個(gè)線程分別編號(hào)為線程1、線程2、線程3、線程4,分別控制協(xié)處 理器1、協(xié)處理器2、協(xié)處理器3、協(xié)處理器4,傳輸開始時(shí),線程I控制協(xié)處理器I將該份數(shù) 據(jù)依次以切片的形式發(fā)送至CPU,CPU接收協(xié)處理器I發(fā)送的數(shù)據(jù)切片并保存,同時(shí),CPU將 已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器2,線程2控制協(xié)處理器2接收CPU發(fā)送的數(shù)據(jù)切片 并保存在協(xié)處理器2的內(nèi)存中,同時(shí),線程2控制協(xié)處理器2將已保存的數(shù)據(jù)切片依次發(fā)送 至協(xié)處理器3,線程3控制協(xié)處理器3接收協(xié)處理器2發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器3 的內(nèi)存中,同時(shí),線程3控制協(xié)處理器3將已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器4,線程4 控制協(xié)處理器4接收協(xié)處理器3發(fā)送來的數(shù)據(jù)切片并保存在協(xié)處理器4的內(nèi)存中。
該方法能夠充分利用每個(gè)協(xié)處理器之間的總線,在每次傳輸中,一個(gè)協(xié)處理器將 數(shù)據(jù)切片發(fā)送至CPU,另外一個(gè)協(xié)處理器從CPU接收數(shù)據(jù)切片的同時(shí),其余協(xié)處理器之間 也能進(jìn)行數(shù)據(jù)切片的傳輸。例如,如圖3所示,在某一時(shí)刻的傳輸過程中,同時(shí)進(jìn)行的傳輸 有協(xié)處理器I將第Slice_x份數(shù)據(jù)切片發(fā)送至CPU,CPU接收并保存協(xié)處理器I發(fā)送的第 Slice_x份數(shù)據(jù)切片,同時(shí)CPU將已保存的第Slice_x-1份數(shù)據(jù)切片發(fā)送至協(xié)處理器2,協(xié) 處理器2接收并保存CPU發(fā)送的第Slice_x-1份數(shù)據(jù)切片同時(shí)將已保存的第Slice_x-2份 數(shù)據(jù)切片發(fā)送至協(xié)處理器3,協(xié)處理器3接收并保存協(xié)處理器2發(fā)送的第Slice_X-2份數(shù)據(jù) 切片同時(shí)將已保存的第SI ice_x-3份數(shù)據(jù)切片發(fā)送至協(xié)處理器4,協(xié)處理器4接收并保存協(xié) 處理器3發(fā)送的第Slice_X-3份數(shù)據(jù)切片,其中,線程1-線程4分別控制各自對(duì)應(yīng)的協(xié)處 理器進(jìn)行接收以及發(fā)送數(shù)據(jù)切片的操作。在傳輸過程中,線程1-線程4之間是并行的,能 夠同時(shí)控制其所對(duì)應(yīng)的協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,與現(xiàn)有技術(shù)相比,該方法在傳輸過程中充 分利用了各個(gè)協(xié)處理器之間的總線,有較高的數(shù)據(jù)傳輸效率。
上述為結(jié)合圖3描述的方法C所提供的數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器 的傳輸方法。
方法D :通過CPU生成N個(gè)線程分別控制N個(gè)協(xié)處理器,線程I控制協(xié)處理器I依 次將數(shù)據(jù)切片發(fā)送至CPU,將CPU接收到的數(shù)據(jù)切片依次發(fā)送至其余協(xié)處理器,線程2-線程 N分別控制其對(duì)應(yīng)的協(xié)處理器接收CPU發(fā)送的數(shù)據(jù)切片,其中,N為協(xié)處理器的數(shù)量。
為了能夠更好地理解方法D所提供的數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器 的傳輸方式,下面結(jié)合圖4所示示例對(duì)方法D進(jìn)行描述。如圖4所示,協(xié)處理器I需要將一 份數(shù)據(jù)傳輸至其余3個(gè)協(xié)處理器。分別生成4個(gè)線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù) 據(jù)傳輸,為便于描述,將該4個(gè)線程分別編號(hào)為線程1、線程2、線程3、線程4,分別控制協(xié)處 理器1、協(xié)處理器2、協(xié)處理器3、協(xié)處理器4,傳輸開始時(shí),線程I控制協(xié)處理器I依次將數(shù) 據(jù)以切片的形式發(fā)送至CPU,CPU接收協(xié)處理器I發(fā)送的數(shù)據(jù)切片并保存,同時(shí),CPU將已保 存的數(shù)據(jù)切片依次發(fā)送至其余3個(gè)協(xié)處理器,線程2-線程4分別控制其對(duì)應(yīng)的協(xié)處理器接 收并保存CPU發(fā)送的數(shù)據(jù)切片。
該方法能夠充分利用每個(gè)協(xié)處理器與CPU之間的總線,在每次傳輸中,一個(gè)協(xié)處 理器將一份數(shù)據(jù)切片發(fā)送至CPU,同時(shí),CPU能將一份已接收到的數(shù)據(jù)切片發(fā)送至多個(gè)其余 協(xié)處理器。例如,在某一時(shí)刻的傳輸過程中,協(xié)處理器I將第Slice_x份數(shù)據(jù)切片發(fā)送至 CPU,同時(shí),CPU將之前收到的第Slice_X-l份數(shù)據(jù)切片發(fā)送至其余協(xié)處理器,線程2-線程4 分別控制其對(duì)應(yīng)的協(xié)處理器接收CPU發(fā)送的第Slice_X-l份數(shù)據(jù)切片。在傳輸過程中,線 程1-線程4之間是并行的,能夠同時(shí)控制其所對(duì)應(yīng)的協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,與現(xiàn)有技術(shù) 相比,該方法在傳輸過程中充分利用了各個(gè)協(xié)處理器與CPU之間的總線,有較高的數(shù)據(jù)傳 輸效率。
上述為結(jié)合圖4描述的方法D所提供的數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器 的傳輸方法。
上述方法C和方法D為數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器的傳輸方法,兩 種方法都將數(shù)據(jù)以切片的方式進(jìn)行傳輸,兩種方法中的數(shù)據(jù)切片均為預(yù)先設(shè)定大小的數(shù)據(jù) 塊,即傳輸過程中,線程控制每次協(xié)處理器與CPU或協(xié)處理器之間傳輸?shù)臄?shù)據(jù)量為一定大 小的數(shù)據(jù)塊,切片的大小可以根據(jù)實(shí)際需求進(jìn)行設(shè)定,但若切片過大,則傳輸延時(shí)過大,若 切片過小,則效率較低,本發(fā)明提供一種優(yōu)選實(shí)施方式對(duì)數(shù)據(jù)進(jìn)行切片將數(shù)據(jù)切片大小設(shè) 定為一個(gè)page,即4KB。
在上述方法C和方法D中,CPU可以通過線程獲知各個(gè)協(xié)處理器的狀態(tài),并通過線 程控制協(xié)處理器完成相應(yīng)的操作。可以通過自定的數(shù)據(jù)結(jié)構(gòu)在CPU內(nèi)存中記錄各個(gè)協(xié)處理 器的狀態(tài)(如空閑,或接收數(shù)據(jù),或發(fā)送數(shù)據(jù)),以及數(shù)據(jù)切片的發(fā)送情況(已經(jīng)發(fā)送了哪些 數(shù)據(jù)切片,待發(fā)送哪一個(gè)數(shù)據(jù)切片),以便(PU對(duì)各個(gè)線程進(jìn)行控制和調(diào)度,例如當(dāng)兩個(gè)協(xié)處 理器均處于空閑狀態(tài)時(shí),CPU可通過線程控制該兩個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)切片的傳輸。這一 部分為現(xiàn)有技術(shù),在此不過多贅述。
對(duì)于上述方法C和方法D,由于協(xié)處理器與CPU的總線帶寬通常高于協(xié)處理器之間 的總線帶寬,因此,在實(shí)際應(yīng)用中方法D的傳輸效率要高于方法C,但方法D受限于CPU內(nèi)存 的帶寬,適用于CPU內(nèi)存帶寬較高的情況,如可用在多CPU系統(tǒng)中,若CPU內(nèi)存的帶寬不夠 高的情況,則適合選用方法C。
上述為對(duì)本發(fā)明實(shí)施例一提供的CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法進(jìn)行的描述。 可以看出,本發(fā)明通過生成多線程來控制各個(gè)協(xié)處理器將數(shù)據(jù)以切片的形式傳輸,且各個(gè) 線程能夠并行控制其對(duì)應(yīng)的協(xié)處理器進(jìn)行相應(yīng)的數(shù)據(jù)切片的接收或傳輸操作,充分利用個(gè) 協(xié)處理器與CPU之間的總線,以及各個(gè)協(xié)處理器之間的總線,能夠顯著提高CPU將數(shù)據(jù)傳送 至多個(gè)協(xié)處理器時(shí)和一個(gè)協(xié)處理器將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí)的數(shù)據(jù)傳輸效率。本 發(fā)明可用于GPU,以及類似于GPU的多種協(xié)處理器如FPGA,ARM以及Intel的MIC (眾核處 理器)等協(xié)處理器與CPU之間的數(shù)據(jù)傳輸。
實(shí)施例二
圖5為本發(fā)明實(shí)施例二提供的CPU與協(xié)處理器間的數(shù)據(jù)傳輸裝置示意圖,如圖5 所示,該裝置包括線程控制單元10,傳輸控制單元20。
本發(fā)明所提供CPU與協(xié)處理器間的數(shù)據(jù)傳輸裝置設(shè)置于CPU,具體包括線程控制 單元10和傳輸控制單元20。
其中,線程控制單元10,用于生成N個(gè)線程;
傳輸控制單元20,用于根據(jù)所述N個(gè)線程并行對(duì)N個(gè)協(xié)處理器的數(shù)據(jù)傳輸進(jìn)行控 制,所述N為大于或等于2的整數(shù)。
傳輸控制單元20具體可以用于控制協(xié)處理器接收CPU以切片形式發(fā)送的數(shù)據(jù);或 者,用于控制協(xié)處理器接收并存儲(chǔ)CPU或上一協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同 時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一協(xié)處理器。
傳輸控制單元20還可以用于控制協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至CPU。
本發(fā)明所提供的裝置能夠提高CPU將數(shù)據(jù)傳送至多個(gè)協(xié)處理器時(shí)以及協(xié)處理器 將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí)的數(shù)據(jù)傳輸效率,下面分別對(duì)這兩種情況進(jìn)行描述。
1、數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器時(shí),傳輸單元10具體可以執(zhí)行下述操作A或操 作B來將數(shù)據(jù)由CPU傳輸至多個(gè)協(xié)處理器
操作A :根據(jù)線程控制單元10生成的N個(gè)線程分別控制N個(gè)協(xié)處理器,依次將數(shù) 據(jù)切片從CPU發(fā)送至協(xié)處理器I (CPU自身的數(shù)據(jù)傳輸可由CPU中已有的數(shù)據(jù)傳輸單元完 成,后續(xù)描述中也是如此,該數(shù)據(jù)傳輸單元未在圖中示出),傳輸控制單元20根據(jù)線程I控 制協(xié)處理器I接收并保存CPU發(fā)送的數(shù)據(jù)切片同時(shí)將所保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理 器2,傳輸控制單元20根據(jù)線程2控制協(xié)處理器2接收并保存協(xié)處理器I發(fā)送的數(shù)據(jù)切片 同時(shí)將所保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器3,以此類推將數(shù)據(jù)發(fā)送至所有的協(xié)處理器, 其中,N為協(xié)處理器的數(shù)量。
例如,CPU需要將一份數(shù)據(jù)傳輸至4個(gè)協(xié)處理器。線程控制單元10分別生成4個(gè) 線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,為便于描述,將該4個(gè)線程分別編號(hào)為線 程1、線程2、線程3、線程4,分別控制協(xié)處理器1、協(xié)處理器2、協(xié)處理器3、協(xié)處理器4。傳 輸開始時(shí),CPU從CPU內(nèi)存中依次將該數(shù)據(jù)的每一份切片發(fā)送至協(xié)處理器1,傳輸控制單元 20根據(jù)線程I控制協(xié)處理器I接收CPU所發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器I的內(nèi)存中, 同時(shí),將協(xié)處理器I已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器2,傳輸控制單元20根據(jù)線程2 控制協(xié)處理器2接收協(xié)處理器I發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器2的內(nèi)存中,同時(shí),將協(xié) 處理器2已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器3,以此類推,傳輸控制單元20根據(jù)線程3 控制協(xié)處理器3接收協(xié)處理器2發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器3的內(nèi)存中,同時(shí),將協(xié) 處理器3已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器4,傳輸控制單元20根據(jù)線程4控制協(xié)處 理器4接收協(xié)處理器3發(fā)送的數(shù)據(jù)切片并保存在協(xié)處理器4的內(nèi)存中。
該操作能夠充分利用每個(gè)協(xié)處理器之間的總線,在每次傳輸中,CPU將數(shù)據(jù)切片發(fā) 送至一個(gè)協(xié)處理器的同時(shí),其余協(xié)處理器之間也能進(jìn)行數(shù)據(jù)切片的傳輸。
操作B :根據(jù)線程控制單元10生成的N個(gè)線程分別控制N個(gè)協(xié)處理器,依次將數(shù) 據(jù)切片從CPU發(fā)送至該N個(gè)協(xié)處理器,傳輸控制單元20根據(jù)對(duì)應(yīng)線程分別控制該N個(gè)協(xié)處 理器依次接收并保存CPU發(fā)送的數(shù)據(jù)切片,其中,N為協(xié)處理器的數(shù)量。
例如,CPU需要將一份數(shù)據(jù)傳輸至4個(gè)協(xié)處理器。線程控制單元10分別生成4個(gè) 線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,為便于描述,將該4個(gè)線程分別編號(hào)為線 程1、線程2、線程3、線程4,分別控制協(xié)處理器1、協(xié)處理器2、協(xié)處理器3、協(xié)處理器4。傳 輸開始時(shí),CPU從CPU內(nèi)存依次將該數(shù)據(jù)的每一份切片同時(shí)發(fā)送至4個(gè)協(xié)處理器,傳輸控制 單元20根據(jù)線程1-線程4分別控制其對(duì)應(yīng)的協(xié)處理器接收CPU所發(fā)送的數(shù)據(jù)切片。
該操作能夠充分利用每個(gè)協(xié)處理器與CPU之間的總線,在每次傳輸中,CPU能同時(shí)將一份數(shù)據(jù)切片發(fā)送至所有協(xié)處理器。
上述操作A和操作B中的數(shù)據(jù)切片均為預(yù)先設(shè)定大小的數(shù)據(jù)塊,即傳輸過程中,通 過線程控制每次CPU與協(xié)處理器或協(xié)處理器之間傳輸?shù)臄?shù)據(jù)量為一定大小的數(shù)據(jù)塊,切片 的大小可以根據(jù)實(shí)際需求進(jìn)行設(shè)定,但若切片過大,則傳輸延時(shí)過大,若切片過小,則效率 較低,本發(fā)明提供一種優(yōu)選實(shí)施方式對(duì)數(shù)據(jù)進(jìn)行切片將數(shù)據(jù)切片大小設(shè)定為一個(gè)page, 即 4KB。
在上述操作A和操作B中,CPU可以通過線程獲知各個(gè)協(xié)處理器的狀態(tài),并通過線 程控制協(xié)處理器完成相應(yīng)的操作??梢酝ㄟ^自定的數(shù)據(jù)結(jié)構(gòu)在CPU內(nèi)存中記錄各個(gè)協(xié)處理 器的狀態(tài)(如空閑,或接收數(shù)據(jù),或發(fā)送數(shù)據(jù)),以及數(shù)據(jù)切片的發(fā)送情況(已經(jīng)發(fā)送了哪些 數(shù)據(jù)切片,待發(fā)送哪一個(gè)數(shù)據(jù)切片),以便(PU對(duì)各個(gè)線程進(jìn)行控制和調(diào)度,例如當(dāng)兩個(gè)協(xié)處 理器均處于空閑狀態(tài)時(shí),CPU可通過線程控制該兩個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)切片的傳輸。這一 部分為現(xiàn)有技術(shù),在此不過多贅述。
由于協(xié)處理器與CPU的總線帶寬通常高于協(xié)處理器之間的總線帶寬,因此,在實(shí) 際應(yīng)用中操作B的傳輸效率要高于操作A,但操作B受限于CPU內(nèi)存的帶寬,適用于CPU內(nèi) 存帶寬較高的情況,如可用在多CPU系統(tǒng)中,若CPU內(nèi)存的帶寬不夠高的情況,則適合選用 操作A。
2、數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器時(shí),傳輸單元10具體可以執(zhí)行下述 操作C或操作D來將數(shù)據(jù)由一個(gè)協(xié)處理器傳輸至多個(gè)協(xié)處理器
操作C :根據(jù)線程控制單元10生成的N個(gè)線程分別控制N個(gè)協(xié)處理器,傳輸控制 單元20根據(jù)線程I控制協(xié)處理器I依次將數(shù)據(jù)切片發(fā)送至CPU,將CPU接收到的數(shù)據(jù)切片 依次發(fā)送至協(xié)處理器2,傳輸控制單元20根據(jù)線程2控制協(xié)處理器2接收并保存CPU發(fā)送 的數(shù)據(jù)切片同時(shí)將所保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器3,傳輸控制單元20根據(jù)線程3 控制協(xié)處理器3接收并保存協(xié)處理器2發(fā)送的數(shù)據(jù)切片同時(shí)將所保存的數(shù)據(jù)切片依次發(fā)送 至協(xié)處理器4,以此類推將數(shù)據(jù)發(fā)送至所有的目標(biāo)協(xié)處理器,其中,N為協(xié)處理器的數(shù)量。
例如,協(xié)處理器I需要將一份數(shù)據(jù)傳輸至其余3個(gè)協(xié)處理器。線程控制單元10分 別生成4個(gè)線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,為便于描述,將該4個(gè)線程分 別編號(hào)為線程1、線程2、線程3、線程4,分別控制協(xié)處理器1、協(xié)處理器2、協(xié)處理器3、協(xié)處 理器4,傳輸開始時(shí),傳輸控制單元20根據(jù)線程I控制協(xié)處理器I將該份數(shù)據(jù)依次以切片 的形式發(fā)送至CPU,CPU接收協(xié)處理器I發(fā)送的數(shù)據(jù)切片并保存,同時(shí),CPU將已保存的數(shù)據(jù) 切片依次發(fā)送至協(xié)處理器2,傳輸控制單元20根據(jù)線程2控制協(xié)處理器2接收CPU發(fā)送的 數(shù)據(jù)切片并保存在協(xié)處理器2的內(nèi)存中,同時(shí),將協(xié)處理器2已保存的數(shù)據(jù)切片依次發(fā)送至 協(xié)處理器3,傳輸控制單元20根據(jù)線程3控制協(xié)處理器3接收協(xié)處理器2發(fā)送的數(shù)據(jù)切片 并保存在協(xié)處理器3的內(nèi)存中,同時(shí),將協(xié)處理器3已保存的數(shù)據(jù)切片依次發(fā)送至協(xié)處理器 4,傳輸控制單元20根據(jù)線程4控制協(xié)處理器4接收協(xié)處理器3發(fā)送來的數(shù)據(jù)切片并保存 在協(xié)處理器4的內(nèi)存中。
該操作能夠充分利用每個(gè)協(xié)處理器之間的總線,在每次傳輸中,一個(gè)協(xié)處理器將 數(shù)據(jù)切片發(fā)送至CPU,另外一個(gè)協(xié)處理器從CPU接收數(shù)據(jù)切片的同時(shí),其余協(xié)處理器之間也 能進(jìn)行數(shù)據(jù)切片的傳輸。
操作D :根據(jù)線程控制單元10生成的N個(gè)線程分別控制N個(gè)協(xié)處理器,傳輸控制單元20根據(jù)線程I控制協(xié)處理器I依次將數(shù)據(jù)切片發(fā)送至CPU,將CPU接收到的數(shù)據(jù)切片 依次發(fā)送至其余協(xié)處理器,傳輸控制單元20根據(jù)線程2-線程N(yùn)分別控制其對(duì)應(yīng)的協(xié)處理 器接收CPU發(fā)送的數(shù)據(jù)切片,其中,N為協(xié)處理器的數(shù)量。
例如,協(xié)處理器I需要將一份數(shù)據(jù)傳輸至其余3個(gè)協(xié)處理器。線程控制單元10分 別生成4個(gè)線程來由CPU控制這4個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)傳輸,為便于描述,將該4個(gè)線程分 別編號(hào)為線程1、線程2、線程3、線程4,分別控制協(xié)處理器1、協(xié)處理器2、協(xié)處理器3、協(xié)處 理器4,傳輸開始時(shí),傳輸控制單元20根據(jù)線程I控制協(xié)處理器I依次將數(shù)據(jù)以切片的形式 發(fā)送至CPU,CPU接收協(xié)處理器I發(fā)送的數(shù)據(jù)切片并保存,同時(shí),CPU將已保存的數(shù)據(jù)切片依 次發(fā)送至其余3個(gè)協(xié)處理器,傳輸控制單元20根據(jù)線程2-線程4分別控制其對(duì)應(yīng)的協(xié)處 理器接收并保存CPU發(fā)送的數(shù)據(jù)切片。
該操作能夠充分利用每個(gè)協(xié)處理器與CPU之間的總線,在每次傳輸中,一個(gè)協(xié)處 理器將一份數(shù)據(jù)切片發(fā)送至CPU,同時(shí),CPU能將一份已接收到的數(shù)據(jù)切片發(fā)送至其余多個(gè) 協(xié)處理器。
上述操作C和操作D中的數(shù)據(jù)切片均為預(yù)先設(shè)定大小的數(shù)據(jù)塊,即傳輸過程中,線 程控制每次協(xié)處理器與CPU或協(xié)處理器之間傳輸?shù)臄?shù)據(jù)量為一定大小的數(shù)據(jù)塊,切片的大 小可以根據(jù)實(shí)際需求進(jìn)行設(shè)定,但若切片過大,則傳輸延時(shí)過大,若切片過小,則效率較低, 本發(fā)明提供一種優(yōu)選實(shí)施方式對(duì)數(shù)據(jù)進(jìn)行切片將數(shù)據(jù)切片大小設(shè)定為一個(gè)page,即4KB。
在上述操作C和操作D中,CPU可以通過線程獲知各個(gè)協(xié)處理器的狀態(tài),并通過線 程控制協(xié)處理器完成相應(yīng)的操作??梢酝ㄟ^自定的數(shù)據(jù)結(jié)構(gòu)在CPU內(nèi)存中記錄各個(gè)協(xié)處理 器的狀態(tài)(如空閑,或接收數(shù)據(jù),或發(fā)送數(shù)據(jù)),以及數(shù)據(jù)切片的發(fā)送情況(已經(jīng)發(fā)送了哪些 數(shù)據(jù)切片,待發(fā)送哪一個(gè)數(shù)據(jù)切片),以便(PU對(duì)各個(gè)線程進(jìn)行控制和調(diào)度,例如當(dāng)兩個(gè)協(xié)處 理器均處于空閑狀態(tài)時(shí),CPU可通過線程控制該兩個(gè)協(xié)處理器進(jìn)行數(shù)據(jù)切片的傳輸。這一 部分為現(xiàn)有技術(shù),在此不過多贅述。
在實(shí)際應(yīng)用中操作D的傳輸效率要高于操作C,但操作D受限于CPU內(nèi)存的帶寬, 適用于CPU內(nèi)存帶寬較高的情況,如可用在多CPU系統(tǒng)中,若CPU內(nèi)存的帶寬不夠高的情 況,則適合選用操作C。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.ー種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法,其特征在于,該方法包括 根據(jù)CPU生成的N個(gè)線程并行對(duì)N個(gè)協(xié)處理器的數(shù)據(jù)傳輸進(jìn)行控制,所述N為大于或等于2的整數(shù); 所述控制包括協(xié)處理器接收CPU以數(shù)據(jù)切片形式發(fā)送的數(shù)據(jù);或者,協(xié)處理器接收并存儲(chǔ)CPU或上一協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一協(xié)處理器。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述方法用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器時(shí),所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至其中一個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)的線程控制該目標(biāo)協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上ー時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,當(dāng)所述方法用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器吋,所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至所述N個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)線程控制所述N個(gè)目標(biāo)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
4.根據(jù)權(quán)利要求1所述的方法,其特征在干,當(dāng)所述方法用于由ー個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他N-1個(gè)目標(biāo)協(xié)處理器吋,所述CPU通過對(duì)應(yīng)線程控制源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片的形式發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同吋,發(fā)送已存儲(chǔ)的上ー時(shí)刻的數(shù)據(jù)切片至其中一個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)線程控制該目標(biāo)協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
5.根據(jù)權(quán)利要求2或4所述的方法,其特征在于,如果所述下一目標(biāo)協(xié)處理器為最后ー個(gè)目標(biāo)協(xié)處理器,則通過對(duì)應(yīng)線程控制最后一個(gè)目標(biāo)協(xié)處理器接收并存儲(chǔ)接收到的數(shù)據(jù)分片,否則,通過對(duì)應(yīng)線程控制所述下一目標(biāo)協(xié)處理器在接收到上一目標(biāo)協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上ー時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器,直至最后ー個(gè)目標(biāo)協(xié)處理器。
6.根據(jù)權(quán)利要求1所述的方法,其特征在干,當(dāng)所述方法用于由ー個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他N-1個(gè)目標(biāo)協(xié)處理器吋,所述CPU通過對(duì)應(yīng)線程通知源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片的形式從源協(xié)處理器發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上ー時(shí)刻的數(shù)據(jù)切片至所述N-1個(gè)目標(biāo)協(xié)處理器,并通過對(duì)應(yīng)線程控制所述N-1個(gè)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
7.—種CPU與協(xié)處理器間的數(shù)據(jù)傳輸裝置,該裝置設(shè)置于CPU,其特征在于,該裝置包括 線程控制単元,用于生成N個(gè)線程; 傳輸控制単元,用于根據(jù)所述N個(gè)線程并行對(duì)N個(gè)協(xié)處理器的數(shù)據(jù)傳輸進(jìn)行控制,所述N為大于或等于2的整數(shù); 所述控制包括協(xié)處理器接收CPU以數(shù)據(jù)切片形式發(fā)送的數(shù)據(jù);或者,協(xié)處理器接收并存儲(chǔ)CPU或上一協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一協(xié)處理器。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,當(dāng)所述裝置用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器吋,所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至其中ー個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì)應(yīng)的線程控制該協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
9.根據(jù)權(quán)利要求7所述的裝置,其特征在于,當(dāng)所述裝置用于由CPU傳輸數(shù)據(jù)至N個(gè)目標(biāo)協(xié)處理器時(shí),所述CPU將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至該N個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制所述N個(gè)目標(biāo)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
10.根據(jù)權(quán)利要求7所述的裝置,其特征在于,當(dāng)所述裝置用于由一個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他N-1個(gè)目標(biāo)協(xié)處理器時(shí),所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至其中一個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制該目標(biāo)協(xié)處理器接收并存儲(chǔ)CPU發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器。
11.根據(jù)權(quán)利要求8或10所述的裝置,其特征在于,如果所述下一目標(biāo)協(xié)處理器為最后一個(gè)目標(biāo)協(xié)處理器,則所述傳輸控制單元通過對(duì)應(yīng)線程控制最后一個(gè)目標(biāo)協(xié)處理器接收并存儲(chǔ)接收到的數(shù)據(jù)分片,否則,所述傳輸控制單元通過對(duì)應(yīng)線程控制所述下一目標(biāo)協(xié)處理器在接收到上一目標(biāo)協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一目標(biāo)協(xié)處理器,直至最后一個(gè)目標(biāo)協(xié)處理器。
12.根據(jù)權(quán)利要求7所述的裝置,其特征在于,當(dāng)所述裝置用于由一個(gè)源協(xié)處理器傳輸數(shù)據(jù)至其他N-1個(gè)目標(biāo)協(xié)處理器時(shí),所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制源協(xié)處理器將數(shù)據(jù)以數(shù)據(jù)切片形式發(fā)送至CPU,所述CPU接收并存儲(chǔ)源協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至所述N-1個(gè)目標(biāo)協(xié)處理器,所述傳輸控制單元根據(jù)對(duì)應(yīng)線程控制所述N-1個(gè)目標(biāo)協(xié)處理器同時(shí)接收并存儲(chǔ)CPU發(fā)送來的數(shù)據(jù)切片。
全文摘要
本發(fā)明提供了一種CPU與協(xié)處理器間的數(shù)據(jù)傳輸方法和裝置,其中方法包括根據(jù)CPU生成的N個(gè)線程并行對(duì)N個(gè)協(xié)處理器的數(shù)據(jù)傳輸進(jìn)行控制,所述N為大于或等于2的整數(shù);所述控制包括協(xié)處理器接收CPU以切片形式發(fā)送的數(shù)據(jù);或者,協(xié)處理器接收并存儲(chǔ)CPU或上一協(xié)處理器發(fā)送來的當(dāng)前時(shí)刻的數(shù)據(jù)切片的同時(shí),發(fā)送已存儲(chǔ)的上一時(shí)刻的數(shù)據(jù)切片至下一協(xié)處理器。本發(fā)明能夠充分利用各個(gè)協(xié)處理器與CPU之間的總線,以及各個(gè)協(xié)處理器之間的總線,能夠提高CPU將數(shù)據(jù)傳送至多個(gè)協(xié)處理器時(shí)以及協(xié)處理器將數(shù)據(jù)傳輸至其余多個(gè)協(xié)處理器時(shí)的數(shù)據(jù)傳輸效率。
文檔編號(hào)G06F15/167GK103049421SQ20121053229
公開日2013年4月17日 申請(qǐng)日期2012年12月11日 優(yōu)先權(quán)日2012年12月11日
發(fā)明者歐陽劍, 王勇 申請(qǐng)人:百度在線網(wǎng)絡(luò)技術(shù)(北京)有限公司