Danh mục

Xử lý các mệnh đề về dữ liệu chia sẻ của OpenMP trên các hệ thống sử dụng bộ nhớ phân tán

Số trang: 7      Loại file: pdf      Dung lượng: 892.80 KB      Lượt xem: 4      Lượt tải: 0    
tailieu_vip

Hỗ trợ phí lưu trữ khi tải xuống: miễn phí Tải xuống file đầy đủ (7 trang) 0

Báo xấu

Xem trước 2 trang đầu tiên của tài liệu này:

Thông tin tài liệu:

Bài viết này trình bày các đề xuất để xử lý các mệnh đề về dữ liệu chia sẻ bằng cách bổ sung các câu lệnh xử lý chuyên biệt vào các khuôn dạng chuyển đổi của CAPE cho các cấu trúc song song của OpenMP.
Nội dung trích xuất từ tài liệu:
Xử lý các mệnh đề về dữ liệu chia sẻ của OpenMP trên các hệ thống sử dụng bộ nhớ phân tánKỷ yếu Hội nghị KHCN Quốc gia lần thứ XII về Nghiên cứu cơ bản và ứng dụng Công nghệ thông tin (FAIR); Huế, ngày 07-08/6/2019DOI: 10.15625/vap.2019.00074 XỬ LÝ CÁC MỆNH ĐỀ VỀ DỮ LIỆU CHIA SẺ CỦA OPENMP TRÊN CÁC HỆ THỐNG SỬ DỤNG BỘ NHỚ PHÂN TÁN Đỗ Xuân Huyền1, Hà Viết Hải2, Trần Văn Long3 1 Trường Đại học Khoa học, Đại học Huế 2 Trường Đại học Sư phạm, Đại học Huế 3 Trường Cao đẳng Công nghiệp Huế doxuanhuyen@gmail.com, haviethai@dhsphue.edu.vn, tvlong@hueic.edu.vnTÓM TẮT: CAPE là một hướng tiếp cận để cài đặt OpenMP - giao diện lập trình chuẩn cho lập trình song song trên các hệ thống sử dụngbộ nhớ chia sẻ - lên các hệ thống sử dụng bộ nhớ phân tán. Các phiên bản đầu tiên của CAPE đã được xây dựng và thử nghiệm, đánh giávới khả năng cung cấp hiệu năng gần tương đương với hiệu năng của MPI, công cụ có khả năng cung cấp hiệu năng cao nhất trên các hệthống phân tán. Tuy nhiên, các phiên bản này chưa xử lý các vấn đề về dữ liệu chia sẻ của OpenMP, do đó chưa cài đặt được một cáchhoàn toàn các giao diện của nó. Bài báo này trình bày các đề xuất để xử lý các mệnh đề về dữ liệu chia sẻ bằng cách bổ sung các câu lệnhxử lý chuyên biệt vào các khuôn dạng chuyển đổi của CAPE cho các cấu trúc song song của OpenMP.Từ khóa: Bộ nhớ phân tán, CAPE, OpenMP. I. MỞ ĐẦU OpenMP [1] là một giao diện lập trình (API) cung cấp một mức trừu tượng hóa cao để viết các chương trìnhsong song chạy trên các hệ thống sử dụng bộ nhớ chia sẻ (multi-core, multi-CPU). OpenMP bao gồm một tập các biếnmôi trường, các chỉ thị và hàm, được xây dựng để hỗ trợ việc dễ dàng biến một chương trình tuần tự trên ngôn ngữ cơsở là C/C++ hoặc Fortran thành một chương trình song song. OpenMP sử dụng mô hình thực hiện fork-join với cấutrúc song song cơ sở là luồng (thread). Do sử dụng cấu trúc cơ sở là luồng, mặc nhiên phương thức tổ chức bộ nhớ củaOpenMP là bộ nhớ chia sẻ, trong đó không gian nhớ được sử dụng chung giữa các luồng. Để viết chương trình songsong với OpenMP, lập trình viên có thể bắt đầu bằng cách viết một chương trình tuần tự trên ngôn ngữ gốc (C/C++hoặc Fortran), sau đó thêm dần vào các chỉ thị của OpenMP để chỉ định những phần việc nào cần được thực hiện songsong. Việc chia sẻ dữ liệu cũng như đồng bộ dữ liệu được tiến hành một cách ngầm định hoặc tường minh qua các chỉthị (directive) đơn giản. Nhờ đặc điểm này mà OpenMP trở nên dễ học, dễ sử dụng và ít tốn công sức lập trình nhưnglại có thể cung cấp hiệu năng cao trên các kiến trúc sử dụng bộ nhớ chia sẻ. Tuy nhiên, hạn chế lớn nhất của OpenMPlà chỉ mới được cài đặt một cách hoàn chỉnh cho các kiến trúc sử dụng bộ nhớ chia sẻ do sự phức tạp của việc cài đặttất cả các yêu cầu của OpenMP trên các kiến trúc sử dụng bộ nhớ khác. Đã có nhiều nhóm nghiên cứu việc đưa OpenMP lên hệ thống máy tính sử dụng bộ nhớ phân tán. Một số côngtrình nghiên cứu nổi bật như mô hình sử dụng SSI [2]; SCASH [3]; sử dụng mô hình RC [4] biên dịch thànhMPI [5][6]; sử dụng Global Array [7],… Tuy nhiên, chưa có công trình nào thành công trên cả hai mặt là tương thíchhoàn toàn với OpenMP và có hiệu năng cao. CAPE [8] được phát triển với cùng mục tiêu đưa OpenMP lên hệ thống sử dụng bộ nhớ phân tán, điển hình làcluster, lưới và đám mây. Hình 1 là quy trình CAPE chuyển đổi mô hình thực hiện fork/join trên nền tảng chương trìnhđa luồng (multithread) thành mô hình đa tiến trình trên các máy tính phân tán. Theo đó, chương trình OpenMP trên nềntảng C/C++ được biên dịch thành chương trình C/C++ dạng CAPE bằng cách sử dụng trình biên dịch của CAPE, vớicác khuôn dạng (prototype) chuyển đổi tương ứng cho từng chỉ thị OpenMP. Các chương trình kết quả sẽ không cònchứa các chỉ thị OpenMP nữa, sau đó lại tiếp tục được biên dịch thành chương trình thực hiện được bằng cách sử dụngcác bộ dịch C/C++ thông thường. Các chương trình này có thể chạy được trên các hệ thống sử dụng bộ nhớ phân tán cócài đặt sẵn nền tảng (platform) của CAPE. Hình 1. Quy trình biên dịch chương trình OpenMP sang CAPE Các phiên bản đầu tiên của CAPE đã được cài thiết kế với một giới hạn là chỉ thực hiện được các bài toán thỏamãn điều kiện Bernstein, với mục tiêu để các phần việc được thực hiện trong các tiến trình song song có thể được thựchiện một cách độc lập, không có các yêu cầu chia sẻ dữ liệu giữa chúng [9]. Tuy nhiên, để CAPE có thể tương thíchhoàn toàn với OpenMP cần phải thực hiện được các vấn đề về chia sẻ dữ liệu giữa các tiến trình được chạy trên nhiềumáy khác nhau, tương tự như việc chia sẻ dữ liệu giữa các luồng của chương trình OpenMP khi thực hiện trên các hệthống sử dụng bộ nhớ chia sẻ. Bài báo này nhằm trình bày các giải pháp cho một phần công việc của yêu cầu này, đó làđưa ra các cách thức để xử lý các mệnh đề (clause) liên quan đến dữ liệu chia sẻ.578 XỬ LÝ CÁC MỆNH ĐỀ VỀ DỮ LIỆU CHIA SẺ CỦA OPENMP TRÊN CÁC HỆ THỐNG SỬ DỤNG BỘ NHỚ PHÂN TÁN Phần còn lại của bài báo được cấu trúc như sau: mục II trình bày các công trình nghiên cứu liên quan; mục IIIliệt kê các mệnh đề dữ liệu chia sẻ của OpenMP; mục IV trình bày đề xuất một khuôn dạng chung để xử lý các mệnhđề dữ liệu chia sẻ cho CAPE; và mục V chứa các chứng minh về tính đúng đắn của đề xuất và cuối cùng là phần kếtluận và hướng nghiên cứu tiếp theo. II. CÁC NGHIÊN CỨU LIÊN QUANA. Sự khác nhau của mô hình chia sẻ dữ liệu của OpenMP trên hệ thống sử dụng bộ nhớ chia sẻ và trên hệ thốngsử dụng bộ nhớ phâ ...

Tài liệu được xem nhiều: