Các vấn đề khi lập trình luới

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

3.2.1. Tính mang chuyển, tính khả thi và khả năng thích ứng

Các ngơn ngữ lập trình cấp cao hiện nay cho phép người dùng viết mã nguồn hồn tồn độc lập với bộ xử lý. Các mơ hình lập trình lưới cũng nên cĩ khả năng như vậy. Điều này đối với các máy ảo thơng dịch nghĩa là độc lập về kiến trúc, nhưng nĩ cũng cĩ nghĩa là khả năng sử dụng các đoạn mã nguồn hay dịch vụ

ở nhiều nơi khác nhau để cung cấp thành một chức năng tương tự. Tính khả chuyển như vậy là một điều kiện tiên quyết cho việc sao chép các cấu hình động và khơng đồng nhất.

Việc sử dụng những đoạn mã nguồn và dịch vụ khác nhau nhưng cĩ chức năng tương tự nhau thể hiện tính cộng tác trong việc thi hành các mơ hình lập trình. Khái niệm về một kiến trúc Grid mở và cĩ tính mở rộng ngụ ý là một mơi trường phân tán cĩ thể hỗ trợ cho các giao thức, dịch vụ, giao diện lập trình ứng dụng và các cơng cụ phát triển phần mềm. Cuối cùng tính mang chuyển và tính cộng tác sẽ dẫn đến khả năng thích ứng. Một chương trình Grid phải cĩ khả năng thích ứng với các cấu hình khác nhau dựa trên nguồn tài nguyên sẵn cĩ. Điều này cĩ thể xảy ra vào thời điểm bắt đầu, hay tại thời điểm thực thi nguyên do sự thay đổi các yêu cầu của ứng dụng hay do khả năng phục hồi lỗi. Khả năng thích ứng như vậy cĩ thể liên quan đến một bước khởi động lại đơn giản ở đâu đĩ hay là một sự tích hợp thật sự giữa tiến trình và dữ liệu.

3.2.2. Khả năng phát hiện tài nguyên

Tìm ra các tài nguyên hiện cĩ trên mạng là một phần quan trọng của tính tốn lưới. Mã nguồn của chương trình lưới sẽ chỉ ra rõ ràng những máy (host) thích hợp nào để chạy chương trình. Tuy nhiên bởi vì Grid chứa đựng nhiều dịch vụ cố định, nên chúng cũng vẫn phải cĩ khả năng tìm ra các dịch vụ này và các giao diện mà chúng hỗ trợ. Cách sử dụng các dịch vụ này phải cĩ khả năng tái lập trình và kết hợp lại theo một cách thống nhất. Vì thế mơi trường và cơng cụ lập trình phải chú ý tìm ra các dịch vụ hiện cĩ và cung cấp cho người dùng các cách thức tường minh hay ngầm ẩn để khai thác các chúng trong quá trình xây dựng và triển khai các ứng dụng Grid.

3.2.3. Hiệu năng

Rõ ràng đối với nhiều ứng dụng Grid, vấn đề hiệu năng là điều rất đáng quan tâm. Bởi vì Grid sử dụng băng thơng hỗn tạp và các hệ thống phân cấp ẩn

cho nên điều này gây khĩ khăn cho việc đạt được hiệu năng tốt nhất và cách sử dụng hiệu quả các nguồn tài nguyên.

Tuy nhiên đối với nhiều ứng dụng, để đạt hiệu năng đáng tin cậy cũng là một vấn đề khá quan trọng. Một mơi trường động và khơng đồng nhất cĩ thể tạo ra nhiều khả năng thực thi khác nhau mà cĩ thể sẽ khơng được chấp nhận trong nhiều tình huống. Vì thế trong mơi trường chia sẽ, chất lượng dịch vụ sẽ trở nên càng cần thiết nhằm đạt được hiệu năng đáng tin cậy trên một cấu hình tài nguyên đã cho. Trong khi người dùng cĩ thể yêu cầu mơ hình theo một hiệu năng nào đĩ, tuy nhiên sẽ hợp lý hơn nếu hiệu năng cung cấp nằm bên trong một khoảng giới hạn nào đĩ.

3.2.4. Dung lỗi

Việc cần cĩ nhiều cấp độ dung lỗi trong mơi trường Grid là hồn tồn cần thiết. Điều này đặc biệt đúng khi các ứng dụng khởi tạo hàng ngàn các cơng việc độc lập tương tự với nhau trên hàng ngàn máy trạm (host). Rõ ràng khi số lượng các tài nguyên tham gia tính tốn ngày càng tăng thì cũng làm gia tăng xác suất bị hỏng. Các chương trình Grid phải cĩ khả năng kiểm tra các lỗi khi đang thực thi, và bên cạnh đĩ cũng phải cung cấp khả năng phục hồi và phản ứng khi cĩ lỗi xảy ra ở cấp độ chương trình. Tại thời điểm đĩ các cơng cụ cũng phải bảo đảm cho các phép tính cũng được thực thi ở cấp độ tối thiểu khi cĩ lỗi xảy ra.

3.2.5. Bảo mật

Chúng ta sẽ cịn tiếp tục chứng kiến sự phát triển của tính tốn lưới trên nhiều domain chia sẽ, như là các mạng. Trong khi việc cung cấp một chức năng chứng thực mạnh giữa hai site là cực kỳ quan trọng, thì bên cạnh đĩ việc quản lý chương trình trên nhiều site cũng là điều khơng đơn giản. Vì thế, một phương pháp bảo mật cĩ cấp khả năng xác thực người dùng phải được tích hợp vào trong các mơ hình lập trình lưới.

3.2.6. Các siêu mơ hình

Phương pháp lập trình truyền thống với các ngơn ngữ lập trình cổ điển dựa vào trình biên dịch để thực hiện việc chuyển đổi giữa 2 mơ hình lập trình, như là giữa ngơn ngữ cấp cao C hay Fortran, với tập các chỉ thị phần cứng thể hiện bởi việc thực thi tuần tự các hàm trên dữ liệu trong bộ nhớ. Quá trình chuyển đổi này cĩ thể là sự xây dựng của một số các mơ hình liên quan đến ngữ nghĩa của mã nguồn và sự áp dụng một số tính năng cải tiến như tối ưu, dọn dẹp bộ nhớ, và kiểm tra phạm vi. Sự kết hợp các siêu mơ hình tương tự sẽ gĩp phần xây dựng chương trình Grid.

3.3. Tồng quát về các mơi trường hỗ trợ

3.3.1. Một số mơi trường Grid

Autonomic IBM Computing Toolkit :Là một tập hợp những kỹ thuật, những cơng cụ, tài liệu được thiết kế cho người dùng học, thích hợp, và phát triển JXTA Peer to Peer do những nhà nghiên cứu Sun Microsystems dựa trên giao những truyền thơng API JXTA Peer to Peer

3.3.1.1. NetSolve

NetSole là một ứng dụng client/server đuợc thiết kế để giải quyết những vấn đề tính tốn khoa học trong mơi trường phân phối.

Agent

Agent Network of servers Client

Client MPP servers Scalar server request choice reply Hình 3-1 : mơ hình NetSolve

Hệ thống Netsolve dựa trên những hệ thống phân phối, được kết nối thơng qua mạng LAN hay WAN. Những chương trình từ máy khách Netsolve cĩ thể được viết bằng C hay FORTRAN, và sử dụng Web để giao tiếp với Server. Một server Netsolve cĩ thể sử dụng một số gĩi phần mềm liên quan đến khoa học để cung cấp cho những phần mềm tính tốn. Những giao tiếp truyền thơng bên trong Netsolve thơng qua những socket. Netsolve đáp ứng những khả năng cho việc tìm kiếm những tài nguyên máy tính trên một mạng máy tính, chọn những tài nguyên sẵn dùng tốt nhất ,giải quyết một vấn đề ,và trả kết quả cho người sử dụng.

3.3.1.2. Legion

Là một hệ thống trên cơ sở đối tượng được phát triển ở đại học Virginia. Legion cung cấp kiến trúc phần mềm để hệ thống những máy tính phân phối khắp nơi, số lượng khổng lồ cĩ thể giao tiếp với nhau một cách dễ dàng. Trong hệ thống Legion, những áp dụng sau đây.

Mọi thứ là một đối tượng. Những đối tượng đặc trưng cho tất cả các phần cứng và phần mềm. Mỗi đối tượng là một xử lý hoạt động, đáp ứng những yêu cầu giải pháp cho những đối tượng khác bên trong hệ thống. Legion định nghĩa một

tập API cho việc giao tiếp đối tượng. Nhưng khơng phải là ngơn ngữ lập trình hay giao thức truyền thơng.

Những lớp quản lý những trường hợp. Mọi đối tượng Legion được định nghĩa và quản lý bởi chính đối tượng hoạt động .Những lớp đối tượng cĩ những khả năng như sau : tự tạo một trường hợp thể hiện(instance), lập biểu cho việc thực thi,làm cho một đối tượng khác hoạt động, hay khơng hoạt động, và cung cấp thơng tin về trạng thái cho những đối tượng thuộc về các máy tính khác.

