Thiết kế giải thuật song song bằng phân rã phục thuộc dữ liệu

Một phần của tài liệu nghiên cứu các giải thuật song song trên hệ thống xử lý đồ họa GPU đa lõi (Trang 31 - 32)

Muốn tận dụng được khả năng tính toán song song trên nhiều máy tính, điều quan trọng nhất là tìm được giải thuật thích hợp. Nhiều khi sự phụ thuộc tính toán giá trị sau được tính dựa vào giá trị trước đó có vẻ rất bền, nhưng vẫn tách nó ra để chia cho nhiều máy cùng thực hiện. Sau đây là một ví dụ minh họa:

Xét bài toán sau: Cho biết a0 và αk, βk với k =1, 2, 3..., n; trong đó n 2m. Suy ra:

- 24 -

Việc giá trị an phải tính toán qua an1 khiến chúng ta có cảm giác là việc tìm ra giá trị an nhất định phải thực hiện tuần tự qua n bước. Tức là phải mất đúng n = 2m bước tính, cho dù có thể huy động rất nhiều máy cùng tính đi chăng nữa. Tuy nhiên sự việc lại không hẳn như vậy, chỉ cần có m bước tính. Để thấy được điều này ta thực hiện phép biến đổi như sau:

(1.11) an = αn (αn-1an-2 + βn-1) + βn = αn αn-1an-2 + αn βn-1 + βn

Đặt: n = αn βn-1 + βn , chỉ với một bước để tính được giá trị n (n = 1,2,3,..).

Khi đó:

(1.12) an = αnαn-1αn-2 + λn

Từ công thức (1.12) cho thấy chỉ cần biết giá trị a0 là có thể tính được tất cả các giá trị: a2, a4, a6, …, a2m, như vậy chỉ thêm một bước tính nữa (sử dụng nhiều máy tính) là tính được tất cả các giá trị với số lẻ. Cụ thể:

Từ (1.10) suy ra: a2n+1 = α2n+1 a2n + β2n+1

Ký hiệu Tm là số bước cần để tính ra giá trị cả 2m giá trị: a1, a2, a3, …, a2m . Chỉ với một bước tính là biết được tất cả các giá trị n (bằng cách tính các n trên nhiều máy). Như vậy, ta có:

(1.13) Tm = 2 + Tm-1 ( qua 2 bước tính a2m và a2m−1).

Từ đây suy ra: Tm = 2m. Từ đây kết luận, không cần đến 2m bước tính, mà chỉ dùng 2m bước tính.

Một phần của tài liệu nghiên cứu các giải thuật song song trên hệ thống xử lý đồ họa GPU đa lõi (Trang 31 - 32)