[Libre-soc-dev] [RFC] Matrix and DCT/FFT SVP64 REMAP
Luke Kenneth Casson Leighton
lkcl at lkcl.net
Sat Jul 3 01:56:28 BST 2021
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)
then the flattened indices are actually:
for x in x_r:
for y in y_r:
for z in z_r:
ridx = zlen*y+z
aidx = ylen*x+y
bidx = zlen*x+z
and the 1D array form would be:
result[zidz] +=
a[aidx] *
b[bidx]
which actually means, the 3 bits currently allocated to "permute
order" are redundant, and can be replaced with:
index = 0
multby = 1
if permute[0]
index = z
multby *= zdim
if permute[1]:
index *= multby
index += y
multby *= ydim
if permute[2]:
index *= multby
index += x
then, to generate ridx you would set:
permute = 0b011
for aidx:
permute = 0b101
for bidx:
permute = 0b110
something like that?
no, it's more sophisticated than that, isn't it. the order of what
gets added and multby'd has to be controlled, doesn't it?
needs more thought.
l.
More information about the Libre-soc-dev
mailing list