實現並行運算的方法匯總
阿新 • • 發佈:2018-02-12
映射 顯式 har cpu reads 其他 mac os x 才有 發送
1、實現的手段
1.1 MPI
MPI實現並行是進程級;采用的是分布式內存系統,顯式(數據分配方式)實現並行執行,通過通信在進程之間進行消息傳遞,可擴展性好。MPI雖適合於各種機器,但它的編程模型復雜:
需要分析及劃分應用程序問題,並將問題映射到分布式進程集合;
需要解決通信延遲大和負載不平衡兩個主要問題;
調試MPI程序麻煩;
MPI程序可靠性差,一個進程出問題,整個程序將錯誤;
1.2 Pthreads
Pthreads實現並行是線程級;采用的是共享內存系統,只有在POSIX的系統(linux、mac OS X、Solaris、HPUX等)上才有效。它是一個可以連接到C程序中的庫,目前標準的C++共享內存線程庫還在開發中,也許在將來在C++程序中,使用這個庫更加方便。
1.3 OpenMP
OpenMP是線程級(並行粒度);采用的是共享內存系統,隱式(數據分配方式)實現並行執行;可擴展性差;正因為采用共享內存分布系統,意味著它只適應於SMP(Symmetric Multi-Processing 對稱多處理結構),DSM(Distributed Shared Memory 共享內存分布系統)機器,不適合於集群。
1.1 OpenCL
全稱Open Computing Language,開放運算語言。是一個為異構平臺編寫程序的框架,此異構平臺可由CPU,GPU或其他類型的處理器組成。OpenCL由一門用於編寫kernels (在OpenCL設備上運行的函數)的語言(基於C99)和一組用於定義並控制平臺的API組成。OpenCL提供了基於任務分割和數據分割的並行計算機制。OpenCL類似於另外兩個開放的工業標準OpenGL和OpenAL,這兩個標準分別用於三維圖形和計算機音頻方面。
1.5 GPU
GPU是專門為執行復雜的數學和集合計算而設計的,一個GPU內有許多流處理簇(stream Multiprocessor)SM,他們就類似於CPU的核。這些SM與共享(一級緩存)連接在一起,然後又與相當於SM間互聯開關的二級緩存相連。類似於這種設計,都是為計算圖形渲染所必須的。
1.6 Hadoop
是谷歌公司MapReduce框架的一個開源版本。它針對的是linux平臺。其概念是你取來一個大數據集,然後將其切割或映射(map)成很多小的數據塊。然而,並不是將數據發送到各個節點,取而代之的是數據集通過並行文件系統已經被劃分給上百或者上千個節點。因此,歸約(Reduce)步驟就是把程序發送到已經包含數據的節點上,然後輸出結果寫入本地節點並保存在那裏。
實現並行運算的方法匯總