拆分fork+合併join。jdk1.7整合fork/join,效能上有大大提公升。
思想:充分利用多核cpu把計算拆分成多個子任務,平行計算,提高cpu利用率大大減少運算時間
當你在forkjoinpool中執行forkjointask時,你可以使用同步或非同步方式來實現。當你使用同步方式時,提交任務給池的方法直到提交的任務完成它的執行,才會返回結果。當你使用非同步方式時,提交任務給執行者的方法將立即返回,所以這個任務可以繼續執行。
你應該意識到這兩個方法有很大的區別,當你使用同步方法,呼叫這些方法(比如:invokeall()方法)的任務將被阻塞,直到提交給池的任務完成它的執行。這允許forkjoinpool類使用work-stealing演算法,分配乙個新的任務給正在執行睡眠任務的工作執行緒。反之,當你使用非同步方法(比如:fork()方法),這個任務將繼續它的執行,所以forkjoinpool類不能使用work-stealing演算法來提高應用程式的效能。在這種情況下,只有當你呼叫join()或get()方法來等待任務的完成時,forkjoinpool才能使用work-stealing演算法。
非同步的簡單例項如下:
public
class
forjointest
extends
recursivetask
//計算
@override
protected integer compute()
} else
return
sum;
}public
static
void main(string args) throws interruptedexception, executionexception
Spark 平行計算框架
spark是乙個通用的平行計算框架,是一種快速處理大規模資料的通用引擎,由ucberkeley的amp實驗室開發。其架構如下圖所示 spark的中間資料放到記憶體中,對於迭代運算效率比較高 spark比hadoop更通用 效能與速度 容錯性 可用性 spark可以直接對hdfs進行資料的讀寫,同樣支...
CUDA平行計算框架程式設計 矩陣相乘平行計算
當下的gpgpu general purpose gpu graphic process unit cuda compute unified device architecture 即通用計算圖形處理器。安裝過程可參考我的另一篇blog cuda軟體架構 1 開發庫 cuda library 2 執...
平行計算框架Mapreduce簡介
hadoop的三個元件,先有mapreduce 分布式計算模型 後有hdfs,知道hadoop才有了yarn,因此掌握mapreduce很有必要,雖然現在都是使用流式處理框架,如storm,spark等,但是這幾種框架的思想及原理都 於mapreduce mapreduce 思想 分而治之 map ...