数据流技术在GPU和大数据处理中的应用
點擊上方藍字關注我們
數據流技術在GPU和大數據處理中的應用
蘇華友,?梅松竹,?李榮春,?竇勇
國防科技大學計算機學院,湖南 長沙 410073
論文引用格式:
蘇華友,?梅松竹,?李榮春,?竇勇.數據流技術在GPU和大數據處理中的應用.?大數據[J], 2020, 6(3):117-128
SU H Y, MEI S Z, LI R C, DOU Y.The usage of dataflow model in GPU and big data processing.?Big Data Research[J], 2020, 6(3): 117-128
1 引言
數據流(dataflow)是相對于控制流而言的一種計算技術,從維基百科的解釋來看,數據流在不同的上下文中有不同的含義。從計算機硬件體系結構的角度看,數據流計算機由數據流節點組成,當數據流節點需要的操作數就緒之后就可以執行指令,其執行結果被直接輸送到需要該結果的其他數據流節點。數據流計算機中的指令包含數據的輸入節點標識和輸出節點標識,指令之間數據的依賴關系決定了程序指令的執行順序。從軟件體系結構的角度來看,數據流是一種軟件范式,其基本思想是將計算參與者分離為多個可以同時執行的階段。
數據流一詞最早出現在20世紀70年代,當時數據流計算機是體系結構研究的一個熱點話題,是非馮·諾伊曼結構研究的一個重要分支。數據流計算機根據對數據令牌(token)的處理方式不同,可以分為靜態數據流計算機和動態數據流計算機。數據流計算機體系結構具有十分明顯的特點,包括:數據的就位順序決定了指令的執行順序;數據流節點的資源就位后就可以直接執行指令;程序通過數據流圖的形式描述。其主要優點是可以開發很好的并行性,只有真正與數據相關才會引起程序指令之間的依賴問題,這一優點在非規則計算中具有明顯的作用。但是,數據流計算機的缺點也十分明顯:首先,因為程序的狀態并不是確定的,程序的調試會比較困難;第二,指令包含了執行結果的流向信息,不會存回到存儲器中,沒有有效利用數據的局域性來提高程序的性能。正是因為如此,嚴格意義上的數據流計算機并沒有獲得成功,至少在商業領域沒有被廣泛地應用。但是,數據流計算機的思想極大地影響了計算機體系結構的思想,尤其是在并行體系結構方面,通過大量積累同一類型的計算單元,計算系統能夠同時處理不同的數據,計算單元之間相互獨立。受數據流計算思想的影響,在馮·諾伊曼結構的基礎上加入數據流計算的理念,融合控制流和計算流的優點,面向某些特定的計算領域出現了十分高效的計算機系統,例如面向媒體處理的流處理器和面向大規模科學計算的圖形處理器(graphics processing unit,GPU)等。
隨著并行計算機體系結構的出現,相應的編程模型也發生了變化。高性能是很多應用追求的主要目標,為了解決多核處理器的效率問題,研究人員提出了數據流編程模型,它可以充分挖掘應用中的并行性,提高計算資源的效率。與傳統編程語言相比,數據流編程模型有明顯不同的特點。首先,數據流編程模型將計算和通信分離,將應用描述成數據流圖的模式,數據流圖刻畫了整個應用的數據流動方式,數據流圖中的節點表示計算單元,邊表示數據傳輸路徑。數據流編程模型通過對數據流圖的解析,完成對數據之間依賴關系的刻畫,根據數據的依賴關系對任務進行調度和分配,并利用軟件流水充分挖掘程序的并行性。目前,已經有很多采用數據流編程模型思想的編程語言,如面向特定領域的流編程模型StreamIt,它主要針對科學計算與編解碼處理。英偉達(NVIDIA)公司的統一計算設備架構(compute unified device architecture,CUDA)是一種借鑒數據流模型的、面向GPU的、服務于高性能計算的編程模型。隨著大數據的持續廣泛應用,流編程也在大數據系統中得到了應用,如MapReduce、Spark、Flink等。
本文將從硬件和軟件2個角度介紹數據流技術的主要應用,重點闡述數據流思想在微觀體系結構方面的應用,從數據流計算機、流處理器到如今極度火熱的GPU。在軟件框架方面,重點介紹典型流計算模型在大規模并行與分布處理中的使用。
2 數據流技術在計算機硬件體系結構中的應用
數據流計算的思想對計算機硬件體系結構的發展具有十分重要的作用。最初,研究人員是希望找到一種非馮·諾伊曼結構的計算機體系結構,解決傳統馮·諾伊曼計算機在并行計算方面的問題,因此出現了單純的數據流計算機及與其相關的系統。之后,他們發現嚴格意義上的數據流計算機的實現和維護都具有一定的難度,而且性能并沒有太大的提升,因此就產生了將數據流和控制流結合的思想,流處理器就是這一思想的產物。流處理器采用超長指令字(very long instruction word, VLIW)技術,將計算和訪存進行解耦,將數據組織成流,并加載到流處理單元進行處理。流處理器的研究成果被應用到GPU中并持續改良,其中GPU中的計算單元——流多處理器(streaming multiprocessor, SM)就是流處理器的產物。
2.1 數據流計算機
數據流計算機是20世紀七八十年代計算機體系結構的一個研究熱點。麻省理工大學的Dennis教授可以說是數據流體系結構的開拓者,他帶領的團隊在1974年的計算機體系結構國際研討會(International Symposium on Computer Architecture, ISCA)上發表的論文首次闡述了靜態數據流機器的特點,在這種機器中,程序由數據流節點組成,當數據流節點所需要的數據就位之后就可以執行指令。它的指令結構包含操作數以及一個或多個使用該操作結果的地址。一旦指令執行結束,計算結果直接流向下一個需要該結果的數據流節點。因為靜態數據流機器的數據令牌是不帶標號的,沒有辦法區分數據的來源,所以數據流計算機中節點的任何一條輸入弧上都只能有一個數據令牌,以此來保證計算結果的正確性。為了滿足迭代計算的要求,靜態數據流機器要多次重復激活同一操作節點。此外,它還需要另設控制令牌,識別數據令牌的時間戳,并以此為依據區分屬于不同迭代層次的數據。靜態數據流機器不支持遞歸操作,只支持一般的循環迭代過程。
為了克服靜態數據流計算機面臨的問題,很多研究團隊提出了動態數據流計算機的思想?,即在數據令牌上加上標號來區分不同的數據批次,以此來滿足同一操作節點處理多個數據的問題。但是數據流計算機的一些問題仍然沒有得到解決,如程序的調試比較困難、程序沒有有效地利用數據的局域性來提高性能。在如今的計算機系統中,數據的訪問開銷要遠遠大于計算開銷,開發數據的局域性有時候比開發并行性獲得的收益更大。因此就有了將數據流和控制流進行融合的嘗試工作,主要分為2種模式:一種是在指令集體系結構(instruction-set architecture,ISA)級保持控制流模式,在底層實現數據流機制,并且保留語義順序;另一種是保留數據流模型,但在ISA級利用控制流模型來提高效率、開發局域性和簡化資源管理。目前,第二種方式應用更加廣泛。
2.2 流處理器
嚴格意義上的數據流計算機并不實用,但是數據流計算的思想卻極大地影響著處理器體系結構的發展,尤其是將數據流和控制流的優點進行融合。其中,流處理器就是數據流和控制流計算思想融合的典型成果。
流處理器是流體系結構的實際載體,它和常用的典型處理器體系結構有很大的區別。流處理器是一類面向特定應用領域的高效能處理器,主要應用在媒體處理領域。流體系結構最主要的特點是將計算和訪存進行了解耦。在流程序的執行模型中,數據和指令是分離的。根據功能區分,流體系結構由流調度模塊和流計算模塊組成。流調度模塊采用的是控制流的思想,它負責流數據的組織;而流計算模塊則采用數據流的思想,專注于密集計算,相應的執行核心被加載到計算模塊,并且輸入流和輸出流都就緒之后,流計算模塊就可以通過大規模的計算陣列實現極高的計算效率。為了保證計算所需的數據帶寬,流計算模塊采用了大量的本地寄存器文件。流處理器是一種面向媒體處理領域的專用處理器,它的設計考慮了媒體處理應用具有明顯的生產者-消費者局域性的特點,并且數據的訪問具有一定的可預知性,在存儲層次的設計上與當代處理器明顯不一樣,它沒有進行數據緩存的高速緩沖存儲器(cache),而是采用多級存儲層次的結構——本地存儲器、流寄存器文件、動態隨機存取存儲器(dynamic random access memory, DRAM)三級存儲空間來保證大規模計算陣列需要的高數據帶寬。
典型的流處理器有Imagin e 、Merrim ac、C ELL、STO RM-1和MASA 等,其中最具代表性的當屬Imagine。Imagine由斯坦福大學的Dally W J教授團隊在2002年開發完成,其體系結構如圖1所示。它主要是結合目標應用開發符合流應用特點的程序,并采用多級存儲層次提高帶寬,從而充分利用基于單指令多數據流(single instruction multiple data,SIMD)執行模式的大規模計算陣列,滿足高清視頻處理需要的高計算量需求。在250 MHz的頻率下,典型應用在Imagine上可達到10 GFlops 。在Imagine的基礎上,Dally W J教授研究小組研發了Merrimac 超級流計算機,其計算性能為2 PFlops,這是第一次采用流處理器來構建的高性能計算系統。在游戲領域,IBM、索尼、東芝3家公司在2005年聯合推出的第一代CELL處理器具有典型流體系結構的特征,它采用異構的模式進行設計,包含一個Power體系結構兼容的64位主處理單元(power processing element,PPE)和8個協處理單元(synergistic processing element,SPE)。PPE負責運行操作系統和進行SPE的線程調度,SPE用來加速媒體等計算密集的流應用,以獲得高性能,這種控制和計算分離的模式對后來的高性能GPU發展具有十分重要的借鑒和引領作用。我國在流處理器領域的主要研究有MASA流處理器和銀河FT-64處理器。
流處理器對應的程序執行模型采用的是兩級編程方式,分為流程序和內核(kernel)程序。流程序控制整個程序的執行過程,將數據組織成流的形式;kernel程序負責對流中的數據進行并行處理,將數據映射到大規模計算陣列中,在流計算中,核心程序的概念可以認為是宏觀上的數據流節點。只要流和計算陣列就緒就可以執行指令,而且kernel的輸出流通常會作為下一個kernel的輸入流。在流計算模型中,所謂的流就是一組有序的數據記錄(record)。記錄由相關數據的集合組成。流記錄可以是任意數據類型,但同一個流中的記錄必須是同類型的。
2.3 GPU
GPU是目前大數據和智能計算時代的寵兒,可以說在智能計算領域,GPU占據了主導地位。GPU的發展和成功都離不開數據流技術,從硬件的角度來看,GPU的執行單元是由流處理器組成的,通過堆疊大量同構的流處理器來提供超強的計算能力;從軟件的角度看,GPU的kernel執行模式是典型的數據流執行機制,不同的kernel的執行順序是由資源和輸入輸出數據是否就緒決定的。在kernel的執行過程中,不同線程的執行順序又是不確定的。
起初,GPU通常只是作為一種圖形圖像處理專用設備而存在的,采用頂點編程的方式。由于其高度專用編程接口的特點,當時的GPU在其他計算領域的應用是十分受限的。之后NVIDIA公司引入2個關鍵的技術解決了這一問題。在硬件結構上,NVIDIA的GPU采用統一的計算體系結構,由若干個同構的流處理器組成計算陣列,程序員看到的也不再是特定的圖形處理單元,而是通用的大規模并行處理器。在軟件層面,采用CUDA[9],大大簡化了GPU的編程,程序員不需要關注傳統應用程序接口(application programming interface,API)。除了NVIDIA之外,AMD和英特爾(Intel)也都有自己的圖形圖像處理器,但是目前都無法撼動NVIDIA在GPU領域的主導地位。本文以NVIDIA的GPU為案例進行分析。
NVIDIA公司GPU的成功很大程度上是因為借鑒了流處理器的思想,Imagine的負責人Dally W J教授加入NVIDIA公司成為首席科學家極大地推動了流計算在GPU領域的使用。圖2是一個典型的NVIDIA公司的GPU架構,它使用SM來構建整個設備,不同系列的GPU中每個SM包含的流處理器數量不等,由原來的8個到32個,再到如今的192個。每個SM是完全獨立可執行的,在GPU的內部,相當于集成了很多同構的數據流計算節點。在存儲層次方面, GPU涉及片上存儲空間和片外存儲空間。片上存儲空間包括指令cache、寄存器、可配置的共享存儲器和L1 cache以及L2 cache。不同于典型的流處理器,GPU采用軟件可管理的cache模式,既可以顯示管理數據,也可以在一定程度上利用cache的局域性,使得GPU可以適應不同的應用場景。GPU的片外存儲稱為全局存儲器(global memory),用來存儲大量的數據。
圖1???Imagine 流處理器體系結構
圖2???GPU的典型架構
CUDA是由NVIDIA開發的一種面向GPU通用計算的并行編程模型,支持C/C++、Fortran等高級語言。CUDA編程模型采用host+device的主從模式,在CPU上執行控制流,在GPU端執行計算流,其執行模式和線程組織層次如圖3所示。主機(host)CPU程序主要負責執行控制流復雜的串行程序段,并負責設備端計算kernel的調用以及主機與設備之間的數據傳輸等操作。kernel程序負責執行并行度很高的計算任務。當計算kernel被調用時,將根據執行配置變量<<<Dg,Db,Ns,S>>>創建并組織線程在設備上的執行層次。kernel程序通過線程級和線程塊級兩級并行對應用進行加速。線程是細粒度的并行層次,它執行在流處理器上,大量的線程可以同時執行,但是線程的執行順序并不是確定的,每一個線程通過自己的ID讀取對應的數據進行處理。線程的ID刻畫了數據流計算模型中不同數據的令牌的角色,使得即使線程的執行是亂序的,也仍然能夠保證程序的正確性。CUDA還提供了多個kernel同時執行的機制,就是為了保證流處理器的計算負載達到飽和狀態。
在CUDA的編程模型中,可以將kernel看成數據流編程模型中的一個執行節點,只要kernel的數據準備好了就可以執行指令。而在kernel的內部,不同的線程塊執行順序又是不確定的,只要線程塊執行需要的數據和資源就緒就可以執行指令。不同于傳統的數據流編程模型,CUDA編程模型在宏觀層面融入了控制流的思想,還是由主程序來控制整個執行的流程。在微觀層面,kernel的內部指令執行順序都是確定的,是典型的控制流過程。
圖3???CUDA編程模型和線程組織形式
3 數據流在大數據處理中的應用
在過去的幾年中,大型商用服務器集群中的批處理取得了長足的進步,以MapReduce?、Spar k為代表的面向批處理的大數據分析引擎已經建立了批量處理大數據集的編程模型。隨著物聯網、邊緣計算(edge computing)等技術的興起,流計算模式越來越普及,流計算中大量的應用程序通過將外部環境中生成的海量數據推送到服務器進行實時處理。這些應用程序包括基于傳感器的監視、股票交易、Web流量處理、網絡監視和移動設備。這些應用程序生成的數據可以看作事件流或數據流。在基于流的應用程序中,這些數據作為無界的事件元組序列推入系統。由于大量的數據進入這些系統,傳統的集中式解決方案無法對信息進行實時處理。但是大型集群中面向流式數據的分布式處理需求與批處理系統有很大的不同,因此分布式流處理框架(distributed streaming process framework,DSPF)應運而生,用以解決大規模的實時流式數據分析帶來的挑戰。
早期的流處理框架包括Auro ra、Borea lis、Stre amIt和 SPADE,這些框架主要關注單節點對單個/多個數據流的處理能力,缺乏可擴展性,難以適應數據量增加帶來的分布處理要求。隨著近年來互聯網應用的大規模普及,新的開放源代碼的分布式流處理模型(如Apache Storm、Apache Samza、Spark St reami ng、Heron、Flink和Nepture等)逐漸開始普及,成為大數據流式處理的最佳實踐解決方案,甚至開始逐漸取代一些老牌的商業解決方案,如谷歌Millwheel、Azure Stream Analytics、Amazon Kinesi s和Apache S4等。本節將重點圍繞Storm、Heron、Spark、Flink和Samza分析和介紹流計算在大數據分析處理中的相關技術特點。
Apache Storm使用計算圖(computing graph)來描述應用程序(在Storm中也被稱為拓撲),它定義了處理元素(即Spouts和Bolts)以及數據(即元組)流動的方式。拓撲是一個無限期常駐內存運行的程序,只有在接到用戶指令的情況下才會停止運行。與其他應用程序模型類似,拓撲接收大量數據并將其劃分為塊,這些數據塊被分配到具體的集群節點,并由該節點上的任務進行處理。節點之間以元組序列的形式交換數據。Twitter的Heron采用了一系列的改進架構和機制來達到比Storm更高的效率。Heron拓撲是基于流程的,每個流程獨立運行,這簡化了調試、分析和故障排除過程。其拓撲可以通過一種被稱為背壓(back pressure)的內建機制在某些組件滯后時進行自調整。與Storm類似,Heron拓撲也采用有向圖描述,其頂點同樣是Spouts或Bolts的一種,邊表示在頂點間流轉的數據流。
Apache Spark是一個更加通用的集群大數據計算解決方案,它擴展了MapReduce模型, 以支持交互式查詢和流處理。Spark引入了彈性分布式數據集(resilient distributed dataset,RDD),從而支持在內存中運行各種工作負載,并允許以容錯方式在內存中運行計算。RDD被定義為一種不可變的且支持分區的數據記錄集合,并提供了一套用于在多個數據項上執行操作的編程接口。出于容錯的目的,Spark將為構建數據集而執行的所有轉換進行記錄,從而形成所謂的世系圖(lineage graph)。為了更有效地處理故障,Zaharia等人在Spark的基礎上提出了D-Streams,即一種基于Spark Streaming的離散流處理方法。D-Streams采用微批處理方法,將流處理組織為在小時間窗口上定期執行的批計算。在短時間間隔內,D-Streams存儲接收到的數據,然后集群資源將這些數據用作輸入數據集,以便在間隔時間過后執行并行計算。Flink為數據流和批處理應用程序提供了一個公共運行時間。Flink應用程序的結構可以是任意的有向無環圖(directed acyclic graph,DAG)。Flink使用執行轉換的流的概念,其中流標志一個中間結果,轉換表示將一個或多個輸入流轉換為一個或多個輸出流的計算操作。Flink應用程序在運行時被映射轉換為一個工作流,該工作流從一個或多個源開始,包含一組轉換操作符,并以一個或多個接收器結束。Apache Samza是一個使用Apache Kafka進行消息傳遞 ,使用Apache YARN進行作業部署、資源管理和安全管理的流處理框架。Samza應用程序是一個數據流,與Storm類似,其作業都按照圖的形式進行組織,Samza本身并不支持DAG拓撲。在Samza中,每個作業都是一個可以獨立部署、啟停的實體。與Heron一樣,Samza將一個單線程的進程作業映射到一個CPU核心。每個Samza任務都包含一個用于記錄狀態的嵌入式鍵值存儲。在計算過程中對某個鍵值的更改都將被擴散到集群中的其他機器中,以便在出現故障時快速恢復任務。
面向數據流的數據分析是目前大數據分析中非常受關注的問題之一,學術界和產業界也投入了大量的研究力量。通過上述數據流處理系統可以看到,數據流處理的關鍵在于以下幾個方面。
首先,面向數據流的數據處理模型的設計問題。Hadoop和Spark的出現大大地推動了大數據生態的發展,也成為大數據分析領域的事實標準。但無論是Hadoop還是Spark,其本質都是批處理式的計算模型,雖然為了適應數據流分析的需求,2個平臺都分別發展了各自的流式擴展,但是批處理模型與流處理模型的本質區別還是決定了Hadoop和Spark從計算模型到資源調度機制都不是完全面向數據流處理需求的。因此,在建設面向數據流的大數據分析系統時,首先應該重點思考的是設計與實現真正面向數據流的數據處理模型,使得數據流分析更加高效易用。
其次,數據流模型與批處理模型的對立統一問題。無論從哲學的角度還是從實用的角度,在建立標準的面向數據流的數據處理模型的基礎上,都必須要考慮的是對傳統的批處理模型的兼容性,從而降低系統維護的復雜度。這包括2個方面的研究:一是對于批處理模型的流式轉化,重點解決批處理作業在流式計算模型上運行的正確性和效率問題;二是流處理模型對批處理模型的生態環境的兼容,降低應用遷移的復雜性等。
最后,數據流計算模型的內在優化機理問題。數據流計算模型通常被歸結為一個有向無環圖,在數據流計算過程中,面對不同數據流處理引擎的特性,如何對DAG進行優化是一個很嚴峻的挑戰。例如,在數據流圖編譯期的靜態優化和在執行過程中的動態調整優化方面依然有很多的工作值得去做。
上述3個問題都是目前面向數據流的大數據分析系統研制過程中需重點關注與解決的問題。但是隨著眾多數據流計算系統的逐漸成熟,一些新的挑戰逐漸浮出水面。
第一,異構的數據流處理引擎的高層抽象描述。如何在如此多樣的數據流處理引擎中提取出一個對數據流分析的通用描述,解決多個數據處理引擎的計算模型間的兼容性和模型轉化問題,是值得關注的。這樣的抽象包括計算模型級的抽象、數據結構的抽象和應用編程接口的抽象。構建這樣的抽象可以使不同引擎的應用能夠有效地相互轉化,更好地推廣數據流處理技術。
第二,抽象數據流計算模型的優化技術。在數據流處理引擎高層抽象的基礎上,可以更好地設計通用的與引擎無關和與引擎有關的優化環節,在充分優化抽象的計算圖的基礎上,實施面向異構處理引擎的優化,可以更好地提高數據流處理的效率。
第三,面向邊緣計算的數據流處理優化技術。流式數據處理對實時性的要求越高,對計算能力前置的要求也就越高,在數據產生的源頭就對數據進行必要的處理是支持數據流高效率、高質量處理的必然要求。但是當前對數據流處理技術的主要研究還是面向數據中心的,對邊緣設備以及云-邊-端的有機結合缺乏深入的探究。顯而易見,這會是未來的一個新的研究增長點。
4 GPU在大數據處理中的應用
使用GPU進行計算過程的加速已經成為學術界和產業界研究的主流,在很多業務領域有成功的應用案例,如深度學習、密碼分析、基因測序、入侵檢測以及數據庫系統優化等。GPU為應用開發提供了易用且性能強大的并行計算能力,極大地提高了各類計算密集型應用的性能。在大數據處理方面,將GPU用于MapReduce模型優化,也已經取得了一系列的成果。Mars率先在GPU上實現了一套MapReduce框架,實驗結果顯示Mars的數據吞吐量能達到面向NUMA結構實現的MapReduce框架的10倍以上。然而,Mars沒有針對GPU架構特性進行優化,無法充分發揮GPU的性能優勢。MapCG為Mars的實現增加了全新的原子操作,通過這些原子操作可以支持GPU對全局存儲器進行動態內存管理,從而減少GPU上MapReduce 的無效迭代。Catanzaro等人開發了一種面向GPU的受限的MapReduce架構,受限模型包括以下假設和約束:計算過程中所有鍵值對(K-V pair)的鍵(key)是能夠事先知道的,且每個Mapper都只有一個輸出。基于這樣的約束,該架構取得了更加突出的計算性能,但也限制了該架構的泛化能力,無法直接處理規模可變的數據集。Ji和Ma的方案則是希望通過GPU共享存儲器來加速MapReduce應用,但該方案中存在大量的線程同步開銷,整體性能并沒有顯著提高。Chen和Agrawal的設計則是利用共享存儲器來規約減少部分鍵值對共享的通信開銷,該方法適用范圍較為狹窄,只能優化通信量較大的MapReduce操作。
GPMR是面向GPU集群的MapReduce框架。該方案依據GPU集群規模將大規模的輸入數據分割成近似等大的數據塊,通過在集群內進行數據聚合,可以降低節點內計算器件之間和MapReduce任務中的通信。但是,該方案只能支持集群中每節點只有一個GPU的拓撲,且只支持定長的輸入數據,這為該方案的適用性增加了不必要的約束。MGMR針對GPMR的問題,實現了一個支持單節點多GPU且面向GPU集群的MapReduce框架。該方案在Mapper產生中間鍵值對,采用一種樣本排序算法將這些中間結果散列至多塊GPU上進行Reduce處理。但該方案在存在數據傾斜的情況下,可能出現較為嚴重的負載均衡問題。MGMR沒有將CPU與GPU的計算進行進一步的并行,CPU的利用率較低。參考文獻[31]對MGMR進行了進一步的改進,采用流水線方式對CPU和GPU的計算和處理進行重疊,提高了處理效率。
總體來看,GPU在大數據方面的運用還不是非常理想,主要體現在2個方面:一個是目前主要使用GPU編程模型完全重寫MapReduce計算模型,從而構建面向GPU的MapReduce框架,這種方式難以與現有的主流大數據軟件生態結合,無法支持現有大數據應用的平滑遷移,也無法很方便地對GPU環境下的大數據應用進行擴展,限制了應用推廣的前景;另一個是對GPU的使用粒度還比較粗放,沒有充分發揮GPU的硬件特性,目前還很少有研究關注利用GPU的眾核計算單元實施向量化運算,從而提高大數據分析效能,也缺乏對顯存使用和優化方式的研究。在后續的工作中,對GPU的細粒度使用以及與大數據生態環境結合的研究內容可能成為新的增長點。
5 結束語
數據流技術在計算機硬件體系結構和軟件編程模型方面都具有十分重要的應用,現代GPU在硬件結構和編程模型方面都借鑒了數據流計算的思想,并且在人工智能和高性能計算領域獲得了顯著的成果。當前典型的大數據處理框架都采用了數據流的思想來提高并發效率。隨著大數據智能時代應用對系統在高吞吐和低時延等方面的要求越來越高,基于GPU的大數據處理器系統將成為未來發展的趨勢。目前,部分大數據計算系統已經融合了對GPU的支持,其目的就是利用GPU的強大計算能力為大數據應用服務。因此,基于數據流技術,研究面向CUPGPU異構系統的大數據處理技術和系統,滿足大數據處理在高吞吐和低時延等多方面的需求,具有十分重要的現實意義。
作者簡介
蘇華友(1985-),男,博士,國防科技大學計算機學院并行與分布處理國防科技重點實驗室助理研究員,主要研究方向為高性能計算和并行優化 E-mail:shyou@nudt.edu.cn。
梅松竹(1984-),男,博士,國防科技大學計算機學院并行與分布處理國防科技重點實驗室助理研究員,主要研究方向為大數據分析及其性能優化 。
李榮春(1985-),男,博士,國防科技大計算機學院并行與分布處理國防科技重點實驗室副研究員,主要研究方向為深度學習、強化學習與高性能計算 。
竇勇(1966-),男,博士,國防科技大計算機學院并行與分布處理國防科技重點實驗室研究員、常務副主任,主要研究方向為深度學習、高性能計算、可重構計算等 。
大數據期刊
《大數據(Big Data Research,BDR)》雙月刊是由中華人民共和國工業和信息化部主管,人民郵電出版社主辦,中國計算機學會大數據專家委員會學術指導,北京信通傳媒有限責任公司出版的期刊,已成功入選中文科技核心期刊、中國計算機學會會刊、中國計算機學會推薦中文科技期刊,并被評為2018年國家哲學社會科學文獻中心學術期刊數據庫“綜合性人文社會科學”學科最受歡迎期刊。
關注《大數據》期刊微信公眾號,獲取更多內容
往期文章回顧
《大數據》2020年第3期目次&摘要
專題導讀:數據資產化探索
數據資產化框架初探
基于利潤最大化的數據資產價值評估模型
基于區塊鏈的數據市場
數據資產標準研究進展與建議
面向價值實現的數據資產管理體系構建
專題導讀:面向大數據處理的數據流計算技術
面向大數據處理的數據流編程模型和工具綜述
數據流計算模型及其在大數據處理中的應用
數據流計算環境下的集群資源管理技術
分布式數據流計算系統的數據緩存技術綜述
總結
以上是生活随笔為你收集整理的数据流技术在GPU和大数据处理中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SQLite-C语言实战
- 下一篇: 证券期货行业监管大数据治理方案研究