Tải bản đầy đủ (.ppt) (75 trang)

tính toán lưới - chương 2 công nghệ tính toán lưới và phân tán

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.22 MB, 75 trang )

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


Hệ thống song song và phân tán cho phép chia sẻ,
lựa chọn và kết hợp động các tài nguyên phân tán
theo địa lý tại thời điểm thực thi dựa trên sự sẵn
sàng, dung lượng, hiệu năng, giá và những yêu cầu
về chất lượng dịch vụ.

Kỹ thuật lưới là “kỹ thuật cho phép ảo hoá tài nguyên
dự trữ theo yêu cầu, và chia sẻ dịch vụ, tài nguyên giữa
các tổ chức”.

Một hệ thống phân tán có khả năng xử lí đồng thời
một bài toán trên nhiều máy tính là một hướng giải
quyết các bài toán lớn và đã được chứng minh tính
hữu dụng.
Tính toán phân tán
Tính toán phân tán

Để giải quyết được những bài toán rất lớn,
thay vì tăng tốc độ tính toán của máy tính
người ta sử dụng cùng một lúc nhiều bộ xử
lý.

Bài toán sẽ phân ra thành nhiều phần thực
hiện theo cách song song, mỗi phần do
một bộ xử lý riêng giải quyết.

Cách viết chương trình cho vấn đề này
được biết với tên gọi Lập trình song song
(Parallel Programming).
Hiệu năng của hệ thống

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

• SIMD (Single Instruction
stream, Multiple Data
stream): đơn vị điều khiển
riêng lẽ gửi cùng câu lệnh
đến các bộ xử lý.

Khi câu lệnh được thực thi
một cách đồng thời trên các
bộ phận xử lý. Chẳng hạn,
for(i=0;i<1000;i++)
c[i] = a[i] + b[i]
• Với máy tính thi hành cùng câu lệnh, vòng lặp sẽ thi
hành nhanh hơn. Trong khi đó, với mẫu lập trình
SIMD sử dụng trong cấu trúc chọn lựa, việc thi hành
có điều kiện sẽ làm tổn hại đến hiệu năng của bộ xử
lý SIMD.
Kiến trúc SIMD
Kiến trúc SIMD
Kiến trúc MIMD
Kiến trúc MIMD

Kiến trúc MIMD (Multiple Instruction stream,
Multiple Data stream) cho phép mỗi đơn vị xử lý
thi hành những chương trình khác nhau.

Các hệ thống MIMD có các đặc trưng sau: xử lí
phân tán thông qua một số các bộ xử lí độc lập,
chia sẻ tài nguyên chứa trong hệ thống bộ nhớ
chính, mỗi bộ xử lí thực hiện độc lập, đồng thời và
thực hiện các chương trình riêng.


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


Kiến trúc SPMD (Single Program,
Multiple Data) cho phép nhiều thực
thể (instance) của cùng một chương
trình thực thi trên các dữ liệu khác
nhau.

Kiến trúc SPMD có thể diễn đạt bởi
kiến trúc MIMD bằng cách dùng
khối điều khiển if – else với điều
kiện được chỉ định bởi định danh
(identify) của tác vụ.
Kiến trúc chuyển thông điệp
Kiến trúc chuyển thông điệp

Về mặt luận lý, platform chuyển thông điệp
(Message-Passing) bao gồm nhiều nút xử lý
(Processing Node), mỗi nút sở hữu một không
gian địa chỉ riêng.

Mỗi nút có thể hoặc là một bộ xử lý đơn hoặc đa
xử lý với không gian địa chỉ chung.

Xu hướng hiện nay là phát triển máy tính song
song dạng chuyển thông điệp (Message-Passing
Parallel Computer). Clustered Workstation hoặc
Non - Shared – Address Space Multicomputer là
những ví dụ về platform chuyển thông điệp.
• Trên platform này, tương tác giữa các tiến trình
(process) hay tác vụ (task) thực thi trên các nút
khác nhau thông qua việc chuyển các thông điệp.

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

s
+ mt
w
là thơi gian cho một trao đổi đơn
giản của m thông điệp giữa 2 tiến trình trên các nút
khác nhau của mạng. Trong đó,

t
s
là độ trễ hay thời gian khởi động để truyền dữ
liệu.

t
w
thời gian truyền 1 dữ liệu.

Có các giao tiếp cơ bản trên mạng như sau

Phát tán (broadcast)

Quy hồi (reduce)

Phân phát (scatter)

Thu thập (gather)
Thao tác phát tán
Thao tác phát tán

Đây là hình thức truyền đi, nhằm gửi một thông
điệp đến tất cả các tiến trình đang hoạt động trên

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ó kết quả tích lũy sau cùng. Chính vì
vậy, thao tác quy hồi thường được dùng để
tính tổng, tính tích, tìm cực đại, cực tiểu,
v.v
Thao tác quy hồi
Thao tác quy hồi
Thao tác phân phát và thu thập
Thao tác phân phát và thu thập

Phân phát là việc gởi từng phần của dữ liệu đến
các tiến trình hoạt động trên mạng. Còn thu thập
là ngược lại của phân phát, nhằm tập hợp các giá
trị riêng từ các thành phần lại.
Môi trường lập trình
Môi trường lập trình

Để thực hiện tính toán song song và phân tán
trên hệ thống chuyển thông điệp, cần một số
yếu tố sau đây về phần cứng và phần mềm:

Hệ thống gồm nhiều bộ xử lý hoặc máy tính

Có mạng để liên kết các các trạm làm việc

Phần mềm hệ thống để quản lý và điều khiển việc
gọi từ xa.

Hệ điều hành, trình biên dịch

Tạo lập cơ chế tạo máy ảo song song hoặc cơ chế

đặ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.


Môi trường nầy có thể hoạt động trên
nhiều chủng loại máy tính khác nhau

Hầu hết các ứng dụng song song đều được
cài đặt trên hệ điều hành UNIX như
Solaris, AIX, Linux,

Bên cạnh đó, môi trường Windows
NT/2000/XP cũng có thể cài đặt các ứng
dụng song song do khả năng xử lý đồng
thời.
Mô hình lập trình phân tán
Mô hình lập trình phân tán

Các tiến trình khác nhau được hòa vào
trong một chương trình.

Trong khi chương trình thực hiện, các phần
khác nhau sẽ được chọn lựa cho mỗi thực
thể căn cứ giá trị dữ liệu.

Trên các hệ thống chuyển thông điệp
thường có hai mô hình lập trình:

Mô hình master – slave.

Mô hình task – to – task (hay node to node).

Trong đó mô hình master – slave là sử thể

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à

chuyển đồng bộ (Synchronous Passing) nếu nó kết
thúc (return) khi việc truyền thông điệp vừa hoàn
thành.

Hàm được gọi là gởi đồng bộ (synchronous send) nếu
nó đợi cho đến khi thông điệp được chấp nhận bởi tiến
trình nhận. Hàm nhận đồng bộ sẽ đợi cho đến khi
thông điệp mà nó mong đợi đi đến.
• Thực chất của các hàm đồng bộ là thực hiện hai hành
động: truyền dữ liệu và đồng bộ hóa các tiến trình,
nói cách khác, có sự phối hợp với nhau trong việc gởi
và nhận.
Đồng bộ trong việc gửi và
Đồng bộ trong việc gửi và
nhận
nhận

Đôi khi còn dùng thuật ngữ blocking thay cho
thuật ngữ đồng bộ và non-blocking là bất đồng
bộ.

×