• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于GPU的Spark大數(shù)據(jù)技術(shù)在實驗室的開發(fā)應(yīng)用

      2017-04-10 12:05:46周情濤胡昭華
      實驗室研究與探索 2017年1期
      關(guān)鍵詞:內(nèi)核內(nèi)存集群

      周情濤, 何 軍, 胡昭華

      (南京信息工程大學 電子與信息工程學院, 南京 210044)

      ·計算機技術(shù)應(yīng)用·

      基于GPU的Spark大數(shù)據(jù)技術(shù)在實驗室的開發(fā)應(yīng)用

      周情濤, 何 軍, 胡昭華

      (南京信息工程大學 電子與信息工程學院, 南京 210044)

      在大數(shù)據(jù)時代,兼顧大數(shù)據(jù)處理與高性能計算是目前對計算機系統(tǒng)的迫切需求。針對Spark大數(shù)據(jù)處理與基于GPU的高性能計算,分析了基于GPU的Spark技術(shù)。它主要通過構(gòu)建CPU和GPU的異構(gòu)并行,使計算機獲得強大的計算能力,并在實驗室環(huán)境下探討了Spark-GPU技術(shù)的實現(xiàn),闡述了算法實現(xiàn)的技術(shù)流程。在此基礎(chǔ)上,通過仿真實驗評估了Spark和Spark-GPU技術(shù)的性能。實驗表明,Spark-GPU技術(shù)可以達到上百倍的加速比,這對圖像處理以及信息檢索等領(lǐng)域的發(fā)展都具有重要推動作用。

      大數(shù)據(jù)處理; 異構(gòu)計算; 圖形處理器

      0 引 言

      近年來,移動設(shè)備、無線傳感器等設(shè)備每時每刻都在產(chǎn)生數(shù)據(jù),要處理的數(shù)據(jù)量非常大,而業(yè)務(wù)需求對數(shù)據(jù)處理的實時性、有效性又提出了更高要求,傳統(tǒng)的常規(guī)技術(shù)根本無法應(yīng)付。大數(shù)據(jù)技術(shù)就是這個高科技時代的產(chǎn)物。大型數(shù)據(jù)分析經(jīng)常需要將任務(wù)分發(fā)給若干臺機器同步執(zhí)行,所以它往往與分布式計算互相聯(lián)系[1]。

      目前分布式計算框架主要有Hadoop和Spark,新生的Spark是一個基于內(nèi)存計算的開源集群計算系統(tǒng),更適合于迭代的機器學習和數(shù)據(jù)挖掘算法,據(jù)述,Spark在內(nèi)存中的計算速度可比Hadoop提升100倍[2]。然而當數(shù)據(jù)規(guī)模極其龐大時,數(shù)據(jù)處理速度會隨之變慢,與此同時分子動力學、數(shù)學建模、圖像處理等數(shù)據(jù)密集型應(yīng)用對計算效率提出了更高的要求,顯然Spark不能滿足當前的實時性需求。 隨著GPU的發(fā)展和CUDA的成熟,GPU并行計算已成為極其熱門的領(lǐng)域。Spark和CUDA擁有天然的并行處理能力,如何在Spark平臺整合CPU和GPU計算資源也很快成為熱門話題。因此很多中外學者都在研究Spark-GPU技術(shù),以充分利用GPU計算資源,提高計算效率[3]。

      1 國內(nèi)外現(xiàn)狀

      1.1 Spark技術(shù)

      Apache Spark是當今熱門的大數(shù)據(jù)處理框架,它兼容任何Hadoop的文件存儲系統(tǒng),可以使用Standalone、Hadoop YARN或Apache Mesos進行資源管理與作業(yè)調(diào)度,支持Scala,Java、Python和R 4種程序設(shè)計語言的編程接口。彈性分布數(shù)據(jù)集(RDD)是Spark的最核心概念,它表示已被分區(qū)、不可變的并能夠被并行操作的數(shù)據(jù)集合,而且要求可序列化[4]。Spark可以將特定的RDD緩存到內(nèi)存中,這樣下一個操作可以直接讀取內(nèi)存中的數(shù)據(jù),節(jié)省了大量磁盤I/O操作[5]。RDD還具有容錯特性,用變換(Lineage)記錄粗顆粒度的特定數(shù)據(jù)的轉(zhuǎn)換(Transformation)和動作(Action)行為,當部分數(shù)據(jù)分區(qū)丟失時,通過Lineage獲取足夠的信息來重新運算和恢復(fù)丟失的數(shù)據(jù)分區(qū)。這種粗顆粒度的數(shù)據(jù)模型相比細顆粒度的數(shù)據(jù)模型帶來了性能的提升[6]。

      1.2 CUDA架構(gòu)

      基于CPU與GPU混合并行計算系統(tǒng)已經(jīng)逐漸成為國內(nèi)外高性能計算領(lǐng)域的熱點研究方向,CUDA 是NVIDIA發(fā)明的基于NVIDIA GPU并行計算的架構(gòu),利用GPU的處理能力,可大幅提升計算性能[7-8]。它支持C、C++,以及 Fortran、Java、Python等多種語言開發(fā)。圖1為CUDA編程模式下處理數(shù)據(jù)的流程圖。

      圖1 CUDA架構(gòu)工作流程

      CUDA將CPU作為主機(Host),負責邏輯性較強的計算任務(wù),將GPU作為設(shè)備(Device),負責高度線程化的并行處理任務(wù)。程序是由設(shè)備端的內(nèi)核函數(shù)(Kernel)并行步驟和主機端的串行處理步驟組成,內(nèi)核函數(shù)以網(wǎng)格(Grid)形式執(zhí)行,網(wǎng)格由若干線程塊(Block)組成,線程塊由若干線程(Thread)組成。NVCC編譯器可將程序分成在 GPU 上執(zhí)行的部分及在CPU 上執(zhí)行的部分,并對適當?shù)某绦蜻M行編譯動作。

      1.3 Spark-GPU技術(shù)現(xiàn)狀

      近年來,隨著Spark技術(shù)的迅速普及,很多學者都在努力整合Spark云平臺上的CPU和GPU資源,并取得了許多突出的成果,cuSpark、 SparkCL是兩個代表性的Spark-GPU項目,都實現(xiàn)了將GPU嵌入到Spark,在一定程度上實現(xiàn)了CPU和GPU的混合并行計算[9-10]。

      cuSpark是一項CUDA和Spark相結(jié)合的技術(shù)。它抽象出管線(Pipeline),類似于Spark中的RDD,數(shù)據(jù)可分片,并可以存儲在主機內(nèi)存或顯卡內(nèi)存中。管線同樣有轉(zhuǎn)換和動作兩種操作,轉(zhuǎn)換包含Map(func),Map(func)等函數(shù),動作包含Reduce(func),ReduceByKey(func),Materialize(dest)等函數(shù)。轉(zhuǎn)換屬于延長操作(lazy manner),在調(diào)用動作之前,只記錄操作行為,不做任何計算。遇到動作操作時,則先計算轉(zhuǎn)換部分,再計算動作部分。cuSpark項目主要驗證了兩種實驗,一種數(shù)據(jù)量較小,可以完全放在顯存中;一種數(shù)據(jù)量較大,顯存相對較小,但可以被主存容納,實驗表明前者比后者執(zhí)行速度快百倍以上。

      與cuSpark不同,SparkCL則是將JavaCL與Spark結(jié)合[11]。JavaCL就是Java版本的OpenCL庫。它使用了OpenCL,而沒有使用CUDA,意味著可以在非NVIDIA顯卡上運行代碼。Aparapi由AMD Java實驗室開發(fā),2011年開放源代碼,利用它可以編譯Java代碼到OpenCL,在GPU上運行。在這個項目中,如果試圖設(shè)置內(nèi)核運行在GPU,而GPU無法使用,則會切換運行在CPU上??梢酝ㄟ^運行示例程序,測試加速的效果,結(jié)果表明,用GPU獲得了10~100倍左右的加速比。

      以上現(xiàn)狀分析表明,現(xiàn)階段的Spark-GPU技術(shù)主要是將現(xiàn)有的GPU加速技術(shù)引入到Spark平臺,本文則是將PyCUDA技術(shù)融進Spark,通過導(dǎo)入PyCUDA必要函數(shù)庫的方式,在Spark平臺調(diào)用GPU資源,因此二者融合配置較為有效、簡便。

      2 融合GPU的Spark并行機制

      Spark-GPU技術(shù)可借助于GPU的并行能力提高運算性能,而這需要構(gòu)建有效的CPU和GPU異構(gòu)并行系統(tǒng),保證分布式并行算法在系統(tǒng)上的穩(wěn)定運行。下面詳細分析Spark融合GPU的技術(shù),并力圖使系統(tǒng)達到最高計算效率,在此基礎(chǔ)上著重探討Kmeans聚類算法在Spark-GPU技術(shù)上的實現(xiàn)。

      2.1 Spark云平臺上混合GPU和CPU的技術(shù)流程

      Spark由主節(jié)點(Master)和從節(jié)點或稱工作機(Workers)組成。Spark程序稱為驅(qū)動程序,驅(qū)動程序定義了對每個RDD的轉(zhuǎn)換和動作。 將待處理數(shù)據(jù)上傳到分布式存儲系統(tǒng)HDFS,把應(yīng)用程序提交到集群,通過CPU調(diào)控,將數(shù)據(jù)分片并發(fā)送到從節(jié)點。從節(jié)點收到對RDD的操作后,根據(jù)數(shù)據(jù)分片信息進行本地化數(shù)據(jù)操作。Spark提交應(yīng)用程序的過程如圖2所示。

      圖2 Spark提交應(yīng)用程序過程

      Spark應(yīng)用可分成任務(wù)調(diào)度和任務(wù)執(zhí)行兩部分,其中SparkContext為程序運行的總?cè)肟?,由?yīng)用程序啟動,可通過資源調(diào)度模塊與執(zhí)行器(Executor)通信。DAGScheduler作業(yè)調(diào)度模塊可以把作業(yè)劃分成若干階段(stage),然后把階段轉(zhuǎn)化為相應(yīng)的任務(wù)集(TaskSets),并交給TaskScheduler任務(wù)調(diào)度模塊,任務(wù)調(diào)度模塊主要負責具體啟動任務(wù)以及監(jiān)控和匯報任務(wù)運行情況。將任務(wù)(task)提交給執(zhí)行器運行完之后,可以將結(jié)果返回給主程序或?qū)懭胪獠肯到y(tǒng)。

      這里的每臺工作機分別實現(xiàn)了CPU和GPU的異構(gòu)并行計算[12],CPU控制程序的串行邏輯部分,GPU控制并行計算部分,計算過程中可能需要顯存與內(nèi)存頻繁的數(shù)據(jù)交換,將計算結(jié)果先保存到顯存,再由顯存送回內(nèi)存,再開始接下來的串行操作,或者等待下一次內(nèi)核函數(shù)的調(diào)用[13]。GPU融入Spark技術(shù)流程圖如圖3所示。

      圖3 GPU融入Spark技術(shù)流程

      具體執(zhí)行某項任務(wù)時,可以將一個階段分成Map和Reduce兩個操作步驟,每啟動一次MapReduce,則為一次迭代,直到完成迭代的步數(shù)或者滿足設(shè)定的閾值則終止迭代操作,以下為一個MapReduce階段的詳細描述:

      (1) Map操作。根據(jù)計算資源可利用情況向工作機分配任務(wù),工作機接收到程序指令和任務(wù)分配信息,由CPU控制內(nèi)存讀取分配到的待處理數(shù)據(jù),并開始執(zhí)行程序串行部分。當程序執(zhí)行到內(nèi)核函數(shù),CPU將操作指令傳送給GPU,數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到顯存,并對每個數(shù)據(jù)分配給相應(yīng)的線程,并獲取線程索引,同時可計算數(shù)據(jù)索引,以線程為單位,對數(shù)據(jù)進行函數(shù)操作。一般情況下,根據(jù)不同的作業(yè)情況會執(zhí)行特定的函數(shù)任務(wù),將計算后結(jié)果保存到顯存,然后轉(zhuǎn)移到內(nèi)存,等待CPU的調(diào)用。

      (2) Reduce操作。將GPU設(shè)備上計算的結(jié)果以特定的形式轉(zhuǎn)化為RDD或者物化為文件,作為Reduce操作的輸入,工作機按照一定的規(guī)則對數(shù)據(jù)進行運算,大多數(shù)情況下,數(shù)據(jù)都是以(key,value)的形式存在,因此主要是按key值對value進行操作,返回的結(jié)果聯(lián)和其他特定類型的數(shù)據(jù)可作為Map操作的輸入。有時候也根據(jù)Reduce結(jié)果的返回情況判斷收斂與否。

      實際上,雖然每個節(jié)點實現(xiàn)了CPU和GPU的異構(gòu)并行,但由于集群異構(gòu)化較復(fù)雜,在最大化集群計算能力的過程中也會遇到諸多問題:① 開發(fā)程序并應(yīng)用到集群規(guī)模具有一定困難,尤其是應(yīng)用到集群的CPU和GPU異構(gòu)并行系統(tǒng)。② 通常情況下,CPU和芯片集數(shù)據(jù)傳輸速率在10~20 Gb/s之間,而GPU顯存和內(nèi)存間的數(shù)據(jù)交換速率在1~10 Gb/s之間,GPU提供了更快計算能力的同時,內(nèi)存和顯存間的數(shù)據(jù)傳輸速度也帶來了性能瓶頸。③ 如何根據(jù)集群資源動態(tài)分配任務(wù)的問題,由于集群中的機器配置不一定均衡,主要包括CPU核數(shù)、有無顯卡、顯卡型號以及內(nèi)顯存大小等差異,故仍需要設(shè)計出一種策略,使得在任務(wù)分配時達到負載均衡。

      2.2 Kmeans在Spark-GPU技術(shù)上的實現(xiàn)

      Kmeans算法是比較典型的無監(jiān)督聚類算法,廣泛應(yīng)用在數(shù)據(jù)挖掘、信息檢索、市場營銷等方面。其主要目標是最小化所有向量到其類簇中心的距離平方和。在Spark-GPU上實現(xiàn)的Kmeans算法是由CPU和GPU協(xié)同工作,工作流程如圖4所示。

      圖4 Spark-GPU的Kmeans實現(xiàn)

      Spark從HDFS文件系統(tǒng)讀取待聚類的數(shù)據(jù)源,數(shù)據(jù)以塊(block)的形式分布在集群機器硬盤,被程序解析成指定的向量格式后,根據(jù)集群資源情況將數(shù)據(jù)自動分片并分發(fā)給從節(jié)點,然后在CPU上初始化聚類中心,當程序執(zhí)行到內(nèi)核函數(shù),將數(shù)據(jù)交給GPU,GPU計算出每個數(shù)據(jù)對象的類索引信息,將運算結(jié)果返回給CPU,再由CPU更新聚類中心,并判斷收斂條件以決定程序是否終止,最終可以得出聚類中心的詳細情況。具體地,可以將其分為Map和Reduce兩個操作步驟。

      (1) Map操作。輸入為解析成數(shù)組形式的待聚類數(shù)據(jù)以及初始(或者上一次迭代)的類簇中心,形如(array),每一數(shù)組代表一個樣本,調(diào)用內(nèi)核函數(shù)時將所有數(shù)據(jù)由CPU內(nèi)存?zhèn)鬟f給GPU顯存,在GPU上計算樣本到類簇中心的距離,內(nèi)核函數(shù)輸入為數(shù)據(jù)和類簇中心,將數(shù)據(jù)歸屬到擁有最小距離的簇類別,輸出為(clusterID,array),使其轉(zhuǎn)換為形如(clusterID,(array,1))的RDD,并返回CPU。

      (2) Reduce操作。輸入為形如(clusterID,(array,1))的數(shù)據(jù)列表,將數(shù)據(jù)中含有相同簇的(array,1)部分累加,得到一個形如(clusterID,(arraysum,arraynum))的RDD,通過元素arraysum與arraynum的求商計算可以得到新的類簇中心,輸出形式為(clusterID,clustercenter)。

      一個MapReduce階段結(jié)束后,就可得到樣本以及它的類簇歸屬信息的描述文件,以及類簇中心的描述文件,其中clusterID為類簇編號,clustercenter代表類簇中心。每啟動一次MapReduce任務(wù)就執(zhí)行一次迭代操作,一直迭代到目標函數(shù)收斂或者一個特定的步數(shù)。

      3 實驗配置情況

      在實驗室的局域網(wǎng)中挑選閑置的3臺計算機,均配置有支持CUDA的顯卡,并且裝有Ubuntu14.04 64位的操作系統(tǒng)。如果有更多的機器滿足要求,可以有選擇地擴展Hadoop和Spark集群。3臺機器配置情況如表1所示。

      表1 實驗器材配置

      由于環(huán)境配置較繁瑣,故詳細配置流程在筆者博客上描述*.http://blog.csdn.net/zhouqingtaostudy/article/details/50916836。下面僅介紹其主要步驟。

      選擇在Spark云平臺上使用PyCUDA技術(shù)開發(fā)GPU,這項基于Python開發(fā)語言的技術(shù)不但可以使用CUDA并行計算接口,而且由于許多庫函數(shù)的加入,使得編程比基于C的CUDA更加方便[14]。而使用PyCUDA也需要配置好CUDA開發(fā)環(huán)境。因此,首先需要驗證集群中的PC機有相應(yīng)的支持CUDA的GPU、Linux系統(tǒng)版本以及gcc編譯器,另外,系統(tǒng)中的內(nèi)核頭文件和開發(fā)包也需要與系統(tǒng)內(nèi)核版本保持一致。本實驗選擇最新的CUDA-7.5進行配置。當CUDA安裝成功,才可以安裝PyCUDA開發(fā)環(huán)境,選擇pycuda-2015.1.3版本。PyCUDA依賴于 Boost C++ 庫,numpy庫以及其他必要的庫,條件滿足后修改配置文件并編譯安裝。配置好GPU開發(fā)環(huán)境就可以使用GPU資源執(zhí)行并行計算。

      安裝Spark有幾種不同的方式,可以在計算機上將Spark作為一個獨立的框架安裝,或者從供應(yīng)商處獲取一個Spark虛擬機鏡像直接使用,或者使用在云端環(huán)境安裝并配置好的Spark。本文選擇最新發(fā)布的Spark 1.6.0,把Spark作為一個獨立的框架安裝并啟動[15]。為了讓Spark能夠在本機正常工作,需要安裝Java開發(fā)工具包。為了能使用HDFS分布式文件系統(tǒng),需要安裝Hadoop軟件。根據(jù)Hadoop版本,在Spark網(wǎng)站上下載特定版本的Spark安裝包,根據(jù)實際資源修改配置文件。待全部安裝成功,可通過自帶程序示例驗證安裝[16]。

      4 實驗測試與結(jié)果分析

      4.1 實驗流程

      實驗中以Spark云平臺上的Kmeans算法實現(xiàn)作為對比,評估Spark-GPU技術(shù)的性能,Spark和PyCUDA都可以使用Python語言開發(fā),因此選擇Python編寫應(yīng)用程序[17]。為了增加實驗結(jié)果的可信度,準備了3組數(shù)據(jù)集,數(shù)據(jù)集的大小依次為41.9、209.7、419.4 Mb,分別在Spark和Spark-GPU上實現(xiàn)Kmeans聚類。首先在master節(jié)點啟動Hadoop和Spark集群,然后將3個數(shù)據(jù)集上傳到HDFS分布式文件系統(tǒng),并修改程序中相關(guān)數(shù)據(jù)的路徑,使其對應(yīng)HDFS上的特定文件夾,將應(yīng)用程序以及相應(yīng)的聚類參數(shù)分別提交到集群中,如果環(huán)境配置和應(yīng)用程序都正確,那么集群將開始計算。

      4.2 結(jié)果分析

      集群計算結(jié)束后,收集聚類的時間信息,為了使獲得的時間數(shù)據(jù)更準確、更可視化,獲取程序開始和結(jié)束時刻的時間戳,其差值作為實驗運行時間,并修改程序使聚類中心和聚類時間顯示在終端窗口,為增加實驗結(jié)果的可信度,分別對3組數(shù)據(jù)集多次實驗求平均值,時間統(tǒng)計結(jié)果如表2所示。

      結(jié)果表明,Spark-GPU執(zhí)行Kmeans的速度遠快于Spark,究其原因:Spark云平臺中的計算任務(wù)完全依靠CPU,而Spark-GPU項目中,集群中每個節(jié)點都實現(xiàn)了CPU與GPU的異構(gòu)并行。CPU負責更新聚類中心,判斷收斂條件,以及一些邏輯性任務(wù),而距離計算等具有高度并行化的任務(wù),則交給適合并行計算的GPU來完成。GPU含有成百上千的核心,雖然計算能力有限,但是在并行計算能力方面,比CPU更加強大,而Kmeans的距離計算部分任務(wù)比較簡單,而且可分片執(zhí)行,具有并行化處理的天然基礎(chǔ),若用CPU處理顯然會耗費相當長的時間,但是若用GPU來協(xié)助計算,則會大幅提升運算速度。綜上因素使得Spark-GPU獲得了極高的效率。

      5 結(jié)語

      本文提出了GPU嵌入Spark云平臺的構(gòu)想,并構(gòu)建了含有GPU開發(fā)環(huán)境的Spark云平臺計算框架,在搭建Spark云平臺的基礎(chǔ)上,努力通過CPU和GPU的異步運算,最大化提升集群計算性能,通過無監(jiān)督的Kmeans聚類實驗,驗證了本文構(gòu)建的基于GPU開發(fā)環(huán)境的Spark計算框架,有效的提高了聚類的效率,這對圖像檢索、數(shù)據(jù)挖掘等領(lǐng)域有著極其深刻的意義,本框架對其他數(shù)據(jù)密集型或者計算密集型的任務(wù),也明顯會有加速的效果,還有待進一步的實現(xiàn)與驗證。

      在未來的工作中,仍需要了解并行計算的運行機制,將更多適合并行計算的新算法加以改進,使得在本文的框架中加以實現(xiàn)和優(yōu)化,從而更加高效率的完成計算任務(wù)。

      [1] 王 珊, 王會舉, 覃雄派, 等. 架構(gòu)大數(shù)據(jù): 挑戰(zhàn), 現(xiàn)狀與展望[J]. 計算機學報, 2011, 34(10): 1741-1752.

      [2] 唐振坤. 基于 Spark 的機器學習平臺設(shè)計與實現(xiàn)[D]. 廈門:廈門大學, 2014.

      [3] Yang X, Wallom D, Waddington S,etal. Cloud computing in e-Science: research challenges and opportunities[J]. The Journal of Supercomputing, 2014, 70(1): 408-464.

      [4] Zaharia M, Chowdhury M, Das T,etal. Resilient distributed datasets: A fault-tolerant abstraction for in-memory cluster computing[C]//Proceedings of the 9th USENIX conference on Networked Systems Design and Implementation. USENIX Association, 2012: 2-2.

      [5] Ma Z, Hong K, Gu L. VOLUME: Enable large-scale in-memory computation on commodity clusters[C]//Cloud Computing Technology and Science (CloudCom), 2013 IEEE 5th International Conference on. IEEE, 2013, 1: 56-63.

      [6] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J]. Communications of the ACM, 2008, 51(1): 107-113.

      [7] Spiechowicz J, Kostur M, Machura L. GPU accelerated Monte Carlo simulation of Brownian motors dynamics with CUDA[J]. Computer Physics Communications, 2014, 191(1):140-149.

      [8] Zhang H, Garcia J. GPU Acceleration of a cloud resolving model using CUDA[J]. Procedia Computer Science, 2012, 9(11):1030-1038.

      [9] 曾青華, 袁家斌. 基于MapReduce和GPU雙重并行計算的云計算模型[J]. 計算機與數(shù)字工程, 2013, 41(3):333-336.

      [10] Boubela R N, Kalcher K, Huf W,etal. Big data approaches for the analysis of large-scale fMRI data using apache spark and GPU processing: A demonstration on resting-state fMRI data from the human connectome project[J]. Frontiers in neuroscience, 2014, 9: 492-492.

      [11] Segal O, Colangelo P, Nasiri N,etal. SparkCL: A unified programming framework for accelerators on heterogeneous clusters[J]. arXiv preprint arXiv:1505.01120, 2015.

      [12] Stuart J A, Owens J D. Multi-GPU MapReduce on GPU clusters[C]//Parallel & Distributed Processing Symposium (IPDPS), 2011 IEEE International. IEEE, 2011: 1068-1079.

      [13] Zhang J, You S, Gruenwald L. Large-scale spatial data processing on GPUs and GPU-accelerated clusters[J]. SIGSPATIAL Special, 2015, 6(3): 27-34.

      [14] Kl?ckner A, Pinto N, Lee Y,etal. PyCUDA: GPU run-time code generation for high-performance computing[J]. Parallel Computing, 2009, 38(3):157-174.

      [15] 付 偉, 嚴 博, 吳曉平. 云計算實驗平臺建設(shè)關(guān)鍵技術(shù)研究[J]. 實驗室研究與探索, 2013, 32(11):78-81.

      [16] 薛志云, 何 軍, 張丹陽, 等. Hadoop 和 Spark 在實驗室中部署與性能評估[J]. 實驗室研究與探索, 2015, 34(11):77-81.

      [17] 李佳佳, 胡新明, 吳百鋒. 基于異構(gòu) GPU 集群的并行分布式編程解決方案[J]. 計算機應(yīng)用與軟件, 2014, 31(9):28-31.

      Department and Application of the GPU-based Spark Big Data Technology in Laboratory

      ZHOUQing-tao,HEJun,HUZhao-hua

      (School of Electronic and Information Engineering,Nanjing University of Information Science and Technology, Nanjing 210044, China)

      In the era of big data, both big data processing and high performance computing are of the urgent needs of a computer system. Specific to Spark big data processing and high performance computing based on GPU, this paper analyzes the Spark technology based on GPU proposed by industry. It is mainly by constructing heterogeneous parallel of CPU and GPU, making computer to obtain a powerful computing capability. Then we discuss the implementation of the Spark-GPU technology in laboratory environment, and expound the technical process of algorithm realization in detail. On this basis, we assess the performance of the Spark and Spark - GPU technology through simulation experiment. Results show Spark-GPU technology can achieve hundredfold speedup, hence, it can play an important role in promoting the development of image processing and information retrieval and other areas.

      big data processing; heterogeneous computing; graphics processing unit

      2016-03-28

      國家自然科學基金(NSFC61203273),江蘇省自然科學基金(BK20141004)

      周情濤(1990-),男,山東臨沂人,碩士生,研究方向為大數(shù)據(jù)機器學習。

      E-mail: 14751701086@163.com

      何 軍(1978-),男,河南鄭州人,博士,副教授,研究方向為大數(shù)據(jù)機器學習,計算機視覺等。

      E-mail: jhe@nuist.edu.cn

      TP 302.1

      A

      1006-7167(2017)01-0112-05

      猜你喜歡
      內(nèi)核內(nèi)存集群
      萬物皆可IP的時代,我們當夯實的IP內(nèi)核是什么?
      強化『高新』內(nèi)核 打造農(nóng)業(yè)『硅谷』
      海上小型無人機集群的反制裝備需求與應(yīng)對之策研究
      “春夏秋冬”的內(nèi)存
      當代陜西(2019年13期)2019-08-20 03:54:22
      基于嵌入式Linux內(nèi)核的自恢復(fù)設(shè)計
      Linux內(nèi)核mmap保護機制研究
      一種無人機集群發(fā)射回收裝置的控制系統(tǒng)設(shè)計
      電子制作(2018年11期)2018-08-04 03:25:40
      Python與Spark集群在收費數(shù)據(jù)分析中的應(yīng)用
      勤快又呆萌的集群機器人
      基于內(nèi)存的地理信息訪問技術(shù)
      诸城市| 陆河县| 章丘市| 鹿泉市| 布拖县| 油尖旺区| 北川| 阿勒泰市| 延川县| 二连浩特市| 清新县| 神农架林区| 德安县| 汉阴县| 屯昌县| 获嘉县| 肥西县| 木兰县| 海伦市| 东源县| 婺源县| 波密县| 英吉沙县| 莱芜市| 舒城县| 孟州市| 东源县| 武胜县| 宁城县| 广元市| 吕梁市| 顺义区| 通州区| 温宿县| 长春市| 思茅市| 伊金霍洛旗| 济源市| 陆丰市| 正镶白旗| 台北市|