Những kỹ thuật nâng cao hỗ trợ lập trình

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

các mơ hình và dịch vụ phổ biến, cấp thấp, nhưng cũng phải hướng tới mục tiêu thực hiện các cơng việc này sao cho dễ nhất cĩ thể. Chúng ta sẽđề cập đến một số khả năng của sự hỗ trợ lập trình cấp cao.

3.4.1. Các kỹ thuật truyền thống

Trong khi các ứng dụng được sự hỗ trợ của mơ hình chia sẽ bộ nhớ khơng cịn hiệu quả trong Grid, thì vẫn cịn một số các kỹ thuật hỗ trợ truyền thống khác cĩ thểđược áp dụng vào trong Grid.

• Đan xen tính tốn với việc giao tiếp : Điều này địi hỏi khi trao đổi thơng tin phải cĩ một sự lưu ý để khi biết được khi nào thì các dữ liệu biên cĩ thểđược trao đổi trong khi cơng việc tính tốn vẫn được thực hiện trên đường biên.

• Kết hợp thơng tin : Việc trao đổi thơng tin sẽ trở nên hiệu quả hơn nếu ta kết hợp nhiều thơng điệp nhỏ lại trước khi gửi.

• Nén : Vấn đề về băng thơng và độ trễ sẽ được giải quyết phần nào nếu ta áp dụng những phương pháp nén dữ liệu hiệu quả trong quá trình trao đổi thơng tin.

• Điều chỉnh giao thức : Các ứng dụng sẽ gia tăng hiệu năng giao tiếp nếu bằng cách điều chỉnh lại các tham số của giao thức trao đổi thơng tin, như kích thước của gĩi TCP…

Vấn đề chính yếu ởđây là làm thế nào để áp dụng được các kỹ thuật trên vào trong các cơng cụ và mơ hình lập trình sao cho nĩ hồn tồn trong suốt với người dùng khi thực hiện trên các ứng dụng Grid.

3.4.2. Các kỹ thuật hướng dữ liệu

Bên cạnh các kỹ thuật nhằm cải thiện hiệu năng trong quá trình trao đổi thơng tin, các kỹ thuật được áp dụng ở trên cũng hướng tới việc để làm sao thực thi hiệu quả hơn đoạn mã MPI. Vậy các mơ hình bất đồng bộ và khơng chặt chẽ hơn cĩ thể hỗ trợ như thế nào cho các mơ hình lập trình? Rõ ràng các kỹ thuật hướng dữ liệu cĩ thể giải quyết điều này. Workflow là một ví dụ của

Lập trình theo dịng tin cĩ thểđược sử dụng nhằm quản lý truy cập đến nơi lưu trữ các dữ liệu lớn và kết hợp việc xử lý với trao đổi thơng tin theo cách thức phân tán. Việc cùng chỉ định các bộ lọc và các dịng tin trong mơi trường Grid là cả một vấn đề quan trọng. Lập trình theo dịng tin cĩ rất nhiều ngữ nghĩa và thể hiện rộng lớn. Điều này cĩ liên quan mật thiết đến khái niệm các dịch vụ trao đổi thơng tin cấp cao sẽ được thảo luận ở bên dưới. Các kỹ thuật suy đốn và tối ưu

3.4.3. Các kỹ thuật suy đốn và tối ưu

Một phương pháp khác nhằm gia tăng bất đồng bộ và linh hoạt trong quá trình thực thi là áp dụng các kỹ thuật suy đốn và tối ưu. Bằng cách hướng sự tương tự vào sự mơ phỏng các sự kiện rời rạc đã được tối ưu, tính tốn cĩ tính suy đốn hay tối ưu là một cách làm giảm sựđồng bộ và các yêu cầu giao tiếp bằng cách cho phép sự thực thi mang tính suy đốn giữa nhiều máy trạm (host) với khả năng sẽ cĩ một vài cơng việc được tính tốn tối ưu sẽ phải bị loại bỏ nếu nĩ khơng dư thừa và khơng tương thích. Mục tiêu là nhằm điều khiển cấp độ tối ưu sao cho phát huy tối đa lợi ích của việc thực thi khơng chặt chẽ trong khi làm giảm tối đa các tính tốn gây lãng phí.

3.4.4. Các kỹ thuật phân tán

Vẫn cịn một kỹ thuật khác là phân phối các xử lý lên dữ liệu. Khi đi sâu tìm hiểu về Grid, ta thấy các kiến trúc tiềm ẩn phức tạp, các phương pháp ngơn ngữ dữ liệu song song đồng bộ hĩa rõ ràng là khơng thích hợp. Giả sử khơng quan tâm đến các yêu cầu về tính đồng bộ hĩa và trao đổi thơng tin với nhau, thì các kỹ thuật phân tán đạt được băng thơng rất cao giữa dữ liệu cục bộ và xử lý.

