Skip to content

Build against oneMKL 2025.3.1 - #599

Open
michel2323 wants to merge 1 commit into
mainfrom
mkl-2025.3.1
Open

Build against oneMKL 2025.3.1#599
michel2323 wants to merge 1 commit into
mainfrom
mkl-2025.3.1

Conversation

@michel2323

Copy link
Copy Markdown
Member

oneMKL 2025.3 widened the sparse setter ABI: set_{csr,coo}_data take an explicit nnz and 64-bit dimensions, set_csc_data/set_bsr_data are new, and the pre-2025.3 setter overloads are deprecated (though still present in 2026.x). Regenerate the C wrappers and Julia bindings against the 2025.3.1 headers and adopt the wide ABI throughout:

  • generate_interfaces.jl pulls the headers from oneAPI_Support_Headers_jll =2025.3.1, dedups the deprecated/new overload pairs (keeping the wider signature), normalizes the spMat/spmat parameter naming, and no longer bakes version constants into onemkl.h.
  • onemkl_version() reports the oneMKL the library was built against (from mkl_version.h) instead of generation-time constants.
  • build_local.jl derives the Conda toolkit version from the headers JLL instead of hardcoding it, keying the Conda scratch per version.
  • The sparse wrappers pass nnz explicitly; oneSparseMatrixCSC raises a clear error when the loaded support library predates oneMKL 2025.3 (its CSC setters only exist there), and the tests skip CSC accordingly.
  • Support.jl probes the loaded binary for the wide sparse ABI at load time: the oneAPI_Support_jll 0.9.2 artifact predates it, and calling the regenerated setters against it would corrupt memory or crash.

oneMKL 2025.3 widened the sparse setter ABI: set_{csr,coo}_data take an
explicit nnz and 64-bit dimensions, set_csc_data/set_bsr_data are new,
and the pre-2025.3 setter overloads are deprecated (though still present
in 2026.x). Regenerate the C wrappers and Julia bindings against the
2025.3.1 headers and adopt the wide ABI throughout:

- generate_interfaces.jl pulls the headers from oneAPI_Support_Headers_jll
  =2025.3.1, dedups the deprecated/new overload pairs (keeping the wider
  signature), normalizes the spMat/spmat parameter naming, and no longer
  bakes version constants into onemkl.h.
- onemkl_version() reports the oneMKL the library was built against
  (from mkl_version.h) instead of generation-time constants.
- build_local.jl derives the Conda toolkit version from the headers JLL
  instead of hardcoding it, keying the Conda scratch per version.
- The sparse wrappers pass nnz explicitly; oneSparseMatrixCSC raises a
  clear error when the loaded support library predates oneMKL 2025.3
  (its CSC setters only exist there), and the tests skip CSC accordingly.
- Support.jl probes the loaded binary for the wide sparse ABI at load
  time: the oneAPI_Support_jll 0.9.2 artifact predates it, and calling
  the regenerated setters against it would corrupt memory or crash.
@github-actions

Copy link
Copy Markdown
Contributor

Your PR requires formatting changes to meet the project's style guidelines.
Please consider running Runic (git runic main) to apply these changes.

Click here to view the suggested changes.
diff --git a/deps/generate_interfaces.jl b/deps/generate_interfaces.jl
index ce38c09..04fc20d 100644
--- a/deps/generate_interfaces.jl
+++ b/deps/generate_interfaces.jl
@@ -7,13 +7,17 @@ import oneAPI_Support_Headers_jll
 include("generate_helpers.jl")
 
 function mkl_header_files(include_dir)
