1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo: Nhân ma trận song song

16 504 1

Đ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

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 342 KB

Nội dung

Ma trận nhân là một trong những bài toán có thể áp dụng mô hình song song đa bộ xử lý, mục đích của bài báo cáo là tổng kết quá trình tìm hiểu và áp dụng kiến trúc song song SIMD vào giải bài toán Ma trận nhân. Nội dung bài báo cáo gồm 3 phần :  Phần 1 : Tổng quan về xử lý song song  Phần 2 : Giải bài toán ma trận nhân trên kiến trúc máy tính tuần tự SISD (Single Instruction Single Data – Đơn dòng lệnh Đơn dòng dữ liệu).  Phần 3 : Đưa bài toàn sang mô hình SIMD (Single Instruction Multiple Data – Đơn dòng lệnh Đa dòng dữ liệu), với 2 cách tổ chức các bộ xử lý là Lưới 2D nối vòng và Siêu khối.

Trang 1

TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN Môn: XỬ LÝ SONG SONG

NHÂN MA TRÂN SONG SONG

Giáo viên hướng dẫn : Bùi Thị Thủy

Sinh viên thực hiện : Nguyễn Đồng Thắng

Trần Thị Hà An Nguyễn Thị Mừng

Trang 2

Hà Nội, 12/2012

Lời mở đầu

Nhu cầu tính toán ngày càng tăng cao và phức tạp với những bài toán lớn trên nhiều lĩnh vực khoa học (như về hóa học lượng tử, vũ trụ, thiết kế vật liệu siêu dẫn, sinh học, dược học, công nghệ gen, khí hậu, môi trường ) hay thương mại dịch vụ (hệ thống ngân hàng, điện toán ) đã và đang là thách thức đối với nhiều nhà khoa học Những chiếc máy tính thiết kế theo kiểu tuần tự đã hiệu quả với việc phân rã bài toán lớn thành các bài toán con, phù hợp với kiến trúc máy tính đơn Song, nguồn thông tin đầu vào để xử lý ngày càng lớn, khiến máy tính tuần tự không còn đáp ứng được nhu cầu thực tế Đồng thời với việc tăng tốc độ phần cứng thì việc phát triển những chiếc máy tính song song cũng rất được quan tâm

Sự ra đời của những chiếc máy tính song song đã phần nào đáp ứng nhu cầu tính toán của con người, trong đó hệ thống song song đa bộ xử lý ngày càng phát triển mạnh mẽ hơn cả

Ma trận nhân là một trong những bài toán có thể áp dụng mô hình song song đa bộ xử lý, mục

đích của bài báo cáo là tổng kết quá trình tìm hiểu và áp dụng kiến trúc song song SIMD vào giải bài

toán Ma trận nhân Nội dung bài báo cáo gồm 3 phần :

 Phần 1 : Tổng quan về xử lý song song

 Phần 2 : Giải bài toán ma trận nhân trên kiến trúc máy tính tuần tự SISD (Single Instruction

Single Data – Đơn dòng lệnh Đơn dòng dữ liệu)

 Phần 3 : Đưa bài toàn sang mô hình SIMD (Single Instruction Multiple Data – Đơn dòng lệnh

Đa dòng dữ liệu), với 2 cách tổ chức các bộ xử lý là Lưới 2D nối vòng và Siêu khối.

 Phần 4 : Tổng kết

Do còn nhiều hạn chế về kiến thức cũng như kinh nghiệm, nên bài báo cáo có thể còn nhiều thiếu xót, chúng em rất mong nhận được sự góp ý từ cô và các bạn

Chúng em xin chân thành cảm ơn!

Trang 3

TỔNG QUAN VỀ XỬ LÝ SONG SONG

1 Khái niệm xử lý song song:

Xử lý song song là quá trình xử lý gồm nhiều tiến trình được kích hoạt đồng thời và cùng tham gia giải quyết một vấn đề, được thực hiện trên hệ thống đa bộ xử lý Nhiều bộ xử lý kết hợp với nhau để giải quyết một vấn đề vì thế, tại một thời điểm có nhiều phép toán được thực hiện đồng thời, giúp giảm thời gian xử lý

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, và ngôn ngữ lập trình

2 Chương trình dịch và các hệ điều hành:

Chương trình viết bằng ngôn ngữ bậc cao phải được dịch sang ngôn ngữ máy, chương trình dịch

và chương trình thông dịch được sử dụng để thực hiện việc chuyển đổi này

Đối với hệ thống song song, thì thành phần đóng vai trò rất quan trọng đó là Chương trình dịch song song Chương trình dịch làm giảm thời gian làm việc của chương trình bằng cách chia nhỏ công việc thành các khối công việc con, những khối này sẽ được xử lý đồng thời bởi nhiều đơn vị xử lý

Hệ điều hành là một chương trình làm nhiệm vụ phối hợp các hoạt động của máy tính, hệ điều hành song song thực hiện các chức năng chính sau:

 Khởi động hệ thống

 Phân đoạn, lập trình cho các tiến trình

 Trao đổi và đồng bộ hóa tiến trình

 Quản lý điều hành hệ thống

Nhiệm vụ chính của hệ điều hành đa bộ xử lý là tích hợp các tài nguyên tính toán và các bộ xử lý trao đổi với nhau thông qua mạng liên kết để tạo thành một hệ thống thống nhất làm việc một cách hiệu quả

3 Lập trình song song:

a) Giới thiệu chung:

Trong môi trường lập trình song song, công việc của lập trình viên không chỉ là viết ra chương trình, dữ liệu mà còn phải cung cấp các công cụ để đồng bộ hóa và điều khiển tương tác giữa các tiến trình Do đó, người lập trình cần tạp ra và lập lịch cho các tiến trình Có hai cách tiếp cận khai thác khả năng của các bộ xử lý, hai cách này bổ sung cho nhau, nếu chỉ áp dụng một cách thì khó đạt được hiệu quả tốt:

Trang 4

 Phát triển những ngôn ngữ lập trình cho phép thể hiện được việc song song ở mức thuật toán (Ví dụ: Fortran, C…)

 Xây dựng những chương trình dịch đủ mạnh để nhận dạng được các phân đoạn chương trình nào có thể song song hóa

b) Ngôn ngữ lập trình song song MPI (Message Passing Interface):

Truyền thông điệp là mô hình đang được sử dụng rộng rãi trong các hệ thống máy tính song song đặc biệt là hệ thống có bộ nhớ phân tán Những nỗ lực để chuyển đổi các ứng dụng lớn sang mô hình này đã được thực hiện hơn mười năm trước Mục tiêu của MPI là là phát triển một chuẩn được sử dụng rộng rãi đẻ viết các chương trình truyền thông điệp:

 Thiết kế giao diện lập trình ứng dụng

 Cho phép truyền thông điệp hiệu quả, tránh sao chép từ bộ nhớ sang bộ nhớ, cho phép chồng lấp tính toán và truyền thông

 Sử dụng ngôn ngữ lập trình C và Fortran cho thư viện

 Cho phép những sự thực thi có thể được sử dụng trong nhiều môi trường

 Đảm bảo an toàn cho tiến trình

Sau đây ta sẽ tìm hiểu về việc giải quyết bài toán ma trận nhân trên một trong các kiến trúc song song đa bộ xử lý

II. MÔ HÌNH TUẦN TỰ SISD (Single Instruction Single Data) :

Hình 1: Kiến trúc tuần tự SISD

Trang 5

1 Ý tưởng :

Việc nhân hai ma trận trong kiến trúc tuần tự dựa trên kiến thức tính toán thông thường Nhân

ma trận Alxm và ma trận Bmxn được ma trận Clxn , với mỗi phần tử trong ma trận C được tính theo công thức :

cij = 

1 0

m k

aikbkj

2 Thuật toán :

Input: A[0…(l-1)][0…(m-1)]

B[0…(m-1)][0…(n-1)]

Output: C[0…(l-1)][0…(n-1)]

BEGIN

for i = 0 to (l-1) do

for j = 0 to (n-1) do

begin

t = 0

for k = 0 to (m-1) do

t = t + a ik*bkj

