Lập trình song song Nguyên lý và phương pháp lập trình

22 984 7
Lập trình song song Nguyên lý và phương pháp lập trình

Đ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

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KHOA HỌC MÁY TÍNH Đề tài : LẬP TRÌNH SONG SONG Lớp: CS111.G12 √ √ GVHD: Ths Trịnh Quốc Sơn SVTH : o Nguyễn Bảo Hoàng- 13520306 o Nguyễn Hiếu Liêm- 12520224 TP.HOCHIMINH JANUARY 4, 2016 BÁO CÁO ĐỒ ÁN NGUYÊN LÝ & PHƯƠNG PHÁP LẬP TRÌNH Phụ Lục LỜI GIỚI THIỆU Cuộc sống khó thiếu Công nghệ thông tin, Công nghệ thông tin có mặt khắp nơi, nghành nghề,… Yêu cầu người cho Công nghệ thông tin ngày cao Ví dụ giải toán phức tạp thức tế, liệu lưu trữ lớn cần giải khoảng thời gian không lâu Hầu vấn đề xử lý kiểu Von Neumann không đáp ứng yêu cầu Mặc dù thời gian qua tốc độ số lượng xử lý tăng nhiều, theo phương diện vật lý khả tính toán chúng tăng theo yêu cầu tương lai Vậy không cách khác phải khai thác khả xử lý song song Mục đích xử lý song song tận dụng khả tính toán hệ đa xử lý máy tính song song để thực tính toán nhanh sở sử dụng nhiều xử lý đồng thời Cùng với tốc độ xử lý nhanh hơn, giải toán lớn hơn, phức tạp thực tế Các bước Lập trình song song: – – – Phân hủy thuật toán hay liệu đầu vào Phân chia nhiệm vụ cho phận để làm việc vi xử lý lúc Phối hợp trao đổi vi xử lý Công cụ hỗ trợ lập trình song song MPI,PVM, số tích hợp sẵn thư viện OpenMP C/C++, Fortran,… Bài tiểu luận cố gắng kinh nghiện kiến thức hạn hẹp nên khó tránh khỏi thiếu sót mong nhận ý kiến đóng góp thầy để chúng em hoàn thiện thân Chương I: Máy Tính Song Song Xử lý song song 1.1.1 Khái niệm 1.1 Xử lý song song trình xử lý gồm nhiều tiến trình kích hoạt đồng thời tham gia giải vấn đề, nói chung thực hệ thống có nhiều xử lý đồng thời  Vấn đề xử lý song song liên quan trực tiếp đến : kiến trúc máy tính, hệ điều hành, thuật toán ngôn ngữ lập trình,… 1.1.2 Phân biệt xử lý song song với xử lý  Xử lý tuần tự: Trong tính toán với xử lý thời điểm thực  phép toán Xử lý tuần tự: Trong tính toán song song nhiều xử lý kết hợp với để giải bào toán giảm thời gian xử lý thời điểm thực đồng thời nhiều phép toán 1.1.3 • Mục đích xử lý song song Mục đích: thực tính toán nhanh sở sử dụng nhiều xử lý đồng thời Cùng với tốc độ xử lý nhanh hơn, việc xử lý song song giải toán phức tạp yêu cầu khối lượng tính toán lớn 1.1.4 Tại phải xử lý song song Có ba yếu tố dẫn đến việc xây dựng hệ thống xử lý song song:  Tốc độ xử lý xử lý theo kiểu von Neumann dần tiến tới giới hạn, cải  tiến thêm dẫn tới đòi hỏi phải thực xử lý song song Hiện giá thành phần cứng giảm mạnh, tạo điều kiện để xây dựng hệ thống có  nhiều xử lý với giá thành hợp lý Sự phát triển công nghệ mạch tích hợp cho phép tạo hệ thống có hàng triệu transitor chip 1.1.5 Hệ thống tính song song Là tập hợp xử lý kết nối với theo kiến trúc để hợp tác với hoạt động trao đổi liệu với Chúng ta dễ nhận thấy độ phức tạp xử lý song song lớn nhiều so với xử lý tuần tự, tập trung chủ yếu phương diện trao đổi liệu đồng tiến trình 1.2 Các thành phần máy tính song song Xử lý song song trình xử lý thông tin, thao tác phần tử liệu thuộc tiến trình thực đồng thời nhằm giải toán Bộ nhớ 1.2.1 a Bộ nhớ kết hợp Bộ nhớ kết hợp bao gồm ô nhớ logic kết hợp Mỗi ô nhớ nhớ kết hợp có đầu vào đầu ra: • • Các đầu vào ô nhớ bao gồm: – Bit đối số a – Bit đọc/ghi R/W xác định thao tác tương ứng cần thực – Bit khóa k – Bit lựa chọn s để xác định ô nhớ thích hợp cho việc thực đọc/ghi Hai kết đầu ra: – Bit đối sách m liệu lưu nhớ có sánh với bit đối số a – Bit kết q Tất ô nhớ mô hình kết hợp tổ chức thành từ (word) xây dựng thành mảng ô giống So sánh với nhớ truy cập ngẫu nhiên RAM nhớ kết hợp đắt tốc độ tìm kiếm nhanh b Mô hình nhớ truy cập ngẫu nhiên song song Mô hình tính toán song song biết tên gọi PRAM bao gồm nhớ chung RAM với m vùng nhớ đủ lớn để chia sẻ cho p xử lý Bộ nhớ chung sử dụng để lưu trữ liệu vùng để trao đổi xử lý Nó cho phép xử lý truy cập vào nhớ đồng thời Mô hình loại có dạng sau: • • • • • Các phương thức truy cập nhớ (Access Memory Primitives) Mô hình UMA (Uniform Memory Access) nhớ chia sẻ Mô hình NUMA (Non- Uniform Memory Access) nhớ chia sẻ Kiến trúc nhớ Cache- Only (COMA) Bô nhớ đa máy tính Mạng kết nối thành phần máy tính song song 1.2.2 Trong hầu hết kiến trúc song song vấn đề quan trọng thiết kế xác định liên kết xử lý nhớ với Một kiến trúc lý tưởng kiến trúc xử lý kết nối với xử lý lại • Có loại cấu hình topo cho mạng liên kết: Mạng liên kết tĩnh: Mạng thành phần hệ thống máy tính xử lý, nhớ • liên kết với cách cố định, không thay đổi Mạng liên kết động: Mạng thành phần hệ thống máy tính xử lý, nhớ a • thay đổi cấu hình Một số loại cấu hình topo mạng liên kết xử lý máy tính song song: Liên kết tuyến tính vòng xuyến Trong mạng liên kết tuyến tính xử lý tổ chức liên kết với theo dãy đánh số theo thứ tự tăng dần Mặc dù mạng liên kết đơn giản liệu cần phải chuyển qua nhiều xử lý, keeys truyền thông liệu xử lý, đặc biệt xử lý đầu cuối bị chậm lại xử lý • Mạng liên kết vòng: tổ chức tương tự liên kết tuyến tính xử lý đầu cuối nối vòng với Trong liên kết vòng, trao đổi xử lý thực theo chiều, hai chiều gọi mạng kép Sự truyền thông mạng liên kết vòng, xử lý xa bị trễ b c Liên kết xáo trộn Mạng liên kết lưới chiều Trong mạng liên kết mắt lưới hai chiều, xử lý liên kết với láng giềng: trên, dưới, trái, phải Có dạng: Lưới không quay vòng o Lưới quay vòng tròn Mạng liên kết siêu nối hình khối n chiều Trong mạng liên kết hình khối, số xử lý chuyển thành nhị phân hai o d xử lý gọi láng giềng với nhãn số chung sai khác bit e Mạng liên kết hình Trong mạng liên kết hình với n số nguyên, xử lý tương ứng với hoán vị n ký hiệu 1.3 Chương trình dịch hệ điều hành a Chương trình dịch Chương trình dịch viết ngôn ngữ lập trình truyền thống phải dịch sang dạng mã mà phần cứng hiểu nó, ngôn ngữ máy Chương trình dịch chương trình thông dịch sử dụng để thực chuyển đổi Đối với hệ thống song song thành phần quan trọng chương trình dịch song song Chương trình dịch làm giảm thời gian thực chương trình ( song song ) cách chia nhỏ toán thành khối công việc khối xử lý đồng thời nhiều đơn vị xử lý Một số chương trình làm nhiệm vụ phát khối công việc thực song song thực phân chia đơn vị chức năng, số khác tinh tế hơn, lập lịch cho toán Có cách tiếp cận để xây dựng chương trình dịch cho máy tính song song: • Run Time Partitioning and Run Time Scheduling: Cách tiếp cận phù hợp với số ứng dụng thực tế Tuy nhiên việc lập lịch phân hoạch thực lúc chạy chương • trình làm giảm hiệu suất hệ thống Complie Time Partitioning and Run Time Scheduling: Là mô hình chung để xây dựng chương trình dịch cho đa xử lý Lập lịch phân việc thực lúc chương trình chạy, việc phân hoạch công việc thành khối thực người lập • trình chương trình dịch Complie Time Partitioning and Complie Time Scheduling: Phân hoạch công việc lập lịch thực giai đoạn dịch chương trình b Hệ điều hành Hệ điều hành chương trình làm nhiệm vụ phối hợp hoạt động máy tính Hệ điều hành đa xử lý có nhiệm vụ tích hợp tài nguyên tính toán xử lý trao đổi với thông qua mạng liên kết để tạo thành hệ thống làm việc cho hiệu Hệ điều hành cho máy tính song song phân làm loại: • Những hệ điều hành mở rộng phát triển từ hệ đơn xử lý để chạy kiến trúc song song • Những hệ điều hành thiết kế riêng cho kiến trúc song song • Những hệ điều hành tổng hợp thiết kế để cài đặt kiến trúc song song khác Chương II: Kỹ Thuật Lập Trình Song Song 2.1 Các khái niệm 2.1.1 Process (Tiến trình) Tiến trình chương trình chạy: • • Bộ nhớ cấp phát hệ điều hành Thường chia nhớ tiến trình với Ví dụ: 2.1.2 Thread (Tiểu trình/Luồng) a Khái niệm Tiểu trình dòng điều khiển tuần tự: • • Chạy không gian nhớ tiến trình Nó có đếm chương trình (program counter) ngăn xếp (stack frame) riêng Ví dụ: Trong chương trình Adobe Reader có luồng: luồng ghi nhận nhập kí tự, luồng kiểm tra tả, luồng hiển thị lên hình, luồng quản lý giao diện… Đơn tiến trình - đơn luồng Đa tiến trình – đơn luồng Đơn tiến trình - đa luồng Đa tiến trình – đa luồng Các trạng thái Thread: • • • • • • • Born – Mới tạo Ready (Runnable) – Sẵn sàng thực thi Running – Đang thực thi Dead – Bị hệ thống đánh dấu loại bỏ Blocked – Không cho phép xử lý Sleeping – Khi phương thức Sleep gọi Waiting – Trạng thái ngừng để chờ Vòng đời Thread: c Đặc điểm Mỗi thread có độ ưu tiên khác có mối quan hệ với Thread có quyền ưu tiên cao chuyển sang gọi thread khác gọi Context Switching • • • Một thread tự động sinh thread khác Thread có độ ưu tiên cao giành quyền sử dụng CPU từ thread ưu tiên thấp Nếu quyền ưu tiên ngang xử lý theo chế hệ điều hành Đồng hóa (Synchronization): Hai hay nhiều thread truy cập vào tài nguyên thời điểm Các thread đồng hóa Java sử dụng thông qua Monitor (Semaphore – “Cột tín hiệu”) Chỉ có thread sử dụng monitor vào khoảng thời gian Có hai cách để đồng hóa thread: • Sử dụng method đồng hóa Trong Java, thread có monitor từ • khóa Synchronization gọi Sử dụng phát biểu (Statement) đồng hóa Phát biểu đồng hóa chứa block đồng hóa, bên đặt đối tượng method đồng hóa Một thread cần giao tiếp với thread khác suốt trình xử lý Các lập trình viên gọi Inter-Process Communication (Giao tiếp tiến trình) 2.2 Những mô hình lập trình song song 2.2.1 Mô hình lập trình chia sẻ nhớ Mô hình chia sẻ nhớ: Hình 1.4 Mô hình chia sẻ nhớ Trong môi trường UNIX, WINDOWS tạo nhiều tiến trình khác hệ thống chúng sử dụng để mô lập trình đa xử lý Trong môi trường lập trình chia sẻ nhớ có hai ràng buộc quan trọng: 10 Một tiến trình chờ khoảng thời gian hai câu lệnh cần thực Giả sử xử lý P thực chương trình có 100 câu lệnh, xử lý Q thực chương trình có 10 câu lệnh bắt đầu thực Thậm chí, tất câu lệnh có tốc độ thực nói Q kết thúc trước P • Không thể xem lệnh thực đơn thể mức ngôn ngữ lập trình Ví dụ, lệnh đơn giản như: a = a + b dãy lệnh ngôn ngữ máy Mà ta biết rằng, tiến trình hệ điều hành nhận biết câu lệnh ngôn ngữ máy a Lập trình chia sẻ nhớ dựa vào tiến trình Yêu cầu xử lý song song phải tạo số tiến trình cần thiết cho toán khả huỷ bỏ chúng phần việc xử lý song song kết thúc để giải phóng nhớ thiết bị mà tiến trình chiếm giữ Việc huỷ bỏ tiến trình phải không cản trở hoạt động tiến trình khác Cách thức trao đổi liệu tiến trình: Một mặt tiến trình muốn giữ phần liệu cục cho riêng mình, không cho tiến trình khác nhìn thấy/truy cập tới liệu Mặt khác, muốn trao đổi thông tin với tiến trình khác Xử lý vấn đề che giấu hay chia sẻ thông tin tuỳ thuộc vào mô hình mà áp dụng, dựa vào tiến trình hay luồng Các tiến trình UNIX, WINDOWS sử dụng đơn vị tính toán độc lập Khi muốn sử dụng nhớ chung, ta cần phải xin cấp phát nhớ sau sử dụng xong phải giải phóng chúng Người lập trình phải có trách nhiệm giải phóng nhớ chia sẻ cách tường minh chúng không cần thiết sử dụng Có hai hàm sở:  shared(m, &id): cấp phát m byte nhớ chia sẻ cho tiến trình id  free_shm(): giải phóng nhớ cấp • Đối với luồng, tất thông tin, theo mặc định, nhìn thấy Do vậy, mô hình cần phải cố gắng để che giấu thông tin b Lập trình chia sẻ nhớ dựa vào luồng (Thread) Các luồng tiến trình chia sẻ với không gian địa chương trình, đoạn liệu môi trường xử lý, đồng thời có vùng liệu riêng để thao tác Các tiến trình luồng hệ thống song song cần phải đồng bộ, song việc đồng luồng thực hiệu đổi với tiến trình Đồng tiến trình đòi hỏi 11 tốn thời gian hoạt động hệ thống, luồng việc đồng chủ yếu tập trung vào truy cập biến chung (global) chương trình 2.2.1 Mô hình lập trình bô nhớ phân tán (tính toán song song phân tán) Hình Mô hình nhớ phân tán Tính toán phân tán tính toán thực sở kết hợp khả tính toán truyền thông hai hay nhiều máy tính mạng Mô hình tính toán phân tán có ưu điểm sau: • • • Cho phép chia sẻ liệu lưu trữu nhiều máy tính khác Chia sẻ với số chức máy tính Độ tin cậy cao Trong trường hợp có máy tính bị trục trặc máy tính khác có • thể thay để hoàn thành nhiệm vụ hệ thống Tính kinh tế: thường đầu tư vào hệ phân tán thấp đầu tư cho hệ tập trung Tuy nhiên, hệ tính toán phân tán đứng trước nhiều thách thức: • Những vấn đề liên quan đến việc quản trị hệ thống, vấn đề đảm bảo an toàn hệ thống, bảo mật • thông tin, v.v Xử lý hệ thống phân tán nhớ chia sẻ để trao đổi liệu với Sự trao đổi thực cách gửi/nhận thông báo Hiện có nhiều công cụ lập trình sử dụng cho tính toán phân tán nhiều mức độ trừu tượng khác như: PVM, MPI,… a Mô hình gửi/nhận thông báo Giống mô hình chia sẻ nhớ, đơn vị xử lý song song mô hình gửi/nhận thông báo tiến trình Một số điểm khác hai mô hình này, mô hình gửi/nhận thông báo: • Các tiến trình thực xử lý khác không truy cập vào không gian nhớ chia sẻ 12 • Các tiến trình phân tán trao đổi liệu với qua hệ thống mạng cục mạng diện rộng Việc truyền thông đồng hoá hoạt động tiến trình thực thông qua • hai phương thức send() receive() Tất biến cục tiến trình Vì thế, vấn đề xung đột liệu (cần phải khoá liệu tiến trình truy cập), hay tranh chấp thông tin (bài toán loại trừ nhau) không xuất mô hình tính toán phân tán Có hai mô hình gửi/nhận thông báo: a.1 Gửi/nhận thông báo theo chế dị Trong mô hình này, kênh truyền thông giả thiết có khả tiếp nhận không bị giới hạn Khả không giới hạn cài đặt thực tế cách sử dụng đệm(buffer) để tiếp nhận thông điệp gửi đến cho tiến trình Do vậy, tiến trình gửi chờ tiến trình nhận sẵn sàng nhận mà gửi có liệu hai tiến trình gửi nhận hoạt động gần độc lập với thông điệp nhận sau khoảng thời gian (lâu bất kỳ) kể từ gửi Tuy nhiên, tiến trình nhận muốn nhân liệu phải chờ có thông điệp tiến trình khác gửi cho Có số yêu cầu sau truyền thông di bộ: Khi tiến trình A gửi thông điệp cho tiến trình B sau cần phải biết xem B có nhận hay không, nghĩa A phải chờ để nhận câu trả lời khẳng định B Việc phân phát thông điệp đảm bảo không bị thất bại Nếu A gửi thông điệp cho B A không nhận câu trả lời từ B thông điệp gửi đến đích B hay chưa? (có thể tiến trình B không nhận câu trả lời B không đến A) Tất thông điệp phải đưa vào đệm (hàng đợi), thực tế không gian hàng đợi hữu hạn Khi có nhiều thông điệp gửi phương thức gửi bị chặn lại Điều vi phạm ngữ nghĩa mô hình gửi/nhận thông báo dị Các mô hình lập trình dựa chế gửi/nhận thông báo dị bộ: Mô hình hướng tâm: Các yêu cầu trả lời qua lại khách (Client) chủ (Server) - Đây mô hình mà máy tính có quan hệ gửi-nhận liệu với máy máy “chủ” Trong suốt trình tính toán, chúng không cần đến 13 Mô hình “đường-ống”: mô hình máy tính hình dung xếp thành hàng máy tính gửi nhận liệu cho máy kề bên Hình 1.6 Mô hình “đường - ống” • Mô hình “vòng-tròn”: mô hình máy tính hình dung xếp thành hàng máy tính gửi nhận liệu cho máy kề bên a.2 Gửi/nhận thông báo theo chế đồng Trong mô hình này, tiến trình gửi bị chặn lại tiến trình nhận sẵn sàng nhận Ở đây, truyền thông đồng hoá gắn chặt với Hệ thống gửi/nhận thông báo đồng hoàn toàn giống hệ thống điện thoại, kênh truyền thông bị chặn lại trình đàm thoại Hệ truyền thông dị lại giống với hệ thống bưu chính, người nhận phải chờ có thư gửi đến Ưu điểm: Làm cho nhiều vấn đề đồng hoá việc cấp phát nhớ động trở lên đơn giản Nhược điểm:  Việc gắn chặt tiến trình với thời gian phân phát thông điệp xem điều kiện ràng buộc bổ sung đòi hỏi thiết kế thực thi chương trình  Việc bắt tiến trình gửi phải chờ dẫn đến việc làm giảm tính đồng thời hệ thống  Ngoài ra, để cài đặt hiệu hệ thống truyền thông đồng đòi hỏi phải có phần cứng đặc biệt để đảm bảo truyền thông phải cực nhanh trao đổi liệu không ảnh hưởng tới tính toán hệ thống Mà mạng truyền thông nhanh có nhiều nút mạng trao đổi liệu với đắt tiền Vì lý trên, nên hệ gửi/nhận thông báo dị làm việc mạng cục phát triển mạnh mẽ b Lập trình song song 14 Phần tập trung vào cách sử dụng ngôn ngữ lập trình bậc cao thư viện gồm thủ tục xử lý việc trao đổi thông điệp, ví dụ ngôn ngữ C/C++ hệ chương trình thư viện để chạy với PVM, MPI, … Trong hệ thống trao đổi thông điệp vấn đề tạo lập tiến trình để thực xử lý khác việc gửi, nhận thông điệp quan trọng Các bước xây dựng chương trình tính toán song song sở trao đổi thông báo: Bước 1: Tạo tiến trình Một chức quan trọng lập trình song song tạo lập nhiều tiến trình để thực công việc chương trình song song Có hai cách tạo lập tiến trình: Tạo lập tiến trình tĩnh: số tiến trình xác định trước thực Trong hệ thống thường có tiến trình điều khiển gọi tiến trình “chủ” (master), tiến trình khác gọi tiến trình tớ (slave) Đây mô hình SPMD – có đoạn mã chung cho tất tiến trình Sau chương trình nguồn viết với lệnh phân chia công việc cho tiến trình, dịch sang mã thực thi cho tiến trình (Hình 1.7) Tạo lập tiến trình động: Các tiến trình tạo lập bị huỷ bỏ có điều kiện số lượng tiến trình thay đổi trình thực Mô hình cho phép thực tạo lập động MPMD (MIMD), chương trình khác thực xử lý khác 15 Hình 1.7 Dịch đơn chương trình, đa thao tác liệu Bước 2: Trao đổi liệu tiến trình thông qua hàm send() receive(): Việc gửi thông điệp thực cách xác định địa hay tất tiến trình nhận theo kênh truyền thông Để lựa chọn thông điệp, tiến trình nhận dựa vào tiến trình gửi, kênh truyền thông, hay thẻ (tag) thông điệp,… Các dạng gửi/nhận sau: Gửi thông điệp cho tiến trình id: message_type); send(id: int, message: send(id: int, tag: int, message: message_type); Gửi thông điệp tới kênh truyền thông: thông điệp gửi cho tất tiến trình kênh mych (my channel): send(mych: channel, message: message_type); Nhận thông điệp từ kênh: để nhận thông điệp chờ đợi từ kênh sử dụng lời gọi hàm sau: receive(mych: channel, message: message_type); Nhận từ địa nguồn: receive(source_id: int, msg: message_type); Nếu thông điệp ghi thẻ tiến trình nhận phân loại thông điệp hộp nhận chọn thông điệp theo thẻ xác định: receive(id: int, tag: int, msg: message_type); c Một số vấn đề lập trình song song c.1 Truy vấn kênh Nếu tiến trình gửi bị ngừng họat động thông điệp gửi không đến hộp thư người nhận tiến trình nhận bị chặn lại để chờ mãi (dẫn đến tình trạng treo máy) Để xử lý vấn đề này, hầu hết chương trình thư viện cung cấp hàm truy vấn để biết trạng thái kênh Lời gọi receive() thực có thông điệp chờ kênh truyền thông Ngược lại, tiến trình thực công việc khác Để thực công việc trên, sử dụng hàm sau: Kiểm tra xem kênh có thông điệp gửi đến cho tiến trình hay không? empty(ch: channel); 16 Hàm gọi để xác định xem thông điệp có kênh có phải gửi từ tiến trình id có thẻ tag? probe(id: int, tag: int);//id - tiến trình nhận c.1 Truyền thông theo nhóm Nhiều chương trình phân tán cần phát tán nhận liệu từ nhiều tiến trình phân tán, nghĩa cần trao đổi với nhóm chương trình song song Để thực truyền thông theo nhóm, sử dụng hàm: • Broadcast(): phát tán thông điệp cho tất tiến trình kênh mych Broadcast(mych:channel,tag:int, msg:message_type); Hành động phát tán liệu không thực tất tiến trình thực lời gọi Broadcast() • Reduce(): thực phép toán số học/logic nhóm tiến trình gửi kết tới tiến trình đích Reduce(mych:channel,op:op_type,res:Result_type,root:int,tag:int,msg: message_type); Trong đó: Op_type= {MAX,MIN,SUM,PROD, LAND, LOR, BAND, BOR,LXOR, BXOR}} Trong mô hình SIMD lệnh Reduce() không thực tất tiến trình thực lời gọi Reduce() Scatter(): phân tán công việc cho tiến trình Dữ liệu mảng buff chia nhỏ thành n đoạn phân tán cho n tiến trình kênh mych Scatter(mych:channel, n:int, Buff[N]:DataType); Hàm sử dụng để gửi phần tử thứ i mảng liệu tới cho tiến trình thứ i Tương tự trường hợp Broadcast(), lệnh Scatter() không thực tất tiến trình thực lời gọi Scatter() Gather(): ngược lại so với hàm Scatter(), liệu gửi theo hàm Scatter() xử lý tiến trình nhận sau tập hợp lại cho tiến trình Gather(mych:channel,Buff[N]:DataType,root:int); Ngược lại hàm Scatter(), liệu từ tiến trình thứ i nhận tiến trình gốc đưa vào phần tử thứ i mảng buf 17 Barrier(): thực việc đồng hoá tiến trình gia nhập kênh truyền thông Mỗi tiến trình phải chờ tất tiến trình khác kênh đạt đến điểm đồng hoá lời gọi Barrier() chương trình Barrier(mych:channel); 2.3 Nguyên lý thiết kế thuật toán song song Như nêu trên, xử lý song song ta phải xét kiến trúc máy tính thuật toán song song Những thuật toán, có số thao tác thực đồng thời gọi thuật toán song song Để thiết kế thuật toán song song cần phải thực hiện: • • • • Phân chia liệu cho tác vụ Chỉ cách truy cập chia sẻ liệu Phân tác vụ cho tiến trình (bộ xử lý) Các tiến trình đồng Có nguyên lý thiết kế thuật toán song song: Các nguyên lý lập lịch: mục đích giảm tối thiểu xử lý sử dụng thuật toán cho thời gian tính toán không tăng (xét theo khía cạnh độ phức tạp) Nguyên lý hình ống: Nguyên lý áp dụng toán xuất dãy thao tác {T1, T2, , Tn}, Ti+1 thực sau Ti kết thúc Nguyên lý chia để trị: Chia toán thành phần nhỏ tương đối độc lập với giải chúng cách song song Nguyên lý đồ thị phụ thuộc liệu: Phân tích mối quan hệ liệu tính toán để xây dựng đồ thị phụ thuộc liệu dựa vào để xây dựng thuật toán song song Nguyên lý điều kiện tranh đua: Nếu hai tiến trình muốn truy cập vào mục liệu chia sẻ chúng phải tương tranh với nhau, nghĩa chúng cản trở lẫn Ngoài nguyên lý nêu trên, thiết kế thuật toán song song ta phải ý đến kiến trúc hệ thống tính toán 2.4 Một số chiến lược song song hóa phổ biến 18 Trong nhiều chiến lược khác để song song hoá thuật toán có ba chiến lược thiết kế chương trình song song tương đối phổ biến song song hoá kết quả, song song hoá đại diện song song hoá chuyên biệt Mặc dù, toán cụ thể việc kết hợp chiến lược thiết kế cho ta kết thú vị, song thông thường tuỳ thuộc tính chất toán chiến lược thiết kế thuật toán song song chọn nhằm đạt hiệu cao 2.4.1 Song song hóa kết Việc phân loại chiến lược thiết kế thuật toán song song phụ thuộc vào tính chất toán Song song hoá kết chế tính toán song song tập trung toàn liệu toán Mỗi xử lý cho phần kết toán xử lý hoạt động song song cho phần việc thực độc lập tối đa Sau phần việc hoàn thành, công đoạn cuối kết hợp thành phần để kết hoàn chỉnh Các lớp toán chia - để - trị thường sử dụng chiến lược song song hoá kết để thiết kế chương trình song song.Mỗi toán lớp toán thường chia thành toán thành phần Mỗi toán thành phần giải độc lập kết cuối kết hợp kết toán thành phần Việc thiết kế chương trình theo chiến lược song song hoá kết thông qua năm giai đoạn : • Giai đoạn đầu: cần phải mô hình kết qủa dạng cấu trúc liệu gồm nhiều thành phần, • đồng thời xác định phụ thuộc chúng Giai đoạn 2: phân xử lý đảm nhiệm công việc cho hay nhiều thành phần việc • • phân chia phải bảo đảm vấn đề hiệu suất xử lý Giai đoạn 3: xác định nguồn tài nguyên cần thiết để thực việc tính toán thành phần Giai đoạn 4: xác định cách lấy giá trị kết thành phần thực xử lý song • song Giai đoạn 5: kết hợp kết thành phần để kết toán kết thúc xử lý 2.4.2 Song song hóa đại diện Thiết kế chương trình theo chế song song hoá đại diện xác định cụ thể công việc phải thực để song song hoá Như vậy, để giải toán có nhiều công đoạn, công đoạn toán giải song song hoàn thành công đoạn công đoạn thực tương tự toán giải Các mô hình chiến lược chủ tớ, tính toán - tổng hợp - truyền thông Trong mô hình chủ - tớ toán cần giải chia thành vấn đề phụ thuộc lẫn Các xử lý đóng vai trò tớ mô hình có nhiệm vụ xử lý vấn đề chúng điều phối 19 xử lý đóng vai trò chủ Khác với phương pháp chia - để - trị, vấn đề không thiết tiến hành giải quyết, mà giải song song cách Việc thiết kế chương trình theo chiến lược song song hoá đại diện thực thông qua ba giai đoạn Giai đoạn đầu xác định công việc cần phải thực xử lý Trong giai đoạn cần phải xác định xử lý đóng vai trò điều khiển công việc.Cuối cần phải nhận biết kết công việc 2.4.2 Song song hóa chuyên biệt Trong chiến lược song song hoá chuyên biệt, toán cần giải bao gồm nhiều công việc, công việc có đặc thù riêng giao cho xử lý chuyên dụng Ngoài hệ thống cần xử lý giữ vai trò agent, điều phối trình thực công việc Trong công việc đặc thù, phần việc nhỏ thực song song Sau phần việc hoàn thành, cần tiến hành “phối hợp” kết để hoàn thành công việc 20 Chương III: Một Số Ví Dụ Ví dụ 3.1 Khởi dựng thread Runnable Interface extends lớp thread Tạo bắt đầu thread Dùng nhiều thread chương trình Cài đặt quyền ưu tiên cho thread Thực thi đồng hóa thread • • Đồng dùng method Đồng dùng phát biểu đồng hóa Giao tiếp thread Sử dụng thread Swing Ví dụ 3.2 #include #include int main() { int ntasks, mytask; MPI_Init(&argc, &argv) MPI_Comm_size(MPI_COMM_WORLD, &ntasks); MPI_Comm_rank(MPI_COMM_WORLD, &mytask); printf(“Hello world from task %d of %d \n”, mytask, ntasks); MPI_Finalize(); return 0; } MPI_Init khởi tạo môi trường MPI để thực tác vụ song song MPI_Comm_size trả giá trị số lượng tác vụ song song vào biến ntasks Tham số MPI_COMM_WORLD tham số communication toàn cục MPI_Comm_rank trả số(rank) tác vụ vào biến mytask, có giá trị từ tới ntasks-1 MPI_Finalize đóng môi trường MPI Ví dụ 3.3 Ví dụ hàm tính số Fibonaci thứ n: • Truyền thống: int Fibo(int n) { 21 if (n == || n == 2) return 1; int i = 3, x = 1, y = 1, z; while (i

Ngày đăng: 10/07/2016, 10:04

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan