-
Notifications
You must be signed in to change notification settings - Fork 72
Closed
Description
This function doesn't give the correct answer (but works when @avx
is removed):
function mulCAtB!(C, A, B)
M, N = size(C); K = size(B,1)
@assert size(C, 1) == size(A, 2)
@assert size(C, 2) == size(B, 2)
@assert size(A, 1) == size(B, 1)
if mod(M, 2) == 0 && mod(N, 2) == 0
for m ∈ 1:2:M
m1 = m + 1
for n ∈ 1:2:N
n1 = n + 1
C11, C21, C12, C22 = 0.0, 0.0, 0.0, 0.0
@avx for k ∈ 1:K
C11 += A[k,m] * B[k,n]
C21 += A[k,m1] * B[k,n]
C12 += A[k,m] * B[k,n1]
C22 += A[k,m1] * B[k,n1]
end
C[m,n] = C11
C[m1,n] = C21
C[m,n1] = C12
C[m1,n1] = C22
end
end
else
@inbounds for n ∈ 1:N, m ∈ 1:M
Cmn = 0.0
@inbounds for k ∈ 1:K
Cmn += A[k,m] * B[k,n]
end
C[m,n] = Cmn
end
end
return C
end
Metadata
Metadata
Assignees
Labels
No labels