大規模高能效圖遍歷: 一種高效的數據密集型超級計算方法

Large-Scale Energy-Efficient Graph Traversal: A
Path to Efficient Data-Intensive Supercomputing

作者:

Nadathur Satish, Changkyu Kim, Jatin Chhugani, and Pradeep Dubey

Parallel Computing Lab, Intel Corporation

摘要

圖遍歷是一種在社交網絡、商業分析等領域中廣泛使用的算法,在高性能計算領域中更是如此。這使得對高性能計算機的評價不僅僅是千萬億次的規模,還需要有“GigaTEPS”(十億次邊訪問每秒)的能力。因此一個新的對高性能計算機的評價標準Graph500產生了。

對於現在的CPU架構,在單個節點中的圖遍歷算法已經有了很深入的研究。然而,圖遍歷在當前的計算機集羣實現過程中遇到了數據通信高延時和需要大量跨節點傳輸的問題,導致了性能的低下和能源的浪費。在這篇文章中將提到一種方法,這種方法結合了高效的低消耗數據壓縮技術以及延遲隱藏技術以減少數據量的傳輸。文章中的方法對單節點的圖遍歷算法進行優化,達到了國家最先進水平性能的6.6倍,也有同樣數量級的能源節省。實驗結果表明,在201111月份的Graph500排名中,使用這種方法可以達到排名第二的機器的性能,而且比第二名的機器少用了5.6倍的節點,同時單節點的性能在Graph500TOP10中排在首位。對比最優的單節點圖遍歷算法,這種方法僅有1.8倍的性能開銷,並允許接近線性的擴大節點規模。

一.簡介

手機通信、藥物數據以及社交媒體交互在過去的十年中以一種爆炸式的速度產生了大量的數據,對這些大數據的分析是一個巨大的挑戰。圖作爲一個模型已經被用在許多方面,例如像GoogleFacebook還有Twitter的社交網絡分析,生物數據系統,以及網頁搜索等。由於在這些方面的大規模數據增長,在擁有兆兆字節以及更多數據的圖中做遍歷和分析顯得越來越重要。

對於現今的數據規模,單個計算節點是不可能存得下整個圖的,因此需要大規模的集羣或者超級計算機。然而,將圖遍歷的算法分佈在一個集羣中實現已經被證明是一個很大的挑戰。因爲這個問題的重要性,圖算法已經被用來作爲對超級計算機性能評價的第二個準則,Graph500基準正是在這樣的背景下被提出。Graph500是按照對圖的廣度優先搜索進行排序的。這個過程有一系列的步驟:在每一輪迭代中,一組邊界頂點將與他們相鄰的未訪問的節點加入隊列,用以下一深度的繼續操作。這個算法產生整個圖的最小的深度和對於每個節點的父節點。這個過程是圖分析的基本構件,在其他圖應用的數據訪問方面也有着相同的特性。圖分析已經被認爲是百億億次級挑戰的應用之一。

電力消耗相關的能源消耗在運行一個集羣的總體消耗中佔據着越來越大的比重。在以後這會變得更加昂貴。計算的供電還有運行時間需要消耗能源。一個重要的減少能源使用的方法是顯示運行時間。整體的性能由兩方面決定,一個是單節點的性能,另一個是在一個集羣中節點級別的互訪。文章中首先介紹單節點的優化遍歷算法,接着擴展到多個節點。文章提到的算法使用了所有權的方法,即每個節點都擁有者一部分輸入節點,以及對應的鄰接節點信息。每一層的邊界頂點都需要和擁有這些頂點的計算節點通信。在這個過程中,這些大量的還有高延遲的通信是一個最主要的性能瓶頸,也是這邊文章重點關注的優化方向。

我們首先關注減少通信的數據量。典型的實現方法是對每一個訪問的邊傳遞可能的邊界頂點以及父節點,依據Graph500每一個點需要16個字節表示。這就要佔超過96%的整體運行時間。一個減少2倍數據量的方法可以很容易通過使用4字節的本地節點標誌去對佔8個字節的頂點和父節點標誌進行編碼。同時,有很多重複的邊界頂點(有着不同的父節點)需要傳輸,我們可以通過傳輸獨特的邊界頂點與明確的父節點實施解重複。然而這樣的方法沒有足夠的壓縮。更進一步地,因爲頂點和父節點標誌隨機的共性,結果數據的傳輸擁有着很高的隨機性,數據傳輸只有很低的壓縮率。