endfor

cij = t

end

endfor

endfor

END.

3 Đánh giá:

Trong mô hình SISD chỉ có một bộ xử lý, để nhân hai ma trận cỡ n, sẽ phải thực hiện tuần tự n3

lệnh nhân và n3 lệnh cộng, độ phức tạp của giải thuật là O(n3) Như vậy nếu kích cỡ hai ma trận tăng, số lượng phép tính mà bộ xử lý phải thực hiện tăng theo hàm mũ, thời gian thực hiện sẽ lâu hơn rất nhiều

Trang 6

Nhận thấy nhược điểm này, đồng thời thấy được đặc điểm tính toán trong bài toán ma trận nhân

là lặp lại cùng một câu lệnh trên nhiều bộ dữ liệu khác nhau, ta có ý tưởng đưa bài toán sang giải ở một kiến trúc song song, nhằm tăng hiệu xuất tính toán, và cụ thể ở đây là kiến trúc song song SIMD

Trang 7

MÔ HÌNH SONG SONG SIMD:

Đây là kiến trúc song song đồng bộ, cụ thể, sẽ có nhiều bộ xử lý, mỗi bộ xử lý có một đường dữ

liệu riêng, các bộ xử lý này được điều khiển bởi một Khối điều khiển (Control Unit - CU) duy nhất Khi

CU phát ra một lệnh nào đó, đồng loạt các bộ xử lý sẽ thực hiện lệnh này trên bộ dữ liệu mà bộ xử lý đó

sở hữu, và kết thúc trong một chu kỳ lệnh

Hình 2: Kiến trúc song song SIMD

Với bài toán nhân ma trận, ta sẽ xem xét hai cách tổ chức bộ xử lý: Mạng lưới 2D nối vòng và

Siêu khối

1 Kết nối các bộ xử lý theo mạng lưới 2D nối vòng:

a) Ý tưởng:

Để nhân hai ma trận Anxn và Bnxn, ta sẽ sử dụng một mảng n2 bộ xử lý kết nối với nhau theo mạng lưới 2D nối vòng Mỗi bộ xử lý tương ứng với vị trí của một phần tử trong ma trận

Hình 3: Mảng bộ xử lý dùng nhân hai ma trận cỡ 3x3

Trang 8

Sau qúa trình dịch chuyển dữ liệu và tính toán, phần tử cij của ma trận trận kết quả C được lưu tại

bộ xử lý Pij tương ứng Quá trình thực hiện chia làm hai giai đoạn như sau :

Giai đoạn 1:

Các phần tử aij và bij được truyền vào các bộ xử lý Pij Lúc này tại các bộ xử lý đã chứa các cặp

dữ liệu, tuy nhiên chỉ các cặp dữ liệu tại Pij (i = j) là chắc chắn có thể nhân với nhau, ngoài ra không cặp

dữ liệu có thể nhân được với nhau

Hình 4 : Nhân ma trận cấp 3, truyền dữ liệu vào các bộ xử lý

Để làm xuất hiện các cặp dữ liệu nhân được với nhau, ta tiến hành bước dịch chuyển đặc biệt đầu tiên Các phần tử của ma trận A xét theo hàng, hàng thứ i sẽ dịch trái i vị trí Các phần tử của ma trận B xét theo cột, cột thứ j sẽ dịch lên trên i vị trí

Lúc này tại các bộ xử lý sẽ chứa các cặp dữ liệu có thể nhân được với nhau CU phát ra một lệnh nhân, đồng loạt các Pij sẽ tiến hành việc nhân cặp dữ liệu của mình Tuy nhiên lúc này mới chỉ có n2

phép nhân được thực hiện, đây chưa phải kết quả cuối cùng

Trang 9

Giai đoạn 2: Ta tiếp tục tiến hành dịch chuyển dữ liệu, tính toán và cộng kết quả.

Các phần tử của ma trận A xét theo hàng, tất cả các hàng sẽ dịch trái 1 vị trí Các phần tử của ma trận B xét theo cột, tất cả các cột sẽ dịch lên trên 1 vị trí Thực hiện việc dịch chuyển này (n-1) lần, mỗi lần ta lại được các cặp mới cần phải nhân

Ví dụ khi nhân ma trận cấp 3, ở giai đoạn 2 này sẽ thực hiện 2 bước dịch chuyển Sự dịch chuyển

dữ liệu nhìn từ góc độ bộ xử lý P4 Ở lần dịch chuyển trước đang chứa cặp dữ liệu a12 và b21

Lần 1: a12 dịch sang trái 1 vị trí (P3), b21 dịch lên trên 1 vị trí (P1), P4 chứa cặp dữ liệu mới được dịch vào là a10 và b01 CU lại phát lệnh nhân cho các bộ xử lý thực hiện Nhân xong, cộng gộp với kết quả nhân trước đó

Lần 2: a10 dịch sang trái 1 vị trí (P3), b01 dịch lên trên 1 vị trí (P1), P4 chứa cặp dữ liệu mới được dịch vào là a11 và b11 CU lại phát lệnh nhân cho các bộ xử lý thực hiện Cuối cùng ta được ma trận C lưu

ở mảng bộ xử lý

Trang 10

b) Thuật toán :

Biến toàn cục: n, k

Biến cục bộ: a, b, c

BEGIN

(Giai đoạn 1: Định tuyến dữ liệu)

for k=0 to (n-2) do

for all Pij với 0 ≤ i,j ≤ (n-1) do

if (i > k) then

a = east(a)

endif

if (j > k) then

b = south(b)

endif

endfor

endfor

for all Pij với 0 ≤ i,j ≤ (n-1) do

c = a x b

endfor

(Giai đoạn 2: Cộng kết quả)

for k=0 to (n-2) do

for all Pij với 0 ≤ i,j ≤ (n-1) do

a = east(a)

b = south(b)

c = c + a*b

endfor

endfor

END

c) Đánh giá:

Mô hình song song SIMD tổ chức bộ xử lý theo mạng lưới 2D nối vòng, để nhân hai ma trận cỡ

n, sử dụng n2 bộ xử lý Sự song song diễn ra khi tiến hành phép nhân, n2 bộ xử lý đồng thời thực hiện

Trang 11

lệnh nhân do CU phát ra, vậy sau n3/n2 = n lệnh nhân, các bộ xử lý sẽ tính ra được kết quả cuối cùng Độ phức tạp của giải thuật là O(n), giảm được đáng kể thời gian thực hiện

2 Kết nối các bộ xử lý theo mạng hình siêu khối:

a) Ý tưởng:

Để nhân hai ma trận Anxn và Bnxn, ta sẽ sử dụng n3=23q bộ xử lý kết nối với nhau theo mạng hình siêu khối Mạng siêu khối – hay còn gọi là một n-lập phương nhị phân, gồm có 2k nút tạo thành siêu khối k chiều Sử dụng k bit đánh tên nút theo quy tắc hai nút cạnh nhau chỉ sai khác nhau đúng một vị trí bit

Hình 5: Siêu khối 3 chiều – 8 nút, dùng nhân ma trận cấp 2

Ý tưởng ở đây, sẽ đưa tất cả n3 cặp số cần phải nhân vào n3 bộ xử lý, sau đó CU chỉ phải phát lệnh nhân một lần

Ban đầu, các phần tử aij và bij được truyền vào các bộ xử lý P(2qi + j) Sau qúa trình dịch chuyển

dữ liệu và tính toán, phần tử cij của ma trận trận kết quả C được lưu tại bộ xử lý P(2qi + j) tương ứng

P000 (P0) a00 b00

P001 (P1) a01 b01

P010 (P2) a10 b10

P011 (P3) a11 b11

P100 (P4)

Trang 12

P101 (P5)

P110 (P6)

P111 (P7)

Giai đoạn 1:

Truyền giá trị của hai ma trận vào các bộ xử lý còn lại Các bộ xử lý đều đã chứa các cặp dữ liệu, tuy nhiên đây chưa phải các cặp dữ liệu có thể nhân được với nhau, ta tiến hành việc định tuyến dữ liệu, tức đưa các cặp số phải nhân vào bộ xử lý thích hợp

Giai đoạn 2:

Ta sẽ áp dụng giải thuật, định tuyến cho các phần tử của các ma trận về vị trí theo cặp có thể nhân được với nhau Khi các cặp số đã về đúng bộ xử lý thích hợp, ta tiến hành việc nhân song song, n3

bộ xử lý đồng thời nhân các cặp dữ liệu của mình

Trang 13

Hinh: Định tuyến dữ liệu, đưa các cặp số về bộ xử lý thích hợp

Hinh: CU phát lệnh nhân, các bộ xử lý tiến hành nhân song song

Giai đoạn 3:

Cộng kết quả

Tham số: q (Ma trận cỡ 2q)

Biến toàn cục : k

Biến cục bộ : a,b,c,s,t

BEGIN

(Giai đoạn 1)

for k = (3q-1) downto 2q do

for all Pm mà mà BIT(m,k) = 1 do

t = BIT.COMPLEMENT(m,k)

a = [t]a

b = [t]b

Trang 14

endfor

endfor

(Định tuyến dữ liệu)

for k = (q-1) downto 0 do

for all Pm mà BIT(m,k) ≠ BIT(m,2q+k) do

t = BIT.COMPLEMENT(m,k)

a = [t]a

endfor

for k = (2q-1) downto q do

for all Pm mà BIT(m,k) ≠ BIT(m,q+k) do

b = [t]b

endfor

(Giai đoạn 2)

for all Pm do

c = a x b

endfor

(Giai đoạn 3)

for k=2q to (3q-1) do

for all Pm do

t = BIT.COMPLEMENT(m,k)

s = [t]c

c = c+s

endfor

endfor

END.

Hàm BIT(m,k) có ý nghĩa là trả về giá trị bit thứ k trong biểu diễn nhị phân của m Ví dụ: Biểu diễn nhị phân của 9 là 1001

Trang 15

BIT(9,1) = 0

BIT(9,2) = 0

BIT(9,3) = 1

Hàm BIT.COMPLEMENT(m,k) có ý nghĩa là trả về giá trị số nguyên, sau khi thực hiện bù bit thứ k trong biểu diễn nhị phân của m Ví dụ:

BIT.COMPLEMENT(9,0) = 8 (1000)

BIT.COMPLEMENT(9,1) = 11 (1011)

BIT.COMPLEMENT(9,2) = 13 (1101)

BIT.COMPLEMENT(9,3) = 1 (0001)

c) Đánh giá:

Mô hình song song SIMD tổ chức bộ xử lý theo mạng hình siêu khối, để nhân hai ma trận cỡ n,

sử dụng n3 bộ xử lý Sự song song diễn ra khi tiến hành phép nhân, n3 bộ xử lý đồng thời thực hiện lệnh nhân do CU phát ra, vậy sau n3/n3=1 lệnh nhân, các bộ xử lý sẽ tính ra được kết quả cuối cùng Độ phức

tạp của giải thuật là O(log n), chỉ cần một lệnh nhân duy nhất toàn bộ n3 cặp dữ liệu được nhân lại với nhau

TỔNG KẾT:

Số phép nhân thực hiện Số bộ xử lý

Số lệnh nhân mà

CU phát ra

Sau quá trình tìm hiểu, ta thấy được sự khác biệt giữa mô hình tính toán song song và tuần tự trong việc giải bài toán nhân ma trận, đồng thời cũng thấy được sự khác biệt giữa hai cách tổ chức bộ xử

lý ở mô hình song song là Lưới 2D nối vòng và Siêu khối Tuy rằng, trong mô hình song song, việc thiết

kế, kết nối, các bộ xử lý phức tạp hơn mô hình tuần tự, chi phí cho phần cứng tăng cao, tuy nhiên hiệu quả công việc mà nó mang lại là rất lớn Với cùng một khối lượng công việc, nếu dùng mô hình song song nhiều bộ xử lý, rõ ràng tốc độ thực thi giải bài toán sẽ nhanh hơn rất nhiều

Trang 16

HẾT

Ngày đăng: 26/02/2019, 22:15

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w