Những mơ hình lập trình và cơng cụ hỗ trợ

Một phần của tài liệu Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị (Trang 63 - 69)

Cho đến lúc này, gần 20 năm nghiên cứu và phát triển trong nghành lập trình song song và phân bố. Việc thiết kế hệ thống phân bốđã hướng cho nền phát tiển kỹ thuật phần cứng lên tầm cao mới và ước hẹn cĩ thể xây dựng được hệ

thống tốt cải thiện được trạng thái tồn tại tốt và sử dụng lại. Sự phát triển Grid computing cũng lấy gốc từ việc tính tốn song song và phân bố này, bởi vì chúng

http://etrithuc.vn

đã xác lập được những phương pháp lập trình nền tảng cho sự phân bố và song song hố .Chúng tơi sẽđưa ra một số mơ hình lập trình và cơng cụ mà ngày ngay

đã được thực nghiệm trên thế giới

3.3.2.1. Mơ hình chia sẽ trạng thái

Mơ hình lập trình Shared-state đặc trưng cho sự liên kết chặt chẽ ,những ngơn ngữđồng bộ và những mơ hình thực thi cho những máy trính chia sẻ bộ nhớ

và hệ thống mạng chia sẻ vùng nhớ giữa các máy tình, với băng tầng truyền thơng cao và độ trễ trong việc truyền thơng thấp. Việc này quyết định mơi trường Grid và sẽ làm những cơng cụ lập trình khác trở nên khơng hiệu quả, vì thế cần cĩ một số mơ hình lập trình thiết yếu dựa trên h ình th ức shared-state, v à như thế trình sản xuất và tiêu thụ dữ liệu được phân chia rõ ràng hơn trên mơi trường Grid

JavaSpaces

Javaspaces là một sự bổ sung dựa trên Java với khái niệm khơng gian biến (tuplespace) Linda, điều này được minh hoạ bằng một tập biến được thể hiện bởi một tập các đối tượng. Sử dụng Java cĩ đặc điểm là nhiều client và server tương tác với nhau mà khơng liên quan đến những kiến trúc của bộ xử lý và hệ điều hành. Sử dụng JavaSpaces nhìn nhận một ứng dụng như một tập những xử lý giao tiếp với nhau bằng cách nhận và đưa những đối tượng vào một hay nhiều vùng khơng gian (space).Một khơng gian (space) là một kho chứa đối tượng cụ thể và

được chia sẻ mà cĩ thểđược truy xuất thơng qua mạng máy tính. Những xử lý sử

dụng kho chứa như một kỹ thuật trao đổi dữ liệu thay vì phải giao tiếp trực tiếp với nhau. Những thao tác chính là một xử lý cĩ thể cĩ một khơng gian để đặt, nhận, đọc, sao chép những đối tượng .Trên thao tác nhận hay đọc, đối tượng nhận

được xác định bởi một thao tác cĩ tính chất kiểm tra sự gần giống liên kết (associative matching ). Sự gần giống này gồm dạng và số lượng thành phần liên kết với đối tượng đặt vào khơng gian. Một lập trình viên muốn xây dựng một ứng dụng trên nền tảng như thế này nên thiết kết cấu trúc dữ liệu phân phối giống như

http://etrithuc.vn

mới mà mơ hình lập trình JavaSpace mang lại cho lập trình viên xây dựng những

ứng dụng phân phối dễ dàng hơn.

Hiện thời thì việc viết ứng dụng đựa trên JavaSpace được hỗ trợ trên Grid sử dụng cơng cụ Java của Sun cho Globus.

3.3.2.2. Mơ hình truyền thơng điệp (Message Passing)

Trong những mơ hình Message-Passing ,những tiến trình được phân chia riêng khơng gian bộ nhớ,và thơng tin trao đổi bằng cách truyền thơng điệp từ một tiến trình đến các tiến trình cịn lại. Sự song song hố thể hiện rõ ràng bằng các thơng điệp, nĩ mang lại cho người sử dụng đầy đủ quyền điều khiển mà những mơ hình lập trình khác khơng cĩ.

• MPI và những biến thể của nĩ

MPI(Message Passing Interface) là một chuẩn rất phổ biến cho lập trình truyền thơng điệp .Chúng tơi sẽ mơ tả chi tiết chuẩn này trong phần sau .

MPCH-G2 là một sự bổ sung của MPI cho Grid sử dụng những dịch vụ Globus và cho phép lập trình viên kết nối nhiều máy tính với kiến trúc khác nhau để chạy

ứng dụng MPI .MPICH-G2 tự động chuyển đổi dữ liệu trong những thơng điệp

được gửi giữa những máy tính với kiến trúc khác nhau và hỗ trợ truyền thơng đa giao thức bằng cách tự chọn TCP cho việc truyền thơng điệp giữa các máy tính với nhau.

Sư phổ biến của MPI đã làm xuất hiện một số những biến thể của nĩ ,liên quan đến những vấn đề của Grid như tựđộng hố quản lý tiến trình ,và nhiều thao tác hiệu quả liên quan đến nhiều tiến trình .

Ví dụ thư viện MagPIe là một sự bổ sung cho những thao tác liên quan đến nhiều tiến trình (collective operation)của MPI chằng hạn như broadcast, đồng bộ

các tiến trình,và những tốn tử tính tốn gộp với những tối ưu hố cho những hệ

thống rộng lớn như Grid. Những thao tác này sẽ được nĩi đến chi tiết trong phần lập trình MPI tiếp theo.

http://etrithuc.vn

Stampi hỗ trợ trình quản lý tiến trình tự động ,MPI-IO và MPI-2. MPI_Connect làm cho những ứng dụng MPI khác nhau, của các nhà phân phối MPI khác nhau cĩ thể giao tiêp được với nhau

3.3.2.3. Mơ hình RPC và RMI (adsbygoogle = window.adsbygoogle || []).push({});

Những mơ hình truyền thơng điệp (Message Passing),chúng cung cấp các hình thức truyền thơng nhưđiểm điểm,một điểm đến nhiều điểm,v.v...

Những trình gửi thơng điệp đều cĩ những thơng số thiết yếu cho những trình nhận xác định thơng điệp này, và quyết định xử lý thơng điệp hay khơng dựa trên dạng thơng điệp. Ngữ nghĩa liên quan đến dạng thơng điệp thường được định nghĩa bởi các nhà thiết kế ứng dụng. Những hình thức gọi hàm từ xa RPC(Remote Procedure Call) và cung cấp phương thức từ xa RMI(Remote Method Invocation) cung cấp những khả năng như thế này. Nhưng cấu trúc giao tiếp giữa trình gửi và trình nhận giơng như là một ngơn ngữ hơn là những lời gọi hàm thư viện đơn giản di chuyển dữ liệu giữa nhiều điểm A và B của mơ hình truyền thơng điệp. Những mơ hình RPC và RMI cung cấp một kỹ thuật đơn giản và dễ hiểu cho sự quản lý tính tốn từ xa.Ngồi chức năng là một kỹ thuật cho quản lý các dịng điều khiển và dữ liệu. RPC và RMI cũng cho phép kiểm tra các dạng tham số và số lượng tham số. RPC và RMI cĩ thể được dùng để xây dựng những mơ hình cấp cao hơn cho Grid ,như những thành phần,những dịch vụ mạng v.v...

RPC hướng Grid

GridRPC là một mơ hình RPC và là thư viện API cho Grid.Bên cạnh cung cấp ngữ nghĩa chuẩn RPC với sự thực thi bất đồng bộ, song song các tác vụ v.v.. Ba khả năng rất quan trong mà GridPRC cung cấp cho người sử dụng cái nhìn trong suốt về cách quản lý như sau:

+ Tìm kiếm và lập biểu tựđộng cho tài nguyên (Dynamic resoure discovery and scheduling) Những dịch vụ RPC cĩ thểđược đặt bất kỳởđâu trên Grid. Tìm kiếm, lựa chọn,và lập biểu cho sự thực thi từ đằng xa nên được thực hiện dựa trên những ràng buộc,những yêu cầu cơ bản của người sử dụng

http://etrithuc.vn

+ Bảo mật (security) :Bảo mật Grid thơng qua GSI và chứng thực X.509 là

điều thiết yếu cho hệ điều hành trong một mơi trường mở.Globus là cơng cụ Grid hỗ trợ bảo mật này .

+ Khả năng tự sửa chữa ( Fault tolerance) :Thơng qua việc kiểm tra các nút, giảm thiểu hay chạy lại các ứng dụng trên các nút nhằm bảo đảm độ tin cậy ngày càng trở nên thiết yếu cùng với số lượng tài nguyên liên quan tăng lên.

Trình quản lý giao tiếp là một vấn đề quan trọng cho tất cả các mơ hình gọi hàm từ xa( RPC). Điển hình là một ngơn ngữ định nghĩa giao tiếp (Interface Definition Languague IDL). GridRPC cũng được thiết kế với một số những thuộc tính trong trường hợp cải thiện khả năng dùng lại và dễ bổ sung và triển khai:

+ Hỗ trợ cho một ngơn ngữđăc tả giao tiếp cụ thể :Bao gồm nhiều tham số

dạng ma trận ,những tham số ma trận chia sẻ bộ nhớ, tham số tập tin, và những tham số này đều được gọi tham chiếu qua hàm.

+ Quản lý ngơn ngữ đặc tả giao tiếp ở máy chủ : Chỉ cĩ những máy chủ

GridRPC quản lý và giám sát tiến trình tác vụ. Máy khách chỉ cĩ nhiệm vụ đơn giản hơn là chỉ thực thi tiến trình.

Java RMI

Những phương thức Java được cung cấp từ xa làm cho những lập trình viên cĩ thể tạo những ứng dụng phân phối dựa trên ngơn ngữ lập trình Java.RMI thừa kế từ thiết kế RPC cơ bản, nĩ cĩ những đặc điểm phân biệt với RPC cơ bản. Với RMI,một chương trình chạy trên máy ảo Java cĩ thể yêu cầu những phương thức của những đối tượng khác bên trong các máy ảo khác. Thuận lợi chính của RMI là mơ hình hướng đối tượng thực sự, hỗ trợ tất cả các dạng dữ liêu của một chương trình Java, và hỗ trợ thu gom rác của chương trình. Do đĩ Java RMI cung cấp một giao diện lập trình cấp cao, rất thích hợp cho tính tốn lưới.

http://etrithuc.vn

Sự tất nhiên của tính tốn lưới là tạo ra tất cả các máy tinh sẵn dùng trong

ứng dụng Grid. Vì thế, một số ứng dụng sẽ muốn thực thi cả bên trong và xuyến suốt khơng gian địa chỉ. Thực thi nhiều tiểu trình trong cùng một khơng gian địa chỉ được phân phối, và cũng thơng qua dữ liệu và điều khiển giữa các máy tính. Ví dụ một tình trạng xảy ra trong một nhĩm nhiều bộ xử lý cân bằng và bên trong Grid. Một số mơ hình lập trình đã được phát triển để đề cập tời vấn đề này.

OpenMP và MPI

OpenMP là một thư viện hỗ trợ lập trình song song trong những máy tính chia sẻ bộ nhớ. Thư viện này được phát triển bỏi một tổ chức những nhà cung cấp với những mục tiêu của việc sản xuất một giao tiếp lập trình chuẩn cho những máy tính chia sẻ bộ nhớ song song, và sử dụng những ngơn ngữ như Fortran, C và C++. OpenMP cho phép những đoạn mã thực thi song song (vịng lập Do song song ), định nghĩa dữ liệu chia sẻ (SHARED) và đồng bộ hố các xử lý.

Sự liên kết cả hai OpenMP và MPI bên trong một ứng dụng. Nguyên tắc nhìn nhận những ứng dụng thuộc dạng này là khả năng thực hiện ứng dụng của mỗi mơ hình. OpenMP thiết yếu như một mơ hình đa tiểu trình. Vì vậy, OpenMP yêu cầu ứng dụng quản lý các thư viện MPI.

3.3.2.4. Mơ hình Peer-to-Peer

Tính tốn peer – peer là sự chia sẻ của những tài nguyên máy tính và những dịch vụ bằng cách trao đổi trực tiếp giữa các hệ thống. Tính tốn peer – peer nhận những ưu điểm của sự tồn tại tính tốn trên những máy tính mạnh và sự liên kết mạng, cho phép những

JXTA

Một họ những giao thức thiết kế đặc biệt cho tính tốn P2P là JXTA. Tên JXTA được trích dẫn từ “juxtapose” và cĩ nghĩa đơn giản như hình thức tính tốn P2P client/server và tính tốn dựa trên Web. Như vậy, JXTA là một tập hợp những giao thức tổng quát P2P , được định nghĩa trong những thơng điệp XML, cho phép một số thiết bị đã kết nối trên mạng sắp xếp từ những máy điện thoại

http://etrithuc.vn

động (cell phone và những thiết bị máy tính bỏ túi (PDA) đến những máy tính (PC) và máy chủ (server) để giao tiếp và làm việc với nhau ở dạng hình thức P2P.

Một phần của tài liệu Nghiên cứu tính toán lưới và thực nghiệm trên một số thuật toán lý thuyết đồ thị (Trang 63 - 69)