欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

用于使用并行處理器架構(gòu)執(zhí)行掃描操作的方法及設(shè)備的制作方法

文檔序號(hào):6467677閱讀:131來(lái)源:國(guó)知局
專利名稱:用于使用并行處理器架構(gòu)執(zhí)行掃描操作的方法及設(shè)備的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及掃描操作,且更特定而言,涉及使用并行處理架構(gòu)執(zhí)行掃描操作。 背景技水
并行處理器架構(gòu)通常用來(lái)執(zhí)行大量不同的計(jì)算算法。通常使用此架構(gòu)執(zhí)行的算法 的實(shí)例是掃描操作(例如,"所有前綴和"操作等)。在表格1中定義了一個(gè)此掃描 操作。
mi和運(yùn)算符"④"("I"為運(yùn)算符"④"的單 位元素)的情況下,返回表格l的陣列。例如,如果運(yùn)算符" "是加法運(yùn)算符時(shí), 對(duì)陣列[3 1 7 04 1 6 3]執(zhí)行所述掃描操作將返回
等。盡管在以上 實(shí)例中闡述加法運(yùn)算符,但此運(yùn)算符可以是兩個(gè)運(yùn)算對(duì)象的任何結(jié)合運(yùn)算符。
此外,所述掃描操作可以是互斥掃描操作(如在表格1中所顯示)或相容掃描操 作。所述互斥掃描是指結(jié)果的每一元素j是輸入陣列中一直到(但不包含)元素j的 所有元素的和。另一方面,在相容掃描中,求包含元素j的所有元素的和。
到目前為止,繼續(xù)存在對(duì)使用并行處理器架構(gòu)更有效地執(zhí)行計(jì)算算法(例如掃描 操作)的需要。

發(fā)明內(nèi)容
提供一種用于使用并行處理架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作的系統(tǒng)、方法和 計(jì)算機(jī)程序產(chǎn)品。在操作中,接收掃描操作指令。另外,響應(yīng)于所述掃描操作指令, 使用具有多個(gè)處理元件的并行處理器架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作。


