Bài toán Lập trình lưới• Tính toán lưới cung cấp khả năng sử dụng nhiều máy tính trên một bài toán duy nhất để giảm thời gian thực hiện.. • Giả sử một vấn đề được chia thành p phần bằng
Trang 1Chương 6 Ứng dụng khả lưới
tính toán
Giảng viên: TS Đàm Quang Hồng Hải
TÍNH TOÁN LƯỚI
Trang 2• Đây là một mô hình đã có kể từ khi máy
tính lần đầu tiên được kết nối (thông qua telnet)
• Khả lưới bao gồm sử dụng tính chất phân phối công việc trên nền tảng Grid
Trang 3Các mô hình Lưới tính toán
Trang 4Bài toán Lập trình lưới
• Tính toán lưới cung cấp khả năng sử dụng nhiều máy tính trên một bài toán duy nhất để giảm thời gian thực hiện.
• Giả sử một vấn đề được chia thành p phần bằng
nhau, với mỗi phần thực hiện trên một máy tính riêng biệt tại cùng một thời điểm Thời gian để
thực hiện vấn đề bằng cách sử dụng p máy tính đồng thời sẽ là 1/p thời gian trên một máy tính
duy nhất.
• Mô hình lý tưởng – bài toán có thể không được
chia thành các phần bằng nhau có thể được thực hiện đồng thời.
Trang 5Khả lưới tính toán cho một ứng dụng
• Khả năng thực thi một ứng dụng trên một
nền tảng Lưới, bằng cách sử dụng các
nguồn lực phân phối có sẵn trên nền tảng
đó
• Khả lưới tính toán dùng để chỉ sự thích
ứng hoặc phát triển một chương trình
nhằm có khả năng giao tiếp với một trung
gian lưới (grid middleware) để sắp xếp và
sử dụng tài nguyên từ môi trường phân tán Lưới một cách có hiệu quả đáp ứng nhu
cầu của chương trình
Trang 6Minh họa cần thiết ứng dụng lưới
• Để tính toán dự báo một vùng 5 x 10 8 phần tử,
trong đó mỗi phần tử tính toán cần 200 phép tính
• Như vậy mỗi bước thời gian cần 200 x 5 x 10 8 =
Trang 7Minh họa cần thiết ứng dụng
xử lý
Trang 8– Sử dụng nhiều máy tính riêng biệt giải
nhiều vấn đề
– Sử dụng nhiều máy tính chung giải một vấn đề
Trang 9Nhiều máy tính riêng biệt giải
nhiều vấn đề
Quét thông số
• Trong một số lĩnh vực lĩnh vực, các nhà
khoa học cần để chạy các chương trình
tương tự nhiều lần, nhưng với dữ liệu đầu vào khác nhau
• "Quét" qua không gian thông số với các giá trị khác nhau của các tham số đầu vào tìm kiếm một giải pháp
• Nhiều trường hợp, không dễ dàng để tính toán câu trả lời và sự can thiệp của con
người là cần thiết để tìm kiếm hoặc thiết
kế không gian
Trang 10Nhiều máy tính quét thông số
Trang 11Ví dụ ứng dụng quét thông số
• Một nhà khoa học có thể muốn tìm kiếm
một loại thuốc mới và nhu cầu để thử công thức khác nhau có thể phù hợp tốt nhất với một loại protein cụ thể
• Một kỹ sư thiết kế có thể nghiên cứu ảnh hưởng của thiết kế khí động học khác nhau với hiệu suất của máy bay
• Tính toán quá trình thiết kế thẩm mỹ với
nhiều thiết kế có thể thay thế mà con người
Trang 12Các thông số trong quét thông số
• Thông thường, nhiều thông số có thể được thay đổi Có thể là một sự kết hợp rộng lớn các giá trị tham số
• Một cách lý tưởng, một số cách quét tham
số tự động cần bao gồm cả quy định quét tham số cụ thể và cách lập kế hoạch quét đơn lẻ trên nền tảng lưới
Trang 13Các ứng dụng thực hiện quét thông số
Trang 14Thực hiện quét thông số
• Có thể chỉ đơn giản bằng cách gửi nhiều tập tin mô tả công việc, một cho mỗi tập các tham số, nhưng đó không phải cách hiệu quả
• Thông số các ứng dụng quét là rất quan trọng nên các dự án nghiên cứu để cho
chúng hiệu quả trên một lưới tính toán
• Việc quét tham số xuất hiện rõ ràng trong các ngôn ngữ mô tả công việc
Trang 15Ví dụ RSL-2/JDD
<count> 5 </ count>
• Đăng ký 5 trình thực thi công việc, đơn
giản là giống hệt nhau
• Chú ý: 4 trình thực thi là vô nghĩa trừ khi mỗi trình thực thi có hành động lựa chọn
mã riêng hoặc các tập tin đầu vào và đầu
ra khác nhau được lựa chọn cho từng phiên bản trong tập tin mô tả công việc
• Các yếu tố mô tả công việc thường có thể
mô tả để thay đổi cho mỗi trình thực thi
Trang 16Các tham số được liệt kê
trong trong JSDL Ver 1
• Hai yếu tố bổ sung
• <Parameter> Để xác định lựa chọn các
thông số
• <value> Để liệt kê các giá trị
• chứa trong một phần tử <Assignment> cho từng
• Công việc Đa nhiệm/lồng nhau cho các kịch bản khác nhau:
– Duy nhất thay thế hoặc
– Các thay thế đa nhiệm đồng thời trong các kết hợp khác nhau.
Trang 18Tham số quét, yếu tố lựa chọn và thay thế
Trang 21Hình thức biểu thị XPath
• XPath cho phép nhiều hình thức biểu thị, ví
dụ có nhiều thẻ <c> được gọi:
/a /b /c [3]
Trang 22Ví dụ cho quá trình quét tham số
• Xem xét công việc JSDL:
Trang 23Thay đổi tham số thứ hai là Bob, Alice, và Tom (3 lần quét):
Trang 24• Cấu trúc for xác định giá trị của một
tham số, sẽ thay thế như trước kia và
là một sự thay thế vĩ mô.
Trang 25Mô tả Job với ngôn ngữ XML
• Đầu tiên, tham số quy định cụ thể giá trị đối số:
<parameter name="arg1" type="integer" domain="range">
<range from="1" to="99" type="step" interval="2"/>
</parameter>
• Đối số được gọi là arg1 Giá trị cho arg1 là 1,3,5 9
• Đối số arg1 sẽ xuất hiện trong thực thi :
Trang 26Nhiều máy tính chung giải một vấn đề
Phân vùng dữ liệu
• Là cách dễ nhất để sử dụng nhiều máy tính với nhau
• Chia dữ liệu thành nhiều phần
• Mỗi máy tính hoạt động trên từng phần dữ liệu
Trang 27Phân vùng dữ liệu
Trang 28• Người dùng có thể gửi chuỗi truy vấn được
so sánh với một cơ sở dữ liệu trình tự gen rất lớn được biết để khám phá các mối
quan hệ hoặc để tìm trình tự phù hợp với trong một gen gia đình
• Cơ sở dữ liệu trình tự gen rất lớn
Trang 29Phân vùng cơ sở dữ liệu BLAST
• Nếu chỉ một trình tự từ người sử dụng, cơ sở dữ liệu được phân chia thành các phần và các máy tính khác nhau làm việc trên các phần khác nhau.
Trang 30Truy vấn cơ sở dữ liệu
• Ngược lại nếu người dùng gửi nhiều truy vấn, mỗi truy vấn tới một máy tính khác nhau có quyền
truy cập toàn bộ cơ sở dữ liệu
Trang 31Mã nguồn thông thường
• Trong nhiều trường hợp, người sử dụng
Grid muốn sử dụng lại các chương trình
hiện có của họ được viết bằng C, C + +
hoặc thậm chí Fortran
• Tài liệu mã nguồn có thể không có sẵn
• Có thể các chương trình được đóng gói sẵn bởi nhà sản xuất nên viết lại không phải là một lựa chọn
Trang 32Phần mềm khả lưới cho chương
trình nguồn thường GriddLeS
• Một dự án cho phép nhận mã chương trình nguồn thường vào một lưới tính toán
• Tập trung vào xử lý File handling
• Khi quá tải xử lý File handling thì chuyển hướng yêu cầu đến các máy tính từ xa nếu cần thiết
Trang 33GriddLeS
Trang 34truy cập trực tiếp nhưng thông qua các giao diện dịch vụ
Trang 35Web Service Wrapper
Trang 36Gọi dịch vụ Web như một
chương trình
• Nếu dịch vụ Web được viết bằng Java, dịch vụ có thể ra lệnh trong một quá trình riêng biệt bằng cách sử dụng exec của đối tượng Runtime với cấu trúc:
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(“<command>” )
<command> là lệnh phát ra, chặn đầu ra với
OutputStream stdout = process.getOutputStream();
Trang 37Portlet như là một front-end cho một gói ứng dụng
Trang 38Áp dụng với các thành phần phân tán
Trang 39Các ứng dụng được gửi đến Lưới
• Các chương trình viết bằng C, C + +,
cần phải được biên dịch
• Các chương trình Java cần một Java Virtual Machine
• Các gói ứng dụng trước khi biên dịch
Trang 40Job submission components
GT4 container (hosts GT 4 web services)
GRAM services
GRAM adapter (for particular scheduler)
Local scheduler
Compute nodes
User job
submission
Trang 41Gửi một job cần biên dịch
Trang 42Chương trình Java
• Trình biên dịch Java (javac) tạo ra tập tin class (bytecode) được tiếp nhận bởi một máy ảo Java (java)
• Java Virtual Machine là trình thực hiện và các tập tin class là một tập tin đầu vào
• Tập tin class khác có thể được gọi khi tìm thấy trong đường dẫn được chỉ định bởi biến CLASSPATH, do đó, biến này phải
được cài đặt đúng
Trang 43Gửi một Job Java
Trang 44Thành phần chủ yếu gửi Job của Globus
• Grid Resource Allocation Management (GRAM)
Trang 46Cách trực tiếp
• Đối với những Job đơn giản, có thể gửi một Job bằng cách sử dụng tùy chọn -c như:
globusrun-ws -submit -c prog1 arg1 arg2
thực hiện trình prog1 với các tham số arg1 và
arg2 trên máy chủ địa phương.
• Tùy chọn -c làm cho globusrun-ws tạo ra một mô
tả công việc với chương trình được đặt tên và các tham số tiếp theo Tùy chọn -c phải là tùy chọn cuối cùng của globusrun-ws.
• Ví dụ:
globusrun-ws –submit –c /bin/echo hello
• Đầu ra của Job trên dòng lệnh và sẽ cho biết rằng công việc hoàn tất
Trang 48• Job Submission Description Language (JSDL)
Tiêu chuẩn công nghiệp rộng gần đây (2005)
Trang 49</job>
Trang 50Gửi Job với đặc tả XML
• globusrun-ws –submit –f prog.xml
• File prog.xml quy định cụ thể Job với chuẩn JDD
–submit thông báo kích hoạt Job
Trang 51JSDL (phiên bản 1)
• JSDL Job Submission Description Language
• Phiên bản ban đầu không có tham số quét
• Đã được (không chính thức) mở rộng để
kết hợp các tính năng quét tham số
• Hai hình thức tạo ra quá trình quét tham số xác định:
– Liệt kê trong danh sách, và
– Đối số liên quan về số lượng.
• Ngoài việc xác định Job, có thể chỉ định các nguồn lực cần thiết cho Job
Trang 52Các tham số được liệt kê
trong trong JSDL Ver 1
• Hai yếu tố bổ sung
• <Parameter> Để xác định lựa chọn các
thông số
• <value> Để liệt kê các giá trị
• chứa trong một phần tử <Assignment> cho từng
• Công việc Đa nhiệm/lồng nhau cho các kịch bản khác nhau:
– Duy nhất thay thế hoặc
– Các thay thế đa nhiệm đồng thời trong các kết hợp khác nhau.
Trang 53Sử dụng API Grid Middleware
• Có thể sử dụng API Grid Middleware trong
mã ứng dụng cho các hoạt động như:
– Tập tin đầu vào / đầu ra
– Bắt đầu và giám sát công việc
– Giám sát và phát hiện ra tài nguyên lưới
Trang 54Sử dụng API của Globus
• Globus cung cấp bộ các dịch vụ có các API (giao diện C và Java) có thể được gọi là từ các ứng dụng
• Hàng trăm chữ, nếu không phải hàng
ngàn, C và Java routine được liệt kê tại
trang web Globus
Trang 55Ví dụ mã
C++ sử
dụng API
của Globus
Trang 56API Middleware độc lập cấp cao
• Mức độ trừu tượng cao hơn so với của
Globus Middleware API bởi vì:
– Độ phức tạp của Globus routine
– Grid Middleware thay đổi rất thường
xuyên
– Grid Middleware không chỉ có Globus
Trang 57Grid middleware khác
• UNICORE (Uniform Interface to Computing Resources)
• gLite (Lightweight Middleware for Grid
computing) là một phần của hợp tác EGEE (Enabling Grids for E-sciencE)
một dấu hiệu của những thay đổi nhanh
Trang 58Khái niệm API độc lập cấp cao
nằm
trên Grid Middleware
Trang 59Grid Application Toolkit (GAT)
• Các API, dùng để phát triển và thực hiện
các ứng dụng Lưới linh động, độc lập với cơ
sở hạ tầng Lưới và các dịch vụ có sẵn
• Phát triển trong khoảng thời gian
2003-2005
Trang 61Chép file trong GAT/C++
Trang 62SAGA (Simple API for Grid Applications)
• Một nỗ lực tiếp theo của cộng đồng tính toán lưới nhằm tiêu chuẩn API cao hơn
Trang 63Lập trình lưới với các kỹ thuật lập trình song song
• Lập trình gửi thông điệp (Message Passing)
• Máy tính trên một Lưới tính toán kết nối thông
qua Internet hoặc mạng phân tán tốc độ cao.
• Mô hình lập trình tương tự như trong tính toán
cụm máy tính (cluster computing).
• Trong cụm máy tính, máy tính kết nối thông qua một mạng cục bộ với các máy tính gần đó.
• Đối với cấu trúc như vậy, một cách tiếp cận thuận tiện – tiến trình trên các máy tính khác nhau giao tiếp thông qua gửi thông điệp (Message Passing).
• Gửi thông điệp thực hiện bằng cách sử dụng các thư viện hàm Lập trình chèn hàm gửi thông điệp trong mã nguồn
Trang 64Ví dụ lập
trình song song
Trang 65Sử dụng nhiều máy tính lưới
để giải một vấn đề đơn
• MPI (Message – Passing Interface) là một hệ
thống giao tiếp chuyển thông điệp được dùng trên mạng Hệ thống này ra đời vào năm 1992
• MPI ra đời do nhà sản xuất MPP (Massively
Parallel Processor) đã tạo ra các API trao đổi
thông điệp riêng, nên khó viết những chương trình tính toán song song có tính cơ động (portable)
• Tập MPI thi hành bao gồm một thư viện các thủ tục sao cho có thể gọi được từ các chương trình
Fortran, C, C++ hay Ada.
Trang 66Giới thiệu về MPI
• Tiến trình tiêu chuẩn hóa được bắt đầu từ
Workshop về Standards for Message Passing in a Distributed Memory Environment được tổ chức vào hai ngày 29 – 30/4/1992 ở Williamsburg - Virginia.
• Phiên bản MPI-1.0 ra đời vào tháng 5/1994 Đến tháng 3/1995 diễn đàn MPI lại nhóm họp để sửa
các lỗi sai và gạn lọc những thứ cần thiết đưa vào tập tài liệu của MPI Phiên bản 1.1 được đưa ra vào tháng 6/1995
• Vào tháng 4/1994, MPI-2 cũng bắt đầu khởi động
và sau đó cứ 6 tuần, các nhà thiết kế lại gặp nhau một lần để thống nhất các tư liệu của MPI-2 Ngày 25/4/1997 MPI-2 được thông qua
Trang 67Ưu điểm với MPI
• Những thuận lợi cơ bản MPI là có những chương trình chuyển thông điệp cấp thấp trên hệ thống phân bố, đã được chuẩn hóa để người sử dụng
thuận tiện khi dùng các ngôn ngữ cấp cao như C/ C++, FORTRAN 77
• Có một tập khá lớn các hàm truyền thông điểm đến điểm (point-to-point communication)
• Có nhiều hàm truyền thông tập thể (collective
communication)
• Có khả năng xác định các sơ đồ truyền thông
(communication topologies).
Trang 68Mô hình lập trình MPI
• Mô hình một tiến trình với
đa dữ liệu (Single
program multiple data -
Compile to suit processor
Trang 69Mô hình một tiến trình đa dữ liệu
• Mỗi tiến trình sẽ có một bản sao của các
biến có tên trong chương trình nguồn
• Có thể gây ra một số nhầm lẫn cho các lập trình viên
Ví dụ, giả sử nguồn chương trình có một
biến i khai báo.
Biến i sẽ xuất hiện trong mỗi tiến trình,
mặc dù mỗi nơi khác nhau và giữ một giá trị xác định bởi tiến trình local
Trang 70Thiết lập Môi trường gửi
thông điệp
• Thông thường máy tính được sử dụng quy định
trong một tập tin, hostfile hoặc machines.
Một ví dụ của một tập tin machines
Coit-grid01.uncc.edu Coit-grid02.uncc.edu Coit-grid03.uncc.edu Coit-grid04.uncc.edu Coit-grid05.uncc.edu Nếu không có tập tin machines, tập tin machines
mặc định được sử dụng hoặc chương trình sẽ chỉ chạy trên một máy tính duy nhất.
Trang 71Thông điệp được
gửi giữa các máy
phải được chạy
trước khi người
Application program
Workstation
Workstation
Messages sent through network
(executable)
(executable) (executable)
.
.
Trang 72Tạo và thực hiện tiến trình
Quá trình Biên dịch
• Với mô hình SPMD, chương trình duy nhất soạn bằng văn bản và biên dịch bao gồm
các thư viện MPI, thường sử dụng MPI
mpicc script như sau:
mpicc myProg.c-o myProg mpicc thường sử dụng như trình biên dịch
cc và các tùy chọn cc có sẵn.
Trang 73Thực hiện chương trình
• MPI-1 không xác định chi tiết thực hiện ở tất cả.
Lệnh thường dùng để thực hiện chương trình là
mpirun , tùy chọn -np xác định số lượng của các
tiến trình.
Ví dụ
mpirun -np 4 myProg dòng đối số cho myProg có thể được thêm vào sau myProg và có thể được truy cập bởi chương trình
Trang 74Ví dụ với tập tin machines
• Tập tin machines
Coit-grid01.uncc.edu Coit-grid02.uncc.edu Coit-grid03.uncc.edu Coit-grid04.uncc.edu Coit-grid05.uncc.edu
• Chạy
mpirun -machinefile machines -n 4 prog
• Chạy prog với 4 tiến trình, mỗi tiến trình thực hiện trên một máy trong danh sách MPI sẽ thông qua danh sách các máy gửi các tiến trình tới các máy
Trang 75Rank trong lập trình MPI
• Trong MPI, các tiến trình trong giao tiếp cho một số được gọi là một Rank bắt đầu
if (rank == 0) /* rank 0 process does this */;
if (rank == 1) … /* rank 1 process does this*/;
Hoặc theo cách tiếp cận Master-Slave
if (rank == 0) … /* master does this */;
else /* slaves do this */;
Trang 76Khởi tạo chương trình
• Tất cả các tiến trình bắt đầu đồng thời với nhau
• Thực hiện khi một máy bắt đầu các chương trình được biên dịch
• Khởi tạo theo cách thức của MPI
Trang 77Mô hình đa tiến trình, đa dữ liệu (MPMD) với tiến trình động
• Mô hình đa tiến trình, đa dữ liệu (MPMD) với 2
MPI-• Một bộ xử lý thực hiện tiến trình chính Các tiến trình khác bắt đầu từ trong tiến trình chính
Process 1
Process 2
spawn(
);
Tim e
Sta
r t e xecution
of process 2