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

一種稀疏矩陣向量乘法的異構(gòu)并行計(jì)算方法

文檔序號(hào):9349725閱讀:1441來源:國(guó)知局
一種稀疏矩陣向量乘法的異構(gòu)并行計(jì)算方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種數(shù)據(jù)存儲(chǔ)方法,特別涉及一種稀疏矩陣向量乘法的異構(gòu)并行計(jì)算 方法。 技術(shù)背景
[0002] 疏矩陣向量乘法(Sparse Matrix-Vector Multiplication,簡(jiǎn)稱 SpMV)是科學(xué)計(jì) 算和工程應(yīng)用中最常用的計(jì)算之一。在很多數(shù)據(jù)挖掘應(yīng)用中,經(jīng)常會(huì)遇到數(shù)據(jù)極度稀疏的 情況,這種類型的數(shù)據(jù)通常表示為稀疏矩陣。在數(shù)據(jù)規(guī)模非常大的時(shí)候,利用目前流行的 CPU-GPU異構(gòu)計(jì)算平臺(tái)來實(shí)現(xiàn)SpMV異構(gòu)并行計(jì)算是非常必要的。
[0003] -般而言,在異構(gòu)平臺(tái)上進(jìn)行SpMV計(jì)算,有以下兩種計(jì)算模式:
[0004] 第一種模式是CPU/GPU協(xié)同計(jì)算,CPU把數(shù)據(jù)處理好,讓后把數(shù)據(jù)發(fā)送給GPU計(jì)算, GHJ計(jì)算完成之后把數(shù)據(jù)傳輸回CPU。整個(gè)過程雖然說是并行,實(shí)際上CPU和GPU的工作卻 是串行的,在GPU進(jìn)行計(jì)算時(shí),CPU空置,把CPU的計(jì)算能力浪費(fèi)掉了。
[0005] 第二種模式是CPU/GPU共同計(jì)算,CPU把數(shù)據(jù)處理好后,進(jìn)行任務(wù)劃分,把一部分 數(shù)據(jù)傳輸?shù)紾PU上,之后與GPU共同完成所有的計(jì)算任務(wù)。這種模式相比前一種模式,在 GHJ計(jì)算的同時(shí)利用到了 CPU的計(jì)算能力。即便如此,這種模式仍然有所不足,它把CPU和 GPU作為對(duì)等的計(jì)算節(jié)點(diǎn),分配相似的計(jì)算任務(wù),這忽視了 CPU和GPU體系結(jié)構(gòu)上的差異,將 導(dǎo)致CPU和GPU都不能達(dá)到最高性能。
[0006] 在稀疏矩陣向量乘法中,稀疏矩陣存儲(chǔ)是一個(gè)關(guān)鍵問題,直接影響計(jì)算性能。目 前來看,主流的稀疏矩陣存儲(chǔ)形式有:坐標(biāo)格式(Coordinate Format,簡(jiǎn)稱C00),稀疏行壓 縮格式(Compressed Sparse Row Format,簡(jiǎn)稱 CSR),對(duì)角線格式(Diagonal Format,簡(jiǎn)稱 DIA),ellpack格式(ELLPACK format,簡(jiǎn)稱ELL)等存儲(chǔ)形式,每種存儲(chǔ)形式各有特色,各 有自己最適合的應(yīng)用場(chǎng)景。文章 "Efficient Sparse Matrix-Vector Multiplication on CUDA"Technical Report by Nathan Bell, Michael Garland 的研究顯不:在 SpMV任務(wù)中, 使用DIA和ELL稀疏矩陣存儲(chǔ)方式能夠更好地利用GPU的帶寬,不過ELL存儲(chǔ)方式的性能 受具體數(shù)據(jù)分布影響較大;在SpMV任務(wù)中C00和ELL的混合模式最在GPU上性能最好,因 為它利用到GPU處理ELL時(shí)展現(xiàn)出的優(yōu)勢(shì),又通過結(jié)合C00來規(guī)避ELL的缺陷。而CSR是 一種最常見的系數(shù)矩陣存儲(chǔ)形式,它是C00的進(jìn)一步壓縮形式,相對(duì)于別的數(shù)據(jù)存儲(chǔ)方式 更加適合使用CPU處理。但目前所有這些存儲(chǔ)方式,都不適合在CPU-GPU異構(gòu)計(jì)算平臺(tái)上 進(jìn)行處理。

【發(fā)明內(nèi)容】

[0007] 本發(fā)明的目的在于克服現(xiàn)有技術(shù)的缺點(diǎn)與不足,提供一種稀疏矩陣向量乘法的異 構(gòu)并行計(jì)算方法。
[0008] 本發(fā)明的目的通過如下技術(shù)方案實(shí)現(xiàn):一種稀疏矩陣向量乘法的異構(gòu)并行計(jì)算方 法,包括以下步驟:
[0009] S1、確定稀疏矩陣的可調(diào)參數(shù)K的取值;
[0010] S2、CPU讀取存儲(chǔ)于硬盤上的稀疏矩陣數(shù)據(jù),并根據(jù)稀疏矩陣的可調(diào)參數(shù)K申請(qǐng)內(nèi) 存存儲(chǔ)空間,所述內(nèi)存存儲(chǔ)空間包括ELL存儲(chǔ)結(jié)構(gòu)和CSR存儲(chǔ)結(jié)構(gòu)需要的存儲(chǔ)空間;同時(shí)也 申請(qǐng)ELL存儲(chǔ)結(jié)構(gòu)需要的GPU存儲(chǔ)空間;
[0011] S3、將稀疏矩陣數(shù)據(jù)進(jìn)行壓縮后存儲(chǔ)在CPU所申請(qǐng)的內(nèi)存存儲(chǔ)空間中生成混合存 儲(chǔ)結(jié)構(gòu);
[0012] S4、把ELL存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的數(shù)據(jù)復(fù)制到GPU存儲(chǔ)空間中進(jìn)行存儲(chǔ);
[0013] S5、使用處理完成的存儲(chǔ)結(jié)構(gòu)進(jìn)行稀疏矩陣向量乘法,CPU計(jì)算CSR存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng) 運(yùn)算,GPU計(jì)算ELL存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng)運(yùn)算,CPU和GPU處理結(jié)果相加得到最終結(jié)果。
[0014] 步驟S3中,在將所述稀疏矩陣壓縮后存儲(chǔ)時(shí),首先將所有能夠存儲(chǔ)于ELL的數(shù)據(jù) 填充在ELL結(jié)構(gòu)中,然后將剩余的數(shù)據(jù)按照CSR存儲(chǔ)結(jié)構(gòu)通常的存儲(chǔ)方式,存儲(chǔ)到CSR存儲(chǔ) 結(jié)構(gòu)中。
[0015] 步驟S3中,在對(duì)所述稀疏矩陣進(jìn)行壓縮時(shí),對(duì)于針對(duì)列進(jìn)行壓縮的情況,所述矩 陣數(shù)據(jù)依列填充到數(shù)組上;對(duì)于針對(duì)行進(jìn)行壓縮的情況,所述矩陣數(shù)據(jù)依行填充到數(shù)組上。
[0016] 步驟S4中,把所述ELL存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)復(fù)制到GPU存儲(chǔ)空間的具體做法是將內(nèi) 存中混合存儲(chǔ)結(jié)構(gòu)中ELL存儲(chǔ)結(jié)構(gòu)中的數(shù)據(jù)內(nèi)容復(fù)制并傳輸?shù)紾PU存儲(chǔ)空間上ELL存儲(chǔ)結(jié) 構(gòu)的對(duì)應(yīng)位置上,同時(shí),CPU釋放內(nèi)存中對(duì)應(yīng)的數(shù)據(jù)空間。
[0017] 本發(fā)明與現(xiàn)有技術(shù)相比,具有如下優(yōu)點(diǎn)和有益效果:
[0018] 1、本發(fā)明的計(jì)算方法可以使計(jì)算機(jī)在進(jìn)行SpMV計(jì)算任務(wù)時(shí),同時(shí)利用CPU和GPU 的計(jì)算能力,使CPU和GPU可以各自發(fā)揮最優(yōu)的計(jì)算特性。
[0019] 2、本發(fā)明生成方法簡(jiǎn)單,可以很容易地?cái)U(kuò)展到集群環(huán)境。
【附圖說明】
[0020] 圖1為本發(fā)明所述的一種稀疏矩陣向量乘法的異構(gòu)并行計(jì)算方法的流程圖。
【具體實(shí)施方式】
[0021] 下面結(jié)合實(shí)施例及附圖對(duì)本發(fā)明作進(jìn)一步詳細(xì)的描述,但本發(fā)明的實(shí)施方式不限 于此。
[0022] -種稀疏矩陣向量乘法的異構(gòu)并行計(jì)算方法,具體包括以下步驟:
[0023] S1、確定稀疏矩陣的可調(diào)參數(shù)K的取值。
[0024] K值用于標(biāo)識(shí)可以把ELL矩陣壓縮到最小的數(shù)量。在Hybrid (ELL+C00/CSR)時(shí)K 值用于決定多少數(shù)據(jù)存于ELL,多少存于C00/CSR在本存儲(chǔ)結(jié)構(gòu)中,可以認(rèn)為K值決定GPU 和CPU的計(jì)算量。K值越大,會(huì)使GPU計(jì)算量越大,CPU計(jì)算量越小。K值取最優(yōu)的時(shí)候可 以使CPU和GPU完成計(jì)算的時(shí)間相等。K值可以簡(jiǎn)單使用平均值來確定。即對(duì)于數(shù)據(jù)依列 壓縮,則用每行平均數(shù)據(jù)量作為K值;對(duì)于數(shù)據(jù)依行壓縮,則用每列平均數(shù)據(jù)作為K值。
[0025] S2、CPU讀取存儲(chǔ)于硬盤上的稀疏矩陣,并根據(jù)所述可調(diào)參數(shù)K申請(qǐng)內(nèi)存存儲(chǔ)空 間,包括ELL存儲(chǔ)結(jié)構(gòu)和CSR存儲(chǔ)結(jié)構(gòu)需要的存儲(chǔ)空間;同時(shí)GPU也申請(qǐng)ELL存儲(chǔ)結(jié)構(gòu)需要 的GPU存儲(chǔ)空間。
[0026] S3、將矩陣數(shù)據(jù)填充在CPU所申請(qǐng)的內(nèi)存存儲(chǔ)空間中生成混合存儲(chǔ)結(jié)構(gòu)。
[0027] S4、把ELL存儲(chǔ)結(jié)構(gòu)中存儲(chǔ)的數(shù)據(jù)復(fù)制到GPU所申請(qǐng)的GPU存儲(chǔ)空間中進(jìn)行存儲(chǔ)。
[0028] S5、使用處理完成的存儲(chǔ)結(jié)構(gòu)進(jìn)行稀疏矩陣向量乘法,CPU計(jì)算CSR存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng) 運(yùn)算,GPU計(jì)算ELL存儲(chǔ)結(jié)構(gòu)對(duì)應(yīng)運(yùn)算,CPU和GPU處理結(jié)果相加得到最終結(jié)果。
[0029] 所述步
當(dāng)前第1頁1 2 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
清涧县| 广安市| 仁布县| 石门县| 徐汇区| 黑山县| 齐河县| 项城市| 准格尔旗| 大英县| 花莲市| 额尔古纳市| 明星| 清河县| 基隆市| 新邵县| 西平县| 平舆县| 铜梁县| 北宁市| 化隆| 洛扎县| 无锡市| 南昌县| 始兴县| 兴仁县| 阳东县| 连州市| 漳州市| 凤阳县| 荣成市| 法库县| 太保市| 南川市| 岗巴县| 富平县| 镇原县| 娱乐| 贺州市| 兴义市| 宁波市|