接着我們通過父節點和邊界節點傳輸解耦合提出一種改變的算法。與先發送可能的父節點相比,我們僅僅傳輸一個節點第一次訪問的父節點。因爲這樣對於每個節點只發生一次,這樣就會很大程度地減少了整體的數據流量到1.8~1.9倍。另外,已經傳輸的邊界節點現在可以以一種熵較少了的方法進行重新排列。我們使用了位矢量來編碼這些重新排列的頂點,這樣對於每一條邊整體壓縮率是以前發送8個字節的6.2~9倍。

爲了減少數據通信延遲對於性能的影響,我們使用了兩方面的優化。首先,我們使每個節點上的通訊以及計算同時進行。這樣做的目的是在通訊發生時保持節點的忙碌。第二,由於父節點之間的通信會牽扯到小信息的傳輸導致高延遲的影響,我們嘗試將這些傳輸與邊界頂點通信結合。然後,在給定的深度中,這些通信是相互獨立的,父節點的通信只能在邊界頂點已經接受和處理之後開始。因此,我們使用管道技術將給定深度的邊界頂點通信和現役深度的父節點傳輸相結合(使用軟件流水線概念)。這兩個技術使得整體性能有着2.1倍的提升。

相比最近發佈的以集羣實現的圖遍歷系統,使用了壓縮和延遲隱藏技術後可以得到超過6倍的單節點的性能提升。對於使用每天邊8個字節的基準性能,我們得到6.6倍性能上的提升。減少數據量的傳輸同時也降低了電源的消耗。基於基準的集羣實施,電源的減少和性能上的提升的結合使得能源的消耗有8.1倍的改進。據我們所瞭解,這是首次文章中提及和測量Graph500中的能源消耗。文章實驗中實現了Graph500基準中在201111月排名第二的擁有115GigaTEPS320個節點(5120Intel Xeon E5-2670處理器)的Intel Endeavor集羣。在能量使用方面,我們使用Intel NodeManager API來測量能源,實現了1.5MTEPS/Watt的效果,這也可以用於最爲將來的一個比較基準。文章中介紹的使用壓縮和隱藏延遲的技術可以適用於廣泛的圖遍歷算法,例如強連通分支,最短路勁以及中介中心。

二.問題描述

