Nhân ma trận
Nhân ma trận Nhóm 1 1 Đặc điểm chính Nhân dãy ma trận Thuật toán xử lí các mảng Nhân ma trận lưới 2-D kiểu SIMD Nhân ma trận trong kiến trúc siêu khối 3 chiều SIMD Nhân ma trận trên bộ đa xử lí UMA Nhân ma trận trên nhiều máy tính. 2 Nhân dãy ma trận Global a[0 l-1,0 m-1], b[0 m-1][0 n-1], {Matrices to be multiplied} c[0 l-1,0 n-1], {Product matrix} t, {Accumulates dot product} i, j, k; Begin for i:=0 to l-1 do for j:=0 to n-1 do t:=0; for k:=0 to m-1 do t:=t+a[i][k]*b[k][j]; endfor k; c[i][j]:=t; endfor j; endfor i; End. 3 Thuật toán xử lí các mảng Nhân ma trận lưới 2-D kiểu SIMD Nhân ma trận trên kiến trúc siêu khối 3 chiều SIMD 4 Nhân ma trận lưới 2-D kiểu SIMD Gentleman (1978) đưa ra rằng nhân ma trận n*n 2-D kiểu SIMD yêu cầu 0(n) bước định tuyến Chúng ta sẽ xét thuật toán nhân ma trận lưới 2-D kiểu SIMD với kết nối wraparound Để đơn giản, ta giả sử rằng Kích thước lưới là n*n Kích thước mỗi ma trận (A và B) là n*n Mỗi bộ xử lí trong lưới (vị trí của hàng là i, cột là j) chứa và Trong phần cuối của thuật toán, sẽ chứa các phần tử của tích ma trận. 5 Nhân ma trận lưới 2-D kiểu SIMD (TT) Giai đoạn chính (a) sắp xếp ban đầu của ma trận A và B (b) chuyển tất cả các phần tử trong hàng i của ma trận A qua trái i vị trí và tất cả các phần tử trong cột j của ma trận B lên trên i vị trí 6 Nhân ma trận lưới 2-D kiểu SIMD (TT) (b) chuyển tất cả các phần tử trong hàng i của ma trận A qua trái i vị trí và tất cả các phần tử trong cột j của ma trận B lên trên i vị trí (c) sự phân bố của 2 ma trận A và B sau khi chuyển 7 Nhân ma trận lưới 2-D kiểu SIMD (TT) Các bước của thuật toán trong bộ xử lí 8 Nhân ma trận lưới 2-D kiểu SIMD (TT) Chi tiết thuật toán Global n,{ kích thước của ma trận} k: Local a,b,c: Begin for k:=1 to n-1 do forall P(I,j) where 1 ≤ i,j ≤ n do if i ≥ k then a:= fromleft(a) if j ≥ k then b:=fromdown(b); end forall; endfor k; Chuyển 2 ma trận a[0 n-1,0 n-1] và b[0 n-1,0 n-1] 9 Nhân ma trận lưới 2-D kiểu SIMD (TT) forall P(i,j) where 0 ≤i,j < n do c:= a*b; end forall; for k:=1 to n-1 do forall P(i,j) where 0 ≤i,j < n do a:= fromleft(a); b:=fromdown(b); c:= c + a*b; end forall; endfor k; End. Compute dot product 10 [...]... toán nhân ma trận khối là một sự lựa chọn hợp lí cho trường hợp này 14 Thuật toán nhân ma trận cho nhiều máy Chúng ta sẽ học 2 thuật toán Thuật toán đinh hướng hàng - cột Thuật toán định hướng khối Thuật toán định hướng hàng - cột 15 Các quy trình được tố chức như một vòng Bước 1: ban đầu, mỗi quá trình đưa ra một dòng của ma trận A và một cột của ma trận B Bước 2: mỗi quá trình áp dụng nhân. .. cho bộ đa xử lí UMA Global n, {kích thước ma trận} a[0 n-1,0 n-1], b[0 n-1,0 n-1]; {hai đầu vào ma trận} c[0 n-1,0 n-1]; {ma trận tích} Local i,j,k,t; Begin forall Pm where 1 ≤ m ≤ p do for i:=m to n step p do for j:= 1 to n to t:=0; for k:=1 to n do t:=t+a[i,k]*b[k,j]; endfor j; c[i][j]:=t; endfor i; end forall; End Thuật toán nhân ma trận cho bộ đa xử lí NUMA 13 Những điều cần được xem xét ... toán nhân ma trận cho bộ đa xử lí Thiết kế 5 Kích thước hạt cực đại Kích thước hạt: số lượng công việc giữa các sự tương tác bộ xử lí Những diều cần được xem xét Song song vòng ngoài của thuật toán tuần tự là sự lựa chọn tốt từ đó đạt dược kích thước hạt (0(n3/p)) lớn nhất Giải quyết tranh chấp bộ nhớ càng nhiều càng tốt 12 Thuật toán nhân ma trận cho bộ đa xử lí UMA Global n, {kích thước ma. .. chức như một vòng Bước 1: ban đầu, mỗi quá trình đưa ra một dòng của ma trận A và một cột của ma trận B Bước 2: mỗi quá trình áp dụng nhân vector để được 1 phần tử của ma trận tích C Bước 3: sau khi quá trình đã sử dụng cột của ma trận B, nó lấy cột kế tiếp của B từ phần tử tiếp theo trong vòng Bước 4: nếu tất cả các dòng của B đã được xử lí thì thoát Nếu không thì quay lại bước 2 16 Thuật toán . Nhân ma trận Nhóm 1 1 Đặc điểm chính Nhân dãy ma trận Thuật toán xử lí các mảng Nhân ma trận lưới 2-D kiểu SIMD Nhân ma trận trong kiến trúc siêu khối 3 chiều SIMD Nhân ma trận. xử lí các mảng Nhân ma trận lưới 2-D kiểu SIMD Nhân ma trận trên kiến trúc siêu khối 3 chiều SIMD 4 Nhân ma trận lưới 2-D kiểu SIMD Gentleman (1978) đưa ra rằng nhân ma trận n*n 2-D kiểu. nhiều càng tốt 11 Thuật toán nhân ma trận cho bộ đa xử lí UMA Global n, {kích thước ma trận} a[0 n-1,0 n-1], b[0 n-1,0 n-1]; {hai đầu vào ma trận} c[0 n-1,0 n-1]; {ma trận tích} Local i,j,k,t; Begin