From a9e4ae79edf03bd7440cd8ad2aed0ae12b2844f3 Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Tue, 5 May 2026 11:27:09 -0500 Subject: [PATCH 1/2] Move to LTS stack --- Project.toml | 12 +- deps/Project.toml | 6 +- deps/build_local.jl | 5 +- deps/generate_interfaces.jl | 26 ++- deps/src/onemkl.cpp | 200 ++++++++++++++---- deps/src/onemkl.h | 152 ++++++++++---- lib/level-zero/oneL0.jl | 6 +- lib/support/liboneapi_support.jl | 348 +++++++++++++++++++++++++------ res/Project.toml | 2 +- res/wrap.jl | 2 +- src/oneAPI.jl | 2 +- src/utils.jl | 2 +- test/Project.toml | 4 +- 13 files changed, 606 insertions(+), 161 deletions(-) diff --git a/Project.toml b/Project.toml index f84b9c27..c997a054 100644 --- a/Project.toml +++ b/Project.toml @@ -16,7 +16,7 @@ KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" LLVM = "929cbde3-209d-540e-8aea-75f648917ca0" Libdl = "8f399da3-3557-5675-b5ff-fb832c97cbdb" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -NEO_jll = "700fe977-ac61-5f37-bbc8-c6c4b2b6a9fd" +NEO_LTS_jll = "a724f90f-ce79-56dd-a1bd-b9de5a61085f" Preferences = "21216c6a-2e73-6563-6e65-726566657250" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" @@ -26,8 +26,8 @@ SPIRV_Tools_jll = "6ac6d60f-d740-5983-97d7-a4482c0689f4" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" -oneAPI_Level_Zero_Headers_jll = "f4bc562b-d309-54f8-9efb-476e56f0410d" -oneAPI_Level_Zero_Loader_jll = "13eca655-d68d-5b81-8367-6d99d727ab01" +oneAPI_Level_Zero_Headers_LTS_jll = "d79c0b2e-896c-561b-aab9-323701ec0314" +oneAPI_Level_Zero_Loader_LTS_jll = "f6e5cbb4-ba2a-56dc-92a2-9d66f5656ccd" oneAPI_Support_jll = "b049733a-a71d-5ed3-8eba-7d323ac00b36" [compat] @@ -41,7 +41,7 @@ GPUCompiler = "1.6" GPUToolbox = "0.1, 0.2, 0.3, 1" KernelAbstractions = "0.9.39" LLVM = "6, 7, 8, 9" -NEO_jll = "=25.44.36015" +NEO_LTS_jll = "=25.18.33578" Preferences = "1" SPIRVIntrinsics = "0.5" SPIRV_LLVM_Translator_jll = "21" @@ -49,8 +49,8 @@ SPIRV_Tools_jll = "2025.4.0" SpecialFunctions = "1.3, 2" StaticArrays = "1" julia = "1.10" -oneAPI_Level_Zero_Loader_jll = "1.25" +oneAPI_Level_Zero_Loader_LTS_jll = "=1.24" oneAPI_Support_jll = "0.9.2" [extras] -libigc_jll = "94295238-5935-5bd7-bb0f-b00942e9bdd5" +libigc_LTS_jll = "9a8258a1-e827-5686-bee9-144461246960" diff --git a/deps/Project.toml b/deps/Project.toml index b8446dbe..8833df53 100644 --- a/deps/Project.toml +++ b/deps/Project.toml @@ -8,8 +8,8 @@ Ninja_jll = "76642167-d241-5cee-8c94-7a494e8cb7b7" Pkg = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" Preferences = "21216c6a-2e73-6563-6e65-726566657250" Scratch = "6c6a2e73-6563-6170-7368-637461726353" -oneAPI_Level_Zero_Headers_jll = "f4bc562b-d309-54f8-9efb-476e56f0410d" -oneAPI_Support_Headers_jll = "24f86df5-245d-5634-a4cc-32433d9800b3" +oneAPI_Level_Zero_Headers_LTS_jll = "d79c0b2e-896c-561b-aab9-323701ec0314" +oneAPI_Support_Headers_LTS_jll = "0e9de0da-c0b6-5d6c-9871-5c996d414ca7" [compat] -oneAPI_Support_Headers_jll = "=2025.2.0" +oneAPI_Support_Headers_LTS_jll = "=2025.3.1" diff --git a/deps/build_local.jl b/deps/build_local.jl index c8ae4e33..463d79a6 100644 --- a/deps/build_local.jl +++ b/deps/build_local.jl @@ -8,7 +8,8 @@ if haskey(ENV, "BUILDKITE") run(`buildkite-agent annotate 'Using a locally-built support library; A bump of oneAPI_Support_jll is required before releasing this packages.' --style 'warning' --context 'ctx-deps'`) end -using Scratch, Preferences, CMake_jll, Ninja_jll, oneAPI_Level_Zero_Headers_jll +using Scratch, Preferences, CMake_jll, Ninja_jll +import oneAPI_Level_Zero_Headers_LTS_jll as oneAPI_Level_Zero_Headers_jll oneAPI = Base.UUID("8f75cd03-7ff8-4ecb-9b8f-daf728133b1b") @@ -45,7 +46,7 @@ if !isfile(joinpath(conda_dir, "condarc-julia.yml")) touch(joinpath(conda_dir, "conda-meta", "history")) end Conda.add_channel("https://software.repos.intel.com/python/conda/", conda_dir) -Conda.add(["dpcpp_linux-64=2025.2.0", "mkl-devel-dpcpp=2025.2.0"], conda_dir) +Conda.add(["dpcpp_linux-64=2025.3.1", "mkl-devel-dpcpp=2025.3.1"], conda_dir) Conda.list(conda_dir) diff --git a/deps/generate_interfaces.jl b/deps/generate_interfaces.jl index 108518db..8c62b757 100644 --- a/deps/generate_interfaces.jl +++ b/deps/generate_interfaces.jl @@ -1,4 +1,4 @@ -using oneAPI_Support_Headers_jll +import oneAPI_Support_Headers_LTS_jll as oneAPI_Support_Headers_jll include("generate_helpers.jl") @@ -337,12 +337,34 @@ function generate_headers(library::String, filename::Vector{String}, output::Str end end + # Dedup: when two signatures map to the same C function name (because MKL + # added an overload), keep the one with more parameters — typically the + # newer signature (e.g. set_csr_data gained an `nnz` arg in MKL 2025.3.1). + # Without this the generated onemkl.cpp has duplicate function definitions + # and won't compile. + _fn_name(h) = (pos = findfirst('(', h); strip(split(strip(h[1:pos-1]))[end])) + _param_cnt(h) = (pos = findfirst('(', h); ep = findnext(')', h, pos); count(==(','), h[pos+1:ep-1]) + 1) + keep_idx = Dict{String,Int}() + keep_pc = Dict{String,Int}() + for (i, sig) in enumerate(signatures) + (sig[2] in blacklist) && continue + fn = _fn_name(sig[1]) + pc = _param_cnt(sig[1]) + if !haskey(keep_idx, fn) || pc > keep_pc[fn] + keep_idx[fn] = i + keep_pc[fn] = pc + end + end + keep_set = Set(values(keep_idx)) + path_oneapi_headers = joinpath(@__DIR__, output) oneapi_headers = open(path_oneapi_headers, "w") - for (header, name_routine, version, type_routine, template) in signatures + for (i, (header, name_routine, version, type_routine, template)) in enumerate(signatures) # Blacklist (name_routine in blacklist) && continue + # Dedup + (i in keep_set) || continue # Pass scalars (e.g. alpha/beta inputs) as references instead of values for type in ("short", "float", "double", "float _Complex", "double _Complex") diff --git a/deps/src/onemkl.cpp b/deps/src/onemkl.cpp index 2b880327..f9479c2f 100644 --- a/deps/src/onemkl.cpp +++ b/deps/src/onemkl.cpp @@ -5471,142 +5471,270 @@ extern "C" int64_t onemklZunmqr_batch_scratchpad_size(syclQueue_t device_queue, } // SPARSE -extern "C" int onemklXsparse_init_matrix_handle(matrix_handle_t *p_spMat) { - oneapi::mkl::sparse::init_matrix_handle((oneapi::mkl::sparse::matrix_handle_t*) p_spMat); +extern "C" int onemklXsparse_init_matrix_handle(matrix_handle_t *p_spmat) { + oneapi::mkl::sparse::init_matrix_handle((oneapi::mkl::sparse::matrix_handle_t*) p_spmat); return 0; } -extern "C" int onemklXsparse_release_matrix_handle(syclQueue_t device_queue, matrix_handle_t *p_spMat) { +extern "C" int onemklXsparse_release_matrix_handle(syclQueue_t device_queue, matrix_handle_t *p_spmat) { try { - auto status = oneapi::mkl::sparse::release_matrix_handle(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t*) p_spMat, {}); + auto status = oneapi::mkl::sparse::release_matrix_handle(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t*) p_spmat, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklSsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, float *values) { +extern "C" int onemklSsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, float *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklSsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, float *values) { +extern "C" int onemklSsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, float *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklDsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, double *values) { +extern "C" int onemklDsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, double *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklDsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, double *values) { +extern "C" int onemklDsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, double *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklCsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, float _Complex *values) { +extern "C" int onemklCsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, float _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklCsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, float _Complex *values) { +extern "C" int onemklCsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, float _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklZsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, double _Complex *values) { +extern "C" int onemklZsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, int32_t *col_ind, double _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklZsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, double _Complex *values) { +extern "C" int onemklZsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ptr, int64_t *col_ind, double _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ptr, col_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklSsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, float *values) { +extern "C" int onemklSsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, int32_t *row_ind, float *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklSsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, float *values) { +extern "C" int onemklSsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *col_ptr, int64_t *row_ind, float *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklDsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, double *values) { +extern "C" int onemklDsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, int32_t *row_ind, double *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklDsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, double *values) { +extern "C" int onemklDsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *col_ptr, int64_t *row_ind, double *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, values, {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklCsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, float _Complex *values) { +extern "C" int onemklCsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, int32_t *row_ind, float _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklCsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, float _Complex *values) { +extern "C" int onemklCsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *col_ptr, int64_t *row_ind, float _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklZsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, double _Complex *values) { +extern "C" int onemklZsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, int32_t *row_ind, double _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, reinterpret_cast*>(values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; } -extern "C" int onemklZsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, double _Complex *values) { +extern "C" int onemklZsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *col_ptr, int64_t *row_ind, double _Complex *values) { try { - auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + auto status = oneapi::mkl::sparse::set_csc_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spMat, nrows, ncols, nnz, convert(index), col_ptr, row_ind, reinterpret_cast*>(values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklSsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, float *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklSsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, float *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklDsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, double *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklDsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, double *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklCsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, float _Complex *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklCsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, float _Complex *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklZsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, double _Complex *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklZsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, double _Complex *values) { + try { + auto status = oneapi::mkl::sparse::set_coo_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, nrows, ncols, nnz, convert(index), row_ind, col_ind, reinterpret_cast*>(values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklSsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, float *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, bsr_values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklSsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int64_t *bsr_row_ptr, int64_t *bsr_col_ind, float *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, bsr_values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklDsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, double *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, bsr_values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklDsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int64_t *bsr_row_ptr, int64_t *bsr_col_ind, double *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, bsr_values, {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklCsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, float _Complex *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, reinterpret_cast*>(bsr_values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklCsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int64_t *bsr_row_ptr, int64_t *bsr_col_ind, float _Complex *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, reinterpret_cast*>(bsr_values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklZsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, double _Complex *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, reinterpret_cast*>(bsr_values), {}); + device_queue->val.wait_and_throw(); + } catch (const sycl::exception& e) { return -1; } + return 0; +} + +extern "C" int onemklZsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, onemklIndex index, int64_t *bsr_row_ptr, int64_t *bsr_col_ind, double _Complex *bsr_values) { + try { + auto status = oneapi::mkl::sparse::set_bsr_data(device_queue->val, (oneapi::mkl::sparse::matrix_handle_t) spmat, blk_nrows, blk_ncols, blk_nnz, row_blk_size, col_blk_size, convert(blk_layout), convert(index), bsr_row_ptr, bsr_col_ind, reinterpret_cast*>(bsr_values), {}); device_queue->val.wait_and_throw(); } catch (const sycl::exception& e) { return -1; } return 0; diff --git a/deps/src/onemkl.h b/deps/src/onemkl.h index 0029fb2e..4d1caa08 100644 --- a/deps/src/onemkl.h +++ b/deps/src/onemkl.h @@ -141,8 +141,8 @@ struct omatadd_descr; typedef struct omatadd_descr *omatadd_descr_t; const int64_t ONEMKL_VERSION_MAJOR = 2025; -const int64_t ONEMKL_VERSION_MINOR = 2; -const int64_t ONEMKL_VERSION_PATCH = 0; +const int64_t ONEMKL_VERSION_MINOR = 3; +const int64_t ONEMKL_VERSION_PATCH = 1; void onemkl_version(int64_t *major, int64_t *minor, int64_t *patch); int onemklHgemm_batch(syclQueue_t device_queue, onemklTranspose transa, @@ -2737,74 +2737,154 @@ int64_t onemklZunmqr_batch_scratchpad_size(syclQueue_t device_queue, onemklSide* group_count, int64_t* group_sizes); // SPARSE -int onemklXsparse_init_matrix_handle(matrix_handle_t *p_spMat); +int onemklXsparse_init_matrix_handle(matrix_handle_t *p_spmat); -int onemklXsparse_release_matrix_handle(syclQueue_t device_queue, matrix_handle_t *p_spMat); +int onemklXsparse_release_matrix_handle(syclQueue_t device_queue, matrix_handle_t *p_spmat); -int onemklSsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, - int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t - *col_ind, float *values); +int onemklSsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, + int32_t *col_ind, float *values); -int onemklSsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t - nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, - int64_t *col_ind, float *values); +int onemklSsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *row_ptr, int64_t *col_ind, float *values); -int onemklDsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, - int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t - *col_ind, double *values); +int onemklDsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, + int32_t *col_ind, double *values); -int onemklDsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t - nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, - int64_t *col_ind, double *values); +int onemklDsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *row_ptr, int64_t *col_ind, double *values); -int onemklCsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, - int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t - *col_ind, float _Complex *values); +int onemklCsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, + int32_t *col_ind, float _Complex *values); -int onemklCsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t - nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, - int64_t *col_ind, float _Complex *values); +int onemklCsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *row_ptr, int64_t *col_ind, float _Complex *values); -int onemklZsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, - int32_t ncols, onemklIndex index, int32_t *row_ptr, int32_t - *col_ind, double _Complex *values); +int onemklZsparse_set_csr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *row_ptr, + int32_t *col_ind, double _Complex *values); + +int onemklZsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *row_ptr, int64_t *col_ind, double _Complex *values); -int onemklZsparse_set_csr_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t - nrows, int64_t ncols, onemklIndex index, int64_t *row_ptr, - int64_t *col_ind, double _Complex *values); +int onemklSsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, + int32_t *row_ind, float *values); + +int onemklSsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *col_ptr, int64_t *row_ind, float *values); -int onemklSsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, +int onemklDsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, + int32_t *row_ind, double *values); + +int onemklDsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *col_ptr, int64_t *row_ind, double *values); + +int onemklCsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, + int32_t *row_ind, float _Complex *values); + +int onemklCsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *col_ptr, int64_t *row_ind, float _Complex *values); + +int onemklZsparse_set_csc_data(syclQueue_t device_queue, matrix_handle_t spMat, int64_t nrows, + int64_t ncols, int64_t nnz, onemklIndex index, int32_t *col_ptr, + int32_t *row_ind, double _Complex *values); + +int onemklZsparse_set_csc_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t + nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t + *col_ptr, int64_t *row_ind, double _Complex *values); + +int onemklSsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, float *values); -int onemklSsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t +int onemklSsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, float *values); -int onemklDsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, +int onemklDsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, double *values); -int onemklDsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t +int onemklDsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, double *values); -int onemklCsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, +int onemklCsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, float _Complex *values); -int onemklCsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t +int onemklCsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, float _Complex *values); -int onemklZsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spMat, int32_t nrows, +int onemklZsparse_set_coo_data(syclQueue_t device_queue, matrix_handle_t spmat, int32_t nrows, int32_t ncols, int32_t nnz, onemklIndex index, int32_t *row_ind, int32_t *col_ind, double _Complex *values); -int onemklZsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spMat, int64_t +int onemklZsparse_set_coo_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t nrows, int64_t ncols, int64_t nnz, onemklIndex index, int64_t *row_ind, int64_t *col_ind, double _Complex *values); +int onemklSsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, + float *bsr_values); + +int onemklSsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int64_t *bsr_row_ptr, int64_t + *bsr_col_ind, float *bsr_values); + +int onemklDsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, + double *bsr_values); + +int onemklDsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int64_t *bsr_row_ptr, int64_t + *bsr_col_ind, double *bsr_values); + +int onemklCsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, + float _Complex *bsr_values); + +int onemklCsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int64_t *bsr_row_ptr, int64_t + *bsr_col_ind, float _Complex *bsr_values); + +int onemklZsparse_set_bsr_data(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int32_t *bsr_row_ptr, int32_t *bsr_col_ind, + double _Complex *bsr_values); + +int onemklZsparse_set_bsr_data_64(syclQueue_t device_queue, matrix_handle_t spmat, int64_t + blk_nrows, int64_t blk_ncols, int64_t blk_nnz, int64_t + row_blk_size, int64_t col_blk_size, onemklLayout blk_layout, + onemklIndex index, int64_t *bsr_row_ptr, int64_t + *bsr_col_ind, double _Complex *bsr_values); + int onemklXsparse_init_matmat_descr(matmat_descr_t *p_desc); int onemklXsparse_release_matmat_descr(matmat_descr_t *p_desc); diff --git a/lib/level-zero/oneL0.jl b/lib/level-zero/oneL0.jl index f9697029..6bcb17fb 100644 --- a/lib/level-zero/oneL0.jl +++ b/lib/level-zero/oneL0.jl @@ -11,8 +11,10 @@ using Libdl if Sys.iswindows() const libze_loader = "ze_loader" else - using NEO_jll - using oneAPI_Level_Zero_Loader_jll + using NEO_LTS_jll + using oneAPI_Level_Zero_Loader_LTS_jll + const NEO_jll = NEO_LTS_jll + const oneAPI_Level_Zero_Loader_jll = oneAPI_Level_Zero_Loader_LTS_jll end include("utils.jl") diff --git a/lib/support/liboneapi_support.jl b/lib/support/liboneapi_support.jl index 91146c99..5f30a9f1 100644 --- a/lib/support/liboneapi_support.jl +++ b/lib/support/liboneapi_support.jl @@ -6428,107 +6428,195 @@ function onemklZunmqr_batch_scratchpad_size(device_queue, side, trans, m, n, k, group_sizes::Ptr{Int64})::Int64 end -function onemklXsparse_init_matrix_handle(p_spMat) - @ccall liboneapi_support.onemklXsparse_init_matrix_handle(p_spMat::Ptr{matrix_handle_t})::Cint +function onemklXsparse_init_matrix_handle(p_spmat) + @ccall liboneapi_support.onemklXsparse_init_matrix_handle(p_spmat::Ptr{matrix_handle_t})::Cint end -function onemklXsparse_release_matrix_handle(device_queue, p_spMat) +function onemklXsparse_release_matrix_handle(device_queue, p_spmat) @ccall liboneapi_support.onemklXsparse_release_matrix_handle(device_queue::syclQueue_t, - p_spMat::Ptr{matrix_handle_t})::Cint + p_spmat::Ptr{matrix_handle_t})::Cint end -function onemklSsparse_set_csr_data(device_queue, spMat, nrows, ncols, index, row_ptr, +function onemklSsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, index, row_ptr, col_ind, values) @ccall liboneapi_support.onemklSsparse_set_csr_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, - nrows::Int32, ncols::Int32, - index::onemklIndex, + spmat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::ZePtr{Int32}, row_ptr::ZePtr{Int32}, - col_ind::ZePtr{Int32}, - values::ZePtr{Cfloat})::Cint + col_ind::ZePtr{Cfloat}, + values::Ptr{Cfloat})::Cint end -function onemklSsparse_set_csr_data_64(device_queue, spMat, nrows, ncols, index, row_ptr, - col_ind, values) +function onemklSsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, index, + row_ptr, col_ind, values) @ccall liboneapi_support.onemklSsparse_set_csr_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, - index::onemklIndex, + nnz::Int64, index::ZePtr{Int64}, row_ptr::ZePtr{Int64}, - col_ind::ZePtr{Int64}, - values::ZePtr{Cfloat})::Cint + col_ind::ZePtr{Cfloat}, + values::Ptr{Cfloat})::Cint end -function onemklDsparse_set_csr_data(device_queue, spMat, nrows, ncols, index, row_ptr, +function onemklDsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, index, row_ptr, col_ind, values) @ccall liboneapi_support.onemklDsparse_set_csr_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, - nrows::Int32, ncols::Int32, - index::onemklIndex, + spmat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::ZePtr{Int32}, row_ptr::ZePtr{Int32}, - col_ind::ZePtr{Int32}, - values::ZePtr{Cdouble})::Cint + col_ind::ZePtr{Cdouble}, + values::Ptr{Cdouble})::Cint end -function onemklDsparse_set_csr_data_64(device_queue, spMat, nrows, ncols, index, row_ptr, - col_ind, values) +function onemklDsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, index, + row_ptr, col_ind, values) @ccall liboneapi_support.onemklDsparse_set_csr_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, - index::onemklIndex, + nnz::Int64, index::ZePtr{Int64}, row_ptr::ZePtr{Int64}, - col_ind::ZePtr{Int64}, - values::ZePtr{Cdouble})::Cint + col_ind::ZePtr{Cdouble}, + values::Ptr{Cdouble})::Cint end -function onemklCsparse_set_csr_data(device_queue, spMat, nrows, ncols, index, row_ptr, +function onemklCsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, index, row_ptr, col_ind, values) @ccall liboneapi_support.onemklCsparse_set_csr_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, - nrows::Int32, ncols::Int32, - index::onemklIndex, + spmat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::ZePtr{Int32}, row_ptr::ZePtr{Int32}, - col_ind::ZePtr{Int32}, - values::ZePtr{ComplexF32})::Cint + col_ind::ZePtr{ComplexF32}, + values::Ptr{ComplexF32})::Cint end -function onemklCsparse_set_csr_data_64(device_queue, spMat, nrows, ncols, index, row_ptr, - col_ind, values) +function onemklCsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, index, + row_ptr, col_ind, values) @ccall liboneapi_support.onemklCsparse_set_csr_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, - index::onemklIndex, + nnz::Int64, index::ZePtr{Int64}, row_ptr::ZePtr{Int64}, - col_ind::ZePtr{Int64}, - values::ZePtr{ComplexF32})::Cint + col_ind::ZePtr{ComplexF32}, + values::Ptr{ComplexF32})::Cint end -function onemklZsparse_set_csr_data(device_queue, spMat, nrows, ncols, index, row_ptr, +function onemklZsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, index, row_ptr, col_ind, values) @ccall liboneapi_support.onemklZsparse_set_csr_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, - nrows::Int32, ncols::Int32, - index::onemklIndex, + spmat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::ZePtr{Int32}, row_ptr::ZePtr{Int32}, - col_ind::ZePtr{Int32}, - values::ZePtr{ComplexF64})::Cint + col_ind::ZePtr{ComplexF64}, + values::Ptr{ComplexF32})::Cint end -function onemklZsparse_set_csr_data_64(device_queue, spMat, nrows, ncols, index, row_ptr, - col_ind, values) +function onemklZsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, index, + row_ptr, col_ind, values) @ccall liboneapi_support.onemklZsparse_set_csr_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, - index::onemklIndex, + nnz::Int64, index::ZePtr{Int64}, row_ptr::ZePtr{Int64}, - col_ind::ZePtr{Int64}, - values::ZePtr{ComplexF64})::Cint + col_ind::ZePtr{ComplexF64}, + values::Ptr{ComplexF32})::Cint +end + +function onemklSsparse_set_csc_data(device_queue, spMat, nrows, ncols, nnz, index, col_ptr, + row_ind, values) + @ccall liboneapi_support.onemklSsparse_set_csc_data(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int32}, + row_ind::Ptr{Int32}, + values::Ptr{Cfloat})::Cint +end + +function onemklSsparse_set_csc_data_64(device_queue, spMat, nrows, ncols, nnz, index, + col_ptr, row_ind, values) + @ccall liboneapi_support.onemklSsparse_set_csc_data_64(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int64}, + row_ind::Ptr{Int64}, + values::Ptr{Cfloat})::Cint +end + +function onemklDsparse_set_csc_data(device_queue, spMat, nrows, ncols, nnz, index, col_ptr, + row_ind, values) + @ccall liboneapi_support.onemklDsparse_set_csc_data(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int32}, + row_ind::Ptr{Int32}, + values::Ptr{Cdouble})::Cint +end + +function onemklDsparse_set_csc_data_64(device_queue, spMat, nrows, ncols, nnz, index, + col_ptr, row_ind, values) + @ccall liboneapi_support.onemklDsparse_set_csc_data_64(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int64}, + row_ind::Ptr{Int64}, + values::Ptr{Cdouble})::Cint +end + +function onemklCsparse_set_csc_data(device_queue, spMat, nrows, ncols, nnz, index, col_ptr, + row_ind, values) + @ccall liboneapi_support.onemklCsparse_set_csc_data(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int32}, + row_ind::Ptr{Int32}, + values::Ptr{ComplexF32})::Cint +end + +function onemklCsparse_set_csc_data_64(device_queue, spMat, nrows, ncols, nnz, index, + col_ptr, row_ind, values) + @ccall liboneapi_support.onemklCsparse_set_csc_data_64(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int64}, + row_ind::Ptr{Int64}, + values::Ptr{ComplexF32})::Cint end -function onemklSsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, index, row_ind, +function onemklZsparse_set_csc_data(device_queue, spMat, nrows, ncols, nnz, index, col_ptr, + row_ind, values) + @ccall liboneapi_support.onemklZsparse_set_csc_data(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int32}, + row_ind::Ptr{Int32}, + values::Ptr{ComplexF32})::Cint +end + +function onemklZsparse_set_csc_data_64(device_queue, spMat, nrows, ncols, nnz, index, + col_ptr, row_ind, values) + @ccall liboneapi_support.onemklZsparse_set_csc_data_64(device_queue::syclQueue_t, + spMat::matrix_handle_t, + nrows::Int64, ncols::Int64, + nnz::Int64, index::onemklIndex, + col_ptr::Ptr{Int64}, + row_ind::Ptr{Int64}, + values::Ptr{ComplexF32})::Cint +end + +function onemklSsparse_set_coo_data(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklSsparse_set_coo_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int32, ncols::Int32, nnz::Int32, index::onemklIndex, row_ind::ZePtr{Int32}, @@ -6536,10 +6624,10 @@ function onemklSsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, inde values::ZePtr{Cfloat})::Cint end -function onemklSsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, index, +function onemklSsparse_set_coo_data_64(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklSsparse_set_coo_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, nnz::Int64, index::onemklIndex, row_ind::ZePtr{Int64}, @@ -6547,10 +6635,10 @@ function onemklSsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, i values::ZePtr{Cfloat})::Cint end -function onemklDsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, index, row_ind, +function onemklDsparse_set_coo_data(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklDsparse_set_coo_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int32, ncols::Int32, nnz::Int32, index::onemklIndex, row_ind::ZePtr{Int32}, @@ -6558,10 +6646,10 @@ function onemklDsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, inde values::ZePtr{Cdouble})::Cint end -function onemklDsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, index, +function onemklDsparse_set_coo_data_64(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklDsparse_set_coo_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, nnz::Int64, index::onemklIndex, row_ind::ZePtr{Int64}, @@ -6569,10 +6657,10 @@ function onemklDsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, i values::ZePtr{Cdouble})::Cint end -function onemklCsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, index, row_ind, +function onemklCsparse_set_coo_data(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklCsparse_set_coo_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int32, ncols::Int32, nnz::Int32, index::onemklIndex, row_ind::ZePtr{Int32}, @@ -6580,10 +6668,10 @@ function onemklCsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, inde values::ZePtr{ComplexF32})::Cint end -function onemklCsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, index, +function onemklCsparse_set_coo_data_64(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklCsparse_set_coo_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, nnz::Int64, index::onemklIndex, row_ind::ZePtr{Int64}, @@ -6591,10 +6679,10 @@ function onemklCsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, i values::ZePtr{ComplexF32})::Cint end -function onemklZsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, index, row_ind, +function onemklZsparse_set_coo_data(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklZsparse_set_coo_data(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int32, ncols::Int32, nnz::Int32, index::onemklIndex, row_ind::ZePtr{Int32}, @@ -6602,10 +6690,10 @@ function onemklZsparse_set_coo_data(device_queue, spMat, nrows, ncols, nnz, inde values::ZePtr{ComplexF64})::Cint end -function onemklZsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, index, +function onemklZsparse_set_coo_data_64(device_queue, spmat, nrows, ncols, nnz, index, row_ind, col_ind, values) @ccall liboneapi_support.onemklZsparse_set_coo_data_64(device_queue::syclQueue_t, - spMat::matrix_handle_t, + spmat::matrix_handle_t, nrows::Int64, ncols::Int64, nnz::Int64, index::onemklIndex, row_ind::ZePtr{Int64}, @@ -6613,6 +6701,130 @@ function onemklZsparse_set_coo_data_64(device_queue, spMat, nrows, ncols, nnz, i values::ZePtr{ComplexF64})::Cint end +function onemklSsparse_set_bsr_data(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklSsparse_set_bsr_data(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, blk_ncols::Int64, + blk_nnz::Int64, row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int32}, + bsr_col_ind::Ptr{Int32}, + bsr_values::Ptr{Cfloat})::Cint +end + +function onemklSsparse_set_bsr_data_64(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklSsparse_set_bsr_data_64(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, + blk_ncols::Int64, blk_nnz::Int64, + row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int64}, + bsr_col_ind::Ptr{Int64}, + bsr_values::Ptr{Cfloat})::Cint +end + +function onemklDsparse_set_bsr_data(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklDsparse_set_bsr_data(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, blk_ncols::Int64, + blk_nnz::Int64, row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int32}, + bsr_col_ind::Ptr{Int32}, + bsr_values::Ptr{Cdouble})::Cint +end + +function onemklDsparse_set_bsr_data_64(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklDsparse_set_bsr_data_64(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, + blk_ncols::Int64, blk_nnz::Int64, + row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int64}, + bsr_col_ind::Ptr{Int64}, + bsr_values::Ptr{Cdouble})::Cint +end + +function onemklCsparse_set_bsr_data(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklCsparse_set_bsr_data(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, blk_ncols::Int64, + blk_nnz::Int64, row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int32}, + bsr_col_ind::Ptr{Int32}, + bsr_values::Ptr{ComplexF32})::Cint +end + +function onemklCsparse_set_bsr_data_64(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklCsparse_set_bsr_data_64(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, + blk_ncols::Int64, blk_nnz::Int64, + row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int64}, + bsr_col_ind::Ptr{Int64}, + bsr_values::Ptr{ComplexF32})::Cint +end + +function onemklZsparse_set_bsr_data(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklZsparse_set_bsr_data(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, blk_ncols::Int64, + blk_nnz::Int64, row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int32}, + bsr_col_ind::Ptr{Int32}, + bsr_values::Ptr{ComplexF32})::Cint +end + +function onemklZsparse_set_bsr_data_64(device_queue, spmat, blk_nrows, blk_ncols, blk_nnz, + row_blk_size, col_blk_size, blk_layout, index, + bsr_row_ptr, bsr_col_ind, bsr_values) + @ccall liboneapi_support.onemklZsparse_set_bsr_data_64(device_queue::syclQueue_t, + spmat::matrix_handle_t, + blk_nrows::Int64, + blk_ncols::Int64, blk_nnz::Int64, + row_blk_size::Int64, + col_blk_size::Int64, + blk_layout::onemklLayout, + index::onemklIndex, + bsr_row_ptr::Ptr{Int64}, + bsr_col_ind::Ptr{Int64}, + bsr_values::Ptr{ComplexF32})::Cint +end + function onemklXsparse_init_matmat_descr(p_desc) @ccall liboneapi_support.onemklXsparse_init_matmat_descr(p_desc::Ptr{matmat_descr_t})::Cint end diff --git a/res/Project.toml b/res/Project.toml index f7b4a7fe..20a2ab05 100644 --- a/res/Project.toml +++ b/res/Project.toml @@ -1,4 +1,4 @@ [deps] Clang = "40e3b903-d033-50b4-a0cc-940c62c95e31" JuliaFormatter = "98e50ef6-434e-11e9-1051-2b60c6c9e899" -oneAPI_Level_Zero_Headers_jll = "f4bc562b-d309-54f8-9efb-476e56f0410d" +oneAPI_Level_Zero_Headers_LTS_jll = "d79c0b2e-896c-561b-aab9-323701ec0314" diff --git a/res/wrap.jl b/res/wrap.jl index 1d48315e..a86428d2 100644 --- a/res/wrap.jl +++ b/res/wrap.jl @@ -108,7 +108,7 @@ end # Main application # -using oneAPI_Level_Zero_Headers_jll +import oneAPI_Level_Zero_Headers_LTS_jll as oneAPI_Level_Zero_Headers_jll function main() wrap("ze", oneAPI_Level_Zero_Headers_jll.ze_api) diff --git a/src/oneAPI.jl b/src/oneAPI.jl index b4ee257b..8c8c4707 100644 --- a/src/oneAPI.jl +++ b/src/oneAPI.jl @@ -98,7 +98,7 @@ function __init__() end function set_debug!(debug::Bool) - for jll in [oneL0.NEO_jll, oneL0.NEO_jll.libigc_jll] + for jll in [oneL0.NEO_jll, oneL0.NEO_jll.libigc_LTS_jll] Preferences.set_preferences!(jll, "debug" => string(debug); force=true) end @info "oneAPI debug mode $(debug ? "enabled" : "disabled"); please re-start Julia." diff --git a/src/utils.jl b/src/utils.jl index 0516de03..e7d232ec 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -2,7 +2,7 @@ function versioninfo(io::IO=stdout) if Sys.islinux() println(io, "Binary dependencies:") - for jll in [oneL0.NEO_jll, oneL0.NEO_jll.libigc_jll, oneL0.NEO_jll.gmmlib_jll, + for jll in [oneL0.NEO_jll, oneL0.NEO_jll.libigc_LTS_jll, oneL0.NEO_jll.gmmlib_jll, SPIRV_LLVM_Translator_jll, SPIRV_Tools_jll, oneAPI_Support_jll] name = string(jll) print(io, "- $(name[1:end-4]): $(Base.pkgversion(jll))") diff --git a/test/Project.toml b/test/Project.toml index 90670d48..a63f442b 100644 --- a/test/Project.toml +++ b/test/Project.toml @@ -9,7 +9,7 @@ InteractiveUtils = "b77e0a4c-d291-57a0-90e8-8db25a27a240" JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819" KernelAbstractions = "63c18a36-062a-441e-b654-da1e3ab1ce7c" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" -NEO_jll = "700fe977-ac61-5f37-bbc8-c6c4b2b6a9fd" +NEO_LTS_jll = "a724f90f-ce79-56dd-a1bd-b9de5a61085f" Printf = "de0858da-6303-5e67-8744-51eddeeeb8d7" REPL = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" @@ -18,6 +18,6 @@ SpecialFunctions = "276daf66-3868-5448-9aa4-cd146d93841b" StaticArrays = "90137ffa-7385-5640-81b9-e52037218182" Statistics = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" -libigc_jll = "94295238-5935-5bd7-bb0f-b00942e9bdd5" +libigc_LTS_jll = "9a8258a1-e827-5686-bee9-144461246960" oneAPI = "8f75cd03-7ff8-4ecb-9b8f-daf728133b1b" oneAPI_Support_jll = "b049733a-a71d-5ed3-8eba-7d323ac00b36" From b1cef369795e5bc99a3df590ee6efca47f91199c Mon Sep 17 00:00:00 2001 From: Michel Schanen Date: Mon, 11 May 2026 11:56:39 -0500 Subject: [PATCH 2/2] NEO link fix --- src/oneAPI.jl | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/oneAPI.jl b/src/oneAPI.jl index 8c8c4707..21f73abd 100644 --- a/src/oneAPI.jl +++ b/src/oneAPI.jl @@ -88,6 +88,15 @@ function __init__() else # ensure that the OpenCL loader finds the ICD files from our artifacts ENV["OCL_ICD_FILENAMES"] = oneL0.NEO_jll.libigdrcl + + # ensure that libsycl's bundled ze_lib finds NEO's libze_intel_gpu via + # path-based driver discovery (it does not reuse the JLL-loaded module). + # Required when no system NEO is installed. + neo_libdir = dirname(oneL0.NEO_jll.libze_intel_gpu) + ld = get(ENV, "LD_LIBRARY_PATH", "") + if !occursin(neo_libdir, ld) + ENV["LD_LIBRARY_PATH"] = isempty(ld) ? neo_libdir : "$neo_libdir:$ld" + end end # XXX: work around an issue with SYCL/Level Zero interoperability