圖問題是一個在無向圖G = (V ,E)中廣度優先搜索的問題。鄰接矩陣使用Adj表示。給定一個開始的頂點s,這個算法產生輸出對於每個頂點vV 有(a)從s到v的最少邊數(bv的父節點(定義爲從s到v最短路徑中v的前一個頂點)。

一個原始的BFS算法使用多步循環實現,每步循環對給定的一組邊界頂點BVC進行迭代,尋找與每個頂點相鄰的未訪問的Adj結構並更新深度(Depth)(還有父節點(Parent)),和把他們加入到下一輪邊界狀態隊列BVn中。在每次循環中有一個同步的點。建立一個高效的多節點BFS遍歷挑戰在於(1)減少每個節點中由於AdjDepthParent等空間上不相關性造成的隨機訪問的影響(2)提供一種高效的分散式機制,以標誌一個相鄰頂點是否已經被訪問過。這可以在延遲和帶寬消耗方面帶來低的開銷。(3)不斷增加的節點規模可以達到高的性能和能源效率。

Graph500 基準描述:Graph500基準制定了附加的條件要求。圖G是特定的無尺度無向Kronecker圖。對於每條邊需要使用8個字節要存儲,其中每個頂點需要至少48位。無向邊的總數是頂點的16倍。性能的表示是以TEPS爲單位,指的是遍歷無向邊的數目和所使用完成BFS時間的比例。所使用的BFS代碼必須使用不同的初始頂點運行64次以得到統計上的平均運行時間。

在文章中,使圖中的每條邊變成不同方向兩條,將無向圖轉換成有向圖。對於每個方向,度數ρ乘以兩倍達到32。因爲遍歷了Graph500標準輸入中的兩倍數量的邊數目,因此在文章中得到的性能結果是實際結果中除以2TEPS,以符合Graph500中指定的要求。

三.算法描述

在本節以及後續的章節中,文章使用如表一所示的符號表示優化的多節點BFS算法。在多節點的BFS遍歷算法中使用了單節點的最優化算法作爲子模塊來擴展到多節點系統,同時對MPI通信做了優化以減少在每個每個節點中的計算量以及數據傳輸,以儘可能在效率上接近單節點性能中的最優效率。以下將簡要介紹單節點算法來說明文章中的計劃。

表一:在本文所用的符號

符號

表示

符號

表示

|V |

圖中頂點數

|E|

圖中邊數

|V `| 

已經指定深度的頂點數

|E`|

已經被訪問的邊數

|VS|

節點S中的頂點數

|ES|

節點S中的邊數

ρ`

已遍歷頂點的平均度數

D

圖的深度

M

計算節點數目

P

每個節點中的核數

BM

在每個節點主存上B/WGB/秒)

Freq

核的頻率(GHz

|VIS|

VIS數組的大小,等於|V|/8字節

L

高速緩存大小(字節)

A.單節點BFS遍歷:

這個算法維護了一個常駐內存的輔助位結構(表示爲VIS),以檢查一個頂點是否已經被賦值一個深度。VIS被分成NVIS個部分,使得每個部分都適合整個最後一級緩存的大小,以及可以使用一種原子性的方法來更新以減少延遲和開銷對性能的影響。這個算法在不斷的循環中迭代,每一步都包含了以下兩段程序(如圖一):

在第一個程序片段:對於每個線程,平均分割邊界頂點集()。每個線程都被賦予一組的頂點以訪問Adj。然而,因爲不連續的頂點會指向空間上不鄰近的內存區域,這種訪問模式不可以通過硬件上的先獲取來捕獲。因此,當對一個頂點訪問Adj時,發出預取鄰域的指令將後續頂點存在第一級緩存中。對於每一個已經訪問的鄰域節點,計算他們的bin_id(根據vertex_id)並加到相關分區(PBVt)中。爲了幫助鄰域計算,需要數對(vertex_id,parent_id)。正如以上所述,NVIS分離部分被創建爲緩存友好的VIS訪問。在第一個程序片段的結尾有一個等待。

圖一:單節點的BFS圖搜索

在第二個程序片段:每個線程已經被平均地分到一部分頂點。當對一個給定的頂點分區進行操作時,對於每個頂點,執行UPDATE_BV_VSI(原子性地更新VIS數組),將一系列的頂點從VIS中更新到下一步邊界狀態()。假設頂點沒有被訪問到,它的depth和parent都要更新。當沒有新的節點添加到時,算法結束。

B.可擴展多節點算法:

一個重要的原因爲什麼圖遍歷是一個很難擴展的問題是遍歷需要很多的節點間通訊,但是節點間的帶寬卻是受限的。舉一個例子,在一個1GBps的無線寬帶鏈接中(假設節點頻率爲2.6GHz)傳輸一條8字節的邊需要20.8個時鐘週期,這比單節點的性能要差10倍。另一個原因是節點間通信的高延遲。在節點間的像PBV數據結構傳輸的延遲比共享存儲訪問的延遲要高出一個數量級。正是因爲這樣的原因,多節點實施需要另外的優化。

在這篇文章中,提及到一種使用上述技術結合的圖遍歷方法。這種方法可以在Graph500列表的萬億字節或更大規模中最大程度地提升多節點實施的效率。

節點之間的數據分離:Adj數組在節點間是分佈存在的。我們將頂點分佈在不同的節點中,每個節點保持它擁有的頂點的鄰接數據。因爲每個頂點的度數有很大的區別,我們按照鄰接結構的大小將頂點分離,使得每個節點都有差不多大小的鄰域信息。每一個節點保持其他節點的頂點範圍。對於一個節點m,我們用SVM來表示初始節點,因此節點m擁有的頂點範圍是[SVM…SVM+|Vm|]。每一個節點負責在每一個深度中遍歷一組子集擁有的BV頂點子集。這些數據結構都保存在每一個節點的非均勻存儲訪問感知方式中,就像在單節點算法的時候一樣。

算法概要:圖二展示了用於多節點遍歷的整個圖的算法。在某一個遍歷的深度中,每個節點(m)都會根據一系列的BV去尋找他們的鄰近頂點,像單節點算法一樣,並生成PBV數組。然而在PBV中的頂點可能屬於任何的節點。這就需要在PBV中的頂點與擁有這些信息的節點間進行交流。每一個節點都會從其他所有的節點中接收和收集一系列屬於自己的PBV記錄,接着繼續更新DP數組併產生新的BV數據以用於下一個深度的遍歷(像在但節點實施一樣)。

圖二:多節點的BFS圖遍歷算法

爲了更高效地在不同節點間對PBV中的頂點進行通信,我們只發送一個擁有所有需要傳播數據的一條信息。這需要我們將每一個節點PBV記錄打包成M份(M代表了節點的總數),其中每一個包(PBVM)得到所有頂點在節點m中記錄。這可以很容易地在保持VSI緩存的同時合併到NVIS中,這總共需要M*VIS個箱。對於小型或者中型的接近2000個節點的集羣,我們發現這樣附加的打包沒有導致明顯的性能退化.

由於節點間的帶寬限制,主要的性能關鍵是在節點間的大量數據傳輸。當對每個節點擁有的頂點遍歷其Adj時,一對(vertex_id,parent_id)將會被加入到PBVM中。當通過每一循環遍歷後,這些數據會傳播到相關的節點中。我們現在關注這些數據的通信,並提出一種算法減少需要傳輸的數據量的方法,以至於用在計算方面用最低的花銷提高性能。保持整體花銷的低水平是一件很困難的事情,因爲這些步驟都要在遍歷的算法過程中實施,爲了減少傳輸數據量帶來的花銷會被加入到整體的BFS遍歷花銷之中。

C.通過壓縮減少節點間的數據流量:

方案一,對(vertex_id,parent_id)使用四字節存儲:每一個頂點都使用按順序的64id,這樣原始的實現需要對每個vertex_id以及parent_id使用8個字節來,總共對於每一條邊需要發送16個字節。

但是,對於現在給定的在每個節點的主存大小,||(在節點m中的頂點個數)小於,這在每個節點中需要大於1萬億字節的存儲空間。由於每個節點都保存着一個範圍的頂點,對於每個節點,可以轉換爲local_vertex_id(通過對每個節點減去最少的vertex_id),和相應的local_parent_id。這樣對於每一條邊可以減少8字節的傳輸,這也所謂後面更多的提升和改進的基礎。

方案二,數據冗餘清除:現在主要關注的是PBV中值對的數據在節點間的傳輸。很容易可以發現,在PBV中整體值對在節點間的傳輸數目和所有的高度結合起來接近圖中所有已遍歷邊的數目。但是,所有的在PBV數組中不重複的記錄數目只能是圖中已經遍歷的頂點數目,以一個因子ρ`(標準化的圖度數)次小於邊數。這一位這每一個在PVB中的記錄都會重複大約ρ`次。還有,由於結果的輸出是一個樹,每個頂點實際只需存儲一個父節點,因此有很多冗餘的值對因爲潛在的分佈不共享的多節點部署被傳輸。

雖然因爲這些重複的節點會在不同深度的不同節點出現,因而不能消除所有的這些重複,但是知我在每個節點的每一次特定深度的重複可以消除。對於Graph500中的Kronecker圖,ρ`∼64,和大多數在一些深度中被遍歷的邊,會增加重複的可能性。

因此,在傳遞PBV對之前,所有擁有相同的local_vertex_id的值對都會合成一個相同的local_vertex_id,然後從所有值對中任意地選取一個local_parent_id。我們使用一種高效的低開銷的位結構方法來達到這個目標。這個節點間通信減少的實現是基於圖特性的一個函數,而且可以隨着頂點的平均節點度增長而增長。在實際中,對於Graph500中的Kronecker圖,對於不同圖的大小,我們可以實現介於1.2~1.4倍之間的通信減少

方案三:可變長度壓縮:作爲一個極限研究,我們實施了在節點間的動態壓縮。特別地,處於這樣的目的我們使用了bzip2壓縮和解壓算法。在這樣的極限研究中,我們同樣使用了local_vertex_id去減少結果的熵和提高數據傳輸的壓縮率。但是,最後實現的數據傳輸減少了1.05~1.15倍,卻帶來了很大的計算開銷(節點11~23倍增加的計算時間)。因此我們使用了接下來的一種算法改變了將要被傳輸的PBV內容,如下面描述。

D.將Parent_IdsVertex_Ids分離:

正如上面提到的,對於每一個指定深度的頂點,只需要存儲下一個父節點信息。但是我們預先地發送了parent_id連同vertex_id一起,即使僅僅需要傳輸一個可行的parent_id就可以了。因此我們修改了這種協議,取而代之每個節點只需傳送相關的vertex_id作爲PBVM的一部分。一旦節點(這裏是m)從其他不同的節點中接收到了所有的PBVM包,它就會檢查自己本地的VIS數組,如果一個頂點還沒有被記錄下深度,這個節點就會被添加到Parent_Query(PQ)包中,併發送回原來發送PBVM包的節點中。注意對於任何給定的頂點在這一步被更新的時候,這個父節點信息請求只需發送到任何一個源節點中,而不需要發送到所有來源節點。

在遍歷了所有的頂點後,這些Parent_Qurey包就會傳輸回來,然後源節點計算相關的父節點並且送回Parent_Response(RR)包到目標節點(m)中,然後目標節點(m)就會利用這些信息設置節點中頂點的父節點。這帶來了戲劇性的通信減少,因爲相比之下,對於每個節點,原來平均ρ的通信降低到2。這帶來了倍的通信量減少。

就節點間的通信量減少而言,到此爲止我們實現了1.8~1.9倍的降低。另一個發送分離的vertex_ids的好處是現在這些ids可以以任何的方式被被重新排列——因爲他們全部都便是這一系列的對應於某個深度的頂點集。這樣我們就可以進一步地對他們進行排序並進一步地通過壓縮來減少通信量,這將會在下面描述。

方案四:位向量表示:對於一個給定的擁有一系列頂點的PBVM包,我們可以通過維護一個位數組(BitArraym)來表示,其中每一個頂點用一位來表示,如果存1就說明頂點包含在PBVM中,如果不是則存0。對於一個節點m來說,BitArraym的全部大小等於字節。如果BitArraym的的大小比PBVM小的話,我們就會傳輸BitArraym我們傳輸的BitArraym,與PBVM有着相同的表示,除非頂點集現在已經被表示爲一種排好序的方式,這樣的話使用位向量表達對BFS遍歷的結果沒有什麼影響。主要到的是傳輸BitArraym我們實際上已經自動執行了離散化,因爲對於每個頂點只發送一次。對於一個很大通信量的深度中,這種方法可以導致將近每條邊0.9~1.3字節傳輸,不同的性能依賴於節點M擁有的頂點數。

即使還有可以做更加深入壓縮的可能(使用實時delta編碼以及可變長度壓縮),上面所說的方法在試驗中證明對於多大上千的節點足夠滿足需求。主要到所有這些數據減少或者壓縮的技術都需要在運行時實施,而且數據在每一次計算中都需要解壓縮,這樣耗費的時間都要在整體的時間消耗中被考慮。因此,在存儲通信量減少方面需要權衡高代價的壓縮技術對結果影響的代價。

四.實驗評價

平臺描述:我們在一個有320個節點的Intel Endeavor 集羣中來檢驗我們的圖遍歷算法,每個節點有64GBRAM162.6GHz的基於E5-2670系統的雙插槽Intel Xeon處理器。總共的核數爲5120個。每一個核有64KB的一級L1緩存和256KB的二級L2緩存。在同一個插槽的核共享最後一級L320MB緩存(LLC)。所有的緩存都保持一致性。不同的節點間使用QDR Infinband 4X連接,峯值可達4GB/s的帶寬,使用雙向的14元胖樹拓撲結構。我們也在基於Intel XeonX5670處理器以及Intel Xeon E5-2670節點系統的NASAPleiadas超級計算機運行我們的代碼。實驗中使用Intel Composer XE2011編譯器以及Intel MPI 4.0.3內庫。

算法的可擴展性:圖三(a)顯示了我們算法在320個節點中使用標量基準的2個線程的核可擴展性。這裏從兩個線程開始因爲一個線程爲了實現MPI操作而保留。圖中顯示可擴展性在28線程的時候呈現接近線性的趨勢。這裏的代碼首先與存儲訪問的延遲。一旦我們使用SMT(同時多線程),延遲就被隱藏了並帶來了性能1.4倍的提升。現在算法主要被存儲的帶寬所限制,因此我們得不到更高的可擴展性。最後,我們使用socket來擴展得到1.85倍的提升。單節點代碼的NUMA感知帶來了低的socket間通信

圖三(b)顯示了從32320個節點從到個頂點的一個弱可擴展的趨勢。在小於32個節點時,算法得到的效果的是完全線性的。從32320個節點,我們得到一個接近線性的可擴展性,9.6倍相對於10倍的峯值。注意到每個節點中的性能比單一節點的最優性能降低了1.8倍,原因是在壓縮和解壓的過程造成了開銷。


圖三:在Graph500中圖遍歷的擴展性使用輸入(a)線程數目(b)節點數目

性能比較:圖四中顯示了不同優化方案對相對性能的影響。所有的在圖四種的性能都和上述的方案相對應。第一欄顯示了我們再單節點實施的最優性能,使用方案一中所說的每條邊發送8個字節的策略。在這種實施對逆向算法的影響大概有1.7倍。這種影響隨着後面我們對向前階段使用MPI來優化消耗更少的時間而逐漸降低;而在逆向階段基本保持不變。這樣的實施在計算和通信之外還要多花58%的時間,這種低效是因爲節點間的動態負載均衡帶來了很大的影響,某些節點遍歷更多的邊和比其他節點傳送更多的數據。

第二欄顯示了方案二的實施,以1.6倍更多計算爲代價,實現了減少冗餘以及使用了每條邊傳送6個字節的方法。這樣的方法比前一個有了1.33倍的性能提升,大概是整體帶寬提升的比例,儘管增加的計算。我們注意到在負載均衡的過程中,那些比較低效的節點同時擁有了更多的冗餘數據,因此減少冗餘同時也帶來了更好的負載均衡。

第三欄顯示了分離父節點通信同時使用方案二的情況。這裏性能進一步提到到1.4倍。這裏由於需要查找父節點會帶來了一些新增小計算。

接着我們顯示了方案四種使用位矢量壓縮技術的性能。是用這樣的技術可以顯著地減少把MPI帶寬需求從4.13字節每條邊降低到2.63字節每條邊,就是大概1.6倍性能的提升。在這個方案中,我們注意到逆向算法只給出了1.4倍的性能提升,由於前面程序算法的更改已經對性能有顯著的提升。相比前一個方案,整體性能1.75倍的提升比MPI帶寬的降低要大。這個主要的原因是負載均衡在整體的運行時間中降低了20%~30%;發送的位矢量是一個固定長度不相關的PBV數組。壓縮方法帶來整體性有3.2倍的提升。

最後,兩個將計算與通信重疊的改進方法還有管道技術將性能提升到方案四的2.1倍。這樣我們最後的方案在整體的性能收益上是原始方案一的6.6。將計算和通信重疊帶來了1.7倍的性能提升,而管道技術有1.2倍更進一步的提升。最後的這個方案中,花在計算和通信的時間是差不多的,整體計算所花的時間比通信花的時間只差5%

圖四:在多節點上不同優化方案得到的性能比較

能源比較:在圖五中顯示了使用優化的壓縮技術延遲隱藏技術得到的能源高效的好處。這樣的優勢源於上面提到的性能上的提升以及壓縮帶來的節點間通信數據量的降低。雖然我們並不直接測量相互連接消耗的能源(只是測量每個計算節點的能源消耗),由於需要將包在用戶可見的區域間拷貝,高的節點間通信也會帶來在計算節點上更高的存儲帶寬消耗。在實際中,經過了算法的優化,我們可以看到有1.25倍的能源被節省下來(平均240Watts相比沒有優化之前的300Watts)。另加上上面提到的6.6倍性能的提升,我們得到整體8.1倍能源效率提升。整體的能源效率爲1.5MTEPS/Watt

圖五:不同優化方案得到的能源效率比較

五.結論

在這篇文章中,展示了通過結合低消耗的數據壓縮技術降低通信數據量以及延遲隱藏技術,得到了在多節點集羣上圖遍歷的高性能表現。結合這個算法的創新性以及實現最大限度地利用所有現代集羣爲基礎的多核心處理器的微架構,我們得到了在圖遍歷中6.6倍性能以及同等數量級的能源效率的提升。文章中得到的結果可以達到201111Graph500中排名第二的結果並且比原本的實現減少使用了5.6倍的節點,同時在排名的前十名中有着最高的單節點性能。

在以後的研究中有着兩個方向。一個是可以將算法使用在更大的集羣上並使用delta編碼以及可變長壓縮提升壓縮率。另一個是需要加強能源消耗測量的方法以更好地解釋由於降低通信帶來的互連功耗的降低。

參考文獻

[1] J. Chhugani, N. Satish, C. Kim, J. Sewall, and P. Dubey, Fast and efficient graph

traversal algorithm for cpus : Maximizing single-node efficiency,” Parallel and

Distributed Processing Symposium, International, vol. 0, pp. 110, 2012.

[2] The Graph 500 List (Nov 2011),” http://www.graph500.org.

[3] H. Kwak, C. Lee, H. Park, and S. B. Moon, What is twitter, a social network or

a news media?” in WWW, 2010, pp. 591600.

[4] A. Mislove, M. Marcon, P. K. Gummadi, P. Druschel, and B. Bhattacharjee,

Measurement and analysis of online social networks,” in Internet Measurement

Conf., 07, pp. 2942.

[5] M. Fernandez, D. Florescu, A. Levy, and D. Suciu, A query language for a Website

management system,” SIGMOD Rec., vol. 26, pp. 411, September 1997.

[6] U. Kang, C. E. Tsourakakis, A. P. Appel, C. Faloutsos, and J. Leskovec, Radius

plots for mining tera-byte scale graphs: Algorithms, patterns, and observations,” in

SDM, 2010, pp. 548558.

[7] D. Bader, Exascale Analytics of Massive Social Networks,” 2010, AN09 Minisymposium

on High Performance Comp. on Massive Real-World Graphs.

[8] M. Anderson, Better benchmarking for supercomputers,” IEEE Spectrum, vol. 48,

pp. 1214, January 2011.

[9] R. C. Murphy, K. B. Wheeler, B. W. Barrett, and J. A. Ang, Introducing the graph

500,” Cray Users Group, May 2010.

[10] P. Kogge and K. B. et al., ExaScale Computing Study: Technology Challenges in

Achieving Exascale Systems,” 2008.

[11] J. Dongarra, P.Beckman, et.al,, The international exascale software project

roadmap,” International Journal of High Performance Computing, vol. 25, no. 1,

pp. 360, 2011.

[12] D. G. Andersen, J. Franklin, M. Kaminsky, A. Phanishayee, L. Tan, and V. Vasudevan,

Fawn: a fast array of wimpy nodes,” in SOSP, 2009, pp. 114.

[13] J. G. Koomey, Worldwide electricity used in data centers,” Environmental

Research Letters, vol. 3, no. 3, p. 034008, 2008. [Online]. Available:

http://stacks.iop.org/1748-9326/3/i=3/a=034008

[14] Julian Seward, Bzip2: Program and Library for lossless, block-sorting data

compression. ,” 2012. [Online]. Available: bzip.org

[15] K. M. Wong and S. Chen, The entropy of ordered sequences and order statistics.

IEEE Transactions on Information Theory, vol. 36, no. 2, pp. 276284, 1990.

[16] H. E. Williams and J. Zobel, Compressing integers for fast file access,” Comput.

J., vol. 42, no. 3, pp. 193201, 1999.

[17] Toyotaro Suzumura et al., Performance characterization of the graph500 on largescale

distributed environment,” in IISWC, 2011.

[18] A. Buluc¸ and K. Madduri, Parallel breadth-first search on distributed memory

systems,” in SC, 2011, p. 65.

[19] Intel, Intel Data Center Manager,” http://software.intel.com/sites/datacentermanager/,

2012.

[20] D. Bader, G. Cong, and J. Feo, On the architectural requirements for efficient execution

of graph algorithms,” in Parallel Processing, 2005. ICPP 2005. International

Conference on, june 2005, pp. 547 – 556.

[21] J. R. Crobak, J. W. Berry, K. Madduri, and D. A. Bader, Advanced shortest paths

algorithms on a massively-multithreaded architecture,” in IPDPS, 2007, pp. 18.

[22] D. A. Bader, S. Kintali, K. Madduri, and M. Mihail, Approximating betweenness

centrality,” in WAW, 2007, pp. 124137.

[23] Intel Advanced Vector Extensions Programming Reference,” 2008,

http://softwarecommunity.intel.com/isn/downloads/intelavx/Intel-AVXProgramming-

Reference-31943302.pdf.

[24] The Message Passing Interface (MPI) standard,

http://www.mcs.anl.gov/research/projects/mpi/.

[25] Intel MPI Library,” http://software.intel.com/en-us/articles/intel-mpi-library/.

[26] T. Willhalm, N. Popovici, Y. Boshmaf, H. Plattner, A. Zeier, and J. Schaffner,

Simd-scan: ultra fast in-memory table scan using on-chip vector processing units,

Proc. VLDB Endow., vol. 2, no. 1, pp. 385394, aug 2009.

[27] C. Kim, J. Chhugani, N. Satish, E. Sedlar, A. D. Nguyen, T. Kaldewey, V. W. Lee,

S. A. Brandt, and P. Dubey, Fast: fast architecture sensitive tree search on modern

cpus and gpus,” in SIGMOD. ACM, 2010, pp. 339350.

[28] R. Motwani and P. Raghvan, Randomized Algorithms. Cambridge University Press,

1995.

[29] S. Beamer, K. Asanovic, and D. A. Patterson, Searching for a

parent instead of fighting over children: A fast breadth-first search

implementation for graph500,” EECS Department, University of California,

Berkeley, Tech. Rep. UCB/EECS-2011-117, Nov 2011. [Online]. Available:

http://www.eecs.berkeley.edu/Pubs/TechRpts/2011/EECS-2011-117.html

[30] C. E. Leiserson, Fat-Trees: Universal Networks for Hardware-Efficient Supercomputing,

IEEE Transactions on Computers, vol. 34, no. 10, 1985.

[31] NASA, Pleiadas supercomputer,” http://www.nas.nasa.gov/hecc/resources/pleiades.html.

[32] V. Agarwal, F. Petrini, D. Pasetto, and D. A. Bader, Scalable graph exploration

on multicore processors,” in SC, 10, pp. 111.

[33] C. E. Leiserson and T. B. Schardl, A work-efficient parallel breadth-first search

algorithm (or how to cope with the nondeterminism of reducers),” in SPAA, 2010,

pp. 303314.

[34] Y. Xia and V. K. Prasanna, Topologically Adaptive Parallel Breadth-first Search

on Multicore-Processors,” in PDCS, 2009.

[35] S. Hong, S. K. Kim, T. Oguntebi, and K. Olukotun, Acc. CUDA graph algorithms

at max. warp,” in PPOPP, 11, pp. 267276.

[36] D. P. Scarpazza, O. Villa, and F. Petrini, Efficient breadth-first search on the

cell/be processor,” IEEE Trans. Parallel Distrib. Syst., vol. 19, no. 10, pp. 1381

1395, 2008.

[37] A. Yoo, E. Chow, K. W. Henderson, W. M. III, B. Hendrickson, and U¨ . V.

C¸ ataly¨urek, A scalable distributed parallel breadth-first search algorithm on

bluegene/l,” in SC, 2005, p. 25.

[38] J. Jose, S. Potluri, M. Luo et al., Upc queues for scalable graph traversals: Design

and evaluation on infiniband clusters,” in PGAS, 2011.

[39] V. Marjanovi´c, J. Labarta, E. Ayguad´e, and M. Valero, Overlapping

communication and computation by using a hybrid mpi/smpss approach,” in

Proceedings of the 24th ACM International Conference on Supercomputing, ser.

ICS 10. New York, NY, USA: ACM, 2010, pp. 516. [Online]. Available:

http://doi.acm.org/10.1145/1810085.1810091

[40] B. V. Protopopov and A. Skjellum, A multithreaded message passing

interface (mpi) architecture: performance and program issues,” J. Parallel

Distrib. Comput., vol. 61, no. 4, pp. 449466, Apr. 2001. [Online]. Available:

http://dx.doi.org/10.1006/jpdc.2000.1674

[41] Mao Jiayin and Song Bo and Wu Yongwei and Yang Guangwen, Overlapping

107 Communication and Computation in MPI by Multithreading,” 2006.

[42] V. H. Allan, R. B. Jones, R. M. Lee, and S. J. Allan, Software pipelining,” ACM

Computing Surveys, vol. 27, no. 3, pp. 367432, 1995.

[43] H. Simon, Exascale computing: Applications performance and energy efficiency,

Santa Barbara Summit on Energy Efficiency, April 2011.


原文鏈接:

http://delivery.acm.org/10.1145/2390000/2389015/a14-satish.pdf?ip=121.33.190.176&acc=ACTIVE%20SERVICE&CFID=157831126&CFTOKEN=45283573&__acm__=1355670401_366551a7ab8fdb95cde090cc1572da81

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章