Xu hướng phát triển của CPU Sự ra đời và phát triển mạnh mẽ của các dòng chip đa lõi Mutil-Core tạo cơ hội cho sự ra đời của tính toán và lập trình song song... Lập trình song song Khá
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
K H O A K H O A H Ọ C M Á Y T Í N H
Trang 2BÁO CÁO ĐỒ ÁN:
LẬP TRÌNH SONG SONG
Trang 4I Giới Thiệu
1 Xử lý song song.
2 Xu hướng phát triển của CPU.
L P TRÌNH SONG SONG Ậ
Trang 51 Xử lý song song
I M Đ U Ở Ầ
Trang 61 Xử lý song song
Ứng dụng của xử lý song song trong cuộc sống:
I M Đ U Ở Ầ
Trang 71 Xử lý song song
I M Đ U Ở Ầ
Nhiều bộ xử lý cùng kết hợp với nhau để giải quyết cùng một bài
toán.
Độ phức tạp lớn hơn nhiều so với xử lý tuần tự.
Tại mỗi thời điểm chỉ thực hiện được một phép toán.
Trang 81 Xử lý song song
Yếu tố chính dẫn đến xây dựng hệ thống xử lý song song:
hợp lý
Công nghệ mạch tích hợp phát triển -> tạo ra những hệ thống có hàng triệu transitor
I M Đ U Ở Ầ
Trang 91 Xử lý song song
Đinh luật Moore :
“Số lượng transistor trên mỗi đơn vị inch vuông sẽ tăng lên gấp đôi sau mỗi năm”
I M Đ U Ở Ầ
Trang 102 Xu hướng phát triển của CPU
N: số lượng transistor
C: điện dung
V: số vol
f: tần số
Xu hướng hiện nay ↑N ↓C ↓V
o Sẽ như thế nào nếu tang đồng thời f, N ?
I M Đ U Ở Ầ
Trang 112 Xu hướng phát triển của CPU
Mức tiêu hao năng lượng tăng.
Đã đạ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
I M Đ U Ở Ầ
Trang 122 Xu hướng phát triển của CPU
Do những rào cản trên nên CPU đơn lõi
Hiệu năng sẽ tăng rất chậm (5 – 10%)
Tốt cho phần mềm truyền thống (chạy tuần tự)
Giải pháp của nhà sản xuất phần cứng để tăng tốc CPU 100x là tăng số lõi/nhân thay vì tăng f.
mở ra một kỉ nguyên song song mới
I M Đ U Ở Ầ
Trang 132 Xu hướng phát triển của CPU
Sự ra đời và phát triển mạnh mẽ của các dòng chip đa lõi (Mutil-Core) tạo cơ hội cho sự ra đời của tính toán và lập trình song song.
I M Đ U Ở Ầ
Trang 14II Các Khái Niệm
L P TRÌNH SONG SONG Ậ
Trang 151 Lập trình song song
Khái niệm: Lập trình song song là một mô hình cho phép các chương trình được biên dịch là thực hiện
song song đồng thời Từ đó giúp tăng tính toán của máy tính và làm giảm thời gian thực hiện chương trình.
II CÁC KHÁI NI M Ệ
Trang 161 Lập trình song song
II CÁC KHÁI NI M Ệ
Tính toán phân tán là những tính toán được thực hiện trên
cơ sở kết hợp khả năng tính toán và truyền thông của hai hay nhiều máy tính trên mạng.
Trong môi trường UNIX, WINDOWS chúng ta có thể tạo ra nhiều
tiến trình khác nhau trong hệ thống và chúng được sử dụng để mô
phỏng lập trình đa bộ xử lý
Trang 171 Lập trình song song
• Lập trình song song trên Java
• Lập trình song song trên C#.NET
song song: OpenMP, MPI, MPICH, PyMPI…
II CÁC KHÁI NI M Ệ
Trang 182 Tính toán song song
Là chia công việc ra thành các phần nhỏ và thực hiện đồng thời bởi một hệ thống gồm nhiều máy tính kết nối với nhau ( Multi-Computer ) hoặc nhiều bộ vi xử lý ( Multi-Processor ) hay bộ vi
xử lý đa nhân ( Multi-Core ).
II CÁC KHÁI NI M Ệ
Trang 192 Tính toán song song
Multi-Computer
II CÁC KHÁI NI M Ệ
Trang 202 Tính toán song song
Multi-Processor
II CÁC KHÁI NI M Ệ
Trang 212 Tính toán song song
Multi-core
II CÁC KHÁI NI M Ệ
Trang 223 Process
Tiến trình là gì?
Tiến trình là một chương trình đang chạy:
- Bộ nhớ được cấp phát bởi hệ điều hành.
- Thường không có sự chia sẽ bộ nhớ giữa các tiến trình với nhau.
II CÁC KHÁI NI M Ệ
Trang 234 Thread
Tiểu trình/luồng
- Chạy trong không gian bộ nhớ của tiến trình.
Nó có bộ đếm chương trình ( program counter ) và ngăn xếp ( stack frame ) riêng.
Ví dụ: Trong chương trình Word có các luồng: luồng ghi nhận nhập kí tự, luồng kiểm tra chính tả, luồng hiển thị lên màn
hình, luồng quản lý giao diện…
II CÁC KHÁI NI M Ệ
Trang 244 Thread
New – Mới được tạo ra
Ready (Runnable) – Sẵn sàng thực thi
Running – Đang thực thi
Waiting – Trạng thái ngừng để chờ
Terminated– Kết thúc
II CÁC KHÁI NI M Ệ
Trang 26III ĐẶC ĐIỂM
L P TRÌNH SONG SONG Ậ
Trang 271 QUÁ TRÌNH SONG SONG HÓA
Gồm 3 giai đoạn chính:
• Phân chia chương trình thành các công việc con (Sub-task Decomposition)
• Phân tích sự phụ thuộc (Dependence Analysic)
• Định thời các công việc (Task Scheduling)
III Đ C ĐI M Ặ Ể
Trang 282 CƠ CHẾ MUTIL-THREADING
• Các thread chạy bên trong máy ảo
JVM(Java) hoặc trình biên dịch song song
(Ngôn ngữ khác)
• Mỗi thread có biến dữ liệu và ngăn xếp
riêng được cấp phát bởi JVM JVM chịu sự
quản lý của Hệ điều hành
III Đ C ĐI M Ặ Ể
Trang 293 CƠ CHẾ MUTIL-TASKING
• Hệ điều hành cấp phát bộ nhớ cho
từng ứng dụng riêng biệt Vì vậy các
biến và vùng dữ liệu của các chương
trình (tiến trình) khác nhau là khác nhau
III Đ C ĐI M Ặ Ể
Trang 304 ƯU ĐIỂM VÀ KHUYẾT ĐIỂM
ƯU ĐIỂM
+ Giao tiếp và chuyển đổi nhanh.
+ Tách công việc để xử lý song song, tiết kiệm thời gian.
+ Tận dụng tối đa sức mạnh đa lõi.
+ Khả năng mở rộng và tăng tốc độ tính toán.
KHUYẾT ĐiỂM
- Cơ chế giao tiếp, chuyển đổi phức tạp.
- Mất thời gian cho việc quản lý đồng bộ dữ liệu.
- Khó lập trình, kiểm tra lỗi.
- Hình thành hệ thống phức tạp đòi hỏi trình độ cao để quản lý.
III Đ C ĐI M Ặ Ể
Trang 315 ĐẶC ĐIỂM CỦA THREAD
a QUYỀN ƯU TIÊN (PRIORITY)
b ĐỒNG BỘ HÓA (SYNCHRONIZATION)
c GIAO TIẾP (COMMUNICATION)
III Đ C ĐI M Ặ Ể
Trang 32a QUYỀN ƯU TIÊN (PRIORITY)
Mỗi thread có một độ ưu tiên khác nhau và có mối quan hệ với nhau Thread có quyền ưu tiên cao có thể chuyển sang hoặc gọi một thread khác gọi là Context Switching.
• Một thread có thể tự động sinh ra thread khác
• Thread có độ ưu tiên cao hơn có thể giành quyền sử dụng CPU từ thread ưu tiên thấp hơn
• Nếu quyền ưu tiên ngang nhau thì xử lý theo cơ chế của hệ điều hành
III Đ C ĐI M- 5 Đ c đi m c a thread Ặ Ể ặ ể ủ
Trang 33b ĐỒNG BỘ HÓA (SYNCHRONIZATION)
được đồng bộ hóa trong Java sử dụng thông qua một Monitor (Semaphore – “Cột tín hiệu”) Chỉ có một thread được sử dụng một monitor vào bất kì một khoảng thời gian nào
Có hai cách để đồng bộ hóa các thread:
• Sử dụng method được đồng bộ hóa Trong Java, mỗi thread có một monitor cho đến khi từ khóa Synchronization được gọi
• Sử dụng phát biểu (Statement) được đồng bộ hóa Phát biểu đồng bộ hóa chứa block được đồng bộ hóa, bên trong đặt những đối tượng và những method được đồng bộ hóa
III Đ C ĐI M- 5 Đ c đi m c a thread Ặ Ể ặ ể ủ
Trang 34IV MINH HỌA TRÊN JAVA
MỘT SỐ VÍ DỤ:
• Khởi dựng thread bằng Runnable Interface và extends lớp thread
• Tạo và bắt đầu một thread mới
• Dùng nhiều thread trong một chương trình
• Cài đặt quyền ưu tiên cho thread
• Thực thi đồng bộ hóa các thread
- Đồng bộ dùng method.
- Đồng bộ dùng phát biểu đồng bộ hóa
• Giao tiếp giữa các thread
• Sử dụng thread trong Swing
L P TRÌNH SONG SONG Ậ
Trang 35IV MINH HỌA TRÊN JAVA
L P TRÌNH SONG SONG Ậ
Ví dụ cách tạo luồng bằng cách kế thừa từ lớp Thread :
+ Khai báo lớp mới ThreadX kế thừa từ lớp Thread và override phương thức run() : + Tạo các đối tượng thuộc lớp ThreadX và start() chúng :
Trang 36IV MINH HỌA TRÊN JAVA
+ Kết quả ta nhận được như sau :
L P TRÌNH SONG SONG Ậ
Trang 37Kết Thúc !!!
L P TRÌNH SONG SONG Ậ