[筆記] 平行計算 Ch3 part 3 Gather & All-gather

本篇在舉例說明並且練習分析平行計算的方法與設計

The N-Body Problem

N-body simulation 參考資料

The n-Body Problem:

簡單來說,就是模擬很多粒子之間的交互作用,粒子跟粒子之間會有引力作用,

要隨時求出每個粒子的位置與速度向量,還有其他粒子的資訊,才能算出其他粒子對於該粒子的引力影響



假設現在有三個質點

每個質點有他的data量 (坐標 有兩個64bit的浮點數)

有一個向量 (坐標 有兩個64bit的浮點數)

所以n個質點就有 4n個 浮點數

經過時間 data T 後直點來到新的位置,

然後要加上其他直點給予的引力影響

最後算出新的位置

但是除了位置的改變之外

其實速度也會變

所以這種運算要把它平行化

Partitioning

首先將問題分割 Assume one task per particle 假設一個任務針對一顆粒子!

Task

– particle’s position

– velocity vector

這個Task 寫出我們需要求出粒子的位置以及他目前的速度向量

Iteration

– Get positions of all other particles

– Compute new position, velocity

這裡是指說,要必須不斷地求出其他粒子的位置坐標,這樣才能算出下一秒鐘其他粒子對於自己那顆粒子的引力影響

並且不對地更新位置坐標資訊與速度向量的資訊!

Gather



每一個個體都需要拿到其他人手上的東西

這個動作叫做 gather

就是把其他 process 手上算好的資料拿過來

當然自己算得部分也要給出去

All-gether



自己要拿其他人算的結果

而自己算的結果也要全部給出去一遍

這種叫做 all gather


留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking