1. Trang chủ
  2. » Công Nghệ Thông Tin

tính toán lưới - chương 6 ứng dụng khả lưới tính toán

87 607 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tính Toán Lưới - Chương 6 Ứng Dụng Khả Lưới Tính Toán
Tác giả Nhóm Tác Giả
Người hướng dẫn TS Đàm Quang Hồng Hải
Trường học Trường Đại học Khoa học Tự nhiên Hà Nội
Chuyên ngành Khoa học Máy Tính
Thể loại Chương
Năm xuất bản 2024
Thành phố Hà Nội
Định dạng
Số trang 87
Dung lượng 3,84 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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 1

Chươ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 3

Các mô hình Lưới tính toán

Trang 4

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

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 5

Khả 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 6

Minh 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 7

Minh 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 9

Nhiề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 10

Nhiều máy tính quét thông số

Trang 11

Ví 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 12

Cá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 13

Các ứng dụng thực hiện quét thông số

Trang 14

Thự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 15

Ví 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 16

Cá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 18

Tham số quét, yếu tố lựa chọn và thay thế

Trang 21

Hì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 22

Ví dụ cho quá trình quét tham số

• Xem xét công việc JSDL:

Trang 23

Thay đổ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 25

Mô 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 26

Nhiề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 27

Phâ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 29

Phâ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 30

Truy 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 31

Mã 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 32

Phầ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 33

GriddLeS

Trang 34

truy cập trực tiếp nhưng thông qua các giao diện dịch vụ

Trang 35

Web Service Wrapper

Trang 36

Gọ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 37

Portlet 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 39

Cá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 40

Job submission components

GT4 container (hosts GT 4 web services)

GRAM services

GRAM adapter (for particular scheduler)

Local scheduler

Compute nodes

User job

submission

Trang 41

Gửi một job cần biên dịch

Trang 42

Chươ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 43

Gửi một Job Java

Trang 44

Thành phần chủ yếu gửi Job của Globus

• Grid Resource Allocation Management (GRAM)

Trang 46

Cá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 50

Gử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 51

JSDL (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 52

Cá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 53

Sử 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 54

Sử 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 55

Ví dụ mã

C++ sử

dụng API

của Globus

Trang 56

API 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 57

Grid 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 58

Khái niệm API độc lập cấp cao

nằm

trên Grid Middleware

Trang 59

Grid 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 61

Chép file trong GAT/C++

Trang 62

SAGA (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 63

Lậ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 64

Ví dụ lập

trình song song

Trang 65

Sử 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 66

Giớ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 68

Mô 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 69

Mô 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 70

Thiế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 71

Thô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 72

Tạ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 73

Thự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 74

Ví 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 75

Rank 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 76

Khở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 77

Mô 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

Ngày đăng: 13/03/2014, 10:13

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w