Những người dùng cĩ thể định nghĩa thêm các lớp mới. Giống ngơn ngữ lập trình hướng đối tượng ,người dùng cĩ thể định nghĩa lại hay viết lại những chức năng của một lớp. Đặc điểm này cho phép những chức năng này cĩ thể thêm, hay xố tùy theo nhu cầu của người dùng.

Hệ thống Legion hỗ trợ một tập các dạng đối tượng cốt lõi : • Những lớp và lớp tựđịnh nghĩa

• Những đối tượng chủ : Những đối tượng chủ là sự trừu tượng hĩa của việc xử lý những tài nguyên, chúng cĩ thể thể hiện một bộ xử lý đơn hay nhiều máy tính hay mhiều bộ xử lý.

3.3.1.3. Globus

Globus cung cấp một cơ sở hạ tầng phần mềm, làm cho những ứng dụng cĩ thể quản lý phân phối những tài nguyên tính tốn khổng lồ như một máy tính đơn ảo. Một Grid, là một cở sở hạ tầng phần cứng và phần mềm, cung cấp truy xuất các tài nguyên khắp nơi dùng cho tính tốn cấp cao, dù cho sự phân phối thuộc vềđịa lý của tài nguyên và người sử dụng cĩ sự cản trở. Globus cung cấp những dịch vụ cơ bản và những khả năng được yêu cầu để cấu trúc một mạng tính tốn lưới. Bộ cơng cụ bao gồm một tập hợp các thành phần bổ sung cho những dịch vụ cơ bản, chẳng hạn như bảo mật, định vị tài nguyên, quản lý tài nguyên, và dịch vụ truyền thơng.

Mạng tính tốn lưới được hỗ trợ một số lượng lớn những ứng dụng và mơ hình lập trình, đĩ là điều thiết yếu.Vì thế, việc cung cấp hơn một mơ hình lập trình

chuẩn, chẳng hạn như mơ hình lập trình hướng đối tượng là điều cần thiết yếu. Globus cung cấp một số dịch vụ cho phép những nhà phát triển cơng cụ đặc biệt hay những ứng dụng cĩ thể sử dụng để tạo ra những yêu cầu cụ thể cho chính họ. Phương pháp này chỉ khả thi khi những dịch vụ cĩ sự khác biệt và được định nghĩa tốt thơng qua những tập APIcủa nĩ, Globus được kiến tạo như một tầng kiến trúc với những dịch vụ cấp cao được xây dựng trên những dịch vụ cốt lõi ở tầng thấp hơn. Bộ cơng cụ Globus được phân thành những mơ đun ,và một ứng dụng cĩ thể khai thác những đặc điểm này của từng mơ đun của Globus, chẳng hạn như sự quản lý tài nguyên hay hạ tầng thơng tin,mà khơng sử dụng những thư viện truyền thơng của Globus. Bộ cơng cụ Globus hỗ trợ những dịch vụ sau :

• GSI(Grid Security Infrastructure) :kiến trúc bảo mật • GridFTP :giao thức truyền tập tin

• GRAM (Globus Resource Allocation Manager) :quản lý các tài nguyên trên mơi trường Grid.

• Metacomputing Directory Service • Globus Access to Secondary Storage • data catalogue and replica management

Hình 3-2 : Các thành phần của Globus

Globus cĩ thểđược nhìn nhận như một hệ thống cở bản cho tính tốn lưới, ngồi việc cung cấp cho nhà phát triển ứng dụng một tập thư viện API đặc trưng cho các dịch vụ Globus cung cấp. Globus cịn cung cấp cho những nhà phát triển ứng dụng một phương tiện hiện thực cho việc bổ sung các dịch vụ để cung ứng cho một mơi trường thực thi ứng dụng trên mơt vùng rộng lớn.

Globus được chúng tơi nghiên cứu kỹ và đã cài đặt phiên bản Globus 3.2 trên máy đơn, nhưng khơng triển khai được trên mơi trường mạng để tạo Grid. Vì thế chúng tơi đã chuyển sang dùng mơi trường khác để thực nghiệm chương trình thực thi phân bố sau này.

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

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

đã 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ư một tập những đối tượng được lưu trữ trong một hay nhiều khơng gian. Sự tiếp cận

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.

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

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

Tải bản đầy đủ (PDF)

(153 trang)