Ch4_Lap Trinh Song Song

75
PHƯƠNG PHÁP LẬP TRÌNH SONG SONG

Transcript of Ch4_Lap Trinh Song Song

Page 1: Ch4_Lap Trinh Song Song

PHƯƠNG PHÁP

LẬP TRÌNH SONG SONG

Page 3: Ch4_Lap Trinh Song Song

NỘI DUNG

• Giới thiệu tính toán song song. (Parallel Computing)

• Kiến trúc bộ nhớ máy tính song song

• Các mô hình lập trình song song.

• Hiệu năng của tính toán song song.

• Song song multi-thread trong java

Page 4: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Tính toán song song (parallel computing) là gì?

Tại sao cần tính toán song song?

Làm thế nào để song song hóa chương trình?

Page 5: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Xử lý tuần tự

Bài toán tách thành một chuỗi các câu lệnh rời rạc.

Các câu lệnh được thực hiện một cách tuần tự

Tại một thời điểm chỉ thực hiện một câu lệnh.

Page 6: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Xử lý song song:

Bài toán được tách thành nhiều phần và có thể thực hiện

đồng thời.

Mỗi phần được tách thành các lệnh rời rạc.

Mỗi lệnh được thực hiện từ những CPU khác nhau.

Page 7: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

So với tính toán tuần

tự tính toán song

song phù hợp cho

mô hình, mô phỏng,

nhiều vấn đề phức

tạp trong thế giới

thực.

Page 8: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Tại sao?

Tiết kiệm thời gian và tiền bạc

Giải quyết các bài toán lớn

Cung cấp tính đồng thời

Tối ưu, sử dụng tài nguyên không cục bộ

Page 9: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Ai dùng tính toán song song?

Khoa học & Công nghệ (Science & Engineering)

Sản xuất & Thương mại (Industrial & Commercial)

Page 10: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Page 11: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

(Vendors?)

Page 12: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

Những thành phần liên quan đến vấn đề XLSS

Kiến trúc máy tính song song

Phần mềm hệ thống (hệ điều hành),

Thuật toán song song

Ngôn ngữ lập trình song song, v.v.

Page 13: Ch4_Lap Trinh Song Song

GIỚI THIỆU LẬP TRÌNH SONG SONG

NNLT song song

Mở rộng những ngôn ngữ lập trình tuần tự hiện có, bổ sung

thêm những cấu trúc mới, cơ chế khởi tạo, đồng bộ, trao đổi

giữa các tiến trình song song, giải quyết xung đột khi truy

cập dữ liệu.

Xây dựng một ngôn ngữ lập trình song song mới.

Page 14: Ch4_Lap Trinh Song Song

KIẾN TRÚC BỘ NHỚ MÁY TÍNH SONG SONG

(Parallel Computer Memory Architectures)

Bộ nhớ chia sẻ (shared memory)

Điểm chung là các processor truy cập vùng nhớ như không

gian địac chỉ toàn cục.

Multi processors có thể họat động độc lập nhưng chia sẻ tài

nguyên bộ nhớ như nhau.

Thay đổi trong bộ nhớ do một processor này thì visible với

tất cả các processors khác.

Page 15: Ch4_Lap Trinh Song Song

KIẾN TRÚC BỘ NHỚ MÁY TÍNH SONG SONG

(Parallel Computer Memory Architectures)

Page 16: Ch4_Lap Trinh Song Song

KIẾN TRÚC BỘ NHỚ MÁY TÍNH SONG SONG

(Parallel Computer Memory Architectures)

Bộ nhớ phân tán (Distributed Memory)

Page 17: Ch4_Lap Trinh Song Song

KIẾN TRÚC BỘ NHỚ MÁY TÍNH SONG SONG

(Parallel Computer Memory Architectures)

Bộ nhớ phân tán (Distributed Memory)

Cần mạng truyền thông để kết nối bộ nhớ bên trong các processor.

Các processors có bộ nhớ cục bộ riêng. Địa chỉ bộ nhớ trong một

processor không map đến processor khác. Không có khái niện không

gian địa chỉ toàn cục thông qua tất cả các processors.

Những thay đổi của processor trong bộ nhớ cục bộ của nó không có ảnh

hưởng trên bộ nhớ của processor khác.

Khi một processor cần truy cập data trong processor khác, đó là task của

LTV. LTV cần định nghĩa làm thế nào và khi nào data được trao đổi.

Công việc đồng bộ là trách nhiệm của LTV.

Page 18: Ch4_Lap Trinh Song Song

KIẾN TRÚC BỘ NHỚ MÁY TÍNH SONG SONG

(Parallel Computer Memory Architectures)

Bộ nhớ Chia sẻ - Phân tán (Hybrid Distributed-Shared Memory)

Page 19: Ch4_Lap Trinh Song Song

KIẾN TRÚC BỘ NHỚ MÁY TÍNH SONG SONG

(Parallel Computer Memory Architectures)

Bộ nhớ Chia sẻ - Phân tán (Hybrid Distributed-Shared Memory)

Thành phần bộ nhớ chia sẻ có thể là máy bộ nhớ chia sẻ hay đơn vị xử

lý đồ họa GPU.

Thành phần bộ nhớ phân tán là sự kết nối (networking) của nhiều máy

bộ nhớ chia sẻ/GPU.

Xu hướng hiện nay cho thấy kiểu kiến trúc bộ nhớ này sẽ tiếp tục phát

triển và chiếm ưu thế trong tương lai.

Page 20: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Bộ nhớ chia sẻ (shared memory without threads)

Luồng (threads)

Bộ nhớ phân tán/truyền thông điệp (Distributed memory/Message Passing)

Song song dữ liệu (Data Parallel)

Lai (Hybrid)

Page 21: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình bộ nhớ chia sẻ: (without threads)

Page 22: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Các tasks chia sẻ một không gian địa chỉ chung.

Các cơ chế locks/semaphores được dùng để kiểm sóat truy

cập bộ nhớ chia sẻ.

Page 23: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình luồng:

Chương trình chính được chia thành các nhiệm vụ.

Mỗi nhiệm vụ được thực hiện bởi các luồng đồng thời.

Mỗi luồng có dữ liệu riêng của nó và chia sẻ dữ liệu toàn cục

của chương trình chính.

Page 24: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình luồng:

Page 25: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình truyền thông điệp:

- Chương trình được chia thành các nhiệm vụ.

- Mỗi nhiệm vụ thực hiện trên tài nguyên cục bộ.

- Các nhiệm vụ trao đổi với nhau qua hai phương thức gửi và

nhận.

Page 26: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình truyền thông điệp:

Page 27: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình song song dữ liệu:

- Các nhiệm vụ của chương trình làm việc với cùng một cấu

trúc dữ liệu.

- Mỗi nhiệm vụ làm việc trên từng phân vùng khác nhau của dữ

liệu.

- Giúp lập trình các chương trình song song được thực hiện trên

một tập dữ liệu lớn.

Page 28: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình song song dữ liệu:

Page 29: Ch4_Lap Trinh Song Song

CÁC MÔ HÌNH LẬP TRÌNH SONG SONG

Mô hình lai:

- Là sự kết hợp của hai hay nhiều mô hình lập trình song song

lại với nhau.

- Mô hình truyền thông điệp + mô hình luồng/mô hình chia sẽ

bộ nhớ chung.

- Mô hình song song dữ liệu + mô hình truyền thông điệp.

Page 30: Ch4_Lap Trinh Song Song

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Định luật Amdahl’s: việc tăng tốc một chương trình phụ thuộc vào

tỷ lệ code (P) được song song hóa.

Không có code được song song P = 0 and the speedup = 1 (no speedup).

Nếu tất cả các code được song song P = 1, speedup không xác định

Page 31: Ch4_Lap Trinh Song Song

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Khi có một số lượng processors thực hiện các công việc song song.

P: tỷ lệ song song; N: số lượng processor; S tỷ lệ tuần tự

Page 32: Ch4_Lap Trinh Song Song

Sự phụ thuộc thời gian vào số lượng BXL của định luật Amdahl’s

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Page 33: Ch4_Lap Trinh Song Song

Cân bằng tải

- Khối lượng công việc của các BXL cần phải được phân phối hợp

lí trong suốt quá trình tính toán.

- Cân bằng tải nhằm mục đích làm thay đổi sự phân phối khối

lượng công việc giữa các BXL trong quá trình tính toán.

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Page 34: Ch4_Lap Trinh Song Song

Cân bằng tải tập trung:

- Sử dụng thông tin hệ thống có tính chất toàn cục để lưu trạng thái

của các máy riêng biệt trong hệ thống.

- Thông tin này cho phép phân phối công việc cho các BXL.

- Khối lượng công việc tăng theo tỉ lệ thuận với số lượng các BXL.

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Page 35: Ch4_Lap Trinh Song Song

Cân bằng tải phân tán hoàn toàn:

- Mỗi BXL có một bản sao thông tin về trạng thái của hệ thống.

- Các BXL trao đổi thông tin trạng thái với nhau và sử dụng thông

tin này để thay đổi công việc phân chia => không tốt bằng các

thuật toán cân bằng tải tập trung.

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Page 36: Ch4_Lap Trinh Song Song

Cân bằng tải một nữa:

Chia các BXL thành từng miền.

Trong mỗi miền sử dụng thuật toán cân bằng tải tập trung để

phân phối công việc cho các BXL thuộc miền đó.

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Page 37: Ch4_Lap Trinh Song Song

Sự bế tắc (deadlock):

- Các tiến trình bị rơi vào tình trạng bế tắc nếu mỗi tiến trình đó

nắm giữ tài nguyên mà một vài tiến trình khác yêu cầu sử dụng

nó để xử lý.

HIỆU NĂNG CỦA TÍNH TOÁN SONG SONG

Page 38: Ch4_Lap Trinh Song Song

LẬP TRÌNH MULTI-THREAD TRONG JAVA

Page 39: Ch4_Lap Trinh Song Song

HỆ ĐIỀU HÀNH ĐA NHIỆM

Hệ điều hanh đa nhiệm hiện đại, hô trơ thread:

Đơn vị cơ bản sử dụng CPU la thread.

Thread một đoạn cac cau lệnh được thi hanh.

Mỗi process có một khong gian địa chỉ và nhiều thread điều khiển.

Mỗi thread có bộ đếm chương trinh, trạng thai cac thanh ghi và

ngăn xếp rieng.

Page 40: Ch4_Lap Trinh Song Song

LUỒNG/THREAD

Luồng của một qua trinh có thê chia sẻ nhau khong gian địa

chỉ: Biến toan cục, tập tin, chương trinh con, . . .

Luồng chia sẻ thời gian sư dụng CPU => Luồng cung có cac

trạng thai:

Săn sang (ready), Đang chạy (running), Nghẽn(Block).

Luồng cung cấp cơ chê tính toan song song trong cac ứng dụng.

Page 41: Ch4_Lap Trinh Song Song

CHƯƠNG TRÌNH MULTITHREAD

Page 42: Ch4_Lap Trinh Song Song

MULTITHREAD VỚI JAVA

Page 43: Ch4_Lap Trinh Song Song

java.lang.Thread

Thread trong java la một đối tượng của lớp java.lang.Thread

Một chương trinh cai đạt thread bằng cach tạo ra cac lớp con của

lớp Thread.

Lớp Thread có 3 phương thức cơ bản:

public static synchronized void start(): Chuân bi moi thứ

cần thiết đê thực hiện thread.

Page 44: Ch4_Lap Trinh Song Song

java.lang.Thread

public void run():

Chứa ma lệnh thực hiện cong việc thực sư của thread.

run() được gọi một cach tư động bởi start().

public void stop(): kết thuc một thread.

Thread kết thuc khi:

Hoạc tất cả cac lệnh trong run() đã đuơc thực thi.

Hoạc phuơng thức stop() cua luồng đuơc goi.

Page 45: Ch4_Lap Trinh Song Song

TẠO VÀ QUẢN LÝ THREAD

Page 46: Ch4_Lap Trinh Song Song

DÙNG LỚP THREAD

Page 47: Ch4_Lap Trinh Song Song

DÙNG LỚP THREAD

Page 48: Ch4_Lap Trinh Song Song

DÙNG LỚP THREAD

Page 49: Ch4_Lap Trinh Song Song

SỬ DỤNG RUNNABLE

Page 50: Ch4_Lap Trinh Song Song

SỬ DỤNG RUNNABLE

Page 51: Ch4_Lap Trinh Song Song

SỬ DỤNG RUNNABLE

Page 52: Ch4_Lap Trinh Song Song

THREADS – THREAD STATES

Page 53: Ch4_Lap Trinh Song Song

VÒNG ĐỜI THREAD

Page 54: Ch4_Lap Trinh Song Song

LƯU Ý

Page 55: Ch4_Lap Trinh Song Song

VÍ DỤ

Page 56: Ch4_Lap Trinh Song Song

VÍ DỤ

Page 57: Ch4_Lap Trinh Song Song

VÍ DỤ

Page 58: Ch4_Lap Trinh Song Song

VÍ DỤ

Page 59: Ch4_Lap Trinh Song Song

CHẠY LẦN 1, 2

Page 60: Ch4_Lap Trinh Song Song

ĐỘ ƯU TIÊN

Page 61: Ch4_Lap Trinh Song Song

VÍ DỤ ĐỘ ƯU TIÊN

Page 62: Ch4_Lap Trinh Song Song

VÍ DỤ ĐỘ ƯU TIÊN

Page 63: Ch4_Lap Trinh Song Song

VÍ DỤ ĐỘ ƯU TIÊN

Page 64: Ch4_Lap Trinh Song Song

VÍ DỤ ĐỘ ƯU TIÊN

Page 65: Ch4_Lap Trinh Song Song

THREADS - SCHEDULING

Page 66: Ch4_Lap Trinh Song Song

THREADS - SCHEDULING

Page 67: Ch4_Lap Trinh Song Song
Page 68: Ch4_Lap Trinh Song Song
Page 69: Ch4_Lap Trinh Song Song

ĐỒNG BỘ HÓA

Page 70: Ch4_Lap Trinh Song Song

ĐỒNG BỘ HÓA

Page 71: Ch4_Lap Trinh Song Song

ĐỒNG BỘ HÓA

Page 72: Ch4_Lap Trinh Song Song

ĐỒNG BỘ HÓA

Page 73: Ch4_Lap Trinh Song Song

ĐỒNG BỘ HÓA

Page 74: Ch4_Lap Trinh Song Song

SONG SONG MULTICORES VỚI JAVA API

Page 75: Ch4_Lap Trinh Song Song

SONG SONG MULTICORES VỚI JAVA API