6. Phương pháp nghiên cứu
2.1.4.2. Phương pháp xây dựng thuật toán song song
Có hai phương pháp tổng quát thường được sử dụng để xây dựng thuật toán song song. Thứ nhất là phân chia dữ liệu (data decomposition), được sử dụng khi vấn đề có liên quan đến các tính toán hay chuyển đổi trên một hay nhiều cấu trúc dữ liệu và các cấu trúc này có thể được phân chia và tính toán trên từng phần nhỏ. Thứ hai là phân chia chức năng (function decomposition), phân chia công việc dựa trên các chức năng khác nhau
▪ Phân chia dữ liệu
Xét một ví dụ về phân chia dữ liệu, phép công hai vector A[0…N-1] và B[0…N-1] cho vector kết quả C[0…N-1]. Giả sử có p bộ xử lý (processor) cùng làm việc, việc phân chia dữ liệu sẽ đặt N/p phần tử của mỗi vector vào từng quá trình và nó sẽ tính toán N/p phần tử tương ứng của vector kết quả.
Việc phân chia dữ liệu vừa mang tính chất tĩnh (mỗi quá trình có một độ ưu tiên trong việc phân chia công việc) vừa mang tính chất động (một quá trình điều khiển sẽ cấp phát các phần công việc cho các quá trình khác). Sự khác nhau chủ yếu giữa hai phương pháp là “thời gian biểu”. Với thời gian biểu tĩnh (static scheduling), các công việc của từng quá trình được chỉ rõ nhưng với thời gian biểu động (dynamic scheduling) chúng sẽ thay đổi khi số lượng tính toán tăng lên. Trong hầu hết các môi trường đa bộ xử lý (multiprocessor) thời gian biểu tĩnh hiệu quả cho những vấn đề như phép công vector, tuy nhiên trong môi trường tính toán phân tán, nó lại không hiểu quả. Nguyên nhân là do môi trường phân tán dựa trên mạng, do đó với một thời gian biểu tĩnh, việc phân dữ liệu có thể gặp vấn đề khi một hay nhiều quá trình có khả năng hoàn thành công việc của nó nhanh hơn hay chậm hơn nhiều so với các quá trình còn lại hay liên kết giữa các máy lỗi. [5]
▪ Phân chia theo chức năng
Quá trình xử lý song song trong môi trường bộ nhớ phân tán có thể đạt được bởi sự phân chia các phần công việc theo các chức năng khác nhau. Ví dụ rõ ràng nhất của dạng phân chia này là ba bước: nhập, xử lý và xuất kết quả. Trong mô hình phân chia chức năng, một ứng dụng có thể bao gồm ba chương trình riêng biệt, mỗi chương trình thực hiện một trong ba bước trên. Sự song song có thể đạt được bằng cách thực hiện đồng thời ba chương trình trên. Để ý rằng việc song song hóa dữ liệu cũng có thể tồn tại ở mỗi bước.
Ví dụ xét bài toán mô phỏng quỹ đạo bay của máy bay. Dựa vào cấu trúc của máy bay ta có thể phân nhỏ bài toán thành các mô đun ứng với các bộ phân của máy bay như đuôi, thân, hai cánh, bánh lái. Ta có mô hình phân tích chức năng như hình 2.7 sau: [5]
Hình 2.7: Mô hình phân chia chức năng