[Libre-soc-dev] [RFC] Matrix and DCT/FFT SVP64 REMAP

Cesar Strauss cestrauss at gmail.com
Sun Jul 4 23:14:54 BST 2021

```On 07/02/2021 21:56, Luke Kenneth Casson Leighton wrote:
> hm. to create the appearance of matrix multiply as 3 flattened arrays,
> if the formula is this:
>
> for x in x_r:
>  for y in y_r:
>    for z in z_r:
>      result[y][z] +=
>         a[x][y] *
>         b[x][z]
>
> (something like that)

More precisely:

for y in y_r:
for x in x_r:
for z in z_r:
result[y][x] +=
a[y][z] *
b[z][x]

For C = A*B, the inner loop goes "horizontally" (along a row) on matrix
A and "vertically" (along a column) on matrix B.

It also means that the number of columns of A must be equal to the
number of rows of B. In other words, A has the shape of (y_r) x (z_r)
while B is (z_r) x (x_r).

The result then has the same number of rows than A, and the same number
of columns than B, or (y_r) x (x_r).

I don't think there can be such a thing as an "in-place" algorithm for
matrix multiplication.

Regards,

Cesar

```