Saya memiliki fungsi VHDL berikut yang mengalikan matriks mxn yang diberikan a
oleh vektor nx1 b
:
function matrix_multiply_by_vector(a: integer_matrix; b: integer_vector; m: integer; n: integer)
return integer_vector is variable c : integer_vector(m-1 downto 0) := (others => 0);
begin
for i in 0 to m-1 loop
for j in 0 to n-1 loop
c(i) := c(i) + (a(i,j) * b(j));
end loop;
end loop;
return c;
end matrix_multiply_by_vector;
Ini bekerja dengan baik tetapi apa yang sebenarnya diimplementasikan dalam perangkat keras? Secara khusus, apa yang ingin saya ketahui adalah apakah cukup pintar untuk menyadari bahwa ia dapat memparalelkan bagian dalam untuk loop, pada dasarnya menghitung produk titik untuk setiap baris matriks. Jika tidak, apa cara paling sederhana (yaitu sintaksis bagus) untuk memparalelkan perkalian matriks-vektor?