Một phương pháp tương tự cĩ thể được suy ra từ mơi trường Grid, nhưng ở một cấp độ hồn tồn khác. Kiến trúc Grid Datafarm được thiết kế để khai thác việc truy cập cục bộ bằng cách sắp xếp các chương trình trên tồn các đĩa phân tán với quy mơ lớn. Điều này nhằm gia tăng sự kết hợp chặt chẽ giữa khả năng lưu trữ và tính tốn. Grid Datafarm cũng cung cấp các hàm API nhập xuất song song.

3.4.5. Nhập xuất hướng Grid

Trong khi các hệ thống nhập xuất chỉ tập trung vào việc di chuyển dữ liệu, thì rõ ràng nĩ cĩ ảnh hưởng rất lớn đến cách thức chương trình được viết. Mặc dù các tập tin Grid Datafarm được phân bố trên các đĩa nhưng nĩ cĩ thể được mở, đọc, và ghi như là một tập tin duy nhất.

3.4.6. Các dịch vụ giao tiếp cấp cao

Các mơ hình lập trình khả thi cĩ thể phụ thuộc vào sự hỗ trợ của cơ sở hạ tầng hiện cĩ. Các dịch vụ trao đổi thơng tin cấp cao là một phần của cơ sở này. Khái niệm “các dịch vụ trao đổi thơng tin cấp cao” ở đây cĩ thể là bất cứ ngữ nghĩa nào ngịai khả năng trao đổi một chiều đơn giản nhưng đáng tin cậy từ điểm A đến điểm B, hay thậm chí là multicast dữ liệu. Vì thế bất cứ những gì cấu tạo nên các dịch vụ này đều được định nghĩa khá rộng và được thúc đẩy phát triển bởi nhiều yếu tố khác nhau

Trong tính tốn lưới, nắm vững và sử dụng được các topo mạng sẽ càng ngày càng quan trọng, bởi vì tất cả các hiệu năng của Grid sẽ bị chi phối phần lớn bởi độ trễ của đường truyền, điều này cĩ nghĩa là trong 5 đến 10 năm tới hay hơn nữa, băng thơng của mạng sẽ được mở rơng hơn nhưng tương ứng sẽ khơng ngắn hơn (do sự giới hạn của độ trễ). Để duy trì được hiệu năng, các cơng cụ lập trình như MPI sẽ phải quan tâm hơn đến topo của mạng. Một ví dụ của cơng cụ này là MagPIe. MagPIe hỗ trợ một cách trong suốt cho các cluster trên mạng diện rộng bằng cách giới hạn tối đa sự truyền dữ liệu cho các thao tác tổng hợp trên các đường truyền yếu. Các thao tác này thay vì chịu ảnh

hưởng bởi O(nlogn) thơng điệp đi quan tồn bộ đường kính của mạng như truớc, thì giờđây nĩ chỉ là đường kính trung bình của mạng.

Một động cơ thúc đẩy khác cho các dịch vụ trao đổi thơng tin cấp cao là nhu cầu của các thuộc tính giao tiếp cơ bản khác nhau. Một nhĩm multicast truyền thống xây dựng một bản định tuyến thích ứng và được định hướng bởi các topo mạng vật lý. Việc định tuyến dựa vào nội dung sẽ cho phép ứng dụng điều khiển lịch trình trao đổi, định tuyến dựa trên các yêu cầu cơ bản của chương trình bên trong một nhĩm multicast đã cho, hơn là chỉ đơn thuần trao đổi thơng tin một-một. Tất nhiên thiết kế này địi hỏi phải theo topo ở một dạng nào đĩ.

Vì thế các dịch vụ trao đổi thơng tin cĩ thểđược phân thành nhiều lọai. Một trong số chúng chỉ thực sự hiệu quả khi kiến trúc cĩ định hướng theo topo mạng, trong khi những cái khác thì khơng cĩ trong bất cứ trường hợp nào.

Làm tăng ngữ nghĩa thơng tin : Cịn hơn là trao đổi cách thức định tuyến cơ bản, và hơn nữa, hầu hết cĩ thể làm tăng khả năng trao đổi thơng tin mà chỉ cần thêm vào một vài tính năng. Một vài cách phổ biến như dùng cache, bộ lọc, nén, mã hĩa, chất lượng dịch vụ, chuyển mã dữ liệu hay các chức năng được người dùng định nghĩa. • Các thao tác tổng hơp : Các ứng dụng cĩ thể yêu cầu các thao tác

đồng bộ hĩa, về cơ bản chúng thường thực hiện cùng với một topo thơng tin theo thao tác một-một. Để đạt được hiệu năng trong mội trường mạng diện rộng, việc kết gán các thao tác với các topo được xác định bởi mạng vật lý hay ảo là một điều rất quan trọng.

