並行演算法 並行演算法的初步認識

2021-10-04 02:38:34 字數 2519 閱讀 6973

今年的課程中增加了,並行演算法的課程,我一看,一門課程都掛上「演算法」了,肯定厲害呀。這我可要認真學習它。

我把我自己的見解和大家分享一下,要是有錯誤的地方一定要指出啊。

這是我畫的乙個思維導圖,好像是什麼也看不出來。

咱們按照順序乙個乙個的介紹哈。

(我不知道大家是什麼情況,我是從小學開始,學什麼都是從定理、定義,開始的。可能是讓你有乙個大局觀,讓你更容易去理解它,當你都學完之後,回過來再看它,你會對它更了解。)

平行計算是指同時對多個任務或多條指令、或對多個資料項進行處理。完成此項處理的計算機系統稱為並行計算機系統,它是將多個處理器(可以幾個、幾十個、幾千個、幾萬個等)通過網路連線以一定的方式有序地組織起來(一定的連線方式涉及網路的互聯拓撲、通訊協議等,而有序的組織則涉及作業系統、中介軟體軟體等)。

(好吧,定義說了一堆,我的理解就是,以前乙個人幹得活,現在一堆人一起幹。)

它對的主要目的,一共就有兩個:**一是為了提供比傳統計算機快的計算速度;二是解決傳統計算機無法解決的問題。 **

這個還是要記一下的,就是,比原來的快,比原來的給力。

(定義就那樣了哈,咱們到下乙個,研究內容,我們還是要知道的,要不然,乙個活幹了半天,不知道是幹什麼,別人一問,自己三不知,這很尷尬。)

(1)並行計算機的設計

(2)有效演算法的設計

(3)評價並行演算法的方法

(4)並行計算機語言

(5)並行程式設計環境與工具

(6)並行程式的可移植性

(7) 並行計算機的自動程式設計

我是這麼理解的,什麼東西發展到一定程度,就會機械化然後再到自動化。並行計算機誕生了,有了並行計算機,就要設計它,讓它的處理機數目按比例增長之類的;而並行計算機只有有了有效的演算法,它才有了腦子;什麼地方都是有競爭的,沒有比較,怎麼提高;演算法有了,慢慢的語言(pvm,mpi,hpf等)也就有了;人一多了,就會形成乙個大的環境,如果是人就是社會;當乙個程式在你自己的計算機成功的時候,並不是成功,要大傢伙說了算;慢慢的就向著自動化方向發展。

(1)計算密集型(compute-intensive)

(2)資料密集型 (data-intensive)

(3)網路密集型 (network-intensive)

歷史40年代,它就出生了,嗯,挺老的哈,主要是解決單處理器速度瓶頸

60年代初,ibm 360典型代表

60年代末,流水線技術

80年代初,共享儲存多處理器

80年代中,基於訊息傳遞機制的並行計算機

80年代末到90年代初,使系統具有一定的可擴充套件(scalability)

90年代初,提出了快取一致性協議的標準

90年代,主要的幾種體系結構開始走向融合

挺枯燥的!我的感覺哈。

體系結構

總的來說就兩個部分

三素:結點,網際網路絡,記憶體

二程:程序,執行緒

結點(node)是包含乙個或多個cpu,這些cpu通過hub或全互聯交叉開關相互聯接,並且共享記憶體,也可以直接與外部進行i/o操作。(與其他的有一些區別)

網際網路絡(interconnect network):所有結點通過網際網路絡相互連線相互通訊。記憶體(memory):記憶體由多個儲存模組組成,這些模組可以與結點對稱地分布在網際網路絡的兩側,或者位於各個結點的內部。

抽象的理解就是結點是點,網際網路絡是線,記憶體就是整體要表達的含義。

程序(與序列系統類似):具有一定功能的一段程式的一次執行活動,可表示成四元組(p, c, d, s)p是程式**c是程序的控制狀態d是程序的資料s是程序的執行狀態

將乙個程序分解成兩個部分 :一部分由其資源特徵構成,仍稱之為程序;一部分由其執行特徵構成,稱之為執行緒

型別我就只介紹一種分類法了——flynn(2023年)分類法

1、sisd (single instruction stream single data stream)

單指令流單資料流

2、simd (single instruction stream multiple data stream)

單指令流多資料流

3、misd (multiple instruction stream single data stream)

多指令流單資料流

4、mimd (multiple instruction stream multiple data stream)多指令流多資料流

指令流:機器所執行的指令序列

資料流:指令流呼叫的資料序列(包括輸入資料和中間結果)

但是有一點我們要知道flynn分類法實際上並不能對所有計算機進行分類,如流水線向量處理機就難於按flynn分類法簡單地歸為上述四類之一。

並行計算機系統除少量專用的simd系統外,絕大部分為mimd系統。

並行演算法筆記(三) 並行演算法設計(二)

case1 並行歸併排序 對n個元素a 1 n 排序,則將a均勻分為p組,其中p為處理器個數,按如下過程排序 case2 歸併演算法 valiant歸併 對長度為p,q的有序陣列a和b歸併,則將a均勻分為p sqrt p 組,每組有p sqrt p 個元素,將b劃分為q sqrt q 組,每組q s...

並行演算法設計

求和例子總結 資料並行 其他任務劃分方法 假定已有求解問題的序列演算法,我們將 其改為並行版本 並行演算法與體系結構緊密相關 設計乙個並行演算法 計算任務的分解 如何將平行計算工作分解,交由眾多程序 執行緒併發執行 保持依賴關係 計算結果與序列演算法保持一致 額外開銷 有多種型別的開銷,要盡量降低 ...

並行演算法 並行演算法的設計技術和並行程式開發

目前普遍使用的並行演算法的設計技術 1 流水線技術 將任務分割成許多子任務,每個處理器完成其中乙個,且第乙個處理器完成第乙個子任務後,第二個處理器可以開始完成第二個子任務 2 分治策略 將原問題分成若干個特徵相同的子問題,分別處理。類似超執行緒技術 常見的分治策略 任務分割 資料分割 3 平衡樹方法...