Chương 2
Chương 2
Công nghệ tính toán
Công nghệ tính toán
lưới và phân tán
lưới và phân tán
Giảng viên: TS Đàm Quang Hồng Hải
Giảng viên: TS Đàm Quang Hồng Hải
TÍNH TOÁN LƯỚI
TÍNH TOÁN LƯỚI
Tính toán lưới và ứng dụng
Tính toán lưới và ứng dụng
•
Tính toán lưới – hệ thống tính toán phân tán
trên lưới máy tính kết nối thành qua mạng với
một nền tảng phù hợp cho việc chia sẻ tài nguyên
giữa các thành viên của tổ chức ảo
•
Tính toán phân tán là tính toán song song
được phân quyền với nhiều máy tính liên lạc
với nhau qua một mạng để hoàn tất một
nhiệm vụ chung.
•
Hệ thống tính toán phân tán còn tạo nhiều
thuận lợi trong việc chia sẻ thông tin trên
toàn thế giới
Tính toán phân tán và
Tính toán phân tán và
tính toán lưới
tính toán lưới
•
Hiệu năng của hệ thống
•
Độ trễ (Latency) và băng thông
(Bandwidth) là 2 tiêu chuẩn để xác định
hiệu năng của một hệ thống máy tính.
– Bandwidth là tốc độ mà dữ liệu có thể đưa vào
từ bộ nhớ đến bộ xử lý - cho biết số lượng phép
tính thực hiện được.
– Latency là thời gian chờ để nhận được dữ liệu
khi dữ liệu đã chuyển đi.
•
Ví dụ: hệ thống có độ trễ là 100 ns. Một
phép toán đòi hỏi phải nạp 1 dữ liệu vào
bộ nhớ sẽ phát sinh độ trể nên tốc độ của
tính toán sẽ bị giới hạn.
Kiến trúc hệ thống song
Kiến trúc hệ thống song
song
song
•
Kiến trúc SIMD - Single Instruction
stream, Multiple Data stream
•
Kiến trúc MIMD - Multiple Instruction
stream, Multiple Data stream
•
Kiến trúc SPMD - Single Program,
Multiple Data
•
Kiến trúc chuyển thông điệp
•
Các hệ thống MIMD thực hiện các phép toán theo
dạng song song không đồng bộ, các nút hoạt
động hợp tác chặt chẽ nhưng thực hiện độc lập.
Processors
Global Memory
Mô hình MIMD chặt, truy cập bộ nhớ đều
Interconnection Network
Processor
1
Processor
2
Processor
N
Memory
Module
1
Memory
Module
2
Memory
Module
N
Kiến trúc MIMD (tiếp)
Kiến trúc MIMD (tiếp)
Kiến trúc SPMD
Kiến trúc SPMD
•
Mô hình kiến trúc chuyển
Mô hình kiến trúc chuyển
thông điệp
thông điệp
•
Hầu hết mẫu chuyển thông điệp hỗ trợ việc thi
hành chương trình khác nhau trên các nút.
•
Việc tương tác được thực hiện bởi việc gửi và nhận
thông điệp, chính vì vậy các thao tác cơ bản trong
mẫu lập trình này Send và Receive.
•
Các hàm giao diện lập trình ứng dụng như MPI
(Message-Passing Interface) và PVM (Parallel
Virtual Machine) có đầy đủ các chức năng giúp
cho việc lập trình thuận lợi.
•
Với platform này, vấn đề cần quan tâm là chi phí
của thuật giải, bởi việc truy cập đến bộ nhớ của
nút khác đòi hỏi gửi và nhận thông điệp. Đó là chi
phí về sự trao đổi dữ liệu giữa các phần tử xử lý.
Giao tiếp cơ bản trên mạng
Giao tiếp cơ bản trên mạng
•
Trong hầu hết các thuật giải song song, việc trao đổi
dữ liệu giữa các tiến trình là cần thiết và có ảnh
hưởng đặc biệt đến hiệu suất của chương trình song
song.
•
Thời gian t
mạng. Thao tác này còn gọi là one-to-all
broadcast.
•
Khảo sát bài toán cần phát tán các thông điệp
đến p-1 tiến trình. Để tránh sự tắt ngẽn trên
đường truyền cần quan tâm đến tiến trình nhận.
Thuật giải broadcast
Thuật giải broadcast
•
Thuật giải broadcast này thực hiện như sau:
–
Tiến trình nguồn (source process) lần đầu tiên gởi
thông điệp đến một tiến trình khác.
–
Bây giờ 2 tiến trình này đồng thời gởi thông điệp
đến 2 tiến trình khác (mà chúng đang đợi để nhận
thông điệp).
– Thao tác tiếp tục cho đến khi tất cả các tiến trình
nhận xong dữ liệu.
Thao tác quy hồi
Thao tác quy hồi
•
Là dạng đối ngẫu của thao tác broadcast,
nên còn được gọi là thao tác all-to-one
reduction.
•
Trong thao tác quy hồi tất cả các tiến trình
được tổ hợp lại để tích luỹ về một giá trị.
Thực chất đây là sự thu thập (gather)
nhưng kết hợp với một phép toán nào đó
đặc tả chuyển thông điệp.
•
Các hàm API để tạo các giao tiếp trong chương
trình
Môi trường cho tính toán
Môi trường cho tính toán
phân tán
phân tán
•
Phân ly thuật giải hoặc dữ liệu thành các
phần riêng và phân bổ những phần công
việc này như các tác vụ làm việc đồng thời
trên các bộ xử lý.
•
Hợp tác và trao đổi giữa các tác vụ này
•
Có hai bước cơ bản cho các tính toán
truyền thông điệp:
–
Tạo ra các tiến trình, tác vụ (process, task)
riêng để thực thi trên các máy tính khác nhau.
–
Thực thi các việc liên quan đến gởi và nhận
thông điệp.
Hệ thống chuyển thông điệp
Hệ thống chuyển thông điệp
•
Hệ thống truyền thông điệp tạo ra môi
trường cho phép người lập trình cài đặt
chương trình tính toán song song.
hiện của dạng MPMD, còn task – to – task
là dạng SPMD.
Mô hình master-slave
Mô hình master-slave
•
Trong mô hình thiết kế master-slave, một tiến
trình chủ master điều khiển sự hoạt động của các
tiến trình còn lại như là các slave thông qua các
định danh (identify) tác vụ hay định danh tiến
trình – thường được gọi là các ID.
•
Trong mô hình master-slave, chương trình master
có thể phát sinh và kích hoạt để tạo ra các
chương trình slave trên những node khác nhau
của hệ thống. Khi đó một tiến trình hoạt động như
là một thực thể (instance) của một slave trên
node đó.
•
Để xác định phần master hay slave, hệ thống
chuyển thông điệp dùng các ID để nhận biết, hoặc
thông qua các hàm như _parent(). Khi ID bằng 0,
có nghĩa đây là tiến trình đầu tiên, nên là tiến
trình master.
Sự đồng bộ gửi và nhận
Sự đồng bộ gửi và nhận
•
Việc chuyển thông điệp giữa các tiến trình thực chất là
sử dụng các hàm thư viện send() và receive().
•
Trong các hệ chuyển thông điệp, một hàm được gọi là