一種基于mic的隨機數(shù)發(fā)生器跳躍式并行化方法
【專利摘要】本發(fā)明公開一種基于MIC的隨機數(shù)發(fā)生器跳躍式并行化方法,根據(jù)系統(tǒng)分配的線程數(shù)將隨機數(shù)發(fā)生器的隨機數(shù)序列劃分成與所述分配的線程數(shù)數(shù)量相同的子序列;每個線程從各子序列的起點開始生成隨機數(shù);各個線程生成的隨機數(shù)序列按原始序列的順序重新組合。相對于CPU單線程,本方法在MIC平臺下的加速比具有明顯優(yōu)勢。
【專利說明】
一種基于MIC的隨機數(shù)發(fā)生器跳躍式并行化方法
技術(shù)領(lǐng)域
[0001] 本發(fā)明涉及常規(guī)類型隨機數(shù)發(fā)生器的一種跳躍式并行化方法,尤指針對Intel MIC架構(gòu)的硬件進行隨機數(shù)序列輸出的方法。
【背景技術(shù)】
[0002] 隨機數(shù)發(fā)生器是用來產(chǎn)生隨機數(shù)的裝置,一般分為真隨機數(shù)發(fā)生器和偽隨機數(shù)發(fā) 生器。目前科學(xué)研究和工程模擬對隨機數(shù)發(fā)生器的性能及速率要求日益增長,將并行計算 技術(shù)應(yīng)用于隨機數(shù)發(fā)生器可快速提高產(chǎn)生效率。在實際的科學(xué)研究和工程實踐活動中所使 用的主要是偽隨機數(shù)產(chǎn)生器。偽隨機數(shù)產(chǎn)生器通常使用軟件方式實現(xiàn),相對于真隨機數(shù)產(chǎn) 生器具有方法簡單、成本低和應(yīng)用方便等優(yōu)點,但是產(chǎn)生速率受到計算機性能的限制。 [000 3]并行化是提高計算機系統(tǒng)計算速度和處理能力的一種有效手段,Intel MIC(Many Integrated Core)架構(gòu)專為并行計算而設(shè)計,可以分配多達上百個線程,而且功耗低,適用 于需要大規(guī)模計算的應(yīng)用。MIC計算平臺的這些特點可以在很大程度上提高偽隨機數(shù)產(chǎn)生 器的計算速度。
【發(fā)明內(nèi)容】
[0004] 發(fā)明要解決的問題
[0005] 本發(fā)明的一個目的在于克服現(xiàn)有技術(shù)中的不足,提供一種基于MIC的隨機數(shù)發(fā)生 器跳躍式并行化方法。
[0006] 用于解決問題的方案
[0007] -種基于MIC的隨機數(shù)發(fā)生器跳躍式并行化方法,包括以下步驟:
[0008] 步驟A、根據(jù)系統(tǒng)分配的線程數(shù)將隨機數(shù)發(fā)生器的隨機數(shù)序列劃分成與所述分配 的線程數(shù)數(shù)量相同的子序列;
[0009] 步驟B、每個線程從各子序列的起點開始生成隨機數(shù);
[0010]步驟C、各個線程生成的隨機數(shù)序列按原始序列的順序重新組合。
[0011]優(yōu)選地,基于MIC的隨機數(shù)發(fā)生器跳躍式并行化方法,包括以下步驟:
[0012] 步驟A、根據(jù)系統(tǒng)分配的線程數(shù)將隨機數(shù)發(fā)生器的隨機數(shù)序列劃分成與所述分配 的線程數(shù)數(shù)量相同的子序列;
[0013] 步驟B、每個線程從各子序列的起點開始生成隨機數(shù),
[0014] 其中,第一子序列的起點為所述隨機數(shù)發(fā)生器的種子元素,
[0015] 隨后子序列的起點為所述隨機數(shù)發(fā)生器根據(jù)所述種子元素依次遞推生成的元素;
[0016] 步驟C、各個線程生成的隨機數(shù)序列按原始序列的順序重新組合,當(dāng)MIC完成計算 時,每個線程將各自生成的隨機數(shù)填充到預(yù)先分配好的內(nèi)存中以供使用,序列的填充順序 與原始序列保持一致。
[0017] 發(fā)明的效果
[0018] 本發(fā)明結(jié)合MIC的眾核特點,同時開啟數(shù)百的線程,每個線程負責(zé)生成一段子序 列。同時借助MIC的native執(zhí)行模式,在MIC上完成所有隨機數(shù)的生成任務(wù)。由于每個線程產(chǎn) 生的隨機數(shù)序列來自串行算法產(chǎn)生的隨機數(shù)序列中間隔為N的元素,各線程之間的計算完 全不沖突。相對于CHJ單線程,本方法在MIC平臺下的加速比具有明顯優(yōu)勢。
【附圖說明】
[0019] 圖1為隨機數(shù)序列劃分示意圖;
[0020] 圖2為GFSR(521,32)并行化程序執(zhí)行的流程圖;
[0021] 圖3a和圖3b為基于CPU和MIC的加速比趨勢圖。
【具體實施方式】
[0022]以下將結(jié)合實施例詳細說明本發(fā)明的各種示例性實施例、特征和方面。為了更好 的說明本發(fā)明,在下文的【具體實施方式】中給出了眾多的具體細節(jié)。本領(lǐng)域技術(shù)人員應(yīng)當(dāng)理 解,沒有這些具體細節(jié),本發(fā)明同樣可以實施。在另外一些實例中,對于大家熟知的方法、手 段、材料未作詳細描述,以便于凸顯本發(fā)明的主旨。
[0023] 本發(fā)明所提出的跳躍式隨機數(shù)發(fā)生器的并行化方法,是按照如下方式解決所述技 術(shù)問題的:首先,根據(jù)系統(tǒng)分配的線程數(shù)將發(fā)生器的隨機數(shù)序列劃分成多個子序列,子序列 的數(shù)量與線程數(shù)相等,劃分方法如圖1所示(假設(shè)線程數(shù)量為3)。
[0024] 在圖1中,0號元素為隨機數(shù)發(fā)生器的種子。隨機數(shù)發(fā)生器獲取種子元素后,依次遞 推生成1至8號元素及其之后的元素。序列0、序列1和序列2分別以0號元素、1號元素和2號元 素為起點跳躍式生成之后的元素,跳躍間隔為2,例如由0號元素跳躍式生成3號元素。
[0025] 序列劃分完成后,每個線程從各子序列的起點開始生成隨機數(shù)。由于每個線程都 可看做一個獨立的隨機數(shù)發(fā)生器,因此均需要種子。如圖1中,序列〇、序列1和序列2的種子 分別為〇號元素、1號元素和2號元素。
[0026] 最后,將各個線程生成的隨機數(shù)序列按原始序列的順序重新組合。當(dāng)MIC卡完成計 算時,每個線程將各自生成的隨機數(shù)填充到預(yù)先分配好的內(nèi)存中以供使用,序列的填充順 序與原始序列保持一致。
[0027] 本發(fā)明結(jié)合MIC的眾核特點,同時開啟數(shù)百的線程,每個線程負責(zé)生成一段子序 列。同時借助MIC的native執(zhí)行模式,在MIC上完成所有隨機數(shù)的生成任務(wù)。由于每個線程產(chǎn) 生的隨機數(shù)序列來自串行算法產(chǎn)生的隨機數(shù)序列中間隔為N的元素,各線程之間的計算完 全不沖關(guān)。
[0028]為使本發(fā)明的目的、技術(shù)方案以及優(yōu)點更加清晰,下面結(jié)合GFSR(521,32)隨機數(shù) 產(chǎn)生器對本發(fā)明做進一步的說明。
[0029] GFSR(521,32)的遞推式為:
[0030] Wi = Wi-521AWi-(521-32) (1)
[0031] 利用跳躍式方法對GFSR(521,32)并行化時,由于每個線程產(chǎn)生的隨機數(shù)序列來自 串行算法產(chǎn)生的隨機數(shù)序列1中間隔為N的元素,其中N是線程數(shù)且為2的冪次。
[0032] 首先由串行算法產(chǎn)生每個線程的521個初始值,第k個線程的初始值為:
[0033] ffk,ffN+k ?ff2N+k? *** ?ff520N+k
[0034] 其中 k = 〇,l,.._,N-l。
[0035] 根據(jù)定理,若1=¥1-[)八評^-(1),>由上述定理可推出第k(k = 0,1,···,Ν_1)個線程產(chǎn)生隨機數(shù)的遞推式為:
[0036] ffi = ffi-521NAWi-(521-32)N (2)
[0037] 其中i = 521N+k,522N+k,
[0038] 每個線程由其初始值通過公式(2)即可求出最終的隨機數(shù)序列。且當(dāng)種子相同時, 并行算法產(chǎn)生的隨機數(shù)序列與串行算法產(chǎn)生的隨機數(shù)序列完全相同。GFSR(521,32)并行化 程序執(zhí)行的流程圖如圖2所示。
[0039] 測試數(shù)據(jù):在CPU平臺1、2、4、8和16個線程下分別對GFSR(521,32)產(chǎn)生1,000,000、 10,000,000、100,000,000、1,000,000,000 及 10,000,000,000個隨機數(shù),并在 MIC 平臺 1、2、 4、8、16、32、64 和128 個線程下分別產(chǎn)生1,000,000、10,000,000、100,000,000、1,000,000, 000及10,000,000,000個隨機數(shù)的時間測試。相對于CPU單線程,,MIC平臺下的最優(yōu)加速比 為7.58。
[0040]測試軟硬件環(huán)境:
[0042] 測試結(jié)果如圖3a和圖3b所示,其中,圖3a為CPU平臺下的加速比,圖3b為MIC平臺下 的加速比。
[0043]本發(fā)明結(jié)合MIC的眾核特點,同時開啟數(shù)百的線程,每個線程負責(zé)生成一段子序 列。同時借助MIC的native執(zhí)行模式,在MIC上完成所有隨機數(shù)的生成任務(wù)。由于每個線程產(chǎn) 生的隨機數(shù)序列來自串行算法產(chǎn)生的隨機數(shù)序列中間隔為N的元素,各線程之間的計算完 全不沖突。相對于CHJ單線程,MIC平臺下的加速比具有明顯優(yōu)勢。
[0044]雖然已經(jīng)參照以上實施方式說明了本發(fā)明,但是,應(yīng)該理解的是本發(fā)明不限于所 公開的實施方式。所附權(quán)利要求書的范圍應(yīng)在最寬泛的范圍內(nèi)進行解釋,以涵蓋所有變型、 等同結(jié)構(gòu)和功能。
【主權(quán)項】
1. 一種基于MIC的隨機數(shù)發(fā)生器跳躍式并行化方法,其特征在于,包括以下步驟: 步驟A、根據(jù)系統(tǒng)分配的線程數(shù)將隨機數(shù)發(fā)生器的隨機數(shù)序列劃分成與所述分配的線 程數(shù)數(shù)量相同的子序列; 步驟B、每個線程從各子序列的起點開始生成隨機數(shù); 步驟C、各個線程生成的隨機數(shù)序列按原始序列的順序重新組合。2. 根據(jù)權(quán)利要求1所述的基于MIC的隨機數(shù)發(fā)生器跳躍式并行化方法,其特征在于,包 括以下步驟: 步驟A、根據(jù)系統(tǒng)分配的線程數(shù)將隨機數(shù)發(fā)生器的隨機數(shù)序列劃分成與所述分配的線 程數(shù)數(shù)量相同的子序列; 步驟B、每個線程從各子序列的起點開始生成隨機數(shù), 其中,第一子序列的起點為所述隨機數(shù)發(fā)生器的種子元素, 隨后子序列的起點為所述隨機數(shù)發(fā)生器根據(jù)所述種子元素依次遞推生成的元素; 步驟C、各個線程生成的隨機數(shù)序列按原始序列的順序重新組合,當(dāng)MIC完成計算時,每 個線程將各自生成的隨機數(shù)填充到預(yù)先分配好的內(nèi)存中以供使用,序列的填充順序與原始 序列保持一致。
【文檔編號】G06F7/58GK105843587SQ201610149155
【公開日】2016年8月10日
【申請日】2016年3月16日
【發(fā)明人】張保東, 周曉輝, 宋博文
【申請人】浪潮電子信息產(chǎn)業(yè)股份有限公司