SlideShare a Scribd company logo
1 of 63
Download to read offline
平行計算介紹
HungYen Chen
chy168 / ZeroZone
chy168@gmail.com
大綱
 不同計算單元簡介
 訊息傳送
 總結
什麼是平行
• 人類慾望無止盡
• 文字→影像→聲音→動畫→多媒體→網路→ ??
• 實驗之模擬
• 氣象預報
• 汽車碰撞
• 複雜理論證明和使用
• 製藥學
• 化學
• 生化 / 生物科技
05/13/09 HPC Lab., CSIE@Tunghai University
電腦也有極限 ?
• 人腦 : 103
次運算 / 秒
• 人腦慢但比電腦聰明 , 例如 : 人臉辨識
• 電腦 : 109
次運算 / 秒 ( 十億次 )
• 受限於傳送速度 ( 光速 ) 的限制 3x108
公尺 /
秒
銅線的傳輸速度 9x107
公尺 / 秒
• 飛彈的導引系統需要 1011
~1012
次運算 /
秒
05/13/09 HPC Lab., CSIE@Tunghai University
這些 .. 如果沒有平行計算是達不到的
如何再加快速度
• 增快電子元件切換速度
• 受限於傳輸速度、散熱、分子結構
• 改進計算機結構 ( 硬體 )
• Cache memory
• Channels / bus
• Multiple/Pipeline function unit
• Data pipeline
• 多顆 CPU
05/13/09 HPC Lab., CSIE@Tunghai University
舉例說明
以工廠為例 , 如果一件產品依序需要 A,B,C
三個步驟才能完成 , 每個步驟都花一個單
位時間 , 以下舉例四種方法
1. Sequential
2. Pipeline
3. Data Parallelism
4. Pipeline + Data Parallelism
Sequential
一個人做 A,B,C 三種工作
• 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間
, k 個產品需要 3k 單位時間
A B C
Pipeline
用三個人 , 每個人只做一個步驟 (A or B or
C)
• 產生 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 3 / 3 = 1 倍
• 產生 2 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 6 / 4 = 1.5
倍
• 產生 3 個產品 ( 紅色方塊 ) 需要 5 個單位時間 , 加速 9 / 5 = 1.8
倍
• 產生 4 個產品 ( 紅色方塊 ) 需要 6 個單位時間 , 加速 12 / 6 = 2 倍
• 產生 5 個產品 ( 紅色方塊 ) 需要 7 個單位時間 , 加速 15 / 7 = 2.14
倍
• 產生 6 個產品 ( 紅色方塊 ) 需要 8 個單位時間 , 加速 18 / 8 = 2.25
倍
‧
A B C
Data Parallelism
用三個人 , 每人都做 A,B,C 三個步
驟
• 產生 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 3/3 = 1
倍
• 產生 2 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 6/3 = 2
倍
• 產生 3 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 9/3 = 3
倍
• 產生 4 個產品 ( 紅色方塊 ) 需要 6 個單位時間 , 加速 12/6 =
2 倍
• 產生 5 個產品 ( 紅色方塊 ) 需要 6 個單位時間 , 加速 15/6 =
A B C
A B C
A B C
Pipeline + Data Parallelism
找 9 個人 , 每個人只做一個步驟 (A or B or
C)
• 產生 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 3 / 3 = 1 倍
• 產生 2 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 6 / 3 = 2 倍
• 產生 3 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 9 / 3 = 3 倍
• 產生 4 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 12 / 4 = 3 倍
• 產生 5 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 15 / 4 = 3.75 倍
• 產生 6 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 18 / 4 = 4.5 倍
• …
• 產生 k 個產品 ( 紅色方塊 ) 需要 ((k+2)div3)+2 個單位時間 , 加速 3k /
((k+2)div3)+2 約 9 倍
A B C
A B C
A B C
多處理器 (Multi-Processor/CPU)
• 個人電腦 PC 的架構
• 使用多 CPU 來解決問題
• 平行電腦架構讓
• 多個處理器 (CPU)
同時執行
• 平行計算
• 不同的 CPU 透過工作分配及工作溝通完成任務
• 分散式計算
• 主 CPU(Master) 分配工作給其它 CPU, 每個
CPU 工作完畢後只跟 Master 回報或不回報
平行計算應用 : 天氣預報
要做到天氣預報 , 必須計算 3000 哩 x
3000 哩 x 11 哩的空間 (1 哩約 1.6 公里 )
把這樣的空間分割成 0.1 哩 x0.1 哩 x0.1 哩
的小方塊 , 則會有 1011
個方塊
平行計算應用 : 天氣預報
• 半小時收集一次天氣資料,兩天就會有
2x24x2 = 96 筆資料
• 每一個小方塊的一筆資料需要 100 個計算
步驟,要預測兩天後天氣就會有 1015
的計
算
• 如果用超級電腦, 109
運算 / 秒,需要
11.5 天 (1 天 86400 秒 )
• 如果用 1000 個可以做 108
運算 / 秒的
CPU 同時運算就只要 2.78 個小時
平行計算應用 : 汽車碰撞
• 一般車種 , 需實車碰撞 25 次 ; 高級車種則需要
上百次 , 每一台還沒量產的車需要手工打造 ,
成本約 10~20 萬美金 / 輛
• 將車體模型分割成 5 萬 ~10 萬個座標點 , 時間
以百萬分之一秒為單位碰撞一秒得到三個方向軸
的力量數據
5 萬 x 百萬 x3 = 1.5 x 1011
次運算
• 座標點分得更細或碰撞時間增加則計算就相對增
加
• 電腦不能取代實車碰撞 , 但是能做到碰撞前的預
測及碰撞後的分析
平行計算應用 : 深藍電腦
電腦人工智慧對奕西洋棋
1985 每秒可運算 5 萬個棋步
三分鐘可想百萬步
深藍計劃源自許峰雄博士在美國卡内基 · 梅隆大
學修讀博士學位時的研究
1987 50 萬步 / 秒
1988 72 萬步 / 秒 取名”深思” (Deep Thought)
1989 200 萬步 / 秒
1991 600 萬 ~ 700 萬步 / 秒
1996 1 億步 / 秒 用 256 顆 VLSI 晶片 , 取名”深藍” , 與棋王”卡斯
帕洛夫”對奕 , 1 勝 2 和 3 敗
1997 2 億步 / 秒 , 三分鐘可想 360 億步
棋王每秒可想 3 步 , 三分鐘可想 540
步
用 IBM RS/6000SP 超級電腦 , 配 32 顆 IBM
Power2 Super Chip( 內含 8 個 Power2 晶片 ),
再配 512 顆 VLSI 晶片 , 與棋王戰到 2 勝 3 和 1
敗 ( 棋王只勝第一場 )
平行運算的架構
Cluster
05/13/09 HPC Lab., CSIE@Tunghai University
是粽子
Cluster
• 強調區域內的運算資源整合
• 區域中的電腦異質性低
• 區域中的電腦與電腦的連結透過 LAN
• LAN, Local Area Network
05/13/09 HPC Lab., CSIE@Tunghai University
平行運算的架構
Grid
05/13/09 HPC Lab., CSIE@Tunghai University
Grid
• 強調電腦、網路的異質性高
• 強調資源的共用性
• 任何人皆可以要求使用其他節點的資源
• 可將工作轉移到遠端的可計算資源
05/13/09 HPC Lab., CSIE@Tunghai University
平行運算的架構
Grid 平台 - boinc
簡介
• 一種 volunteer computing 和 desktop
Grid computing 的平台
• 利用「自願者」的計算資源
• 不同專案之間彼此獨立
• 多平台的支援
• web-base 的使用者介面
特色
• 靈活的配合不同程式語言
• Java
• Python
• C
• Fortran
• 應用程式 署快速
佈
• 負載平衡與容錯
• 公開的需求 ( 運算 )
特色 (cont.)
• 低的「資料 / 計算」比率
• 支援大量的資料
• OpenSource
• 可自行組織團隊
• 國家、團隊、個人
• 安全性
• 每個使用者擁有不同的 Key
Credit
運作流程
Client
Client 與 ScreenSaver
Boinc 支援
圖形化展示
螢幕保護模式
其他專案的整合
• Condor's backfill mechanism
• Lattice project
• University of Maryland
平行運算的架構
Cloud Computing
Cloud Computing
 雲端運算不是技術,它是概念。
 前面提到運算的概念,歸納常見的有
 Pervasive computing
 Ubiquitous computing
 Parallel computing
 Grid computing
cloud computing
distributed computing
Grid VS. Cloud Computing
 Grid computing
 異質系統之間運算資源的整合
 透過通訊標準來互相溝通
 分享彼此的運算資源
整合組織內部的資源,方便利用
當網路開始更加盛行 ...
頻寬、通訊標準、運算能力、
架構逐漸成熟
Web Service 更多樣化
Grid VS. Cloud Computing(cont.)
 Cloud computing
 Google 、 Yahoo! 、 Amazon 的需求
 使用者可以在不同的地方透過網路使用各個企
業開放出來的服務
 使用者、開發者的資源從本地端移動至網路中
。
網路圖形 => 雲狀
資料
運算
雲端
資料和運算有如在風中 …
05/13/09 HPC Lab., CSIE@Tunghai University
是 新世界的震撼彈
雲端運算 – 小結 & 比較
 Cloud computing 不代表技術突破或革新
,只是代表分散式運算本身的一種成熟。
 我們無法將 Grid 和 Cloud computing 做
嚴格區分,只能說 cloud computing 將分
散式運算提升為服次層級。
雲端運算平台 - hadoop
 Open Source 的分散式計算平台
 HDFS
 Hadoop Distributed File System
 Google GFS(Google File System) 的實作
 MapReduce
 MapReduce 是一種程式語言開發模式
 Map
 將資料處理為 <Key,Value>
 Reduce
 組合、收集結果
