ฉันมีฟังก์ชั่น VHDL ต่อไปนี้ที่คูณเมทริกซ์ mxn ที่กำหนดa
โดยเวกเตอร์ 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;
มันใช้งานได้ดี แต่สิ่งนี้นำไปใช้กับฮาร์ดแวร์ได้จริง โดยเฉพาะสิ่งที่ฉันอยากรู้ก็คือถ้ามันฉลาดพอที่จะรู้ว่ามันสามารถขนานด้านในของลูปโดยการคำนวณผลิตภัณฑ์ดอทสำหรับแต่ละแถวของเมทริกซ์ ถ้าไม่เป็นวิธีที่ง่ายที่สุด (เช่นซินแท็คซ์ที่ดี) เป็นวิธีการเปรียบเทียบการคูณเมทริกซ์เวกเตอร์คืออะไร?