2012-11-25 32 views
1

我正在開發一個應用程序,它可以對圖的每個頂點進行計算。這裏的主要問題是延遲,因爲每個計算都很小。例如,每次計算可能需要10ms才能自行執行,因此PGBL不應該爲進程增加任何顯着的延遲。並行bgl延遲和性能

我可以編寫我自己的準系統圖例程來完成這項任務。當然PBGL有很多更好的功能。例如,如果延遲不是問題,我想甚至可能會將一些計算加載到「雲」中。

因此,基本上,在cpu或多核cpu上跨載體的計算開銷是多少?另外,將來有可能將頂點計算卸載到GPU嗎?

我從來沒有使用PGBL,但在增強庫中遇到它,它吸引了我的眼球,因爲除了潛在的延遲問題之外,它可能接近我的應用程序的完美程度。

例如,將一個非常簡單的樹劃分爲n個分支,每個分支的計算在單獨的核心上運行,還是使用PBGL運行,性能差異會是多少? (對於小的計算時間,顯然計算越大,差異越小)

回答

1

並行BGL主要是分佈式存儲庫。有一個研究版本也包含了共享內存並行性。從長遠來看,我們可能會添加加速器支持,假定加速器內存模型支持內核中的原子,重疊輸出寫集以及支持有助於其他類型並行化的圖算法所需的其他複雜行爲。主要目標是找到一個單一的並行抽象,允許使用它表示的圖算法使用各種硬件並行化。

無論如何,這聽起來像是你正在尋找一個主要共享內存的並行圖庫,並行BGL可能不適合。目前,您必須運行多個MPI排名,這絕對不符合您的「低延遲」限制。多年來一直對BGL的共享內存和/或SIMD版本感興趣,但從來沒有出現過。隨着增加更多的共享內存並行庫到Boost(Lockfree,各種SIMD實現和容器等),實現某種共享內存並行BGL所需的工作量變得相當低,所以也許會在這些日子之一發生。