想試試看嗎?上網搜尋 ...
hadoopvm
遊戲晶片也可以平行運算
GPU Cluster
01/28/15 46
Why Massively Parallel Processor
01/28/15 47
GPGPU 的優點
與 CPU 相比 :
1.顯示晶片通常具有更大的記憶體頻寬。
2.顯示晶片具有更大量的執行單元。
3.和高階 CPU 相比,顯示卡的價格較為低
廉。
01/28/15 48
GPGPU 的缺點
1. 顯示晶片的運算單元數量很多,因此對於不能高度平行化
的工作,所能帶來的幫助就不大。
2. 目前許多顯示晶片並沒有分開的整數運算單元,因此整數
運算的效率較差。
3. 顯示晶片通常不具有分支預測等複雜的流程控制單元,因
此對於具有高度分支的程式,效率會比較差。
4. 目前 GPGPU 的程式模型仍不成熟,也還沒有公認的標準
。
GPGPU : 利用顯示晶片來幫助進行一些計算工作的方法
01/28/15 49
Parallel Computing on a GPU
8-series GPUs deliver 25 to 200+ GFLOPS
on compiled parallel C applications
Available in laptops, desktops, and clusters
GPU parallelism is doubling every year
Programmable in C with CUDA tools
Multithreaded model uses application
data parallelism and thread
parallelism
GeForce 8800
Tesla S870
Tesla D870
01/28/15 50
16 highly threaded SM’s, >128 FPU’s, 367 GFLOPS, 768 MB
DRAM, 86.4 GB/S Mem BW, 4GB/S BW to CPU
Load/store
Global Memory
Thread Execution Manager
Input Assembler
Host
Texture Texture Texture Texture Texture Texture Texture Texture
結
構
Parallel Data
Cache
Parallel Data
Cache
Parallel Data
Cache
Parallel Data
Cache
Parallel Data
Cache
Parallel Data
Cache
Parallel Data
Cache
Parallel Data
Cache
Load/store Load/store Load/store Load/store Load/store
GeForce 8800
01/28/15 51
Arrays of Parallel Threads
• CUDA kernel 是以 Thread 的陣列執行
– 每個 Thread 皆執行同樣的程式碼
– 每個 Thread 都有一個 ID ,用來計算使用的記憶體位
置和控制
7
6
5
4
3
2
1
0
…
float x = input[threadID];
float y = func(x);
output[threadID] = y;
…
threadID
01/28/15 52
…
float x =
input[threadID];
float y = func(x);
output[threadID] = y;
…
threadID
Thread Block 0
…
…
float x =
input[threadID];
float y = func(x);
output[threadID] = y;
…
Thread Block 0
…
float x =
input[threadID];
float y = func(x);
output[threadID] = y;
…
Thread Block N - 1
Thread Blocks: Scalable Cooperation
Divide monolithic thread array into
multiple blocks
Threads within a block cooperate via shared
memory, atomic operations and
barrier synchronization
Threads in different blocks cannot cooperate
7
6
5
4
3
2
1
0 7
6
5
4
3
2
1
0 7
6
5
4
3
2
1
0
01/28/15 53
CUDA Device Memory Allocation (cont.)
Code example:
Allocate a 64 * 64 single precision float
array
Attach the allocated storage to Md
“d” is often used to indicate a device data
structure
TILE_WIDTH = 64;
Float* Md
int size = TILE_WIDTH * TILE_WIDTH * sizeof(float);
cudaMalloc((void**)&Md, size);
cudaFree(Md);
01/28/15 54
CUDA Host-Device Data Transfer
cudaMemcpy()
memory data transfer
Requires four
parameters
Pointer to destination
Pointer to source
Number of bytes copied
Type of transfer
Host to Host (ex:CPU 端的行為
)
Host to Device (ex: 編譯好要運
算的程式送至顯示卡 )
Device to Host (ex: 算好傳回 )
Device to Device (ex: 運算單
Grid
Global
Memory
Block (0, 0)
Shared Memory
Thread (0, 0)
Registers
Thread (1, 0)
Registers
Block (1, 0)
Shared Memory
Thread (0, 0)
Registers
Thread (1, 0)
Registers
Host
MPI, MESSGE PASSING
INTERFACE
用網路串連起我們
05/13/09 HPC Lab., CSIE@Tunghai University
MPI 概述
• The message-passing model
• Types of Parallel Computing Models
• 行程間通訊
• 什麼是 MPI(message-passing interface)
• 為什麼要使用 MPI
• Basics of MPI message passing
• Hello, World!
• Fundamental concepts
• Simple examples
• Parareal 演算法簡介
The message-passing model
• 行程 (Process) :
• 一般來說,一個行程指的是程式
(Program) 和它使用的記憶體位址。
• 行程間可能會共享單一個位址空間。
• MPI 是用來作行程間的溝通,在這裡,每
個行程使用分開的位址空間。
• 行程間通訊 (Interprocess
communication) 包含
• 同步化 (Synchronization)
• 將某個行程的位址空間作資料轉移至其他的
行程的位址空間。
Types of Parallel Computing Models
• 資料平行 (Data Parallel) – 單一指令同時運行在多筆資料
上。 Single Instruction, Multiple Data (SIMD)
• 用一個控制器來控制多個處理器,同時對一組數據(又稱「數據向量
」)中的每一個分別執行相同的操作來實現空間上的平行性。
• 任務平行 (Task Parallel) – 不同指令作用在不同資料上
Multiple Instruction, Multiple Data (MIMD)
• SPMD (single program, multiple data) :所有的處理器運作相同的
程式,但每一個都有自已要處理的資料。需要注意的是,這種方式
,在各處理器之間,它們的運作層級是不同步的。
• SPMD is equivalent to MIMD since each MIMD program can be
made SPMD (similarly for SIMD, but not in practical sense.)
• Message passing (and MPI) is for MIMD/SPMD parallelism.
行程間通訊
使用 message-passing 達到資料交換。
資料由某一行程發送,並由另一行程接收。
Process 0 Process 1
Send(data)
Receive(data)
什麼是 MPI(message-passing interface)
• 訊息傳遞函式庫規格
(message-passing library
specification)
• 一種廣泛的訊息傳遞模型
• 並非程式語言或編譯器規格
• 也不是實作或產品。
• 給平行電腦、叢集 (clusters) 使用
• 提供平行電腦硬體的使用給
• end users
• library writers
• tool developers
為什麼要使用 MPI
• 它提供了 powerful, efficient, and
portable way to express parallel
programs
• 完善的模組化設計
以上二點使得學習撰寫平行程式的門檻降低
Hello, World!
首先,先討論二個基本的重要問題
在一個平行計算中,行程間要怎麼知道
有幾個行程在運作?( How many ?)
我是哪一個?( Which one am I ?)
MPI 提供二個函式來回答以上二個問題
MPI_Comm_size
回報行程的數目
MPI_Comm_rank
回報我是第幾個行程 ( 行程 ID)
謝謝

More Related Content

What's hot

中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexprGenya Murakami
 
グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習Ichigaku Takigawa
 
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-Takuya Akiba
 
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会Kenyu Uehara
 
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)Kensuke Otsuki
 
距離学習を導入した二値分類モデルによる異常音検知
距離学習を導入した二値分類モデルによる異常音検知距離学習を導入した二値分類モデルによる異常音検知
距離学習を導入した二値分類モデルによる異常音検知NU_I_TODALAB
 
多重代入法(Multiple Imputation)の発表資料
多重代入法(Multiple Imputation)の発表資料多重代入法(Multiple Imputation)の発表資料
多重代入法(Multiple Imputation)の発表資料Tomoshige Nakamura
 
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some PreliminaryDeep Learning JP
 
正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めてRyoma Sin'ya
 
Tokyo.R #46 Cox比例ハザードモデルとその周辺
Tokyo.R #46  Cox比例ハザードモデルとその周辺Tokyo.R #46  Cox比例ハザードモデルとその周辺
Tokyo.R #46 Cox比例ハザードモデルとその周辺kikurage1001
 
マークシート選択式問題における数式処理の活用
マークシート選択式問題における数式処理の活用マークシート選択式問題における数式処理の活用
マークシート選択式問題における数式処理の活用Tatsuyoshi HAMADA
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル裕士 常田
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門icchy
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチンyohhoy
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門Masaki Tsuda
 
東京工業大学「ロボット技術」 ロボットミドルウェア
東京工業大学「ロボット技術」 ロボットミドルウェア東京工業大学「ロボット技術」 ロボットミドルウェア
東京工業大学「ロボット技術」 ロボットミドルウェアopenrtm
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarrayRyosuke839
 
物体検知(Meta Study Group 発表資料)
物体検知(Meta Study Group 発表資料)物体検知(Meta Study Group 発表資料)
物体検知(Meta Study Group 発表資料)cvpaper. challenge
 

What's hot (20)

中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr中3女子が狂える本当に気持ちのいい constexpr
中3女子が狂える本当に気持ちのいい constexpr
 
グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習グラフデータの機械学習における特徴表現の設計と学習
グラフデータの機械学習における特徴表現の設計と学習
 
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
乱択データ構造の最新事情 -MinHash と HyperLogLog の最近の進歩-
 
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
サポートベクターマシン(SVM)の数学をみんなに説明したいだけの会
 
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
虫食算に学ぶ、深さ優先探索アルゴリズム (combmof, 2018/12/23)
 
距離学習を導入した二値分類モデルによる異常音検知
距離学習を導入した二値分類モデルによる異常音検知距離学習を導入した二値分類モデルによる異常音検知
距離学習を導入した二値分類モデルによる異常音検知
 
多重代入法(Multiple Imputation)の発表資料
多重代入法(Multiple Imputation)の発表資料多重代入法(Multiple Imputation)の発表資料
多重代入法(Multiple Imputation)の発表資料
 
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
【DL輪読会】The Forward-Forward Algorithm: Some Preliminary
 
正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて正規表現入門 星の高さを求めて
正規表現入門 星の高さを求めて
 
Tokyo.R #46 Cox比例ハザードモデルとその周辺
Tokyo.R #46  Cox比例ハザードモデルとその周辺Tokyo.R #46  Cox比例ハザードモデルとその周辺
Tokyo.R #46 Cox比例ハザードモデルとその周辺
 
マークシート選択式問題における数式処理の活用
マークシート選択式問題における数式処理の活用マークシート選択式問題における数式処理の活用
マークシート選択式問題における数式処理の活用
 
KiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアルKiCadで雑に基板を作る チュートリアル
KiCadで雑に基板を作る チュートリアル
 
シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門シェル芸初心者によるシェル芸入門
シェル芸初心者によるシェル芸入門
 
20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン20分くらいでわかった気分になれるC++20コルーチン
20分くらいでわかった気分になれるC++20コルーチン
 
家庭で使うSlack
家庭で使うSlack家庭で使うSlack
家庭で使うSlack
 
RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門RStanとShinyStanによるベイズ統計モデリング入門
RStanとShinyStanによるベイズ統計モデリング入門
 
東京工業大学「ロボット技術」 ロボットミドルウェア
東京工業大学「ロボット技術」 ロボットミドルウェア東京工業大学「ロボット技術」 ロボットミドルウェア
東京工業大学「ロボット技術」 ロボットミドルウェア
 
自然言語処理紹介(就職編)
自然言語処理紹介(就職編)自然言語処理紹介(就職編)
自然言語処理紹介(就職編)
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
 
物体検知(Meta Study Group 発表資料)
物体検知(Meta Study Group 発表資料)物体検知(Meta Study Group 発表資料)
物体検知(Meta Study Group 発表資料)
 

Similar to 平行運算介紹

Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructurekyhpudding
 
微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构Chen Fei
 
The Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors AdjustThe Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors AdjustJazz Yao-Tsung Wang
 
Zh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computingZh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computingTrendProgContest13
 
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)
Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)Joseph Kuo
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則Philip Zheng
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝
F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝
F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝drewz lin
 
AI for Everyone (Chinese)
AI for Everyone (Chinese)AI for Everyone (Chinese)
AI for Everyone (Chinese)Xiao-Wei CAO
 
OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题everestsun
 
如何設計電腦 -- 還有讓電腦變快的那些方法
如何設計電腦  -- 還有讓電腦變快的那些方法如何設計電腦  -- 還有讓電腦變快的那些方法
如何設計電腦 -- 還有讓電腦變快的那些方法鍾誠 陳鍾誠
 
Cloud Computing for Bioinformatics
Cloud Computing for BioinformaticsCloud Computing for Bioinformatics
Cloud Computing for BioinformaticsJazz Yao-Tsung Wang
 
电子杂志(试刊)
电子杂志(试刊)电子杂志(试刊)
电子杂志(试刊)ProCharm
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版Jackson Tian
 
High Throughput Computing Technologies
High Throughput Computing TechnologiesHigh Throughput Computing Technologies
High Throughput Computing TechnologiesJazz Yao-Tsung Wang
 
使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)
使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)
使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)Jian-Kai Wang
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里li luo
 

Similar to 平行運算介紹 (20)

Dreaming Infrastructure
Dreaming InfrastructureDreaming Infrastructure
Dreaming Infrastructure
 
微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构微博平台混合云实践 - Docker全架构
微博平台混合云实践 - Docker全架构
 
The Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors AdjustThe Trend Of Cloud Computing And How Should Public Sectors Adjust
The Trend Of Cloud Computing And How Should Public Sectors Adjust
 
Zh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computingZh tw introduction_to_cloud_computing
Zh tw introduction_to_cloud_computing
 
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)
Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)Establish The Core of  Cloud Computing Application  by Using Hazelcast (Chinese)
Establish The Core of Cloud Computing Application by Using Hazelcast (Chinese)
 
十二項架構設計原則
十二項架構設計原則十二項架構設計原則
十二項架構設計原則
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝
F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝
F1 07 淘宝软件基础设施构建实践_章文嵩_淘宝
 
AI for Everyone (Chinese)
AI for Everyone (Chinese)AI for Everyone (Chinese)
AI for Everyone (Chinese)
 
OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题OceanBase-破解数据库高可用难题
OceanBase-破解数据库高可用难题
 
如何設計電腦 -- 還有讓電腦變快的那些方法
如何設計電腦  -- 還有讓電腦變快的那些方法如何設計電腦  -- 還有讓電腦變快的那些方法
如何設計電腦 -- 還有讓電腦變快的那些方法
 
Hadoop ecosystem
Hadoop ecosystemHadoop ecosystem
Hadoop ecosystem
 
Cloud Computing for Bioinformatics
Cloud Computing for BioinformaticsCloud Computing for Bioinformatics
Cloud Computing for Bioinformatics
 
Bigtable
BigtableBigtable
Bigtable
 
电子杂志(试刊)
电子杂志(试刊)电子杂志(试刊)
电子杂志(试刊)
 
D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版D2_node在淘宝的应用实践_pdf版
D2_node在淘宝的应用实践_pdf版
 
High Throughput Computing Technologies
High Throughput Computing TechnologiesHigh Throughput Computing Technologies
High Throughput Computing Technologies
 
使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)
使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)
使用 Keras, Tensorflow 進行分散式訓練初探 (Distributed Training in Keras and Tensorflow)
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里
 
Storm
StormStorm
Storm
 

More from Affiliate marketing

10 SEO Skills Master Your Domain
10 SEO Skills Master Your Domain10 SEO Skills Master Your Domain
10 SEO Skills Master Your DomainAffiliate marketing
 
全球奇石地標有一個在台灣
全球奇石地標有一個在台灣全球奇石地標有一個在台灣
全球奇石地標有一個在台灣Affiliate marketing
 
21 essential tactics for building and marketing a killer website
21 essential tactics for building and marketing a killer website21 essential tactics for building and marketing a killer website
21 essential tactics for building and marketing a killer websiteAffiliate marketing
 
Niuchangchih (Antrodia camphorata) and its potential in treating liver diseases
Niuchangchih (Antrodia camphorata) and its potential in treating liver diseasesNiuchangchih (Antrodia camphorata) and its potential in treating liver diseases
Niuchangchih (Antrodia camphorata) and its potential in treating liver diseasesAffiliate marketing
 
明治38.8.13 新竹中元普度
明治38.8.13 新竹中元普度明治38.8.13 新竹中元普度
明治38.8.13 新竹中元普度Affiliate marketing
 
1030127低收入戶燃料補助簡報
1030127低收入戶燃料補助簡報1030127低收入戶燃料補助簡報
1030127低收入戶燃料補助簡報Affiliate marketing
 

More from Affiliate marketing (20)

2021 copy ai Product Overview
2021 copy ai Product Overview2021 copy ai Product Overview
2021 copy ai Product Overview
 
BeWiseTrader Presentation
BeWiseTrader PresentationBeWiseTrader Presentation
BeWiseTrader Presentation
 
哲學概論 第二講:Logic
哲學概論 第二講:Logic哲學概論 第二講:Logic
哲學概論 第二講:Logic
 
不被自己框住
不被自己框住不被自己框住
不被自己框住
 
應急小常識
應急小常識應急小常識
應急小常識
 
10 SEO Skills Master Your Domain
10 SEO Skills Master Your Domain10 SEO Skills Master Your Domain
10 SEO Skills Master Your Domain
 
全球奇石地標有一個在台灣
全球奇石地標有一個在台灣全球奇石地標有一個在台灣
全球奇石地標有一個在台灣
 
21 essential tactics for building and marketing a killer website
21 essential tactics for building and marketing a killer website21 essential tactics for building and marketing a killer website
21 essential tactics for building and marketing a killer website
 
Lym 7-universal-pillars
Lym 7-universal-pillarsLym 7-universal-pillars
Lym 7-universal-pillars
 
失眠的戒藥處理
失眠的戒藥處理失眠的戒藥處理
失眠的戒藥處理
 
六標準差管理
六標準差管理六標準差管理
六標準差管理
 
記得你是誰
記得你是誰記得你是誰
記得你是誰
 
9招走出憂鬱症
9招走出憂鬱症9招走出憂鬱症
9招走出憂鬱症
 
Niuchangchih (Antrodia camphorata) and its potential in treating liver diseases
Niuchangchih (Antrodia camphorata) and its potential in treating liver diseasesNiuchangchih (Antrodia camphorata) and its potential in treating liver diseases
Niuchangchih (Antrodia camphorata) and its potential in treating liver diseases
 
明治38.8.13 新竹中元普度
明治38.8.13 新竹中元普度明治38.8.13 新竹中元普度
明治38.8.13 新竹中元普度
 
Easy Listbuilders
Easy ListbuildersEasy Listbuilders
Easy Listbuilders
 
一目瞭然的生理時鐘
一目瞭然的生理時鐘一目瞭然的生理時鐘
一目瞭然的生理時鐘
 
1030127低收入戶燃料補助簡報
1030127低收入戶燃料補助簡報1030127低收入戶燃料補助簡報
1030127低收入戶燃料補助簡報
 
精油對樟芝的生長影響
精油對樟芝的生長影響精油對樟芝的生長影響
精油對樟芝的生長影響
 
保健脊椎 健康一生
保健脊椎  健康一生保健脊椎  健康一生
保健脊椎 健康一生
 

平行運算介紹

  • 1. 平行計算介紹 HungYen Chen chy168 / ZeroZone chy168@gmail.com
  • 3. 什麼是平行 • 人類慾望無止盡 • 文字→影像→聲音→動畫→多媒體→網路→ ?? • 實驗之模擬 • 氣象預報 • 汽車碰撞 • 複雜理論證明和使用 • 製藥學 • 化學 • 生化 / 生物科技 05/13/09 HPC Lab., CSIE@Tunghai University
  • 4. 電腦也有極限 ? • 人腦 : 103 次運算 / 秒 • 人腦慢但比電腦聰明 , 例如 : 人臉辨識 • 電腦 : 109 次運算 / 秒 ( 十億次 ) • 受限於傳送速度 ( 光速 ) 的限制 3x108 公尺 / 秒 銅線的傳輸速度 9x107 公尺 / 秒 • 飛彈的導引系統需要 1011 ~1012 次運算 / 秒 05/13/09 HPC Lab., CSIE@Tunghai University 這些 .. 如果沒有平行計算是達不到的
  • 5. 如何再加快速度 • 增快電子元件切換速度 • 受限於傳輸速度、散熱、分子結構 • 改進計算機結構 ( 硬體 ) • Cache memory • Channels / bus • Multiple/Pipeline function unit • Data pipeline • 多顆 CPU 05/13/09 HPC Lab., CSIE@Tunghai University
  • 6. 舉例說明 以工廠為例 , 如果一件產品依序需要 A,B,C 三個步驟才能完成 , 每個步驟都花一個單 位時間 , 以下舉例四種方法 1. Sequential 2. Pipeline 3. Data Parallelism 4. Pipeline + Data Parallelism
  • 7. Sequential 一個人做 A,B,C 三種工作 • 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , k 個產品需要 3k 單位時間 A B C
  • 8. Pipeline 用三個人 , 每個人只做一個步驟 (A or B or C) • 產生 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 3 / 3 = 1 倍 • 產生 2 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 6 / 4 = 1.5 倍 • 產生 3 個產品 ( 紅色方塊 ) 需要 5 個單位時間 , 加速 9 / 5 = 1.8 倍 • 產生 4 個產品 ( 紅色方塊 ) 需要 6 個單位時間 , 加速 12 / 6 = 2 倍 • 產生 5 個產品 ( 紅色方塊 ) 需要 7 個單位時間 , 加速 15 / 7 = 2.14 倍 • 產生 6 個產品 ( 紅色方塊 ) 需要 8 個單位時間 , 加速 18 / 8 = 2.25 倍 ‧ A B C
  • 9. Data Parallelism 用三個人 , 每人都做 A,B,C 三個步 驟 • 產生 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 3/3 = 1 倍 • 產生 2 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 6/3 = 2 倍 • 產生 3 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 9/3 = 3 倍 • 產生 4 個產品 ( 紅色方塊 ) 需要 6 個單位時間 , 加速 12/6 = 2 倍 • 產生 5 個產品 ( 紅色方塊 ) 需要 6 個單位時間 , 加速 15/6 = A B C A B C A B C
  • 10. Pipeline + Data Parallelism 找 9 個人 , 每個人只做一個步驟 (A or B or C) • 產生 1 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 3 / 3 = 1 倍 • 產生 2 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 6 / 3 = 2 倍 • 產生 3 個產品 ( 紅色方塊 ) 需要 3 個單位時間 , 加速 9 / 3 = 3 倍 • 產生 4 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 12 / 4 = 3 倍 • 產生 5 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 15 / 4 = 3.75 倍 • 產生 6 個產品 ( 紅色方塊 ) 需要 4 個單位時間 , 加速 18 / 4 = 4.5 倍 • … • 產生 k 個產品 ( 紅色方塊 ) 需要 ((k+2)div3)+2 個單位時間 , 加速 3k / ((k+2)div3)+2 約 9 倍 A B C A B C A B C
  • 11. 多處理器 (Multi-Processor/CPU) • 個人電腦 PC 的架構 • 使用多 CPU 來解決問題 • 平行電腦架構讓 • 多個處理器 (CPU) 同時執行 • 平行計算 • 不同的 CPU 透過工作分配及工作溝通完成任務 • 分散式計算 • 主 CPU(Master) 分配工作給其它 CPU, 每個 CPU 工作完畢後只跟 Master 回報或不回報
  • 12. 平行計算應用 : 天氣預報 要做到天氣預報 , 必須計算 3000 哩 x 3000 哩 x 11 哩的空間 (1 哩約 1.6 公里 ) 把這樣的空間分割成 0.1 哩 x0.1 哩 x0.1 哩 的小方塊 , 則會有 1011 個方塊
  • 13. 平行計算應用 : 天氣預報 • 半小時收集一次天氣資料,兩天就會有 2x24x2 = 96 筆資料 • 每一個小方塊的一筆資料需要 100 個計算 步驟,要預測兩天後天氣就會有 1015 的計 算 • 如果用超級電腦, 109 運算 / 秒,需要 11.5 天 (1 天 86400 秒 ) • 如果用 1000 個可以做 108 運算 / 秒的 CPU 同時運算就只要 2.78 個小時
  • 14. 平行計算應用 : 汽車碰撞 • 一般車種 , 需實車碰撞 25 次 ; 高級車種則需要 上百次 , 每一台還沒量產的車需要手工打造 , 成本約 10~20 萬美金 / 輛 • 將車體模型分割成 5 萬 ~10 萬個座標點 , 時間 以百萬分之一秒為單位碰撞一秒得到三個方向軸 的力量數據 5 萬 x 百萬 x3 = 1.5 x 1011 次運算 • 座標點分得更細或碰撞時間增加則計算就相對增 加 • 電腦不能取代實車碰撞 , 但是能做到碰撞前的預 測及碰撞後的分析
  • 15. 平行計算應用 : 深藍電腦 電腦人工智慧對奕西洋棋 1985 每秒可運算 5 萬個棋步 三分鐘可想百萬步 深藍計劃源自許峰雄博士在美國卡内基 · 梅隆大 學修讀博士學位時的研究 1987 50 萬步 / 秒 1988 72 萬步 / 秒 取名”深思” (Deep Thought) 1989 200 萬步 / 秒 1991 600 萬 ~ 700 萬步 / 秒 1996 1 億步 / 秒 用 256 顆 VLSI 晶片 , 取名”深藍” , 與棋王”卡斯 帕洛夫”對奕 , 1 勝 2 和 3 敗 1997 2 億步 / 秒 , 三分鐘可想 360 億步 棋王每秒可想 3 步 , 三分鐘可想 540 步 用 IBM RS/6000SP 超級電腦 , 配 32 顆 IBM Power2 Super Chip( 內含 8 個 Power2 晶片 ), 再配 512 顆 VLSI 晶片 , 與棋王戰到 2 勝 3 和 1 敗 ( 棋王只勝第一場 )
  • 17. 05/13/09 HPC Lab., CSIE@Tunghai University 是粽子
  • 18. Cluster • 強調區域內的運算資源整合 • 區域中的電腦異質性低 • 區域中的電腦與電腦的連結透過 LAN • LAN, Local Area Network 05/13/09 HPC Lab., CSIE@Tunghai University
  • 20. 05/13/09 HPC Lab., CSIE@Tunghai University
  • 21. Grid • 強調電腦、網路的異質性高 • 強調資源的共用性 • 任何人皆可以要求使用其他節點的資源 • 可將工作轉移到遠端的可計算資源 05/13/09 HPC Lab., CSIE@Tunghai University
  • 22.
  • 24. 簡介 • 一種 volunteer computing 和 desktop Grid computing 的平台 • 利用「自願者」的計算資源 • 不同專案之間彼此獨立 • 多平台的支援 • web-base 的使用者介面
  • 25. 特色 • 靈活的配合不同程式語言 • Java • Python • C • Fortran • 應用程式 署快速 佈 • 負載平衡與容錯 • 公開的需求 ( 運算 )
  • 26. 特色 (cont.) • 低的「資料 / 計算」比率 • 支援大量的資料 • OpenSource • 可自行組織團隊 • 國家、團隊、個人 • 安全性 • 每個使用者擁有不同的 Key
  • 27.
  • 31. Client 與 ScreenSaver Boinc 支援 圖形化展示 螢幕保護模式
  • 32.
  • 33. 其他專案的整合 • Condor's backfill mechanism • Lattice project • University of Maryland
  • 35. Cloud Computing  雲端運算不是技術,它是概念。  前面提到運算的概念,歸納常見的有  Pervasive computing  Ubiquitous computing  Parallel computing  Grid computing cloud computing distributed computing
  • 36. Grid VS. Cloud Computing  Grid computing  異質系統之間運算資源的整合  透過通訊標準來互相溝通  分享彼此的運算資源 整合組織內部的資源,方便利用
  • 38. Grid VS. Cloud Computing(cont.)  Cloud computing  Google 、 Yahoo! 、 Amazon 的需求  使用者可以在不同的地方透過網路使用各個企 業開放出來的服務  使用者、開發者的資源從本地端移動至網路中 。 網路圖形 => 雲狀
  • 42. 雲端運算 – 小結 & 比較  Cloud computing 不代表技術突破或革新 ,只是代表分散式運算本身的一種成熟。  我們無法將 Grid 和 Cloud computing 做 嚴格區分,只能說 cloud computing 將分 散式運算提升為服次層級。
  • 43. 雲端運算平台 - hadoop  Open Source 的分散式計算平台  HDFS  Hadoop Distributed File System  Google GFS(Google File System) 的實作  MapReduce  MapReduce 是一種程式語言開發模式  Map  將資料處理為 <Key,Value>  Reduce  組合、收集結果
  • 46. 01/28/15 46 Why Massively Parallel Processor
  • 47. 01/28/15 47 GPGPU 的優點 與 CPU 相比 : 1.顯示晶片通常具有更大的記憶體頻寬。 2.顯示晶片具有更大量的執行單元。 3.和高階 CPU 相比,顯示卡的價格較為低 廉。
  • 48. 01/28/15 48 GPGPU 的缺點 1. 顯示晶片的運算單元數量很多,因此對於不能高度平行化 的工作,所能帶來的幫助就不大。 2. 目前許多顯示晶片並沒有分開的整數運算單元,因此整數 運算的效率較差。 3. 顯示晶片通常不具有分支預測等複雜的流程控制單元,因 此對於具有高度分支的程式,效率會比較差。 4. 目前 GPGPU 的程式模型仍不成熟,也還沒有公認的標準 。 GPGPU : 利用顯示晶片來幫助進行一些計算工作的方法
  • 49. 01/28/15 49 Parallel Computing on a GPU 8-series GPUs deliver 25 to 200+ GFLOPS on compiled parallel C applications Available in laptops, desktops, and clusters GPU parallelism is doubling every year Programmable in C with CUDA tools Multithreaded model uses application data parallelism and thread parallelism GeForce 8800 Tesla S870 Tesla D870
  • 50. 01/28/15 50 16 highly threaded SM’s, >128 FPU’s, 367 GFLOPS, 768 MB DRAM, 86.4 GB/S Mem BW, 4GB/S BW to CPU Load/store Global Memory Thread Execution Manager Input Assembler Host Texture Texture Texture Texture Texture Texture Texture Texture 結 構 Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Parallel Data Cache Load/store Load/store Load/store Load/store Load/store GeForce 8800
  • 51. 01/28/15 51 Arrays of Parallel Threads • CUDA kernel 是以 Thread 的陣列執行 – 每個 Thread 皆執行同樣的程式碼 – 每個 Thread 都有一個 ID ,用來計算使用的記憶體位 置和控制 7 6 5 4 3 2 1 0 … float x = input[threadID]; float y = func(x); output[threadID] = y; … threadID
  • 52. 01/28/15 52 … float x = input[threadID]; float y = func(x); output[threadID] = y; … threadID Thread Block 0 … … float x = input[threadID]; float y = func(x); output[threadID] = y; … Thread Block 0 … float x = input[threadID]; float y = func(x); output[threadID] = y; … Thread Block N - 1 Thread Blocks: Scalable Cooperation Divide monolithic thread array into multiple blocks Threads within a block cooperate via shared memory, atomic operations and barrier synchronization Threads in different blocks cannot cooperate 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
  • 53. 01/28/15 53 CUDA Device Memory Allocation (cont.) Code example: Allocate a 64 * 64 single precision float array Attach the allocated storage to Md “d” is often used to indicate a device data structure TILE_WIDTH = 64; Float* Md int size = TILE_WIDTH * TILE_WIDTH * sizeof(float); cudaMalloc((void**)&Md, size); cudaFree(Md);
  • 54. 01/28/15 54 CUDA Host-Device Data Transfer cudaMemcpy() memory data transfer Requires four parameters Pointer to destination Pointer to source Number of bytes copied Type of transfer Host to Host (ex:CPU 端的行為 ) Host to Device (ex: 編譯好要運 算的程式送至顯示卡 ) Device to Host (ex: 算好傳回 ) Device to Device (ex: 運算單 Grid Global Memory Block (0, 0) Shared Memory Thread (0, 0) Registers Thread (1, 0) Registers Block (1, 0) Shared Memory Thread (0, 0) Registers Thread (1, 0) Registers Host
  • 56. MPI 概述 • The message-passing model • Types of Parallel Computing Models • 行程間通訊 • 什麼是 MPI(message-passing interface) • 為什麼要使用 MPI • Basics of MPI message passing • Hello, World! • Fundamental concepts • Simple examples • Parareal 演算法簡介
  • 57. The message-passing model • 行程 (Process) : • 一般來說,一個行程指的是程式 (Program) 和它使用的記憶體位址。 • 行程間可能會共享單一個位址空間。 • MPI 是用來作行程間的溝通,在這裡,每 個行程使用分開的位址空間。 • 行程間通訊 (Interprocess communication) 包含 • 同步化 (Synchronization) • 將某個行程的位址空間作資料轉移至其他的 行程的位址空間。
  • 58. Types of Parallel Computing Models • 資料平行 (Data Parallel) – 單一指令同時運行在多筆資料 上。 Single Instruction, Multiple Data (SIMD) • 用一個控制器來控制多個處理器,同時對一組數據(又稱「數據向量 」)中的每一個分別執行相同的操作來實現空間上的平行性。 • 任務平行 (Task Parallel) – 不同指令作用在不同資料上 Multiple Instruction, Multiple Data (MIMD) • SPMD (single program, multiple data) :所有的處理器運作相同的 程式,但每一個都有自已要處理的資料。需要注意的是,這種方式 ,在各處理器之間,它們的運作層級是不同步的。 • SPMD is equivalent to MIMD since each MIMD program can be made SPMD (similarly for SIMD, but not in practical sense.) • Message passing (and MPI) is for MIMD/SPMD parallelism.
  • 60. 什麼是 MPI(message-passing interface) • 訊息傳遞函式庫規格 (message-passing library specification) • 一種廣泛的訊息傳遞模型 • 並非程式語言或編譯器規格 • 也不是實作或產品。 • 給平行電腦、叢集 (clusters) 使用 • 提供平行電腦硬體的使用給 • end users • library writers • tool developers
  • 61. 為什麼要使用 MPI • 它提供了 powerful, efficient, and portable way to express parallel programs • 完善的模組化設計 以上二點使得學習撰寫平行程式的門檻降低
  • 62. Hello, World! 首先,先討論二個基本的重要問題 在一個平行計算中,行程間要怎麼知道 有幾個行程在運作?( How many ?) 我是哪一個?( Which one am I ?) MPI 提供二個函式來回答以上二個問題 MPI_Comm_size 回報行程的數目 MPI_Comm_rank 回報我是第幾個行程 ( 行程 ID)