圖1顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于使用并行處理架構(gòu)對(duì)一序列的一位值執(zhí) 行掃描操作的方法。
圖2顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于對(duì)一序列的一位值執(zhí)行掃描操作的系統(tǒng)。 圖3顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于對(duì)一序列的一位值執(zhí)行掃描操作的系統(tǒng) 的結(jié)果。圖4顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于使用并行處理架構(gòu)在硬件中執(zhí)行掃描操 作的系統(tǒng)。
圖5顯示根據(jù)本發(fā)明的又一實(shí)施例用于使用并行處理架構(gòu)在硬件中執(zhí)行掃描操
作的系統(tǒng)。
圖6顯示根據(jù)本發(fā)明的另一實(shí)施例用于使用并行處理架構(gòu)在硬件中執(zhí)行掃描操
作的系統(tǒng)。
圖7圖解說(shuō)明其中可實(shí)施各種先前實(shí)施例的各種架構(gòu)及/或功能性的實(shí)例性系統(tǒng)。
具體實(shí)施例方式
圖1顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于使用并行處理架構(gòu)對(duì)一位值執(zhí)行掃描操 作的方法100。如所顯示,接收掃描操作指令。參見(jiàn)操作102。在本說(shuō)明的背景中, 掃描操作指令是指對(duì)應(yīng)于掃描操作的任何指令或命令。
另外,響應(yīng)于所述掃描操作指令,使用具有多個(gè)處理元件的并行處理器架構(gòu)對(duì)一 序列的一位值執(zhí)行掃描操作。參見(jiàn)操作104。在本說(shuō)明的背景下,處理元件是指并行 處理器架構(gòu)的任何組件。另外,所述序列的一位值可包含任何序列的一位值。通過(guò)此 設(shè)計(jì),在某些實(shí)施例中,可更有效地對(duì)一位輸入執(zhí)行計(jì)算算法,例如掃描操作。
此外,在本說(shuō)明的背景下,所述掃描操作可以指涉及陣列的當(dāng)前元素和至少一個(gè) 先前元素的任何操作。例如,在各種實(shí)施例中,掃描操作可包含前綴和掃描操作、互 斥掃描操作、相容掃描操作、及/或任何其他掃描操作(例如,涉及更多或更少的元 素及/或其他運(yùn)算符等)。
而且,在本說(shuō)明的背景下,所述并行處理器架構(gòu)可包含任何包含并行操作的兩個(gè) 或兩個(gè)以上處理元件的架構(gòu)。在一個(gè)實(shí)施例中,此并行處理器架構(gòu)可采取圖形處理器 (例如,圖形處理單元(GPU)等)、或具有圖形處理能力的任何其他集成電路(例 如,呈芯片組、芯片上系統(tǒng)(SOC)、與CPU、離散處理器等整合在一起的核心的形 式)的形式。在又一實(shí)施例中,前述并行處理架構(gòu)可包含向量處理器。
現(xiàn)在將陳述關(guān)于各種可選架構(gòu)和特征的更多說(shuō)明性信息,按照用戶的期望,可用 或可不用所述各種可選架構(gòu)和特征來(lái)實(shí)施前述框架。應(yīng)極其注意,出于說(shuō)明目的闡述 以下信息,而不應(yīng)將其視為以任何方式加以限制??梢曅枰谂懦虿慌懦龅钠?它特征的情況下并入任一以下特征。
圖2顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于對(duì)一序列的一位值執(zhí)行掃描操作的系統(tǒng) 200。作為一種選擇,可實(shí)施本系統(tǒng)來(lái)執(zhí)行圖1的方法。然而,本系統(tǒng)當(dāng)然可在任一 所需環(huán)境中實(shí)施。還應(yīng)注意,前述定義可應(yīng)用于本說(shuō)明期間。
如所顯示,提供并行處理架構(gòu)202。此并行處理架構(gòu)包含多個(gè)并行處理器204。 盡管未顯示,但是此并行處理器可能夠?qū)︻A(yù)定數(shù)目的線程進(jìn)行操作。為此目的,所述 并行處理器中的每一者可并行地操作,同時(shí)對(duì)應(yīng)的線程也可并行地操作。在一個(gè)實(shí)施例中,所述并行處理架構(gòu)可包含一個(gè)或一個(gè)以上單指令多數(shù)據(jù) (SIMD)處理元件。在此系統(tǒng)中,可將處理器正執(zhí)行的線程聚集為群組以便在任何
時(shí)刻單個(gè)群組內(nèi)的所有線程均精確地執(zhí)行相同指令但在可能不同的數(shù)據(jù)上。在一個(gè)實(shí) 施例中,以此方式操作的此線程群組可以稱為"巻繞"。此外,在此群組中線程的預(yù) 定數(shù)目可稱為對(duì)應(yīng)處理器的"巻繞大小"。
在另一實(shí)施例中,前述并行處理架構(gòu)可包含圖形處理器或具有圖形處理能力的任
何其他集成電路[例如,呈芯片組、芯片上系統(tǒng)(SOC)、與CPU、離散處理器等整 合在一起的核心的形式]。在又一實(shí)施例中,前述并行處理架構(gòu)可包含具有一個(gè)或一 個(gè)以上向量處理元件的處理器,例如,單元(Cell)處理器,是指由Sony⑧、Toshiba 和IBM⑧聯(lián)合開(kāi)發(fā)的單元寬帶引擎(Cell Broadband Engine)微處理器架構(gòu)。
繼續(xù)參照?qǐng)D2,所述并行處理架構(gòu)可包含本地共享存儲(chǔ)器206。并行處理架構(gòu)的 并行處理器中的每一者可對(duì)其自身的本地共享存儲(chǔ)器進(jìn)行讀取及/或?qū)懭氩僮?。此?享存儲(chǔ)器可由與每一處理器相關(guān)聯(lián)的物理上分開(kāi)的存儲(chǔ)器組成或其可由在處理器之 間共享的一個(gè)或一個(gè)以上存儲(chǔ)器的分開(kāi)分配的區(qū)域組成。此外,在所圖解說(shuō)明的實(shí)施 例中,共享存儲(chǔ)器可包含在并行處理架構(gòu)的處理器包含在其上的集成電路上。
而且,顯示包含全局存儲(chǔ)器208。使用中,并行處理架構(gòu)的所有處理器可存取此 全局存儲(chǔ)器。如所顯示,此全局存儲(chǔ)器可包含在集成電路上,所述集成電路與上述并 行處理架構(gòu)的處理器包含在其上的集成電路是分開(kāi)的。盡管顯示并行處理架構(gòu)以特定 的方式包含在圖2的各種集成電路上,但是應(yīng)注意如所需要,系統(tǒng)組件可以或可以不 包含在同一集成電路上。
而且,如所需,圖2的本系統(tǒng)可進(jìn)一步包含驅(qū)動(dòng)器210用來(lái)控制所述并行處理架 構(gòu)。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器可包含程序庫(kù)用于促進(jìn)此控制。例如,此程序庫(kù)可包含 可例示本文所闡述的功能性的程序庫(kù)調(diào)用。
此外,在另一實(shí)施例中,驅(qū)動(dòng)器可能夠利用并行處理架構(gòu)(例如,圖形處理器等) 提供通用計(jì)算能力。可結(jié)合由NVIDIA公司提供的CUDATM架構(gòu)來(lái)提供此驅(qū)動(dòng)器的實(shí) 例。使用中,所述驅(qū)動(dòng)器可用來(lái)控制并行處理架構(gòu)以根據(jù)圖1的方法進(jìn)行操作。
圖3顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于使用并行處理架構(gòu)對(duì)一位輸入執(zhí)行掃描 操作的系統(tǒng)300的結(jié)果。作為一種選擇,可以圖l-2中的細(xì)節(jié)為背景來(lái)實(shí)施本系統(tǒng)。 然而,本系統(tǒng)當(dāng)然可在任一所需環(huán)境中實(shí)施。還應(yīng)注意,前述定義可應(yīng)用于本說(shuō)明期 間。
如所顯示,提供包含為并行處理器架構(gòu)的一部分的多個(gè)處理元件302。所述處理 元件(例如,線程)各自處理1位值304。在一個(gè)實(shí)施例中,所述l位值可從對(duì)邏輯 表述的評(píng)估中導(dǎo)出。在此情況中,l位值可以稱為謂詞位。
在操作中,可由并行處理器架構(gòu)來(lái)接收掃描操作指令。在此情況下,掃描可包含 前綴和掃描操作指令。響應(yīng)于所述掃描操作指令,可使用具有多個(gè)處理元件的并行處 理器架構(gòu)執(zhí)行前綴和掃描操作指令??缭絅個(gè)處理元件的群組(即,巻繞)對(duì)謂詞位輸入執(zhí)行前綴和掃描操作(在 圖式的實(shí)例中為互斥掃描)的結(jié)果導(dǎo)致對(duì)數(shù)(AO位的整數(shù)。圖3顯示N-16處理元 件(例如,線程)的巻繞的掃描結(jié)果306。當(dāng)然,在各種實(shí)施例中可利用任何數(shù)目的 處理元件。應(yīng)注意,傳送給處理元件"i"的值是具有其給定謂詞位為1的較小索引 的處理元件(例如,線程)數(shù)。在各種實(shí)施例中,此操作可用作許多計(jì)算核(例如串 流壓縮和基數(shù)分類)的基礎(chǔ)。
在某些情況下,完全一般的掃描操作可不適合直接硬件實(shí)施方案。例如,掃描操 作可涉及處理任意長(zhǎng)度的序列和許多可能的數(shù)的類型(例如,整數(shù)型、浮點(diǎn)型、短型 等)。相反,固定長(zhǎng)度的小序列的二迸制掃描原語(yǔ)可在硬件中實(shí)施且可作為機(jī)器指令 提供。多處理器中的處理元件的數(shù)目是已知的架構(gòu)常數(shù),且數(shù)的類型可保持恒定為l 位值。
圖4顯示根據(jù)本發(fā)明的一個(gè)實(shí)施例用于使用并行處理架構(gòu)在硬件中執(zhí)行掃描操 作的系統(tǒng)400。作為一種選擇,可以圖1-3的細(xì)節(jié)為背景實(shí)施本系統(tǒng)。然而,本系統(tǒng) 當(dāng)然可在任一所需環(huán)境中實(shí)施。而且,前述定義可應(yīng)用于本說(shuō)明期間。
如所顯示,提供包含為并行處理器架構(gòu)的一部分的多個(gè)處理元件402。另外,包 含多個(gè)加法器404。此加法器可包含能夠相加數(shù)的任何電路或裝置。
在操作中,處理元件(例如,線程)可各自持有l(wèi)位值。因此,當(dāng)多個(gè)處理元件 接收到掃描操作指令時(shí),可使用具有多個(gè)處理元件的并行處理器架構(gòu)來(lái)執(zhí)行所述掃描 操作指令。在此情況中,加法器404的聚集形成加法網(wǎng)絡(luò)(例如,電路),其接受來(lái) 自處理元件402的每一者的1位輸入值并將掃描操作的結(jié)果傳送到處理元件406的每 一者。
盡管以16個(gè)處理元件來(lái)圖解說(shuō)明圖4,但應(yīng)注意可利用任何數(shù)目的處理元件。 另外,將圖4中的系統(tǒng)圖解說(shuō)明為執(zhí)行互斥掃描的系統(tǒng)。在另一實(shí)施例中,系統(tǒng)可經(jīng) 配置以執(zhí)行相容掃描。
此外,圖4的系統(tǒng)經(jīng)配置具有等于處理元件的數(shù)目(N)的深度。在各種其他實(shí)
施例中,所述系統(tǒng)可經(jīng)配置以最小化所述深度??衫萌魏螖?shù)目的技術(shù)實(shí)現(xiàn)此最小化。
圖5顯示根據(jù)本發(fā)明的另一實(shí)施例用于使用并行處理架構(gòu)在硬件中執(zhí)行掃描操 作的系統(tǒng)500。作為一種選擇,可以圖l-4的細(xì)節(jié)為背景來(lái)實(shí)施本系統(tǒng)。然而,本系 統(tǒng)當(dāng)然可在任一所需環(huán)境中實(shí)施。還應(yīng)注意,前述定義可應(yīng)用于本說(shuō)明期間。
如所顯示,提供包含為并行處理器架構(gòu)的一部分的多個(gè)處理元件502。另外,包 含加法器504樹(shù)。在操作中,每一處理元件502貢獻(xiàn)1位輸入。
作為一選擇,此1位輸入可從指定的謂詞寄存器獲得??赏ㄟ^(guò)所述加法器樹(shù)來(lái)饋 送這些輸入,從而將前綴和值506作為輸出傳送到對(duì)應(yīng)的處理元件。在一個(gè)實(shí)施例中, 每一輸出可存放在每一處理元件的指定數(shù)據(jù)寄存器中。
如所顯示,由加法器504樹(shù)形成的加法系統(tǒng)具有深度值對(duì)數(shù)(AO ,其中W是處 理元件的數(shù)目。然而,在某些情況下,可需要減少系統(tǒng)中加法器的數(shù)目。因此,可利用具有減少數(shù)目的加法器和增加的算法長(zhǎng)度的系統(tǒng)。
圖6顯示根據(jù)本發(fā)明的又一實(shí)施例用于使用并行處理架構(gòu)在硬件中執(zhí)行掃描操
作的系統(tǒng)600。作為一選擇,可以圖1-5的細(xì)節(jié)為背景來(lái)實(shí)施本系統(tǒng)。然而,本系統(tǒng) 當(dāng)然可在任一所需環(huán)境中實(shí)施。還應(yīng)注意,前述定義可應(yīng)用于本說(shuō)明期間。
如所顯示,提供包含為并行處理器架構(gòu)的一部分的多個(gè)處理元件602。另外,包 含多個(gè)加法器604。操作中,每一處理元件貢獻(xiàn)l位輸入。
應(yīng)注意系統(tǒng)的長(zhǎng)度直接與系統(tǒng)的延時(shí)相關(guān)。因此,如果系統(tǒng)的總面積比總延時(shí)更 重要,那么可需要具有少數(shù)目的加法器的系統(tǒng)(例如,圖6的系統(tǒng))。另一方面,如 果延時(shí)比總面積更重要,那么可需要具有較多數(shù)目的加法器和較低長(zhǎng)度的系統(tǒng)(例如, 圖5的系統(tǒng))。
利用任一實(shí)施方案,掃描l位輸入可比掃描一般數(shù)容易得多。例如,如果對(duì)全部 32位整數(shù)求和,那么系統(tǒng)中執(zhí)行求和的加法器中的每一者將必須是32位加法器。然 而,在l位輸入的情況下,每一加法器的寬度為最多對(duì)數(shù)(AO ,其中N是系統(tǒng)中處 理元件的數(shù)目。在本說(shuō)明的背景中,加法器的寬度是指所述加法器能夠處理的輸入數(shù) 可包含的位的最大數(shù)目。
在圖6的特定情況和背景中,每一加法器將遇見(jiàn)每輸入最多4個(gè)位。在一個(gè)實(shí)施 例中,可在加法器樹(shù)的不同層級(jí)處利用具有不同寬度的加法器。例如,在樹(shù)的第一層 級(jí)606 (即,就在輸入下面)中的加法器可包含僅l位輸入。另外,第二層級(jí)608可 包含僅2位輸入。
在給出如以圖2-6為背景所述的數(shù)據(jù)路徑的情況下,跨越SIMD多處理器的處理 元件的二進(jìn)制掃描可作為機(jī)器指令暴露于程序。在一個(gè)實(shí)施例中,可利用謂詞掃描指 令("PSCAN"),其從每一處理元件提取寄存器("Rpred")中的1位謂詞作為 輸入且返回另一寄存器("Rsum")中的適合前綴和到每一處理元件。在以下表格2 中顯示此指令。
表格2 PSCAN Rsum, Rpred
此指令的操作直接對(duì)應(yīng)于圖2-6的系統(tǒng)。處理元件中的每一者向系統(tǒng)的并行前綴 加法網(wǎng)絡(luò)的輸入貢獻(xiàn)謂詞位,且每一者接收單個(gè)輸出值。
大多數(shù)多處理器硬件并入用于在計(jì)算期間有選擇地停用處理元件的機(jī)制。通常進(jìn) 行此操作來(lái)允許名義上的SIMD處理器陣列執(zhí)行程序的發(fā)散路徑。在此情形下,當(dāng)活 動(dòng)的處理元件執(zhí)行"PSCAN"指令時(shí)可假設(shè)停用的處理元件向并行前綴計(jì)算貢獻(xiàn)"O"。 然而,在另一實(shí)施例中,可提供所述指令的變體,其中不活動(dòng)處理元件貢獻(xiàn)"1"。
此外,盡管以加法操作為背景描述了圖2-6,但其他操作可同樣適用。例如,可 對(duì)掃描操作和加法器進(jìn)行概括以使用除加法之外的任何結(jié)合操作。因此,可利用并行 處理器架構(gòu)的多個(gè)功能單元來(lái)執(zhí)行掃描操作。
在此情況下,功能單元可包含加法器、布爾(Boolean)邏輯運(yùn)算符、算術(shù)和邏輯運(yùn)算符以及各種其他功能單元。此外,如所顯示,并行處理器架構(gòu)可包含多個(gè)功能 單元層級(jí)。在此情況下,層級(jí)的數(shù)目可以少于處理元件的數(shù)目。此外,層級(jí)的數(shù)目可 通常少于處理元件的數(shù)目的對(duì)數(shù)。
在機(jī)器指令的背景下,可類似于加法指令來(lái)利用例如"與"、"或"及"異或" 的指令。另外,對(duì)于l位輸入,可減少例如最小、最大和相乘等的操作到所述3個(gè)前
述1位操作。如以上所述,此指令的數(shù)據(jù)路徑看起來(lái)與針對(duì)圖3-6顯示的數(shù)據(jù)路徑相
同,其中構(gòu)成的加法器區(qū)塊由適當(dāng)?shù)?與"/ "或"/ "異或"門(mén)代替。另外,在一個(gè)
實(shí)例性實(shí)施例中,以圖3-6為背景所述的系統(tǒng)可以管道配置來(lái)實(shí)施。在此情況下,可 利用鎖存器來(lái)實(shí)施此管道配置。
應(yīng)注意,可利用各種計(jì)算機(jī)編程語(yǔ)言(例如,C、 C+十等)來(lái)實(shí)施對(duì)應(yīng)于掃描操 作指令的機(jī)器指令。在一個(gè)實(shí)施例中,利用例如統(tǒng)一計(jì)算裝置架構(gòu)(Compute Unified Device Architecture) (CUDA ) C作為簡(jiǎn)單內(nèi)在的語(yǔ)言來(lái)執(zhí)行所述指令。例如,表 格3顯示CUDATMC中的指令,其中"i"表示線程索引。
表格3
int sum_i = PSCAN(A[i] < pivot);
暴露此功能性的另一方法是對(duì)處理元件的"活動(dòng)"位而非由程序明確地計(jì)算的謂 詞暗中地執(zhí)行二進(jìn)制前綴和。在以下表格4中顯示此構(gòu)造的實(shí)例。
表格4 if( A[i] < pivot)
sum_i = PSCAN_active();
在此情況下,基礎(chǔ)處理器機(jī)制可存在以供編譯器利用來(lái)存取多處理器的"活動(dòng)" 狀態(tài)。
當(dāng)然,此僅是暴露較高級(jí)語(yǔ)言形式的原語(yǔ)的一個(gè)可能方法且具體來(lái)說(shuō),其與 CUDATMC相關(guān)??紤]到暴露原語(yǔ)機(jī)器支持的其他方法。應(yīng)注意具有大致不同設(shè)計(jì)的 語(yǔ)言(例如,數(shù)據(jù)并行C等)將利用不同語(yǔ)言層級(jí)的實(shí)施例。
在一個(gè)實(shí)施例中,可在協(xié)作線程陣列(Cooperative Thread Array, CTA)中一起 執(zhí)行一個(gè)或一個(gè)以上處理元件或線程群組(例如,巻繞)。因此,并行處理器架構(gòu)可 提供處理元件之間的協(xié)調(diào)。在此情況下,協(xié)調(diào)可包含關(guān)于所寫(xiě)入的結(jié)果的目的地的協(xié) 調(diào)。在一個(gè)實(shí)施例中,多個(gè)處理元件可能夠經(jīng)由芯片上共享存儲(chǔ)器彼此通信且經(jīng)由勢(shì) 壘同步化。
當(dāng)跨越由多個(gè)線程組成的CTA執(zhí)行掃描時(shí),可執(zhí)行兩個(gè)掃描層級(jí)。第一掃描可 發(fā)生在每一巻繞內(nèi)。作為一選擇,第一掃描可用如上所述的"PSCAN"原語(yǔ)來(lái)執(zhí)行。 第二掃描可從每一巻繞接收單個(gè)值,且對(duì)所述部分和執(zhí)行掃描。應(yīng)注意在巻繞寬度為 32的情況下,其全部為5位整數(shù)。在一個(gè)實(shí)施例中,可利用1位掃描原語(yǔ)來(lái)通過(guò)對(duì)每一二進(jìn)制數(shù)字獨(dú)立地執(zhí)行所述 掃描且然后對(duì)結(jié)果求和來(lái)計(jì)算多位數(shù)的前綴和。換句話說(shuō),并行處理器架構(gòu)可通過(guò)對(duì) 多位值中的個(gè)別位個(gè)別地執(zhí)行掃描且在個(gè)別掃描的結(jié)果進(jìn)行位移位之后對(duì)所述結(jié)果 求和來(lái)對(duì)多位值執(zhí)行所述掃描操作。例如,假定巻繞中的每一線程被賦予5位值"X—i"。
可如表格5中所示計(jì)算所述值的前綴和。
int sum一i = PSCAN(xj & 1 ); sum—i += PSCAN(xJ & 2 )《1; sumj += PSCAN(x—i & 4 ) 2; sum一i += PSCAN(xj & 8 )《3; sum一i += PSCAN(x一i & 16) 4; 此實(shí)施方案的結(jié)果將與具有全部掃描核的實(shí)施方案相同。然而,假設(shè)"PSCAN" 利用單個(gè)指令來(lái)執(zhí)行,那么當(dāng)輸入值中的位數(shù)目較小時(shí)此可比全部核更有效。關(guān)于掃 描核的更多信息可在序列號(hào)為11/862,938標(biāo)題為"用于執(zhí)行掃描操作的系統(tǒng)、方法和 計(jì)算機(jī)程序產(chǎn)品(SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING A SCAN OPERATION)"的專利申請(qǐng)案中找到,所述申請(qǐng)案的全文 以引用的方式并入本文中。
應(yīng)注意可在任何所需環(huán)境(包含并行處理架構(gòu))中利用以上功能性且可在需要構(gòu) 造有效并行核的各種情形中實(shí)施。例如,假定維持對(duì)應(yīng)于數(shù)據(jù)的項(xiàng)目對(duì)列且一巻繞線 程將每線程最多1項(xiàng)目寫(xiě)入到所述隊(duì)列中。如果每個(gè)線程總是寫(xiě)入1個(gè)項(xiàng)目,那么每 一線程將始終提前知曉應(yīng)將隊(duì)列指針的多少偏移作為值寫(xiě)入。
然而,如果每一個(gè)別線程選擇是否寫(xiě)入一值,那么巻繞中的所有線程必須計(jì)算寫(xiě) 入其值的適當(dāng)偏移??墒褂脤?duì)確定是否每一線程希望寫(xiě)入的謂詞的掃描來(lái)實(shí)施計(jì)算此 偏移??墒褂萌绫砀?中所圖解說(shuō)明的二進(jìn)制掃描原語(yǔ)來(lái)簡(jiǎn)單且有效地表述此計(jì)算。
表格6
一device一 void maybe一write(int *queue, int x, bool should—write)
unsigned int i = PSCAN(should—write); if( should_write) queue[i] = x;
可通過(guò)跨越巻繞暗中地掃描處理器"活動(dòng)"位產(chǎn)生更壓縮的變體。例如,在以下 表格7中顯示一個(gè)此變體。
表格7
—device— void maybe—write(int *queue, int x, bool should—write) if( should_write ) queue[PSCAN—active()] = x;作為另一實(shí)例,線程的CTA可用每線程一個(gè)值來(lái)控制一序列的數(shù)。在此實(shí)例中, 可選擇"主元"值且可重新混洗一陣列以使得所述陣列中小于主元的所有值在所有其 他數(shù)之前。例如,此是在例如快速分類(Quicksort)算法中的步驟。
為實(shí)施此操作,可定義接受謂詞"p"的"秩()"原語(yǔ)。謂詞為真的線程將接 收具有謂詞為真的較低線程索引的線程數(shù)目的計(jì)數(shù)。謂詞為假的線程將接收具有謂詞 為假的較低線程索引的線程數(shù)目加上真謂詞的總數(shù)目的計(jì)數(shù)。表格8顯示CUDATM中
代表函數(shù)的實(shí)例,其中函數(shù)"eta—prefix—sum()"以在07年9月27日提出申請(qǐng)的標(biāo)題 為"用于執(zhí)行掃描操作的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品(SYSTEM, METHOD AND COMPUTER PROGRAM PRODUCT FOR PERFORMING A SCAN OPERATION)" 的專利申請(qǐng)案號(hào)11/862,938中闡述的方式構(gòu)建于內(nèi)部巻繞掃描之上
表格8
一device一 unsigned int rank(bool p)
一shared— bool smem[ctasize]; smem[threadldx.x] = p; 一syncthreads();
bool last—p = smem[ctasize-l]; 〃 Everybody gets last value —syncthreads();
eta—prefix—sum(smem);〃 Uses PSCAN. See also P003535.
〃 (1) total number of True threads
unsigned int ntrae = last—p + smem[ctasize-l];
〃 (2) Compute this thread's rank within ordering
unsigned int r = (p) smem[threadldx.x]
:ntrue + threadldx.x - smem[threadldx.x];
return r;
在給出此原語(yǔ)的情況下,可寫(xiě)入分割函數(shù)。例如,表格9顯示一個(gè)此分割函數(shù)的 實(shí)例。
表格9
—global— void partition(unsigned int *v, const unsigned int pivot) {
unsigned int v—i = v[threadldx.x];
—syncthreads(); 〃 make sure everyone is ready to write
unsigned int j = rank(v一i<pivot);<formula>formula see original document page 12</formula>
類似于分割,分類數(shù)字序列是可用于許多應(yīng)用中的另一操作。其也可容易地按照 以上定義的"秩()"原語(yǔ)來(lái)實(shí)施。每一遍基數(shù)分類均僅是以基于數(shù)據(jù)值的一位的值而 非基于比較謂詞的"分割()"的方式進(jìn)行重新混洗。在本說(shuō)明的背景下,基數(shù)分類是 通過(guò)處理個(gè)別數(shù)字分類整數(shù)的分類算法。在表格10中顯示利用基數(shù)分類的實(shí)施方案 的一個(gè)實(shí)例。
表格10
—device— void eta—radix—sort(unsigned int *v)
for(unsigned int shift=0; shift〈32; ++shiflO
unsigned int v一i = v[threadldx.x]; _syncthreads();
unsigned int lsb = (v—i >> shift) & Oxl; unsigned int r = rank(!lsb); v[r] = v—i;
—syncthreads(); 〃 make sure everyone wrote
盡管上文已描述各種實(shí)施例,但應(yīng)了解,所述實(shí)施例僅以實(shí)例的方式而非限制的 方式呈現(xiàn)。例如,在各種其他實(shí)施例中,可在前述圖式的背景和細(xì)節(jié)中利用并實(shí)施任 何數(shù)目的掃描算法。
圖7圖解說(shuō)明其中可實(shí)施各種先前實(shí)施例的各種構(gòu)架及/或功能性的實(shí)例性系統(tǒng) 700。如所顯示,提供包含至少一個(gè)主處理器701的系統(tǒng),其中主處理器701連接到 通信總線702。系統(tǒng)還包含主存儲(chǔ)器704??刂七壿?軟件)及數(shù)據(jù)存儲(chǔ)在主存儲(chǔ)器 中,所述主存儲(chǔ)器可采取隨機(jī)存取存儲(chǔ)器(RAM)的形式。
所述系統(tǒng)還包含圖形處理器706和顯示器708,即計(jì)算機(jī)監(jiān)視器。在一個(gè)實(shí)施例 中,圖形處理器可包含多個(gè)著色器模塊、光柵化模塊等。每一前述模塊甚至可布置在 單個(gè)半導(dǎo)體平臺(tái)上以形成圖形處理單元(GPU)。
在本說(shuō)明中,單個(gè)半導(dǎo)體平臺(tái)可指單獨(dú)整體式基于半導(dǎo)體的集成電路或芯片。應(yīng) 注意,術(shù)語(yǔ)單個(gè)半導(dǎo)體平臺(tái)還可指具有增強(qiáng)連接性的多芯片模塊,其模擬芯片上操作 且對(duì)利用常規(guī)中央處理單元(CPU)和總線實(shí)施方案做出顯著改進(jìn)。當(dāng)然,還可按照 用戶的需要,單獨(dú)地或者以半導(dǎo)體平臺(tái)的各種組合形式布置各種模塊。
所述系統(tǒng)可還包含輔助存儲(chǔ)裝置710。輔助存儲(chǔ)裝置包含(例如)硬盤(pán)驅(qū)動(dòng)及/ 或可裝卸存儲(chǔ)裝置驅(qū)動(dòng)(其代表軟盤(pán)驅(qū)動(dòng)、磁帶驅(qū)動(dòng)、光盤(pán)驅(qū)動(dòng)等)??裳b卸存儲(chǔ)裝置驅(qū)動(dòng)以眾所周知的方式從可裝卸存儲(chǔ)單元讀取及/或向可裝卸存儲(chǔ)單元寫(xiě)入。
計(jì)算機(jī)程序或計(jì)算機(jī)控制邏輯算法可存儲(chǔ)在主存儲(chǔ)器及/或輔助存儲(chǔ)裝置中。在 執(zhí)行時(shí),此計(jì)算機(jī)程序使系統(tǒng)能夠執(zhí)行各種功能。存儲(chǔ)器、存儲(chǔ)裝置及/或任何其它 存儲(chǔ)裝置均為計(jì)算機(jī)可讀媒體的可能實(shí)例。
在一個(gè)實(shí)施例中,各種先前圖示的架構(gòu)及/或功能性可以主處理器、圖形處理器、 能夠?qū)崿F(xiàn)主處理器和圖形處理器二者的能力的至少一部分的集成電路(未顯示)、芯 片組(即設(shè)計(jì)用于作為執(zhí)行相關(guān)功能的單元等來(lái)工作及出售的集成電路群組)及/或 任何其他用于所述事項(xiàng)的集成電路為背景來(lái)實(shí)施。此外,在一個(gè)可能實(shí)施例中,各種
先前圖式的元件指派功能性可在驅(qū)動(dòng)器712的控制下實(shí)施于前述集成電路中的任一者中。
而且,各種先前圖示的架構(gòu)及/或功能性可以通用計(jì)算機(jī)系統(tǒng)、電路板系統(tǒng)、專 用于娛樂(lè)目的的游戲控制臺(tái)系統(tǒng)、專用系統(tǒng)、及/或任何其他所需系統(tǒng)為背景來(lái)實(shí)施。 例如,所述系統(tǒng)可采取桌上型計(jì)算機(jī)、膝上型計(jì)算機(jī)、及/或任何其他類型的邏輯的 形式。而且,所述系統(tǒng)可采取各種其他裝置的形式,其包含但不限于個(gè)人數(shù)字助理
(PDA)裝置、移動(dòng)電話裝置、電視等。
此外,盡管未顯示,但所述系統(tǒng)可出于通信目的而耦合到網(wǎng)絡(luò)(例如,電信網(wǎng)絡(luò)、 局域網(wǎng)絡(luò)(LAN)、無(wú)線網(wǎng)絡(luò)、例如因特網(wǎng)等的廣域網(wǎng)絡(luò)(WAN)、點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)、 電纜兩絡(luò)等)。
盡管上文己描述各種實(shí)施例,但應(yīng)了解,所述實(shí)施例僅以實(shí)例的方式而非限制的 方式呈現(xiàn)。因此,優(yōu)選的實(shí)施例的廣度和范圍不應(yīng)受限于上文所述實(shí)例性實(shí)施例的任 一者,而應(yīng)僅根據(jù)所附權(quán)利要求書(shū)及其等效內(nèi)容來(lái)界定。
權(quán)利要求
1、一種方法,其包括接收掃描操作指令;及響應(yīng)于所述掃描操作指令,使用具有多個(gè)處理元件的并行處理器架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作。
2、 如權(quán)利要求l所述的方法,其中所述掃描操作包含前綴和掃描操作。
3、 如權(quán)利要求l所述的方法,其中所述掃描操作包含相容掃描操作。
4、 如權(quán)利要求1所述的方法,其中所述掃描操作包含互斥掃描操作。
5、 如權(quán)利要求1所述的方法,其中所述并行處理器架構(gòu)提供所述處理元件之間 的協(xié)調(diào)。
6、 如權(quán)利要求5所述的方法,其中所述協(xié)調(diào)包含關(guān)于所寫(xiě)入的結(jié)果的目的地的 協(xié)調(diào)。
7、 如權(quán)利要求l所述的方法,其中所述處理元件各自并行執(zhí)行多個(gè)線程。
8、 如權(quán)利要求1所述的方法,其中利用所述并行處理器架構(gòu)的多個(gè)功能單元執(zhí) 行所述掃描操作。
9、 如權(quán)利要求8所述的方法,其中所述功能單元包含加法器。
10、 如權(quán)利要求8所述的方法,其中所述功能單元包含布爾邏輯運(yùn)算符。
11、 如權(quán)利要求8所述的方法,其中所述功能單元包含算術(shù)和邏輯運(yùn)算符。
12、 如權(quán)利要求8所述的方法,其中所述并行處理器架構(gòu)包含多個(gè)層級(jí)的功能單元。
13、 如權(quán)利要求12所述的方法,其中所述層級(jí)的數(shù)目少于所述處理元件的數(shù)目。
14、 如權(quán)利要求12所述的方法,其中所述層級(jí)的數(shù)目少于所述處理元件的數(shù)目 的對(duì)數(shù)。
15、 如權(quán)利要求1所述的方法,其中所述并行處理器架構(gòu)通過(guò)個(gè)別地執(zhí)行對(duì)多位 值的個(gè)別位的掃描且在所述個(gè)別掃描的結(jié)果進(jìn)行位移位之后對(duì)所述結(jié)果求和來(lái)執(zhí)行 對(duì)多位值的所述掃描操作。
16、 如權(quán)利要求1所述的方法,其中所述并行處理器架構(gòu)包含一個(gè)或一個(gè)以上單 指令多數(shù)據(jù)處理器。
17、 如權(quán)利要求l所述的方法,其中所述并行處理器架構(gòu)包含圖形處理器。
18、 一種包含在計(jì)算機(jī)可讀媒體上的計(jì)算機(jī)程序產(chǎn)品,所述計(jì)算機(jī)程序產(chǎn)品包括: 用于響應(yīng)于掃描操作指令使用具有多個(gè)處理元件的并行處理器架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作的計(jì)算機(jī)代碼。
19、 一種設(shè)備,其包括 并行處理器架構(gòu),其包含多個(gè)處理元件;及指令,其用于使用所述并行處理器架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作。
20、如權(quán)利要求19所述的設(shè)備,其中所述并行處理器架構(gòu)經(jīng)由總線保持與存儲(chǔ) 器和顯示器的通信。
全文摘要
本發(fā)明提供一種用于使用并行處理架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品。在操作中,接收掃描操作指令。另外,響應(yīng)于所述掃描操作指令,使用具有多個(gè)處理元件的并行處理器架構(gòu)對(duì)一序列的一位值執(zhí)行掃描操作。
文檔編號(hào)G06F9/30GK101436121SQ200810172720
公開(kāi)日2009年5月20日 申請(qǐng)日期2008年11月11日 優(yōu)先權(quán)日2007年11月15日
發(fā)明者戴維·帕特里克·呂布克, 薩姆拉·M·萊內(nèi), 蒂莫·O·艾拉, 邁克爾·J·加蘭 申請(qǐng)人:輝達(dá)公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
汨罗市| 阜南县| 陆川县| 射阳县| 蒲江县| 商丘市| 斗六市| 德江县| 额尔古纳市| 荆州市| 竹山县| 辽宁省| 龙州县| 泰顺县| 江西省| 万宁市| 东光县| 德格县| 太湖县| 湘西| 栾川县| 襄汾县| 即墨市| 馆陶县| 青州市| 嘉祥县| 华池县| 铁力市| 神农架林区| 永兴县| 陇南市| 绥宁县| 郑州市| 阿尔山市| 射阳县| 连云港市| 岑巩县| 景洪市| 东乡县| 南江县| 泸定县|