Skip to content

Commit ec151a8

Browse files
authored
Bump minimal Julia requirement to v1.10. (#452)
1 parent 76eacff commit ec151a8

File tree

7 files changed

+26
-147
lines changed

7 files changed

+26
-147
lines changed

.buildkite/pipeline.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,6 @@ steps:
2424
matrix:
2525
setup:
2626
julia:
27-
- "1.8"
28-
- "1.9"
2927
- "1.10"
3028
- "1.11"
3129
- "nightly"

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ Preferences = "1"
3939
SPIRV_LLVM_Translator_unified_jll = "0.4"
4040
SpecialFunctions = "1.3, 2"
4141
StaticArrays = "1"
42-
julia = "1.8"
42+
julia = "1.10"
4343
oneAPI_Level_Zero_Loader_jll = "1.9"
4444
oneAPI_Support_jll = "0.5"
4545

deps/build_local.jl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ catch err
3434
Pkg.build("Conda")
3535
using Conda
3636
end
37+
@show conda_dir
3738
if !isfile(joinpath(conda_dir, "condarc-julia.yml"))
3839
Conda.create(conda_dir)
3940
# conda#8850

lib/mkl/interfaces.jl

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,10 @@ function LinearAlgebra.generic_matmatmul!(C::oneMatrix{T}, tA, tB, A::oneSparseM
1313
sparse_gemm!(tA, tB, _add.alpha, A, B, _add.beta, C)
1414
end
1515

16-
if VERSION v"1.10-"
17-
for SparseMatrixType in (:oneSparseMatrixCSR,)
18-
@eval begin
19-
function LinearAlgebra.generic_trimatdiv!(C::oneVector{T}, uploc, isunitc, tfun::Function, A::$SparseMatrixType{T}, B::oneVector{T}) where T <: BlasFloat
20-
sparse_trsv!(uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, one(T), A, B, C)
21-
end
16+
for SparseMatrixType in (:oneSparseMatrixCSR,)
17+
@eval begin
18+
function LinearAlgebra.generic_trimatdiv!(C::oneVector{T}, uploc, isunitc, tfun::Function, A::$SparseMatrixType{T}, B::oneVector{T}) where T <: BlasFloat
19+
sparse_trsv!(uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, one(T), A, B, C)
2220
end
2321
end
2422
end

lib/mkl/linalg.jl

Lines changed: 3 additions & 128 deletions
Original file line numberDiff line numberDiff line change
@@ -5,29 +5,7 @@ using LinearAlgebra: Transpose, Adjoint,
55
Hermitian, Symmetric,
66
LowerTriangular, UnitLowerTriangular,
77
UpperTriangular, UnitUpperTriangular,
8-
MulAddMul
9-
10-
if isdefined(LinearAlgebra, :wrap) # i.e., VERSION >= v"1.10.0-DEV.1365"
11-
using LinearAlgebra: wrap
12-
else
13-
function wrap(A::AbstractVecOrMat, tA::AbstractChar)
14-
if tA == 'N'
15-
return A
16-
elseif tA == 'T'
17-
return transpose(A)
18-
elseif tA == 'C'
19-
return adjoint(A)
20-
elseif tA == 'H'
21-
return Hermitian(A, :U)
22-
elseif tA == 'h'
23-
return Hermitian(A, :L)
24-
elseif tA == 'S'
25-
return Symmetric(A, :U)
26-
else # tA == 's'
27-
return Symmetric(A, :L)
28-
end
29-
end
30-
end
8+
MulAddMul, wrap
319

3210
#
3311
# BLAS 1
@@ -129,70 +107,13 @@ function LinearAlgebra.generic_matvecmul!(Y::oneVector, tA::AbstractChar, A::one
129107
LinearAlgebra.generic_matmatmul!(Y, tA, 'N', A, B, MulAddMul(alpha, beta))
130108
end
131109

132-
if VERSION < v"1.10.0-DEV.1365"
133-
@inline LinearAlgebra.gemv!(Y::oneVector, tA::AbstractChar, A::oneStridedMatrix, B::oneStridedVector, a::Number, b::Number) =
134-
LinearAlgebra.generic_matvecmul!(Y, tA, A, B, MulAddMul(a, b))
135-
# disambiguation with LinearAlgebra.jl
136-
@inline LinearAlgebra.gemv!(Y::oneVector{T}, tA::AbstractChar, A::oneStridedMatrix{T}, B::oneStridedVector{T}, a::Number, b::Number) where {T<:onemklFloat} =
137-
LinearAlgebra.generic_matvecmul!(Y, tA, A, B, MulAddMul(a, b))
138-
end
139-
140110
# triangular
141-
if isdefined(LinearAlgebra, :generic_trimatmul!) # VERSION >= v"1.10-DEVXYZ"
142-
# multiplication
111+
## multiplication
143112
LinearAlgebra.generic_trimatmul!(c::oneStridedVector{T}, uploc, isunitc, tfun::Function, A::oneStridedMatrix{T}, b::oneStridedVector{T}) where {T<:onemklFloat} =
144113
trmv!(uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, A, c === b ? c : copyto!(c, b))
145-
# division
114+
## division
146115
LinearAlgebra.generic_trimatdiv!(C::oneStridedVector{T}, uploc, isunitc, tfun::Function, A::oneStridedMatrix{T}, B::oneStridedVector{T}) where {T<:onemklFloat} =
147116
trsv!(uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, A, C === B ? C : copyto!(C, B))
148-
else
149-
## direct multiplication/division
150-
for (t, uploc, isunitc) in ((:LowerTriangular, 'L', 'N'),
151-
(:UnitLowerTriangular, 'L', 'U'),
152-
(:UpperTriangular, 'U', 'N'),
153-
(:UnitUpperTriangular, 'U', 'U'))
154-
@eval begin
155-
# Multiplication
156-
LinearAlgebra.lmul!(A::$t{T,<:oneStridedMatrix},
157-
b::oneStridedVector{T}) where {T<:onemklFloat} =
158-
trmv!($uploc, 'N', $isunitc, parent(A), b)
159-
160-
# Left division
161-
LinearAlgebra.ldiv!(A::$t{T,<:oneStridedMatrix},
162-
B::oneStridedVector{T}) where {T<:onemklFloat} =
163-
trsv!($uploc, 'N', $isunitc, parent(A), B)
164-
end
165-
end
166-
## adjoint/transpose multiplication ('uploc' reversed)
167-
for (t, uploc, isunitc) in ((:LowerTriangular, 'U', 'N'),
168-
(:UnitLowerTriangular, 'U', 'U'),
169-
(:UpperTriangular, 'L', 'N'),
170-
(:UnitUpperTriangular, 'L', 'U'))
171-
@eval begin
172-
# Multiplication
173-
LinearAlgebra.lmul!(A::$t{<:Any,<:Transpose{T,<:oneStridedMatrix}},
174-
b::oneStridedVector{T}) where {T<:onemklFloat} =
175-
trmv!($uploc, 'T', $isunitc, parent(parent(A)), b)
176-
LinearAlgebra.lmul!(A::$t{<:Any,<:Adjoint{T,<:oneStridedMatrix}},
177-
b::oneStridedVector{T}) where {T<:Union{Float32,Float64}} =
178-
trmv!($uploc, 'T', $isunitc, parent(parent(A)), b)
179-
LinearAlgebra.lmul!(A::$t{<:Any,<:Adjoint{T,<:oneStridedMatrix}},
180-
b::oneStridedVector{T}) where {T<:Union{ComplexF32,ComplexF64}} =
181-
trmv!($uploc, 'C', $isunitc, parent(parent(A)), b)
182-
183-
# Left division
184-
LinearAlgebra.ldiv!(A::$t{<:Any,<:Transpose{T,<:oneStridedMatrix}},
185-
B::oneStridedVector{T}) where {T<:onemklFloat} =
186-
trsv!($uploc, 'T', $isunitc, parent(parent(A)), B)
187-
LinearAlgebra.ldiv!(A::$t{<:Any,<:Adjoint{T,<:oneStridedMatrix}},
188-
B::oneStridedVector{T}) where {T<:Union{Float32,Float64}} =
189-
trsv!($uploc, 'T', $isunitc, parent(parent(A)), B)
190-
LinearAlgebra.ldiv!(A::$t{<:Any,<:Adjoint{T,<:oneStridedMatrix}},
191-
B::oneStridedVector{T}) where {T<:Union{ComplexF32,ComplexF64}} =
192-
trsv!($uploc, 'C', $isunitc, parent(parent(A)), B)
193-
end
194-
end
195-
end # VERSION
196117

197118

198119
#
@@ -242,31 +163,7 @@ function LinearAlgebra.generic_matmatmul!(C::oneStridedMatrix, tA, tB, A::oneStr
242163
GPUArrays.generic_matmatmul!(C, wrap(A, tA), wrap(B, tB), alpha, beta)
243164
end
244165

245-
if VERSION < v"1.10.0-DEV.1365"
246-
# catch other functions that are called by LinearAlgebra's mul!
247-
LinearAlgebra.gemm_wrapper!(C::oneStridedMatrix, tA::AbstractChar, tB::AbstractChar, A::oneStridedVecOrMat, B::oneStridedVecOrMat, _add::MulAddMul) =
248-
LinearAlgebra.generic_matmatmul!(C, tA, tB, A, B, _add)
249-
# disambiguation
250-
LinearAlgebra.gemm_wrapper!(C::oneStridedMatrix{T}, tA::AbstractChar, tB::AbstractChar, A::oneStridedVecOrMat{T}, B::oneStridedVecOrMat{T}, _add::MulAddMul) where {T<:LinearAlgebra.BlasFloat} =
251-
LinearAlgebra.generic_matmatmul!(C, tA, tB, A, B, _add)
252-
function LinearAlgebra.syrk_wrapper!(C::oneStridedMatrix, tA::AbstractChar, A::oneStridedVecOrMat, _add::MulAddMul = MulAddMul())
253-
if tA == 'T'
254-
LinearAlgebra.generic_matmatmul!(C, 'T', 'N', A, A, _add)
255-
else # tA == 'N'
256-
LinearAlgebra.generic_matmatmul!(C, 'N', 'T', A, A, _add)
257-
end
258-
end
259-
function LinearAlgebra.herk_wrapper!(C::oneStridedMatrix, tA::AbstractChar, A::oneStridedVecOrMat, _add::MulAddMul = MulAddMul())
260-
if tA == 'C'
261-
LinearAlgebra.generic_matmatmul!(C, 'C', 'N', A, A, _add)
262-
else # tA == 'N'
263-
LinearAlgebra.generic_matmatmul!(C, 'N', 'C', A, A, _add)
264-
end
265-
end
266-
end # VERSION
267-
268166
# triangular
269-
if isdefined(LinearAlgebra, :generic_trimatmul!) # VERSION >= v"1.10-DEVXYZ"
270167
LinearAlgebra.generic_trimatmul!(C::oneStridedMatrix{T}, uploc, isunitc, tfun::Function, A::oneStridedMatrix{T}, B::oneStridedMatrix{T}) where {T<:onemklFloat} =
271168
trmm!('L', uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, one(T), A, C === B ? C : copyto!(C, B))
272169
LinearAlgebra.generic_mattrimul!(C::oneStridedMatrix{T}, uploc, isunitc, tfun::Function, A::oneStridedMatrix{T}, B::oneStridedMatrix{T}) where {T<:onemklFloat} =
@@ -275,25 +172,3 @@ LinearAlgebra.generic_trimatdiv!(C::oneStridedMatrix{T}, uploc, isunitc, tfun::F
275172
trsm!('L', uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, one(T), A, C === B ? C : copyto!(C, B))
276173
LinearAlgebra.generic_mattridiv!(C::oneStridedMatrix{T}, uploc, isunitc, tfun::Function, A::oneStridedMatrix{T}, B::oneStridedMatrix{T}) where {T<:onemklFloat} =
277174
trsm!('R', uploc, tfun === identity ? 'N' : tfun === transpose ? 'T' : 'C', isunitc, one(T), B, C === A ? C : copyto!(C, A))
278-
else
279-
## direct multiplication/division
280-
for (t, uploc, isunitc) in ((:LowerTriangular, 'L', 'N'),
281-
(:UnitLowerTriangular, 'L', 'U'),
282-
(:UpperTriangular, 'U', 'N'),
283-
(:UnitUpperTriangular, 'U', 'U'))
284-
@eval begin
285-
# Multiplication
286-
LinearAlgebra.lmul!(A::$t{T,<:oneStridedMatrix},
287-
B::oneStridedMatrix{T}) where {T<:onemklFloat} =
288-
trmm!('L', $uploc, 'N', $isunitc, one(T), parent(A), B)
289-
LinearAlgebra.rmul!(A::oneStridedMatrix{T},
290-
B::$t{T,<:oneStridedMatrix}) where {T<:onemklFloat} =
291-
trmm!('R', $uploc, 'N', $isunitc, one(T), parent(B), A)
292-
293-
# Left division
294-
LinearAlgebra.ldiv!(A::$t{T,<:oneStridedMatrix},
295-
B::oneStridedMatrix{T}) where {T<:onemklFloat} =
296-
trsm!('L', $uploc, 'N', $isunitc, one(T), parent(A), B)
297-
end
298-
end
299-
end # VERSION

lib/mkl/wrappers_lapack.jl

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -637,16 +637,14 @@ for elty in (:ComplexF32, :ComplexF64)
637637
end
638638
end
639639

640-
if VERSION >= v"1.10"
641-
for elty in (:Float32, :Float64)
642-
@eval begin
643-
LinearAlgebra.LAPACK.syevd!(jobz::Char, uplo::Char, A::oneStridedMatrix{$elty}) = oneMKL.syevd!(jobz, uplo, A)
644-
end
640+
for elty in (:Float32, :Float64)
641+
@eval begin
642+
LinearAlgebra.LAPACK.syevd!(jobz::Char, uplo::Char, A::oneStridedMatrix{$elty}) = oneMKL.syevd!(jobz, uplo, A)
645643
end
644+
end
646645

647-
for elty in (:ComplexF32, :ComplexF64)
648-
@eval begin
649-
LinearAlgebra.LAPACK.syevd!(jobz::Char, uplo::Char, A::oneStridedMatrix{$elty}) = oneMKL.heevd!(jobz, uplo, A)
650-
end
646+
for elty in (:ComplexF32, :ComplexF64)
647+
@eval begin
648+
LinearAlgebra.LAPACK.syevd!(jobz::Char, uplo::Char, A::oneStridedMatrix{$elty}) = oneMKL.heevd!(jobz, uplo, A)
651649
end
652650
end

src/array.jl

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,10 @@ mutable struct oneArray{T,N,B} <: AbstractGPUArray{T,N}
7171
function oneArray{T,N}(data::DataRef{B}, dims::Dims{N};
7272
maxsize::Int=prod(dims) * sizeof(T), offset::Int=0) where {T,N,B}
7373
check_eltype(T)
74+
if sizeof(T) == 0
75+
offset == 0 || error("Singleton arrays cannot have a nonzero offset")
76+
maxsize == 0 || error("Singleton arrays cannot have a size")
77+
end
7478
obj = new{T,N,B}(copy(data), maxsize, offset, dims)
7579
finalizer(unsafe_free!, obj)
7680
end
@@ -434,7 +438,12 @@ end
434438
## derived arrays
435439

436440
function GPUArrays.derive(::Type{T}, a::oneArray, dims::Dims{N}, offset::Int) where {T,N}
437-
offset = (a.offset * Base.elsize(a)) ÷ sizeof(T) + offset
441+
offset = if sizeof(T) == 0
442+
Base.elsize(a) == 0 || error("Cannot derive a singleton array from non-singleton inputs")
443+
offset
444+
else
445+
(a.offset * Base.elsize(a)) ÷ sizeof(T) + offset
446+
end
438447
oneArray{T,N}(a.data, dims; a.maxsize, offset)
439448
end
440449

0 commit comments

Comments
 (0)