Professional Documents
Culture Documents
Nội dung
q Xử lý song song
q Xu hướng phát triển của CPU
q Các mô hình lập trình song song
q Truyền thống
q Dựa trên dữ liệu
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
XỬ LÝ SONG SONG
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Source: http://www.baobinhthuan.com.vn/web/
data/news/2009/1/21476/thitruong.jpg
Source: Checkouts
http://www.sturm.si/en/images/iman/gal_img.0077.jpg
1/1/15 Tổng quan tính toán song song 5
Source:http://www.vtc.vn/newsimage/original/
vtc_216925_suoitien.jpg
Source: The Old Entrance
http://www.matterhorn1959.com/blog1/4.TicketBooths.jpg
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Power Wall
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Power Wall
q Công suất (W) của CPU tỉ lệ với NCV2f
q N: số lượng transistor
q C: điện dung
q V: số vol
q f: tần số
q Xu hướng ↑N ↓C ↓V
(Công nghệ transistor mới)
è Sẽ như thế nào nếu ↑f
Power Wall
Mỗi thế hệ mạch in mới (90, 60, 45, 32, 22, 16, 11 nm)
Số lượng transistor/die tăng gấp đôi (↑N)
Kích thước transistors thu nhỏ hơn (↓C)
Sử dụng số vol thấp hơn (↓V).
http://www.digital-daily.com/cpu/intel_penryn/
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Power Wall
Điện năng cung cấp đã giảm từ 15V xuống còn 1V trong vòng gần
30 năm
Ngưỡng tối thiểu là 0.7V
è còn giảm thêm được (1.0/0.7)2=2X
Nhưng khi tăng mật độ (↑N) và xung nhịp (↑f) của CPU lên thì mức
tiêu hao năng lượng tăng từ 1 W lên 100 W chỉ trên 1 cm2
è khó tản nhiệt
Đã đạt tới giới hạn è xung nhịp CPU không giúp tăng tốc hệ thống
như trước nữa (kể từ P4)
Memory Wall
10
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Memory Wall
Độ trễ của DRAM cải thiện không đáng kể è dùng cache của CPU
CPU cache tốn kém do miss (có thể mất 300 xung đồng hồ)
Để giảm miss ½ è tăng gấp 4 lần dung lượng cache (kích thước
thực sự tăng!)
èNhiều transitor trong CPU được dùng cho việc xử lý truy xuất bộ nhớ này
Cách dễ dàng hơn để tăng băng thông bộ nhớ è Truy xuất bộ nhớ
song song
è Nhìn chung hiệu năng được nâng cao
Memory Wall
q Tỉ lệ miss khi tăng dung lượng cache
http://en.wikipedia.org/wiki/File:Cache,missrate.svg
11
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Tần số CPU bị
giảm xuống do
giới hạn vật lí
Source [3]
12
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Source [3]
13
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Tuần tự
Song song
14
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
15
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
16
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
17
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
18
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Source [2]
19
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
20
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
int fib(int n)
{ 1
song song
1 if (n < 2)
2 return n;
else
{ 3 4
3 int x = fib(n-1);
4 int y = fib(n-2);
5 return x + y; 2 5
}
}
Source [2]
1/1/15 Tổng quan tính toán song song 42
21
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
1
speedup =
p Tăng số CPU cũng giúp
+s tăng tốc độ với cùng tỉ lệ
N
code chạy song song
Source [2]
1/1/15 Tổng quan tính toán song song 43
22
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
23
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Source [2]
24
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Fortran 90 Fortran 77
C=A+B DO I = 1, N
DO J = 1, N
C(I, J) = A(I, J) + B(I, J)
END DO
END DO
25
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
26
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
Source [8]
27
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
void incrementArray (float *a, int N) __global__ void incrementArray (float *a, int N)
{ {
int i; int idx = blockIdx.x*blockDim.x + threadIdx.x;
for (i=0; i < N; i++) if (idx < N)
a[i] = a[i] +1.0f; a[idx] = a[idx] + 1.0f;
} }
28
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
for (int i = 0; i < 10000; ++i) for (int i = 0; i < 10000; ++i)
{ {
std::cout << "output[" std::cout << "output["
<< i << "] = (" << i << "] = ("
<< results[i] << ")" << results[i] << ")"
<< std::endl; << std::endl;
} }
29
CuuDuongThanCong.com https://fb.com/tailieudientucntt
5/11/16
30
CuuDuongThanCong.com https://fb.com/tailieudientucntt