与えられたmxn行列a
をnx1ベクトルで乗算する次のVHDL関数があります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;
それはうまく機能しますが、これは実際にハードウェアで何を実装しますか?具体的には、内部のforループを並列化して、基本的に行列の各行の内積を計算できることが十分に賢明かどうかを知りたいです。そうでない場合、行列とベクトルの乗算を並列化する最も簡単な(つまり、良い構文)方法は何ですか?