Định tuyến dựa vào nội dung hay chính sách : bằng cách cho phép các ứng dụng quyết định việc định tuyến dựa vào các trường do ứng dụng định nghĩa, sẽ tạo ra các tính năng như cơng bố hay đăng ký

điệp trong đĩ phải áp dụng chính sách trên trật tựđến của thơng điệp qua tập hợp các máy trạm cuối.

Phạm vi trao đổi thơng tin : Một vài dịch vụ cĩ thể tốn chi phí rất cao để thực hiện, đặc biệt trên phạm vi lớn. Ví thế nếu một ứng dụng cĩ thể tựđịnh nghĩa phạm vi cho dịch vụ thì cĩ thể sẽ giảm thiểu tối đa vấn đề, từ đĩ làm cho tăng tính khả thi trong việc triển khai dịch vụ. Phạm vi trao đổi thơng tin cĩ thể được kết hợp với một topo được xác định để cĩ thể quản lý nhiều phạm vi cho cùng hay các ứng dụng riêng rẽ.

3.4.7. Bảo mật

Các ứng dụng cĩ thể được yêu cầu chứng thực, cấp phép, kiểm tra tính tồn vẹn và tính riêng tư. Trong ngữ cảnh của mơ hình lập trình, điều này cĩ thểđem lại sự phân nhánh thêm. Về cơ bản, bảo mật một-một cĩ thểđược thực hiện bằng cách tích hợp các phương pháp bào mật và cách thức lập trình. Một ví dụ khác là sự kết hợp của SOAP với GSI. Tuy nhiên, trong ngữ cảnh lớn những lời gọi hàm như RMI hay RPC cĩ thể tồn tại trong một cây lời gọi (call tree). Hỗ trợ bảo mật qua cây lời gọi địi hỏi khái niệm delegation of trust. (adsbygoogle = window.adsbygoogle || []).push({});

Ký tên và chứng nhận các giấy phép trên RPC cũng phải được thực hiện sao cho cân bằng với số lượng cơng việc hiện cĩ. Sự quá tải do bảo mật cĩ thể được quản lý bằng cách thiết lập các domain bảo mật và được ủy nhiệm. Các giấy phép sẽđược phân phối cho các RPC trong domain. Các domain được ủy nhiệm cĩ thểđược dùng để giới hạn các quá tải về bảo mật trên từng RPC.

3.4.8. Dung lỗi

Tính dung lỗi và tin cậy trong các cơng cụ và mơ hình lập trình lưới phần lớn vẫn cịn cần được tiếp tục ngiên cứu. Phạm vi cụ thể của một ứng dụng nào đĩ thì cĩ tính dung lỗi cao hơn so với các phạm vi khác. Tuy nhiên vấn đề là ở chỗ làm thế nào để cho các mơ hình và cơng cụ tính tốn lưới trở nên đáng tin cậy và ít lỗi hơn. Rõ ràng là cĩ tồn tại sự khác biệt giữa hai tính

này trong ứng dụng và trong các mơ hình/cơng cụ lập trình lưới và cũng là đối với chính bản thân cơ sở hạ tầng Grid.

Một sự khác biệt xa hơn cĩ thể xảy ra giữa khả năng phát hiện lỗi, thơng bào lỗi và phục hồi lỗi. Trong mơi trường Grid phân tán, việc quan trọng là chỉ cần nhận ra khi nào thì cĩ lỗi xuất hiện. Việc truyền các thơng báo đĩ cho các site khác liên quan cũng quan trọng khơng kém. Cuối cùng là các site này phải cĩ khả năng phục hồi hay làm giảm các ảnh hưởng của lỗi.

Các khả năng này yêu cầu là các mơ hình sự kiện phải được tích hợp vào trong các mơ hình và cơng cụ lập trình lưới. Các mơ hình sự kiện được yêu cầu cho mọi khía cạnh của tính tĩan lưới, như là các bộ phận giám sát hiệu năng. Vì thế việc triển khai các cách thức sự kiện lưới để chúng trở nên sẵn sàng là một điều cần thiết. Cách sử dụng các phương pháp như vậy sẽ là yếu tố cốt lõi cho các mơ hình tính tốn đáng tin và dung lỗi.

Một thí dụ cho vấn đề trên, hãy xem phương pháp Grid RPC. Về cơ bản một RPC cĩ một lời gọi và trả về trong cây lời gọi, nhưng cũng cĩ thể cĩ hủy và từ chối. Trong một chuỗi RPC đồng bộ, phải theo hủy và từ chối theo một đường tuyến tính. Tuy nhiên trong nhiều RPC bất đồng bộ thì chúng cĩ thể đi theo nhiều nhánh. Từ chối cũng cĩ thể thực hiện trên nhiều nhánh khác.

Vì thế cách thức Grid RPC rõ ràng là cần một dịch vụ sự kiện để quản lý các thao tác hùy và từ chối. Điều này rất quan trọng trong việc thiết kế và cài đặt phương pháp RPC mang tính dung lỗi, nghĩa là phương pháp mà trong đĩ bất cứ các thao tác bất thường nào cũng đều được xác định trong một khoảng thời gian nào đĩ và được cảnh báo, nhớ đĩ mà các dịch vụ GPC cĩ thể xĩa các trạng thái khơng cịn thích hợp.

Trong khi trường hợp đơn giản nhất (mà cũng cĩ thể là phổ biến nhất) của việc hủy sẽ liên quan đến RPC được thực hiện trên một sự kiện phân phối

Việc hủy trên tồn bộ nhĩm tiến trình cĩ thểđược thực hiện theo các sư kiện một-một. Tuy nhiên sự kiện thơng báo một-nhiều hay một vài-nhiều sẽ làm cho tồn bộ nhĩm bị hủy nhanh hơn. Những sự kiện thơng báo nhĩm như vậy cĩ thể được thực hiện bởi các thành viên trong nhĩm hay bởi giao diện publish/subcribe nhờ đĩ mà các máy chủ RPC từ xa cĩ thểđăng ký vào để hủy các sự kiện của các nhĩm tiến trình trên các ROC khác.

3.4.9. Các siêu mơ hình và hệ thống thời gian thực hướng Grid

Cịn một vấn đề khác trong các mơ hình lập trình lưới là khái niệm về các siêu mơ hình và ứng dụng của nĩ trong hệ thống thời gian thực hướng Grid. Bất kể người ta đã triển khai Grid như thế nào, thì chúng cũng sẽ bao gồm các thành phần và dịch vụ cốđịnh hay tùy biến. Một vài trong số chúng sẽđược sử dụng rộng rãi và trở nên phổ biến. Vì thế, nhiều ứng dụng sẽ được xây dựng tồn bộ hay một phần bằng cách kết hợp các thành phần và dịch vụ khác.

Làm sao việc kết hợp như vậy cĩ thể được thực hiện một cách tự động mà vẫn đạt được hiệu năng cao bên cạnh các yếu tố như bảo mật và dung lỗi? Điều này chỉ cĩ thể được thực hiện khi cĩ sự xuất hiện của một khái niệm là siêu mơ hình, cho phép định nghĩa các thuộc tính và tính chất của các thành phần. Các siêu mơ hình này cĩ thể được thực hiện bằng tay hay một cách tự

động

Chính vì thế các trình biên dịch và các cơng cụ kết hợp cĩ thể chịu trách nhiệm tạo ra các siêu mơ hình và sử dụng chúng để nhận ra và thúc đẩy các sự kết hợp hợp lý khác. Khái niệm ‘hợp lý’ ởđây khơng chỉ cĩ nghĩa đơn thuần là các thơng số giao diện phải tương thích, mà cịn cĩ nghĩa là giữ lại những tính chất hiệu năng, các thuộc tính bảo mật hay kháng lỗi. Về cơ bản của một chương trình cấp độ cao, một ‘trình biên dịch’ cĩ thể ánh xạ các ngữ nghĩa ở cấp độ cao hơn vào các thành phần và dịch vụ thấp hơn. Điều này cĩ khả năng dẫn đến một khái niệm mới là ‘trình biên dịch hướng Grid’, mà nĩ cũng sẽ khơng theo ngữ nghĩa truyền thống là các chỉ thị máy mà hơn nữa là tập hợp các dịch vụ hiện cĩ phổ biến.

Dự án Phần mềm phát triển ứng dụng Grid (Grid Application Development Software - GrADS) đã đi tiên phong trong lĩnh vực này.

3.5. Tĩm tắt

Chúng ta vừa xem qua các mơ hình lập trình cho các mơi trường tính tốn lưới. Cũng như trong các lĩnh vực cơ bản khác, một mơ hình tính tốn lưới thành cơng cũng phải bao gồm nhiều khía cạnh. Những điều này bao gồm khả năng mang chuyển, tính cộng tác, tính thích ứng và khả năng phát hiện, bảo mật, dung lỗi trong quá trình duy trì hiệu năng. Chúng ta cũng đã chỉ ra một số kỹ năng quan trọng như các kỹ thuật lập trình tối ưu và hướng dữ liệu, các dịch vụ nhập xuất và trao đổi thơng tin cấp cao và cuối cùng là các mơ hình lai.

Tuy nhiên bất kể các điều này, các mơ hình và cơng cụ lập trình sẽđược

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