亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        CPU—OpenMP和GPU—CUDA并行計算技術(shù)對矩陣乘法運算的加速效果分析

        2017-12-29 19:16:31張巖
        科技視界 2017年26期
        關(guān)鍵詞:并行計算

        張巖

        【摘 要】本文對比了CPU-OpenMP和GPU-CUDA并行計算技術(shù)對不同階矩陣乘法運算相對于CPU單線程計算的加速效果。結(jié)果表明,CPU-OpenMP并行的計算加速比與矩陣階數(shù)無關(guān),且低于所采用的線程數(shù)目。GPU-CUDA并行的計算加速比隨矩陣階數(shù)的增加顯著增加,最大計算加速比可達570倍以上。相對于CPU單線程計算結(jié)果,CPU-OpenMP并行計算未產(chǎn)生誤差,而GPU-CUDA并行計算會產(chǎn)生誤差。結(jié)果表明,GPU-CUDA并行適合高階數(shù)矩陣乘法的加速計算,而CPU-OpenMP并行適合低階數(shù)矩陣乘法的加速計算。

        【關(guān)鍵詞】矩陣乘法;并行計算;CPU-OpenMP;GPU-CUDA

        中圖分類號: TP391 文獻標(biāo)識碼: A 文章編號: 2095-2457(2017)26-0045-003

        Accelerating Effect Analysis of Matrix Multiplication with CPU-OpenMP and GPU-CUDA Parallel Computing

        ZHANG Yan

        (Beijing Normal University Affiliated High School West High School Class 1, Beijing 100042,China)

        【Abstract】This paper compares the accelerating effects of CPU-OpenMP and GPU-CUDA parallel computing on the computation of different-order matrix multiplication over CPU single-thread. The results show that the computational speedup of CPU-OpenMP parallelism is independent of matrix order and lower than the number of threads used. GPU-CUDA parallel computing speedup ratio increases significantly with the increase of the matrix order, the maximum computational speedup up to 570 times. Relative to the CPU single-thread calculations, CPU-OpenMP parallel computing did not produce errors, and GPU-CUDA parallel computing will produce errors. The results show that GPU-CUDA parallel is suitable for accelerated computing of high-order matrix multiplication, while CPU-OpenMP parallel is suitable for accelerated computing of low-order matrix multiplication.

        【Key words】Matrix multiplication; Parallel computing; CPU-OpenMP; GPU-CUDA

        0 前言

        在信息化技術(shù)不斷發(fā)展的今天,人們處在“大數(shù)據(jù)”時代。由于數(shù)據(jù)量巨大,普通的串行計算方式計算效率低下,無法滿足人們對數(shù)據(jù)進行快速處理的需求。因此,如何能夠提高計算機處理“大數(shù)據(jù)”的計算效率已成為人們?nèi)找骊P(guān)注的話題。為了減少計算時間、提升計算效率,并行計算的出現(xiàn)成為解決上述問題的有效方法。與普通的串行計算相比,并行計算將計算任務(wù)分配到計算機的多個處理器協(xié)同處理,從而提高計算效率。

        隨著并行計算結(jié)果的發(fā)展,并行算法也逐漸成熟。目前,人們采用的并行計算技術(shù)大致可能分為兩種:一是基于CPU(Central Processing Unit)多核多線程的并行計算;二是基于GPU(Graphics Processing Unit)的通用并行計算。對于CPU并行計算,根據(jù)并行粒度的不同可分為“共享式內(nèi)存結(jié)構(gòu)”和 “分布式內(nèi)存結(jié)構(gòu)”[1]。對于“共享式內(nèi)存結(jié)構(gòu)”的并行計算,OpenMP(Open Multi-Processing)作為該類型計算技術(shù)的代表,已被廣泛應(yīng)用于數(shù)據(jù)處理及科學(xué)計算中。采用OpenMP做并行計算具有編程簡單、源程序改變小等優(yōu)點[2]?;贕PU的并行計算技術(shù)是近年來發(fā)展起來的新技術(shù)。與基于CPU的并行計算相比,GPU并行計算具有硬件成本低、加速效果顯著的優(yōu)點。隨著NVIDIA通用計算架構(gòu)CUDA(Compute Unified Device Architecture)的提出,人們用GPU做并行計算的編程難度大為降低[3]。

        本文旨在采用CPU-OpenMP和GPU-CUDA并行計算技術(shù)進行不同階矩陣的乘法運算,并對比這兩種并行計算技術(shù)相對于串行計算(CPU單線程)的加速效果。此外,我們也對GPU-CUDA計算所產(chǎn)生的計算誤差進行了簡要分析。

        1 CPU-OpenMP和GPU-CUDA并行計算技術(shù)

        CPU-OpenMP是一種API(Application Program Interface),用于編寫可移植的多線程應(yīng)用程序,并且無需進行復(fù)雜的線程創(chuàng)建、同步、負載平衡和銷毀工作。CPU-OpenMP能廣泛應(yīng)用在Windows和Linux等多種平臺上,具有可移植性好的優(yōu)點。在Visual Studio 2010 編程環(huán)境下是用OpenMP API時,需打開項目屬性里的OpenMP支持選項。CPU-OpenMP的編程實現(xiàn)十分簡單,只需在原來串行計算程序里的for循環(huán)語句里加入#pragma omp parallel for語句即可實現(xiàn)并行計算[2]。如圖1所示,CPU-OpenMP并行計算的思路是主線程將共享內(nèi)存里的數(shù)據(jù)分配到不同的分線程里進行計算,各個分線程完成計算任務(wù)后將結(jié)果返回到主線程,主線程再負責(zé)分配各個分線程下一步的計算任務(wù)。在CPU-OpenMP代碼編寫過程中,需對不同線程內(nèi)的變量屬性進行區(qū)分,避免不同線程里的私有變量被其他線程的計算修改。endprint

        圖2是GPU-CUDA的計算架構(gòu)示意圖。GPU-CUDA采用CPU-GPU異構(gòu)模式協(xié)同工作,將CPU稱為Host,GPU作為Host的協(xié)處理器,即Device。CPU負責(zé)串行代碼的執(zhí)行,由GPU負責(zé)執(zhí)行高度并行化的浮點數(shù)計算任務(wù)。GPU的運算任務(wù)被編寫在Kernel函數(shù)里。如圖2所示,每個線程網(wǎng)格(Grid)由多個相同大小和維度的線程塊(Block)組成,若干個線程(Thread)又組成了線程塊,所以一個Grid就對應(yīng)了一個Kernel函數(shù)。

        本研究中CPU單線程和CPU-OpenMP多線程運算的程序代碼是用C語言編寫的,GPU-CUDA運算的程序代碼是用CUDA C編寫的。所采用的硬件型號為CPU(Intel Xeon E5-1680 v4, 3.4GHz)和GPU(NVIDIA GeForce GTX1080Ti),操作系統(tǒng)和運行環(huán)境為Windows7和Visual Studio 2010,CUDA版本為CUDA 7.0。

        2 CPU-OpenMP和GPU-CUDA計算效率對比

        首先,隨機產(chǎn)生兩個n階方陣An×n和Bn×n,本文中n的取值分別為n=500,1000,2000,4000,8000,矩陣元素類型為float。隨后,根據(jù)矩陣相乘運算規(guī)則計算An×n·Bn×n,即矩陣元素(AB)ij= A B =A B +A B +…+A B ,分別采用CPU單線程、CPU-OpenMP多線程和GPU-CUDA并行技術(shù)計算不同階數(shù)矩陣的乘法,統(tǒng)計相應(yīng)的計算時間,并獲得CPU-OpenMP和GPU-CUDA的計算效率加速比。對于GPU-CUDA的計算結(jié)果,計算其相對于CPU運算的最大相對誤差。本文中,CPU-OpenMP計算線程數(shù)和GPU-CUDA計算線程塊內(nèi)的線程數(shù)都設(shè)置為8。

        表1是采用CPU單線程計算不同階數(shù)矩陣乘法所需的計算時間。可以看到,隨著矩陣階數(shù)的增加,CPU單線程計算時間明顯增加。此外,由于矩陣乘法的計算量是隨著矩陣階數(shù)的增加呈指數(shù)增加的,采用CPU單線程計算時所需計算時間也是呈指數(shù)增加。對于8000階矩陣乘法,直接采用CPU單線程計算的計算效率已經(jīng)十分低下,無法滿足人們對大通量數(shù)據(jù)快速處理的要求。

        表1 CPU單線程計算不同階矩陣乘法所需時間

        采用CPU-OpenMP多線程并行計算將原來單線程的計算任務(wù)分配給多個CPU線程分工執(zhí)行,從而提高計算效率。表2列出了采用CPU-OpenMP八線程并行計算得到不同階矩陣乘法所需的計算時間。可以看到,CPU-OpenMP八線程計算時間隨著矩陣階數(shù)的增加也呈指數(shù)級增加趨勢。然而,相對于CPU單線程計算,CPU-OpenMP八線程計算所需的計算時間明顯降低。由此可見,采用CPU-OpenMP多線程并行計算可顯著提升計算效率。

        下面我們采用GPU-CUDA并行技術(shù)計算不同階數(shù)的矩陣乘法。首先,在GPU(Device)的顯存上為計算矩陣分配內(nèi)存空間;其次,將CPU(Host)上的矩陣數(shù)據(jù)復(fù)制到GPU顯存中,并在GPU上運行Kernel函數(shù)進行矩陣乘法運算。在本文所采用的CUDA C程序中,Kernel函數(shù)里的內(nèi)存類型為Global。矩陣乘法計算結(jié)束后,把GPU顯存上存儲的計算結(jié)果復(fù)制到CPU內(nèi)存上,釋放GPU顯存并統(tǒng)計計算時間。表3給出了采用GPU-CUDA并行技術(shù)計算不同階數(shù)矩陣相乘的計算時間。與表1和表2 對比可以發(fā)現(xiàn),對于高階數(shù)的矩陣乘法(n >2000),GPU-CUDA所需的計算時間遠遠低于CPU單線程計算和CPU-OpenMP八線程計算。對于低階數(shù)的矩陣乘法(n =500),GPU-CUDA的計算時間與CPU單核計算時間相差不大,并且慢于CPU-OpenMP八線程計算時間。由此可見,采用GPU-CUDA并行技術(shù)對于具有較大的運算量的計算任務(wù)具有顯著的加速效果,但對于較小運算量的計算任務(wù)加速效果不明顯。

        為了能夠更好的展示和比較并行計算的加速效果,圖3給出了CPU-OpenMP八線程計算和GPU-CUDA計算相對于CPU單線程的計算加速比。其中,圖3(a)的縱坐標(biāo)用線性表示,圖3(b)的縱坐標(biāo)用指數(shù)表示,并且圖3(b)上標(biāo)出了不同階數(shù)矩陣乘法的計算加速比。從圖3(a)可以看出,相對于不同階數(shù)的矩陣乘法,CPU-OpenMP八線程計算的加速比變化不大,基本在6左右,低于所采用的線程數(shù)目。從圖3(b)可以發(fā)現(xiàn),隨著矩陣階數(shù)的增加,GPU-CUDA獲得的計算加速比顯著增大。當(dāng)矩陣階數(shù)為n=8000時,GPU-CUDA的計算加速比達到了570倍以上,這樣的加速效果是相當(dāng)可觀的。

        對比CPU單線程計算和CPU-OpenMP多線程并行計算的結(jié)果,發(fā)現(xiàn)兩種計算手段得到的矩陣數(shù)據(jù)是完全相同的,即CPU-OpenMP多線程并行計算不會產(chǎn)生計算誤差。然而,對比發(fā)現(xiàn),采用GPU-CUDA得到的矩陣數(shù)據(jù)與CPU計算得到的結(jié)果有所差異,這可能是由于GPU與CPU 對于float浮點數(shù)協(xié)議的差異[6]。為了體現(xiàn)GPU-CUDA并行計算所帶來的誤差,我們對比了GPU-CUDA與CPU對不同階矩陣乘法的計算結(jié)果,并統(tǒng)計了最大相對誤差,其計算方式為RE=MAX{[(AB) -(AB) ]/(AB) },計算結(jié)果見表4??梢钥闯觯瑢τ诘碗A數(shù)的矩陣乘法(n=500),GPU-CUDA計算得到的矩陣數(shù)據(jù)誤差較大;對于其他階數(shù)的矩陣,GPU-CUDA計算得到的矩陣數(shù)據(jù)誤差較小,甚至為0(n=1000).結(jié)合圖3(b)給出的計算加速比對比圖,可以發(fā)現(xiàn)高階數(shù)矩陣乘法的計算更加適合用GPU-CUDA進行加速,此時加速比大且誤差較??;低階數(shù)矩陣乘法的計算選用GPU-CUDA加速時需慎重,因為GPU-CUDA可能會給出較大的計算誤差。因此,對于低階數(shù)矩陣乘法,宜選用CPU-OpenMP方法進行加速。

        3 結(jié)論

        本文分別采用CPU單線程、CPU-OpenMP多線程和GPU-CUDA并行計算技術(shù),對不同階數(shù)的矩陣乘法進行計算并比較了計算時間。隨著矩陣階數(shù)的增加,CPU單線程所需的計算時間成線性增加。對于不同階數(shù)的矩陣乘法,CPU-OpenMP多線程計算都可以加快計算效率,計算加速比低于所采用的線程數(shù)目。GPU-CUDA的計算加速比隨矩陣階數(shù)的增加顯著增加。當(dāng)矩陣階數(shù)為n=8000時,GPU-CUDA的計算加速比達到了570倍以上。相對于CPU單線程計算結(jié)果,CPU-OpenMP的計算結(jié)果沒有產(chǎn)生誤差,而GPU-CUDA計算結(jié)果會產(chǎn)生誤差。GPU-CUDA的最大相對誤差分析表明GPU-CUDA并行計算技術(shù)更加適合高階數(shù)的矩陣乘法的加速計算,而CPU-OpenMP更加適合低階數(shù)的矩陣乘法的加速計算。

        【參考文獻】

        [1]唐兵,Laurent BOBELIN,賀海武.基于MPI和OpenMP混合編程的非負矩陣分解并行算法[J].計算機科學(xué),2017,44(03):51-54.

        [2]周漫,車欣.大規(guī)模稠密線性方程組求解的并行計算方法[J].信息與電腦(理論版),2016(11):88-89.

        [3]周海芳,高暢,方民權(quán).基于CUBLAS和CUDA的MNF并行算法設(shè)計與優(yōu)化[J].湖南大學(xué)學(xué)報(自然科學(xué)版),2017,44(04):147-156.

        [4]Blaise Barney,OpenMP tutorials [M]:https://computing.llnl.gov/tutorials/openMP/.

        [5]NVIDIA,CUDA C programming guide[M].NVIDIA Corporation,2015:11.

        [6]遲學(xué)斌,王彥棢,王玨,劉芳.并行計算與實現(xiàn)技術(shù)[M]. 北京:科學(xué)出版社,2015.endprint

        猜你喜歡
        并行計算
        基于Hadoop的民航日志分析系統(tǒng)及應(yīng)用
        基于自適應(yīng)線程束的GPU并行粒子群優(yōu)化算法
        云計算中MapReduce分布式并行處理框架的研究與搭建
        矩陣向量相乘的并行算法分析
        并行硬件簡介
        不可壓NS方程的高效并行直接求解
        基于GPU的超聲場仿真成像平臺
        基于Matlab的遙感圖像IHS小波融合算法的并行化設(shè)計
        科技視界(2016年11期)2016-05-23 08:13:35
        大數(shù)據(jù)背景的IT平臺架構(gòu)探索
        科技視界(2015年30期)2015-10-22 11:44:33
        基于枚舉的并行排序與選擇算法設(shè)計
        又色又爽又黄的视频软件app| 三级黄色片一区二区三区| 性色国产成人久久久精品二区三区| 国产精品一区二区三区卡| 亚洲 自拍 另类小说综合图区| 高清国产日韩欧美| 少妇被爽到自拍高潮在线观看 | 国产69口爆吞精在线视频喝尿| 亚洲精品第一国产麻豆| 按摩少妇高潮在线一区| 国产自产精品露脸刺激91在线| 天堂女人av一区二区| 免费看黄片的视频在线观看| 国产一区内射最近更新| 免费一级特黄欧美大片久久网| 亚洲日产国无码| 亚洲一区二区日韩精品在线| 国产肉体xxxx裸体137大胆| 亚洲精品国产综合一线久久| 美女超薄透明丝袜美腿| 在线观看二区视频网站二区 | 久久99国产精品久久99密桃| 精品香蕉99久久久久网站| 一二三四在线视频观看社区| 最新欧美一级视频| 国产护士一区二区三区| 婷婷丁香五月激情综合| 粉嫩少妇内射浓精videos| 高清av一区二区三区在线| 国产成年人毛片在线99| 免费99精品国产自在在线| 人妻无码AⅤ不卡中文字幕| 久久精品国产精品亚洲艾| 成人免费看aa片| 国产精品 视频一区 二区三区| 亚洲乱码中文字幕综合| 国产内射一级一片内射视频| 中文字幕乱码无码人妻系列蜜桃| 无码国产亚洲日韩国精品视频一区二区三区 | 国产高清乱理伦片| 欧美亚洲国产精品久久久久|