Skip to content

Commit 719d893

Browse files
committed
Add a function oneMKL.version()
1 parent 3d3278d commit 719d893

File tree

9 files changed

+49
-2
lines changed

9 files changed

+49
-2
lines changed

deps/generate_interfaces.jl

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -492,6 +492,12 @@ headers_epilogue = read("onemkl_epilogue.h", String)
492492
write(io, headers_epilogue)
493493
close(io)
494494

495+
# Add the version of oneMKL in src/onemkl.h
496+
headers_onemkl = read("src/onemkl.h", String)
497+
version_onemkl = pkgversion(oneAPI_Support_Headers_jll)
498+
headers_onemkl = replace(headers_onemkl, "void onemkl_version" => "const int64_t ONEMKL_VERSION_MAJOR = $(version_onemkl.major);\nconst int64_t ONEMKL_VERSION_MINOR = $(version_onemkl.minor);\nconst int64_t ONEMKL_VERSION_PATCH = $(version_onemkl.patch);\nvoid onemkl_version")
499+
write("src/onemkl.h", headers_onemkl)
500+
495501
# Generate "src/onemkl.cpp"
496502
generate_cpp("blas", blas, "onemkl_blas.cpp", pattern="§")
497503
generate_cpp("lapack", lapack, "onemkl_lapack.cpp", pattern="§")

deps/onemkl_prologue.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,14 @@ oneapi::mkl::sparse::omatadd_alg convert(onemklOmataddAlg val) {
280280
}
281281
}
282282

283+
// version
284+
extern "C" void onemkl_version(int64_t *major, int64_t *minor, int64_t *patch) {
285+
*major = ONEMKL_VERSION_MAJOR;
286+
*minor = ONEMKL_VERSION_MINOR;
287+
*patch = ONEMKL_VERSION_PATCH;
288+
return;
289+
}
290+
283291
// gemm
284292
// https://spec.oneapi.io/versions/1.0-rev-1/elements/oneMKL/source/domains/blas/gemm.html
285293
class gemmBatchInfo {

deps/onemkl_prologue.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ typedef struct omatconvert_descr *omatconvert_descr_t;
140140
struct omatadd_descr;
141141
typedef struct omatadd_descr *omatadd_descr_t;
142142

143+
void onemkl_version(int64_t *major, int64_t *minor, int64_t *patch);
144+
143145
int onemklHgemm_batch(syclQueue_t device_queue, onemklTranspose transa,
144146
onemklTranspose transb, int64_t *m,
145147
int64_t *n, int64_t *k, uint16_t *alpha,

deps/src/onemkl.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -280,6 +280,14 @@ oneapi::mkl::sparse::omatadd_alg convert(onemklOmataddAlg val) {
280280
}
281281
}
282282

283+
// version
284+
extern "C" void onemkl_version(int64_t *major, int64_t *minor, int64_t *patch) {
285+
*major = ONEMKL_VERSION_MAJOR;
286+
*minor = ONEMKL_VERSION_MINOR;
287+
*patch = ONEMKL_VERSION_PATCH;
288+
return;
289+
}
290+
283291
// gemm
284292
// https://spec.oneapi.io/versions/1.0-rev-1/elements/oneMKL/source/domains/blas/gemm.html
285293
class gemmBatchInfo {

deps/src/onemkl.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,11 @@ typedef struct omatconvert_descr *omatconvert_descr_t;
140140
struct omatadd_descr;
141141
typedef struct omatadd_descr *omatadd_descr_t;
142142

143+
const int64_t ONEMKL_VERSION_MAJOR = 2025;
144+
const int64_t ONEMKL_VERSION_MINOR = 2;
145+
const int64_t ONEMKL_VERSION_PATCH = 0;
146+
void onemkl_version(int64_t *major, int64_t *minor, int64_t *patch);
147+
143148
int onemklHgemm_batch(syclQueue_t device_queue, onemklTranspose transa,
144149
onemklTranspose transb, int64_t *m,
145150
int64_t *n, int64_t *k, uint16_t *alpha,

lib/level-zero/libze.jl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using CEnum
1+
using CEnum: CEnum, @cenum
22

33
# outlined functionality to avoid GC frame allocation
44
@noinline function throw_api_error(res)

lib/mkl/oneMKL.jl

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ include("linalg.jl")
3131
include("interfaces.jl")
3232
include("fft.jl")
3333

34+
function version()
35+
major = Ref{Int64}()
36+
minor = Ref{Int64}()
37+
patch = Ref{Int64}()
38+
onemkl_version(major, minor, patch)
39+
return VersionNumber(major[], minor[], patch[])
40+
end
41+
3442
function band(A::StridedArray, kl, ku)
3543
m, n = size(A)
3644
AB = zeros(eltype(A),kl+ku+1,n)

lib/support/liboneapi_support.jl

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using CEnum
1+
using CEnum: CEnum, @cenum
22

33
mutable struct syclPlatform_st end
44

@@ -204,6 +204,11 @@ mutable struct omatadd_descr end
204204

205205
const omatadd_descr_t = Ptr{omatadd_descr}
206206

207+
function onemkl_version(major, minor, patch)
208+
@ccall liboneapi_support.onemkl_version(major::Ptr{Int64}, minor::Ptr{Int64},
209+
patch::Ptr{Int64})::Cvoid
210+
end
211+
207212
function onemklHgemm_batch(device_queue, transa, transb, m, n, k, alpha, a, lda, b, ldb,
208213
beta, c, ldc, group_count, group_size)
209214
@ccall liboneapi_support.onemklHgemm_batch(device_queue::syclQueue_t,

test/onemkl.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ m = 20
1212
n = 35
1313
k = 13
1414

15+
@testset "Version" begin
16+
version_onemkl = oneMKL.version()
17+
@test version_onemkl v"2025.2.0"
18+
end
19+
1520
############################################################################################
1621
@testset "level 1" begin
1722
@testset for T in intersect(eltypes, [Float32, Float64, ComplexF32, ComplexF64])

0 commit comments

Comments
 (0)