實現並行運算的方法彙總

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)步驟就是把程序發送到已經包含數據的節點上,然後輸出結果寫入本地節點並保存在那裏。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章