Skip to content

Commit 2f58a4b

Browse files
authored
Remove aggressive constprop annotation from 2x2 and 3x3 matmul (JuliaLang#56453)
Removing these annotations reduces ttfx slightly. ```julia julia> using LinearAlgebra julia> A = rand(2,2); julia> @time mul!(similar(A), A, A, 1, 2); 0.296096 seconds (903.49 k allocations: 44.313 MiB, 4.25% gc time, 99.98% compilation time) # nightly 0.286009 seconds (835.88 k allocations: 40.732 MiB, 3.29% gc time, 99.98% compilation time) # this PR ```
1 parent bb234e2 commit 2f58a4b

File tree

1 file changed

+10
-10
lines changed

1 file changed

+10
-10
lines changed

stdlib/LinearAlgebra/src/matmul.jl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,7 +1049,7 @@ function _generic_matmatmul_generic!(C, A, B, alpha, beta)
10491049
end
10501050

10511051
# multiply 2x2 matrices
1052-
Base.@constprop :aggressive function matmul2x2(tA, tB, A::AbstractMatrix{T}, B::AbstractMatrix{S}) where {T,S}
1052+
function matmul2x2(tA, tB, A::AbstractMatrix{T}, B::AbstractMatrix{S}) where {T,S}
10531053
matmul2x2!(similar(B, promote_op(matprod, T, S), 2, 2), tA, tB, A, B)
10541054
end
10551055

@@ -1065,11 +1065,11 @@ function __matmul_checks(C, A, B, sz)
10651065
end
10661066

10671067
# separate function with the core of matmul2x2! that doesn't depend on a MulAddMul
1068-
Base.@constprop :aggressive function _matmul2x2_elements(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix)
1068+
function _matmul2x2_elements(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix)
10691069
__matmul_checks(C, A, B, (2,2))
10701070
__matmul2x2_elements(tA, tB, A, B)
10711071
end
1072-
Base.@constprop :aggressive function __matmul2x2_elements(tA, A::AbstractMatrix)
1072+
function __matmul2x2_elements(tA, A::AbstractMatrix)
10731073
@inbounds begin
10741074
tA_uc = uppercase(tA) # possibly unwrap a WrapperChar
10751075
if tA_uc == 'N'
@@ -1102,7 +1102,7 @@ Base.@constprop :aggressive function __matmul2x2_elements(tA, A::AbstractMatrix)
11021102
end # inbounds
11031103
A11, A12, A21, A22
11041104
end
1105-
Base.@constprop :aggressive __matmul2x2_elements(tA, tB, A, B) = __matmul2x2_elements(tA, A), __matmul2x2_elements(tB, B)
1105+
__matmul2x2_elements(tA, tB, A, B) = __matmul2x2_elements(tA, A), __matmul2x2_elements(tB, B)
11061106

11071107
function _modify2x2!(Aelements, Belements, C, _add)
11081108
(A11, A12, A21, A22), (B11, B12, B21, B22) = Aelements, Belements
@@ -1114,24 +1114,24 @@ function _modify2x2!(Aelements, Belements, C, _add)
11141114
end # inbounds
11151115
C
11161116
end
1117-
Base.@constprop :aggressive function matmul2x2!(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix,
1117+
function matmul2x2!(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix,
11181118
α = true, β = false)
11191119
Aelements, Belements = _matmul2x2_elements(C, tA, tB, A, B)
11201120
@stable_muladdmul _modify2x2!(Aelements, Belements, C, MulAddMul(α, β))
11211121
C
11221122
end
11231123

11241124
# Multiply 3x3 matrices
1125-
Base.@constprop :aggressive function matmul3x3(tA, tB, A::AbstractMatrix{T}, B::AbstractMatrix{S}) where {T,S}
1125+
function matmul3x3(tA, tB, A::AbstractMatrix{T}, B::AbstractMatrix{S}) where {T,S}
11261126
matmul3x3!(similar(B, promote_op(matprod, T, S), 3, 3), tA, tB, A, B)
11271127
end
11281128

11291129
# separate function with the core of matmul3x3! that doesn't depend on a MulAddMul
1130-
Base.@constprop :aggressive function _matmul3x3_elements(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix)
1130+
function _matmul3x3_elements(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix)
11311131
__matmul_checks(C, A, B, (3,3))
11321132
__matmul3x3_elements(tA, tB, A, B)
11331133
end
1134-
Base.@constprop :aggressive function __matmul3x3_elements(tA, A::AbstractMatrix)
1134+
function __matmul3x3_elements(tA, A::AbstractMatrix)
11351135
@inbounds begin
11361136
tA_uc = uppercase(tA) # possibly unwrap a WrapperChar
11371137
if tA_uc == 'N'
@@ -1172,7 +1172,7 @@ Base.@constprop :aggressive function __matmul3x3_elements(tA, A::AbstractMatrix)
11721172
end # inbounds
11731173
A11, A12, A13, A21, A22, A23, A31, A32, A33
11741174
end
1175-
Base.@constprop :aggressive __matmul3x3_elements(tA, tB, A, B) = __matmul3x3_elements(tA, A), __matmul3x3_elements(tB, B)
1175+
__matmul3x3_elements(tA, tB, A, B) = __matmul3x3_elements(tA, A), __matmul3x3_elements(tB, B)
11761176

11771177
function _modify3x3!(Aelements, Belements, C, _add)
11781178
(A11, A12, A13, A21, A22, A23, A31, A32, A33),
@@ -1192,7 +1192,7 @@ function _modify3x3!(Aelements, Belements, C, _add)
11921192
end # inbounds
11931193
C
11941194
end
1195-
Base.@constprop :aggressive function matmul3x3!(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix,
1195+
function matmul3x3!(C::AbstractMatrix, tA, tB, A::AbstractMatrix, B::AbstractMatrix,
11961196
α = true, β = false)
11971197

11981198
Aelements, Belements = _matmul3x3_elements(C, tA, tB, A, B)

0 commit comments

Comments
 (0)