-  blas = [joinpath(include_dir, "oneapi", "mkl", "blas", "buffer_decls.hpp")]
-  lapack = [joinpath(include_dir, "oneapi", "mkl", "lapack", "lapack.hpp"),
-            joinpath(include_dir, "oneapi", "mkl", "lapack", "scratchpad.hpp")]
-  sparse = [joinpath(include_dir, "oneapi", "mkl", "spblas", "sparse_structures.hpp"),
-            joinpath(include_dir, "oneapi", "mkl", "spblas", "sparse_auxiliary.hpp"),
-            joinpath(include_dir, "oneapi", "mkl", "spblas", "sparse_operations.hpp")]
-  return Dict("blas" => blas, "lapack" => lapack, "sparse" => sparse)
+    blas = [joinpath(include_dir, "oneapi", "mkl", "blas", "buffer_decls.hpp")]
+    lapack = [
+        joinpath(include_dir, "oneapi", "mkl", "lapack", "lapack.hpp"),
+        joinpath(include_dir, "oneapi", "mkl", "lapack", "scratchpad.hpp"),
+    ]
+    sparse = [
+        joinpath(include_dir, "oneapi", "mkl", "spblas", "sparse_structures.hpp"),
+        joinpath(include_dir, "oneapi", "mkl", "spblas", "sparse_auxiliary.hpp"),
+        joinpath(include_dir, "oneapi", "mkl", "spblas", "sparse_operations.hpp"),
+    ]
+    return Dict("blas" => blas, "lapack" => lapack, "sparse" => sparse)
 end
 
 include_dir = joinpath(oneAPI_Support_Headers_jll.artifact_dir, "include")
