iT邦幫忙

DAY 6
0

平行計算筆記系列 第 6

平行計算Ch2筆記 Processor Arrays

  • 分享至 

  • xImage
  •  

本系列是 Parallel Programming in C with MPI and OpenMP 這本書的讀書心得!

Processor Arrays

書上定義:

Processor array: many identical, synchronized

arithmetic processing elements

我的理解:

平行計算中對於要處理的process (程序?)會加以同步化,要做到這點,就會同時使用多個處理器(processor),

所以processor array多個處理器排成的陣列,用來排排站等待分配下來的任務同時進行!

課本投影片是這樣寫的

Why Processor Arrays?

• Historically, high cost of a control unit

• Scientific applications have data parallelism

(圖片來源:課本投影片)

圖上的P是 Processor,M是Memory ,Processor array會把要用資料先複製一份搬過來處理完再搬回去!

Processor Array Performance

這邊來定義一下效能Performance

電腦中的效能就是每秒鐘可以執行多少 process

至於如何評估 process array的效能呢?

直接來解個例子就能理解,下圖是這本課本投影片裡面的例子

  1. 上面的例子是說有1024個 processor,

  2. 每個processor執行一道指令(把兩個整數相加的指令),執行的時間是 1 u秒 也就是10^-6 秒 = 0.000001 秒

  3. 他這裡問如果要把1024個元素陣列相加,也就把1024對整數相加,效能如何?

解:因為上面第2點有提及,加一對整數需要一個operation,所以1024對整數相加需要1024個operation (很直觀!)

Performance的定義是每一秒可以做幾個operation

由上面第2點可知1024個處理器,每 1 u 秒就可以執行一道operation !

所以一秒鐘可以執行有 1024 / 10^-6 = 1.024 * 10^9 個operation/每秒

第二個例子:

條件都跟第一個例子一樣,只是這次processor只有512個

而要相加整數共有600對

但是推想一下可知道512 個processor 每 1 u 秒只能處理掉 512 個 operation

所以600個必須要分兩次做,總共花掉 2 u秒,第二次就只做 600 - 512 = 88 道operation !

求出來的performance如上圖就是 3x10^6 operations/ second

上面實在太文言文了

白話文:

假如你有1024個人,每人搬一本書要一分鐘,要同時搬1024本書

就只需要一次就可以做完,總共就一分鐘!

假如你有512個人,每個人的能力一樣一分鐘搬一本書,但是要搬600本書的時候就要分兩趟搬

花費的時間就是兩分鐘!

接著來看兩張課本的圖

這兩張圖是在講,平行化的程式如何優化 if 的指令,

簡單來說就是把情況A 跟 情況B 的兩種結果都同時地算好等待!

如果A符合這次的if條件,就可以立即把A的結果回傳!

如果B符合這次的if條件,就可以立即把B的結果回傳!

綜合以上

Processor Array 的短處是

並非所有的問題都是可以data-parallel 可以用這招來平行的

而且如剛剛的兩個計算例題所示

如果資料量處理不是processor數量他的整倍數,就會有浪費的情形

(下集待續)


上一篇
平行架構筆記4 Parallel Architecture Note Ctd.
下一篇
平行計算Ch2筆記 Multiprocessors
系列文
平行計算筆記19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言