本篇是看Parallel Programming in C with MPI and OpenMP 這本書第一章前半部分的筆記整理,
大多是介紹性質的,先來了解些基本的概念與名詞
名詞解釋與比較
比較 Parallel Computing , Parallel Computer , Parallel Programming :
Parallel Computing : 利用平行計算的電腦來解問題,使解得更快
Parallel Computer : 一個擁有多處理器,支援平行程式設計的電腦
Parallel Programming : 使用程式語言撰寫平行運算的程式
MPI 是 Message Passing Interface 的簡稱,是一個標準的massage-passing libraries
OpenMP : 是一個支援平行計算,用於shared memory系統的應用程式介面 application programming interface (API)
Distributed v.s. Parallel 比較
Distributed : 分開來,每個地方都做不一樣的事情
Parallel : 分開來,每個地方同時做一樣的事情
Concurrency v.s. Parallel
定義:真實在工作運行時任何一個時間點,任兩個同時運行叫做Parallel
定義:兩個東西可以各自進行,沒有dependency 叫做 Concurrency
允許可以分開來做,但也不一定要分開! Concurrency
正在運行的狀態是同時的,指的是Parallel !
所以 Concurrency work可以在 Parallel 環境下運行
但也可以在一般狀況下跑
平行計算發展與沿革過程
使用 Clusters (一群很便宜的電腦串在一起用) 來取代 Super Computer (一台很厲害的電腦)
但是Clusters的架構風險是如果一台壞掉了整個就壞了
若一台壞掉的機率是 p,則正常的機率是 1- p
則所有電腦正常的機率就是 (1 - p)^n 的 n次方! 這樣很不穩定
所以又發展出所謂的 Grid Computing技術
利用大量電腦來協同運算,解決問題,並搭配適當的Protocol(協定)
使得如果有其中一兩台壞掉了,不會影響到其他正常的電腦。