Module 13: INTRODUCTION TO COMPILERS FOR HIGH PERFORMANCE COMPUTERS
  Lecture 25: Supercomputing Applications
 

Matrix Multiplication on Vector Machine

for i := 1 to n do
for k := 1 to n do
c[i,1:n] = c[i,1:n] + a[i,k] ∗ b[k,1:n]
endfor
endfor

for i = 1 to n do
for k = 1 to n do
 

setvl r1
loadf f2, (r2)
loadv v3, (r3)
mpyvs v3, v3, f2
loadv v4, (r4)
addvv v4, v4, v3
strorev v4, (r4)
addi r2, r2, #4
add r3, r3, r13
endfor
add r4, r4, r13

endfor

;r1 holds n and r13 holds row sizes of B and C
;r2 holds address of A[i,k]
;r3 holds address of B[k,1]
;r4 holds address of c[i,1]
;set vactor length to n
;load A[i,k]
;load B[k,1:n]
;A[i,k]*B[k,1:n]
;load C[i,1:n]
;update C[i,1:n]
;store C[i,1:n]
;point to A[i,k+1]
;point to B[k+1,1]

;point to C[i+1,1]