@@ -35,7 +39,7 @@ comments = ["namespace", "#", "}", "/*", "*", "//", "[[", "ONEMKL_DECLARE_", "ON
 void_output = ["init_matrix_handle", "init_matmat_descr", "release_matmat_descr", "set_matmat_data",
                "get_matmat_data", "init_omatadd_descr", "init_omatconvert_descr"]
 
-function generate_headers(library::String, filename::Vector{String}; pattern::String="")
+function generate_headers(library::String, filename::Vector{String}; pattern::String = "")
   routines = Dict{String,Int}()
   signatures = []
   signatures2 = []
@@ -45,9 +49,9 @@ function generate_headers(library::String, filename::Vector{String}; pattern::St
   end
   cpp_headers = replace(cpp_headers, "std::int32_t" => "int32_t")
   cpp_headers = replace(cpp_headers, "std::int64_t" => "int64_t")
-  # the sparse headers are inconsistent about the handle parameter name across versions
-  # (spMat/spmat); normalize so identical functions compare equal across header sets
-  cpp_headers = replace(cpp_headers, "spMat" => "spmat")
+    # the sparse headers are inconsistent about the handle parameter name across versions
+    # (spMat/spmat); normalize so identical functions compare equal across header sets
+    cpp_headers = replace(cpp_headers, "spMat" => "spmat")
   cpp_headers = replace(cpp_headers, "; \\" => ";")
   cpp_headers = replace(cpp_headers, ")\n\n" => ");\n\n")
   cpp_headers = replace(cpp_headers, "\\\n" => "\n")
@@ -348,31 +352,31 @@ function generate_headers(library::String, filename::Vector{String}; pattern::St
     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
+    # 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
-  end
-  keep_set = Set(values(keep_idx))
+    keep_set = Set(values(keep_idx))
 
-  for (i, (header, name_routine, version, type_routine, template)) in enumerate(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
+        # 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")
@@ -381,32 +385,32 @@ function generate_headers(library::String, filename::Vector{String}; pattern::St
     end
 
     push!(signatures2, (header, name_routine, version, type_routine, template))
-  end
-  return signatures2
+    end
+    return signatures2
 end
 
 # Format a single-line C signature as a declaration wrapped at ~90 columns
 function format_decl(header)
-  io = IOBuffer()
-  pos = findfirst('(', header)
-  fun = split(header, " ")
-  len = 0
-  for (i, part) in enumerate(fun)
-    len += length(part)
-    if len ≤ 90
-      (i ≠ 1) && write(io, " ")
-      write(io, part)
-    else
-      write(io, "\n")
-      for i = 1:pos
-        write(io, " ")
+    io = IOBuffer()
+    pos = findfirst('(', header)
+    fun = split(header, " ")
+    len = 0
+    for (i, part) in enumerate(fun)
+        len += length(part)
+        if len ≤ 90
+            (i ≠ 1) && write(io, " ")
+            write(io, part)
+        else
+            write(io, "\n")
+            for i in 1:pos
+                write(io, " ")
       end
-      write(io, part)
-      len = pos + length(part)
-    end
+            write(io, part)
+            len = pos + length(part)
+        end
   end
-  write(io, ";\n\n")
-  return String(take!(io))
+    write(io, ";\n\n")
+    return String(take!(io))
 end
 
 # Turn one parsed signature into the C function signature and the implementation body
@@ -486,13 +490,13 @@ function cpp_wrapper(header, name, version, type_routine, template, library)
       type = version_types[version]
       if !occursin("scratchpad_size", name)
         catch_clause = library == "lapack" ? lapack_catch : sycl_catch
-        write(body, "   try {\n")
-        write(body, "      auto status = oneapi::mkl::$library::$variant$name<$type>($parameters, {});\n")
-        write(body, "      device_queue->val.wait_and_throw();\n")
-        write(body, "   } $catch_clause\n")
+            write(body, "   try {\n")
+            write(body, "      auto status = oneapi::mkl::$library::$variant$name<$type>($parameters, {});\n")
+            write(body, "      device_queue->val.wait_and_throw();\n")
+            write(body, "   } $catch_clause\n")
       end
       if occursin("scratchpad_size", name)
-        write(body, "   int64_t scratchpad_size = oneapi::mkl::$library::$variant$name<$type>($parameters);\n   device_queue->val.wait_and_throw();\n")
+            write(body, "   int64_t scratchpad_size = oneapi::mkl::$library::$variant$name<$type>($parameters);\n   device_queue->val.wait_and_throw();\n")
       end
     else
       if !(name ∈ void_output)
@@ -500,73 +504,73 @@ function cpp_wrapper(header, name, version, type_routine, template, library)
         is_scratchpad = occursin("scratchpad_size", name)
         if has_queue && !is_scratchpad
           catch_clause = library == "lapack" ? lapack_catch : sycl_catch
-          write(body, "   try {\n")
-          write(body, "      auto status = oneapi::mkl::$library::$variant$name($parameters, {});\n")
-          write(body, "      device_queue->val.wait_and_throw();\n")
-          write(body, "   } $catch_clause\n")
+                write(body, "   try {\n")
+                write(body, "      auto status = oneapi::mkl::$library::$variant$name($parameters, {});\n")
+                write(body, "      device_queue->val.wait_and_throw();\n")
+                write(body, "   } $catch_clause\n")
         else
-          write(body, "   auto status = oneapi::mkl::$library::$variant$name($parameters, {});\n")
+                write(body, "   auto status = oneapi::mkl::$library::$variant$name($parameters, {});\n")
           if has_queue
-            write(body, "   device_queue->val.wait_and_throw();\n")
+                    write(body, "   device_queue->val.wait_and_throw();\n")
           end
         end
       else
         if occursin("device_queue", parameters)
-          write(body, "   try {\n")
-          write(body, "      oneapi::mkl::$library::$variant$name($parameters);\n")
-          write(body, "      device_queue->val.wait_and_throw();\n")
-          write(body, "   } $sycl_catch\n")
+                write(body, "   try {\n")
+                write(body, "      oneapi::mkl::$library::$variant$name($parameters);\n")
+                write(body, "      device_queue->val.wait_and_throw();\n")
+                write(body, "   } $sycl_catch\n")
         else
-          write(body, "   oneapi::mkl::$library::$variant$name($parameters);\n")
+                write(body, "   oneapi::mkl::$library::$variant$name($parameters);\n")
         end
       end
     end
     if occursin("scratchpad_size", name)
-      write(body, "   return scratchpad_size;\n")
+        write(body, "   return scratchpad_size;\n")
     else
-      write(body, "   return 0;\n")
+        write(body, "   return 0;\n")
     end
     return header, String(take!(body))
 end
 
 # Parse one library and emit the C declarations and implementations
 function sources(library, files)
-  hsigs = generate_headers(library, files; pattern="*")
-  csigs = generate_headers(library, files; pattern="§")
-  @assert length(hsigs) == length(csigs)
-
-  decls = IOBuffer()
-  impls = IOBuffer()
-  for (hsig, csig) in zip(hsigs, csigs)
-    write(decls, format_decl(hsig[1]))
-    chdr, body = cpp_wrapper(csig..., library)
-    write(impls, "extern \"C\" $chdr {\n$body}\n\n")
+    hsigs = generate_headers(library, files; pattern = "*")
+    csigs = generate_headers(library, files; pattern = "§")
+    @assert length(hsigs) == length(csigs)
+
+    decls = IOBuffer()
+    impls = IOBuffer()
+    for (hsig, csig) in zip(hsigs, csigs)
+        write(decls, format_decl(hsig[1]))
+        chdr, body = cpp_wrapper(csig..., library)
+        write(impls, "extern \"C\" $chdr {\n$body}\n\n")
   end
-  return String(take!(decls)), String(take!(impls))
+    return String(take!(decls)), String(take!(impls))
 end
 
 files = mkl_header_files(include_dir)
 
-decls = Dict{String,String}()
-impls = Dict{String,String}()
+decls = Dict{String, String}()
+impls = Dict{String, String}()
 for library in ("blas", "lapack", "sparse")
-  decls[library], impls[library] = sources(library, files[library])
+    decls[library], impls[library] = sources(library, files[library])
 end
 
 # Generate "src/onemkl.h"
 open(joinpath(@__DIR__, "src", "onemkl.h"), "w") do io
-  write(io, read(joinpath(@__DIR__, "onemkl_prologue.h"), String))
-  write(io, "// BLAS\n", decls["blas"])
-  write(io, "// LAPACK\n", decls["lapack"])
-  write(io, "// SPARSE\n", decls["sparse"])
-  write(io, read(joinpath(@__DIR__, "onemkl_epilogue.h"), String))
+    write(io, read(joinpath(@__DIR__, "onemkl_prologue.h"), String))
+    write(io, "// BLAS\n", decls["blas"])
+    write(io, "// LAPACK\n", decls["lapack"])
+    write(io, "// SPARSE\n", decls["sparse"])
+    write(io, read(joinpath(@__DIR__, "onemkl_epilogue.h"), String))
 end
 
 # Generate "src/onemkl.cpp"
 open(joinpath(@__DIR__, "src", "onemkl.cpp"), "w") do io
-  write(io, read(joinpath(@__DIR__, "onemkl_prologue.cpp"), String))
-  write(io, "// BLAS\n", impls["blas"])
-  write(io, "// LAPACK\n", impls["lapack"])
-  write(io, "// SPARSE\n", impls["sparse"])
-  write(io, read(joinpath(@__DIR__, "onemkl_epilogue.cpp"), String))
+    write(io, read(joinpath(@__DIR__, "onemkl_prologue.cpp"), String))
+    write(io, "// BLAS\n", impls["blas"])
+    write(io, "// LAPACK\n", impls["lapack"])
+    write(io, "// SPARSE\n", impls["sparse"])
+    write(io, read(joinpath(@__DIR__, "onemkl_epilogue.cpp"), String))
 end
diff --git a/lib/mkl/wrappers_sparse.jl b/lib/mkl/wrappers_sparse.jl
index 3da9aba..46a571d 100644
--- a/lib/mkl/wrappers_sparse.jl
+++ b/lib/mkl/wrappers_sparse.jl
@@ -46,7 +46,7 @@ function _check_csc_support()
     csc_supported() && return
     error(
         "oneSparseMatrixCSC requires a support library built against oneMKL 2025.3 or " *
-        "later; the loaded one was built against oneMKL $(version())."
+            "later; the loaded one was built against oneMKL $(version())."
     )
 end
 
diff --git a/lib/support/Support.jl b/lib/support/Support.jl
index 5fe9fc3..391a37c 100644
--- a/lib/support/Support.jl
+++ b/lib/support/Support.jl
@@ -35,9 +35,9 @@ function _check_sparse_abi()
     _sparse_abi_ok[] && return
     error(
         "The loaded oneAPI_Support_jll binary predates the current sparse wrappers and has an " *
-        "incompatible ABI; calling sparse routines against it would corrupt memory or crash. " *
-        "Rebuild the support library from source with `julia --project deps/build_local.jl` " *
-        "(or install a oneAPI_Support_jll built from the updated onemkl.cpp)."
+            "incompatible ABI; calling sparse routines against it would corrupt memory or crash. " *
+            "Rebuild the support library from source with `julia --project deps/build_local.jl` " *
+            "(or install a oneAPI_Support_jll built from the updated onemkl.cpp)."
     )
 end
 
@@ -53,7 +53,7 @@ function __init__()
     # Probe the loaded support binary for a symbol that only the regenerated (wide-ABI)
     # sparse wrappers export; `_check_sparse_abi` gates the affected calls on the result.
     handle = Libdl.dlopen(oneAPI_Support_jll.liboneapi_support; throw_error = false)
-    if handle !== nothing
+    return if handle !== nothing
         _sparse_abi_ok[] =
             Libdl.dlsym(handle, :onemklSsparse_set_csc_data; throw_error = false) !== nothing
     end
diff --git a/lib/support/liboneapi_support.jl b/lib/support/liboneapi_support.jl
index e1b7327..c3d9958 100644
--- a/lib/support/liboneapi_support.jl
+++ b/lib/support/liboneapi_support.jl
@@ -6429,194 +6429,240 @@ function onemklZunmqr_batch_scratchpad_size(device_queue, side, trans, m, n, k,
 end
 
 function onemklXsparse_init_matrix_handle(p_spmat)
-    @ccall liboneapi_support.onemklXsparse_init_matrix_handle(p_spmat::Ptr{matrix_handle_t})::Cint
+    return @ccall liboneapi_support.onemklXsparse_init_matrix_handle(p_spmat::Ptr{matrix_handle_t})::Cint
 end
 
 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, nnz, 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::Int64, ncols::Int64,
-                                                        nnz::Int64, index::onemklIndex,
+        spmat::matrix_handle_t,
+        nrows::Int64, ncols::Int64,
+        nnz::Int64, index::onemklIndex,
                                                         row_ptr::ZePtr{Int32},
                                                         col_ind::ZePtr{Int32},
                                                         values::ZePtr{Cfloat})::Cint
 end
 
-function onemklSsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, 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,
-                                                           nnz::Int64, index::onemklIndex,
+        nnz::Int64, index::onemklIndex,
                                                            row_ptr::ZePtr{Int64},
                                                            col_ind::ZePtr{Int64},
                                                            values::ZePtr{Cfloat})::Cint
 end
 
-function onemklDsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, 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::Int64, ncols::Int64,
-                                                        nnz::Int64, index::onemklIndex,
+        spmat::matrix_handle_t,
+        nrows::Int64, ncols::Int64,
+        nnz::Int64, index::onemklIndex,
                                                         row_ptr::ZePtr{Int32},
                                                         col_ind::ZePtr{Int32},
                                                         values::ZePtr{Cdouble})::Cint
 end
 
-function onemklDsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, 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,
-                                                           nnz::Int64, index::onemklIndex,
+        nnz::Int64, index::onemklIndex,
                                                            row_ptr::ZePtr{Int64},
                                                            col_ind::ZePtr{Int64},
                                                            values::ZePtr{Cdouble})::Cint
 end
 
-function onemklCsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, 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::Int64, ncols::Int64,
-                                                        nnz::Int64, index::onemklIndex,
+        spmat::matrix_handle_t,
+        nrows::Int64, ncols::Int64,
+        nnz::Int64, index::onemklIndex,
                                                         row_ptr::ZePtr{Int32},
                                                         col_ind::ZePtr{Int32},
                                                         values::ZePtr{ComplexF32})::Cint
 end
 
-function onemklCsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, 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,
-                                                           nnz::Int64, index::onemklIndex,
+        nnz::Int64, index::onemklIndex,
                                                            row_ptr::ZePtr{Int64},
                                                            col_ind::ZePtr{Int64},
                                                            values::ZePtr{ComplexF32})::Cint
 end
 
