Belirli bir mxn matrisi a
nx1 vektörü ile çarpan aşağıdaki VHDL işlevi var 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;
İyi çalışıyor ama bu aslında donanımda ne uyguluyor? Özellikle, bilmek istediğim, esas olarak matrisin her satırı için bir nokta ürünü hesaplayarak, döngü için içi paralelleştirebileceğini fark edecek kadar akıllı olup olmadığıdır. Değilse, matris-vektör çarpımını paralelleştirmenin en basit (yani güzel sözdizimi) yolu nedir?