Giới thiệu – Mục đích: dùng một số processors thực hiện tính toán nhanh hơn một processor đơn Giải nhanh Giải các bài toán lớn: dự báo thời tiết, mô phỏng, xử lí ảnh,… – Nhân tố:
Trang 1Tính toán song song Parallel computing
TS Trần Cao Đệ Năm 2008
Trang 3Giới thiệu
– Mục đích: dùng một số processors thực hiện tính toán nhanh hơn một
processor đơn
Giải nhanh
Giải các bài toán lớn:
dự báo thời tiết, mô phỏng, xử lí ảnh,…
– Nhân tố:
giá phần cứng rẻ, dễ tích hợp,
giới hạn của kiến trúc Von Newmann
Máy tính song song là một tập hợp các processors, thông thường là cùng một kiểu, nối kết
nhau theo một kiểu nào đó để phối
hợp hoạt động và trao đổi dữ liệu
– Khoảng cách giữa các processors là nhỏ
– Phối hợp nhau giải một bài toán
Máy tính song song # hệ thống phân tán
– Hệ thống phân tán: khoảng cách xa, processors khác kiểu.
– Chia sẻ tài nguyên
Trang 4– Kỹ thuật, mô hình, phương pháp tính toán song song
– Không đi vào chi tiết giải thuật của các ứng dụng
Đánh giá hiệu quả giải thuật
– Máy tính tuần tự: thời gian, bộ nhớ & tính lập trình được
– Máy song song: số processors, dung lượng bộ nhớ cục bộ, lược
đồ giao tiếp, giao thức đồng bộ hóa.
Trang 5Đánh giá hiệu quả GT
Cho bài toán P có kích
thước input n
– Kí hiệu độ phức tạp thời gian tuần tự T*(n) Tức là, tồn tại một giải thuật tuần tự giải P với thời gian T*(n) và không có một giải thuật tuần tự nào nhanh hơn
– Giả sử A là một gt song song giải P với thời gian
T p (n) trên p processors.
Sự tăng tốc
Sp(n)=T*(n)/Tp(n)– Trên thực tế S p (n)≤p
– Cố gắng thiết kế Sp(n)p
Một vài tác tố ảnh hưởng
– Cạnh tranh trong tính toán
– Chậm trể trong giao tiếp
– Gánh nặng đồng bộ hóa hoạt động các processors, điều khiển hệ thống
Trang 6Đánh giá (TT)
Kí hiệu T1(n) là thời gian
thực hiện gt A với p=1 processor T1(n) không nhất thiết là T*(n)
Thông thường người ta thay
T*(n) bởi cận thời gian của một gt tuần tự tốt nhất đã biết (nếu không biết độ phức tạp của bài toán)
Efficiency:
Ep(n)=T1(n)/(pTp(n))– Nếu E p (n) ~ 1 thì giải thuật
A chạy nhanh xấp xỉ p lần khi dùng p processors.
Giới hạn thời gian T∞(n), giải thuật không thể chạy nhanh hơn dù cho có dùng bao nhiêu processors đi nữa:
Tp(n)≥T∞(n) với mọi p
Suy ra: Ep(n)≤T1(n)/(pT∞(n))
Vậy hiệu quả giải thuật sẽ giảm đi nếu p ≥ T1(n)/T∞(n)
Trang 7 If (cond) then statement
else statement
For variable=value to value do statement
While (cond) do statement
Exit
Trang 8Mô hình song song
Mô tả dễ,
Phân tích được hiệu quả giải thuật
Không phụ thuộc kiến trúc song song
Độc lập phần cứng
Có thể cài trên máy tính song song
Trang 9Kiến trúc song song
phân loại của Flynn
được thực hiện song song bởi nhiều processors với các dữ liệu khác nhau
– Vector Machines Ex : Cray
(pipeline)
processors thực hiện các tính toán song song với dữ liệu khác nhau.
Trang 11– Khi một phần chương trình có thể song song hóa
Trang 13Speedup
Trang 14Mô hình song song
Đồ thị không có chu trình (DAG)
Đồ thị có hướng, không có chu trình
– Input: nút không có cung vào
– Phép toán: nút có cung vào và số cung
vào tối thiểu là 2 Giả sử mỗi phép toán thực hiện được trong 1 đơn vị thời gian (unit cost)
– Output: nút không có cung ra
Một DAG có n inputs biểu diễn cho một
tính toán không có rẽ nhánh với kích thước
đầu vào là n
Nếu bài toán có rẽ nhánh, vẽ mỗi nhánh
một DAG
Một DAG xác định các phép toán phải thực
hiện bởi giải thuật
Ví dụ : DAG tính tổng dãy có n=2 k phần tử
A1 A2
A3 A4 A5 A6
+ +
+ + + A7+ A8+
Trang 16 Tuy nhiên việc đọc dữ liệu
phải ở thời điểm hợp lí Vậy các processor phải có “lịch”
(schedule) hợp lí để thực hiện công việc của mình
Giả sử có p processors, gọi (ji,ti)
là một cặp kết hợp với nút i (là nút trong của DAG) Với ji là chỉ
số của processor và t i là thời điểm mà processor này thực hiện công việc 2 điều kiện sau phải thỏa:
– Một processor chỉ thực hiện
1 việc tại một thời điểm Tức
là nếu ti=tk với i≠k thì ji ≠ jk
– Nếu nút i trước nút k, tức là (i,k) là một cung trong DAG thì thời điểm mà processor thứ i thực hiện phải trước cái của k, tức là tk ≥ti + 1
– Nếu i là nút input thì ti=0
Trang 17Schedule
Schedule của p processors là tập {(ji,ti)/i=1 n} với n
là số nút trong của DAG
một schedule:
– thời gian thực hiện giải thuật sẽ là max({ti}), i=1 n
– Parallel complexity được định nghĩa là
Tp(n) = min(max({ti})), với min lấy trên mọi Schedule Nói cách khác đó là thời gian thực hiện lịch “tốt nhất” cho p processors
Ta có: cận dưới của T p (n) là độ dài đường đi dài nhất trong DAG
Trang 18+ +
+ + + A7+ A8+
Trang 19thuật là O(log2n)
DAG tính cij với n processors (nhân ma trận 4x4)
Trang 20Mô hình song song
Mô hình bộ nhớ chung (shared memory)
– Mỗi processor có một id
– Mỗi processor có một bộ nhớ cục bộ
– Đồng bộ: tất cả processor có một đồng hồ chung
Parallel random access machine (PRAM)
– Bất đồng bộ: mỗi processor có đồng hồ riêng Người lập trình phải tạo sự đồng bộ hóa
Shared Memory
P1 P2 Pn
Trang 21– Các processors cần trao đổi dữ liệu thì transfer vào bộ nhớ chung số giao tiếp
(communication)
– Global read(X,Y):
chuyển block X từ bộ nhớ chung vào bộ nhớ cục bộ Y
– Global write(U,V):
chuyển bộ nhớ cục bộ U vào bộ nhớ chung V
Trang 22Ví dụ nhân vector với ma trận
vector x trong bộ nhớ chung
– Giả sử A(l:u;s:t) là ma trận con gồm các hàng l, u và các cột s, ,t
x
Trang 23Giải thuật tính Ax với mô hình MIMD
Input: Anxn và vector x có n phần tử; p processor sao cho n/p
global write(w,y((i-1)r+1:ir))end
Trang 24Lưu ý
Trong mô hình MIMD trên
– Nhiều processors đọc cạnh tranh một ô nhớ (dùng
chung)
– Hai processors không ghi cạnh tranh vào một ô nhớ (dùng chung).
Trong giải thuật trên các tính
toán của mỗi processor là độc lập nên không cần phải synchronize
Nếu ta tính theo cách sau:
Trang 25Mô hình song song
Mô hình bộ nhớ chung (shared memory)
nhớ chung khác là SIMD (single instruction multiple data)
– Tất cả processor thực hiện song song một chỉ thị với dữ liệu khác nhau trong một đơn vị thời
gian
nguyên với mô hình SIMD: giả sử có ma trận A gồm 2k số
nguyên, tính S=A(1)+A(2)+…+A(n)
Trang 26các processor được đánh
begin global read(A(i),a)global write(a,B(i))for h=1 to logn do
if (i<=n/2h) then begin
global read(B(2i-1),x) global read(B(2i),y) z=x+y
global write(z,B(i))end
if i=1 then global write(z,S)End
Trang 27 Để đơn giản hóa giải thuật, sau này sẽ không chỉ rõ mode.
Set A=B+C nghĩa là global read(B,x) global read(C,y) z=x+y
global write(z,A)
Trang 28Begin compute C’(i,j,l)=A(i,l)B(l,j) for h=1 to logn do
if (l<=n/2 h ) then set C’(i,j,l)=C’(i,j,2l-1)+C’(I,j,2l)
if (l==1) then
set C(i,j)=C’(i,j,1) End;
Trang 29– Receive(Y,j) chờ nhận dữ liệu từ processor j (cho đến khi nhận được)
– Đường kính (diameter)
– Bậc nút: số nút nối với một nút
Trang 31Giải thuật Matrix x vector trên ring
Giả sử Pi chứa B=Ai và
– Pi tính y=A1x1+…+Aixi và chuyển kết quả sang processor bên phải
P1 P2 P3 P4 P5
Trang 32và chờ processor kế bên truyền dữ liệu.
– P1 tính A1x1 và chuyển cho P2, – P2 tính A1x1+ A2x2
Trang 33Phân tích giải thuật
Thời gian tính toán của mỗi
số giữa hai processor liền kề Comm(n) = +n
Trang 34Mắt lưới
Mesh
Mesh hai chiều là dạng
2 chiều của mô hình của mảng các
Trang 35Đặc điểm của mắt lưới
Trang 36Ví dụ nhân ma trận trên mesh
B(4,2) B(3,2) B(2,2) B(1,2)
*
B(4,3) B(3,3) B(2,3) B(1,3)
*
*
B(4,3) B(3,3) B(2,3) B(1,3)
*
*
*
A(1,4) A(1,3) A(1,2) A(1,1)
A(2,4) A(2,3) A(2,2) A(2,1) *
A(3,4) A(3,3) A(3,2) A(3,1) * *
A(4,4) A(4,3) A(4,2) A(4,1) * * *
Trang 37 Khi A(i,l) và B(l,j) có trong
processor P(i,j), processor:
– tính C(i,j)=C(i,j)+ A(i,l)B(l,j)
– Chuyển A(i,l) sang P(i,j+1)
– Chuyển B(l,j) sang P(i+1,j)
Sau n bước processor P(i,j)
sẽ có giá trị C(i,j) đúng
Như vậy n2 processor thực hiện nhân ma trận một cách song song với tốc độ n2
Trang 38– Processor pi, với i =id-1id-2…ij…i0
sẽ nối với Pi(j)với i(j)=id-1id-2…ij…i0
– Nói cách khác processor
Pi sẽ nối với processor
Pj nếu và chỉ nếu i,j khác nhau chỉ một bit
Trang 39Ví dụ hybercube d=4
0010 0100
Trang 41 Output
– Tổng S=n-1i=0 A(i) lưu tại P 0
Beginfor l=d-1 to 0 do
if (0≤i≤2l-1) then set A(i)=A(i)+A(i(j))End
Trang 43broadcast
Bài toán: Chuyển data X từ
P0 tới tất cả các processor trong d-cube (2d processors)
Ý tưởng chuyển data từ số
chiều ít dần đến số chiều cao
Giải thuật hoàn tất sau
O(log p) bước song song
Input: cho P0 chứa X và cube
d- Output: broadcast X tới Pi, i=1 2d
Giải thuậtBegin
for l=0 to d-1 do
if 0≤i≤2l-1 thenset D(i(j))=D(i)end
Trang 45Nhân ma trận trên hybercube
Xét bài toán nhân ma
trận C=AB trên hypercube có p=n3processors.
q bít biễu diễn i
q bít biễu diễn j 3q bít biễu diễn r:
r= ln 2 +in+j
Trang 46Nhân ma trận trên hybercube (tt)
Nếu cố định mọi cặp trong
ba thành phần I,i,j thì ta có một q-cube (subcube với số đỉnh là q)
Input:
– ma trận A nxn lưu trên subcube Pl,i,0 ; A(l,i) lưu tại processor P l,i,0.
– ma trận B nxn lưu trên subcube P l,0,j ; B(l,j) lưu tại
2 với mọi 0≤l,i,j≤n-1.
Processor P l,i,j tính C’(l,i,j)= A(i,l)B(l,j), với mọi 0≤i,j,l≤n-1.
3 Với mỗi 0≤i,j≤n-1 các processors P l,i,j (0≤i,j≤n-1) tính C(i,j)= n-1l=0 C’(l,i,j).
Trang 47Nhân ma trận trên hybercube(tt)
Cài đặt bước 1:
– với mỗi (i,l): broadcast A(i,l)
từ processor P l,i,0 tới P l,i,j ; với mọi 0≤l≤n-1 (dùng gt broadcast)
– với mỗi (i,l): broadcast B(l,j)
từ processor P l,0,j tới P l,i,j ; với mọi 0≤i≤n-1 (dùng gt broadcast)
– Bước 1 tốn thời gian O(logn)
– Thời gian O(log n)
Tổng thời gian AxB là O(logn) dùng n3 processors
Trang 49So sánh các mô hình
DAG
– Áp dụng vào 1 số lớp bài toán
– Phức tạp, khó phân tích
– Vấn đề lịch biểu (schedule) và cấp phát processor
– Tốt hơn DAG trong tính toán và comunication
– Khó mô tả và phân tích thuật toán
– Phụ thuộc vào topology của mạng: totpology khác nhau giải thuật rất khác nhau!
PRAM
– Đã phát triển nhiều GT cho nhiều lớp bài toán trên PRAM
Trang 50So sánh các mô hình
– PRAM không đề cập chi tiết việc đồng bộ hóa và giao tiếp nên có thể tập trung vào các đặc điểm kiến trúc của bài toán
– PRAM nắm bắt những tham
số quan trọng của tính toán song song nó giúp hiểu một cách tường minh GT song song: phép toán cần thực hiện, công việc của các processor,…
PRAM là một mô hình chắc chắn
– Chuyển đổi networkPRAM
– PRAM bounded network
Có thể tích hợp các khái niệm đồng bộ và giao tiếp vào PRAM Giải thuật trên PRAM có thể phân tích một cách tổng quát
Trang 51Đánh giá hiệu quả của các giải thuật
song song
của nó trong trường hợp xấu nhất
gian T(n) dùng P(n) processors (n là kích thước input)
C(n) = T(n)*P(n),
O(C(n)) với 1 processor.
Trang 52Đánh giá hiệu quả của các giải thuật song song (tt)
processors sẽ giả lập P(n) processors trong O(P(n)/p) bước con.
– Thời gian giả lập với p processor: O(T(n)P(n)/p)
– P(n) processors và thời gian T(n)
– Cost C(n)=P(n)T(n) và thời gian T(n)
– O(T(n)P(n)/p) với p processors (p≤P(n))
– O(C(n)/p + T(n)) với p bất kỳ
Trang 53Định lý Brent
gian T thực hiện 1 task m, tồn tại một giải thuật trên PRAM cho p processors thực hiện cùng công việc m với độ phức tạp thời gian O(m/p + T).
Ý nghĩa: có thể thực hiện GT song song với một số lượng p processors bất kỳ.
Trang 54set B(i)= B(2i-1)+B(2i) set S=B(1)
End
Trang 55Phân tích giải thuật
Giải thuật không đề cập
– đến số processors
– Cách cấp phát processors (công việc mỗi processor)
Giải thuật chỉ đề cập đến
– Đơn vị thời gian: trong giải thuật này là logn+2.
– Một ĐVTG bao gồm nhiều phép tính song song.
Khái niệm
– Scheduling principle-Upper level: mô tả GT như một chuỗi ĐVTG Mỗi ĐVTG gồm nhiều phép tính song song.
– T(n): thời gian thực hiện (ĐVTG)
– Work time scheduling principle W(n): số phép tính tổng cộng của GT.
– Lower level: tính số ĐVTG tối thiểu để giả lập tính toán với p processors.
Trang 56– W(n): số phép tính thực hiện Trong GT trên W(n)=n+lognj=1(n/2 j )+1 = = O(n).
– Lower level với p
processors:
Gọi W j (n) là số phép tính tại bước j Giả lập W j (n) phép toán với p processors trong thời gian ≤ W j (n)/p bước song song.
Với p processors và T(n) ĐVTG thì thời gian giả lập ≤
j W j (n)/p ≤ j W j (n)/p +1 ≤ j W(n)/p +T(n).
Trang 57Khái niệm tối ưu tính toán
gian tính toán tuần tự giải bài toán Q nhanh nhất là T*(n) O(T*(n)) gọi là thời gian tối ưu cho bài toán Q
– Tối ưu yếu (kiểu 1):
W(n)=(T*(n)) (số phép toán theo schedule là T*(n))
Giả sử GT song song trong Tg T(n) dùng p processors: Dùng WT Scheduling principle, có thể giả lập GT tuần tự với Tg T(n) trong Tp(n)=O(T*(n)/p+T(n))Speedup:
Sp(n)=Ώ(T*(n)/(T*(n)/p+T(n))
= Ώ(pT*(n)/(T*(n)+p*T(n))
Optimal speedup khi
Sp(n)=p, tức là khi p=O(T*(n)/T(n))
Trang 58Khái niệm tối ưu tính toán
Tối ưu mạnh (kiểu 2)
nếu chứng minh được T(n)
là thời gian tối ưu trong tất
cả các GT song song (không thể có GT song song nhanh hơn) Thì W(n) (WT optimal) gọi là tối ưu mạnh
Mọi GT CREW PRAM có thời gian tính sum là Ώ(logn) nên GT Sum ở trên là tối
ưu (mạnh) trên CREW PRAM
Trang 59Tài liệu tham khảo
Addision-Wesley, 1992.
and Practice, McGraw-Hill, 1994.
Kai Hwang and ZhiweiXu, Scalable Parallel Computing: Technology, Architecture and Programming.