-function onemklZsparse_set_csr_data(device_queue, spmat, nrows, ncols, nnz, 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::Int64, ncols::Int64,
-                                                        nnz::Int64, index::onemklIndex,
+        spmat::matrix_handle_t,
+        nrows::Int64, ncols::Int64,
+        nnz::Int64, index::onemklIndex,
                                                         row_ptr::ZePtr{Int32},
                                                         col_ind::ZePtr{Int32},
                                                         values::ZePtr{ComplexF64})::Cint
 end
 
-function onemklZsparse_set_csr_data_64(device_queue, spmat, nrows, ncols, nnz, 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,
-                                                           nnz::Int64, index::onemklIndex,
+        nnz::Int64, index::onemklIndex,
                                                            row_ptr::ZePtr{Int64},
                                                            col_ind::ZePtr{Int64},
                                                            values::ZePtr{ComplexF64})::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 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,
+function onemklSsparse_set_csc_data(
+        device_queue, spMat, nrows, ncols, nnz, index, col_ptr,
+        row_ind, values
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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 onemklZsparse_set_csc_data(
+        device_queue, spMat, nrows, ncols, nnz, index, col_ptr,
+        row_ind, values
+    )
+    return @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
+    )
+    return @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},
@@ -6624,10 +6670,11 @@ 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},
@@ -6635,10 +6682,11 @@ 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},
@@ -6646,10 +6694,11 @@ 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},
@@ -6657,10 +6706,11 @@ 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},
@@ -6668,10 +6718,11 @@ 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},
@@ -6679,10 +6730,11 @@ 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},
@@ -6690,10 +6742,11 @@ 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},
@@ -6701,128 +6754,160 @@ 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
+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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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
+    )
+    return @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)
diff --git a/test/onemkl.jl b/test/onemkl.jl
index 31cd7b5..8d4fb15 100644
--- a/test/onemkl.jl
+++ b/test/onemkl.jl
@@ -12,16 +12,16 @@ m = 20
 n = 35
 k = 13
 
