In [112]:
include("../src/JuBLAS.jl")
Out[112]:
In [113]:
A = randn(5,5)
B = randn(5,5)
C = zeros(5,5)
Out[113]:
In [114]:
println(maxabs(A*B - JuBLAS.gemm('N', 'N', 1.0, A, B)))
println(maxabs(A'*B - JuBLAS.gemm('T', 'N', 1.0, A, B)))
println(maxabs(A'*B' - JuBLAS.gemm('T', 'T', 1.0, A, B)))
println(maxabs(A*B' - JuBLAS.gemm('N', 'T', 1.0, A, B)))
C = 1000*ones(5,5)
C0 = copy(C)
println(maxabs(2*A*B +C - JuBLAS.gemm!('N', 'N', 2.0, A, B, 1.0, C0)))
C0 = copy(C)
println(maxabs(2*A*B +10*C - JuBLAS.gemm!('N', 'N', 2.0, A, B, 10, C0)))
C0 = copy(C)
println(maxabs(2*A'*B +10*C - JuBLAS.gemm!('T', 'N', 2.0, A, B, 10, C0)))
C0 = copy(C)
println(maxabs(2*A*B' +10*C - JuBLAS.gemm!('N', 'T', 2.0, A, B, 10, C0)))
C0 = copy(C)
println(maxabs(2*A'*B' +10*C - JuBLAS.gemm!('T', 'T', 2.0, A, B, 10, C0)))
In [115]:
randncmplx(n,m) = randn(n, m) + im*randn(n, m)
Out[115]:
In [116]:
A = randncmplx(5,5)
B = randncmplx(5,5)
println(maxabs(A*B - JuBLAS.gemm('N', 'N', 1, A, B)))
println(maxabs(A'*B - JuBLAS.gemm('C', 'N', 1, A, B)))
println(maxabs(transpose(A)*B - JuBLAS.gemm('T', 'N', 1, A, B)))
println(maxabs(A*B' - JuBLAS.gemm('N', 'C', 1, A, B)))
println(maxabs(A*transpose(B) - JuBLAS.gemm('N', 'T', 1, A, B)))
println(maxabs(transpose(A)*transpose(B) - JuBLAS.gemm('T', 'T', 1, A, B)))
println(maxabs(ctranspose(A)*ctranspose(B) - JuBLAS.gemm('C', 'C', 1, A, B)))
C = 1000*ones(Complex{Float64}, 5, 5)
C0 = copy(C)
println(maxabs(2*A*B + 2*C- JuBLAS.gemm!('N', 'N', 2, A, B, 2, C0)))
C0 = copy(C)
println(maxabs(2*A'*B +2*C - JuBLAS.gemm!('C', 'N', 2, A, B, 2, C0)))
C0 = copy(C)
println(maxabs(2*transpose(A)*B + 0*C - JuBLAS.gemm!('T', 'N', 2, A, B, 0, C0)))
C0 = copy(C)
println(maxabs(2*A*B' + 2*C - JuBLAS.gemm!('N', 'C', 2, A, B, 2, C0)))
C0 = copy(C)
println(maxabs(2*A*transpose(B) + 2*C - JuBLAS.gemm!('N', 'T', 2, A, B, 2, C0)))
C0 = copy(C)
println(maxabs(2*transpose(A)*transpose(B) + 2*C - JuBLAS.gemm!('T', 'T', 2, A, B, 2, C0)))
C0 = copy(C)
println(maxabs(2*ctranspose(A)*ctranspose(B) + 2*C - JuBLAS.gemm!('C', 'C', 2, A, B, 2, C0)))
In [125]:
A = randncmplx(3,5)
B = randncmplx(5,3)
C = 1000*ones(Complex{Float64}, 3, 3)
C0 = copy(C)
println(maxabs(2*A*B + 2*C- JuBLAS.gemm!('N', 'N', 2, A, B, 2, C0)))
C = 1000*ones(Complex{Float64}, 5, 5)
C0 = copy(C)
println(maxabs(2*A'*B' + 2*C- JuBLAS.gemm!('C', 'C', 2, A, B, 2, C0)))
C = 1000*ones(Complex{Float64}, 5, 5)
C0 = copy(C)
println(maxabs(2*transpose(A)*transpose(B) + 2*C- JuBLAS.gemm!('T', 'T', 2, A, B, 2, C0)))
A = randncmplx(3,5)
B = randncmplx(3,6)
C = 1000*ones(Complex{Float64}, 5, 6)
C0 = copy(C)
println(maxabs(2*A'*B + 2*C- JuBLAS.gemm!('C', 'N', 2, A, B, 2, C0)))
C = 1000*ones(Complex{Float64}, 5, 6)
C0 = copy(C)
println(maxabs(2*transpose(A)*B + 2*C- JuBLAS.gemm!('T', 'N', 2, A, B, 2, C0)))
A = randncmplx(3,5)
B = randncmplx(6,5)
C = 1000*ones(Complex{Float64}, 3, 6)
C0 = copy(C)
println(maxabs(2*A*B' + 2*C- JuBLAS.gemm!('N', 'C', 2, A, B, 2, C0)))
C0 = copy(C)
println(maxabs(2*A*transpose(B) + 2*C- JuBLAS.gemm!('N', 'T', 2, A, B, 2, C0)))
In [ ]: