Phân hoạch đơn giản là chia bài toán thành các phần nhỏ. Tuy nhiên, các công thức phân hoạch đều yêu cầu kết quả của các phần nhỏ hợp lại để đạt được kết quả mong muốn.
Kĩ thuật phân hoạch có thể được áp dụng trong dữ liệu của chương trình, tức là chia nhỏ dữ liệu và thao tác trên các dữ liệu đã chia một cách đồng thời. Việc này được gọi là chia nhỏ dữ liệu(data partitioning) hay sự phân nhỏ miền(domain
decomposition).
Kĩ thuật phân hoạch cũng có thể được áp dụng trong các chức năng của chương trình, tức là chia bài toán thành các chức năng độc lập và thực hiện các chức năng một cách đồng thời. Việc này được gọi là phân nhỏ chức năng(functional decompo-
Chia nhỏ dữ liệu
Chia nhỏ dữ liệu là một phương pháp được dùng phổ biến và rộng rãi trong viêc tạo sự thực hiện cùng nhau trong một thuật toán thao tác trên một cấu trúc dữ liệu lớn. Ta chia dữ liệu thành các phần nhỏ, nếu được cố gắng chia thành các phần bằng nhau.
• Dữ liệu của bài toán có thể chia nhỏ theo nhiều cách khác nhau: theo các khối 1-chiều, 2-chiều hoặc 3-chiều.
• Dữ liệu chia nhỏ có thể là dữ liệu đầu vào, đầu ra, hoặc dữ liệu trung gian của bài toán:
– Chia nhỏ dữ liệu đầu ra: áp dụng cho các bài toán mà dữ liệu ra(kết quả) có thể được tính độc lập với nhau theo một hàm đầu vào.
– Chia nhỏ dữ liệu vào: Mỗi tác vụ được tạo ra cho một phần dữ liệu vào và thực hiện các phép toán có thể trên dữ liệu cục bộ này. Khi kết quả của mỗi tác vụ không phải là kết quả cuối cùng của bài toán thì ta cần kết hợp lại.
– Một bài toán có thể được giải quyết bằng nhiều bước và dữ liệu vào của bước này có thể là dữ liệu ra của bước tính trước đó. Việc chia nhỏ dữ liệu có thể được thực hiện ở bước trung gian.
Ví dụ: Sự phân chia miền xác định của một bài toán đơn giản liên quan tới lưới điểm 3-chiều. Việc tính toán được thực hiện bằng cách lặp lại trên mỗi điểm lưới. Trong mỗi trường hợp dữ liệu được liên quan tới một tác vụ đơn thì bôi đen.
Hình 2.1: Các cách chia miền xác định của một bài toán liên quan tới lưới điểm 3-chiều.
Hình 2.2:Chia nhỏ theo chức năng
Chia nhỏ theo chức năng
Chia nhỏ theo chức năng ta tập trung vào việc tính toán hơn là dữ liệu đòi hỏi tính toán, nếu được thì cố gắng chia thành các tác vụ không giao nhau.
Chia nhỏ bài toán theo chức năng thường được áp dụng cho những bài toán phức tạp mà nó là tập hợp những mô hình nối nhau về mặt hình thức.
Có nhiều cách để chia nhỏ một bài toán, vì vậy ta cần khảo sát tất cả các cách chia có thể để có thể đưa ra cách phân chia tốt. Ta cũng có thể sử dụng kết hợp cả hai cách chia trên để có thể có cách chia nhỏ tốt hơn.
Ví dụ: Khí hậu trái đất bao gồm mô hính khí quyển, biển, thủy học, bề mặt trái đất. Ta có thể mô phỏng khí hậu trái đất trong mô hình máy tính sử dụng phân chia miền theo chức năng. Mỗi thành phần mô hình có thể coi như là một tác vụ tách biệt và có thể song song hóa theo cách phân chia dữ liệu. Việc tìm ra các chức năng có thể thực hiện đồng thời trong một bài toán ít phổ biến hơn, nhưng chia nhỏ dữ liệu lại là chiến lược chính trong việc lập trình song song.
Kĩ thuật chia nhỏ bài toán được áp dụng trực tiếp và hiệu quả(không phải là tối ưu) với các bài toán tính toán song song lý tưởng, tức là bài toán được chia thành các phần nhỏ hoàn toàn độc lập và có thể được thực hiện một cách đồng thời mà không yêu cầu sự truyền thông của các tiến trình riêng biệt, hoặc với các bài toán mà ở đó sự tương tác giữa các tiến trình tớ là nhỏ nhất. Với các bài toán yêu cầu sự giao tiếp của các tiến trình thì việc áp dụng trực tiếp kĩ thuật chia nhỏ không mang lại hiệu quả.
Ví dụ: Tính tổng của một dãy số gồm nphần tử x0,x1, ...,x(n−1).
Thời gian thực hiện tuần tự của bài toán là O(n). Chúng ta thực hiện tính toán song song áp dụng kĩ thuật phân hoạch đơn giản bằng cách chia dãy thànhm phần, mỗi phần cón/mphần tử,(x0, . . . ,xn/m−1),(xn/m, . . . ,x2n/m−1), ...,(x(m−1)n/m, . . . ,xn−1)
Hình 2.3:Phân chia theo chức năng trong một mô hình tính toán của khí hậu
tổng thành phần. Cuối cùngmtổng thành phần này cần được cộng lại để đưa ra tổng của dãy.(Hình...) Thời gian thực hiện song song của bài toán trên, tp =O(n+m).
Hình 2.4:Chia nhỏ một dãy các số thành nhiều phần và tính tổng các phần
Thời gian thực hiện song song tồi hơn so với thuật toán tuần tự.