-# CSC construction requires a support library built against oneMKL 2025.3+ (wide sparse ABI)
-csc_supported = oneMKL.csc_supported()
-csr_csc_matrices = csc_supported ? (oneSparseMatrixCSR, oneSparseMatrixCSC) :
-    (oneSparseMatrixCSR,)
-coo_csr_csc_matrices = csc_supported ? (oneSparseMatrixCOO, oneSparseMatrixCSR, oneSparseMatrixCSC) :
-    (oneSparseMatrixCOO, oneSparseMatrixCSR)
+    # CSC construction requires a support library built against oneMKL 2025.3+ (wide sparse ABI)
+    csc_supported = oneMKL.csc_supported()
+    csr_csc_matrices = csc_supported ? (oneSparseMatrixCSR, oneSparseMatrixCSC) :
+        (oneSparseMatrixCSR,)
+    coo_csr_csc_matrices = csc_supported ? (oneSparseMatrixCOO, oneSparseMatrixCSR, oneSparseMatrixCSC) :
+        (oneSparseMatrixCOO, oneSparseMatrixCSR)
 
 @testset "Version" begin
     version_onemkl = oneMKL.version()
-    @test version_onemkl ≥ v"2025.2.0"
+        @test version_onemkl ≥ v"2025.2.0"
 end
 
 ############################################################################################

@michel2323
michel2323 enabled auto-merge (squash) July 30, 2026 17:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant