ch4_lap trinh song song

Post on 20-Jan-2016

59 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

PHƯƠNG PHÁP

LẬP TRÌNH 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

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?

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.

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.

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.

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ộ

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)

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

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

(Vendors?)

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.

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.

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.

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

(Parallel Computer Memory Architectures)

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

(Parallel Computer Memory Architectures)

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

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.

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)

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.

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)

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

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

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ẻ.

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.

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

Mô hình luồng:

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.

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

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

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.

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

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

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.

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

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ự

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

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

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

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

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

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

LẬP TRÌNH MULTI-THREAD TRONG JAVA

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.

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.

CHƯƠNG TRÌNH MULTITHREAD

MULTITHREAD VỚI JAVA

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.

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.

TẠO VÀ QUẢN LÝ THREAD

DÙNG LỚP THREAD

DÙNG LỚP THREAD

DÙNG LỚP THREAD

SỬ DỤNG RUNNABLE

SỬ DỤNG RUNNABLE

SỬ DỤNG RUNNABLE

THREADS – THREAD STATES

VÒNG ĐỜI THREAD

LƯU Ý

VÍ DỤ

VÍ DỤ

VÍ DỤ

VÍ DỤ

CHẠY LẦN 1, 2

ĐỘ ƯU TIÊN

VÍ DỤ ĐỘ ƯU TIÊN

VÍ DỤ ĐỘ ƯU TIÊN

VÍ DỤ ĐỘ ƯU TIÊN

VÍ DỤ ĐỘ ƯU TIÊN

THREADS - SCHEDULING

THREADS - SCHEDULING

ĐỒNG BỘ HÓA

ĐỒNG BỘ HÓA

ĐỒNG BỘ HÓA

ĐỒNG BỘ HÓA

ĐỒNG BỘ HÓA

SONG SONG MULTICORES VỚI JAVA API

SONG SONG MULTICORES VỚI JAVA API

top related