diff --git a/README.md b/README.md
index fdbd4b8e9..e609cd0d7 100644
--- a/README.md
+++ b/README.md
@@ -62,7 +62,7 @@ oneMKL is part of the [UXL Foundation](http://www.uxlfoundation.org).
portBLAS |
- x86 CPU, Intel GPU, NVIDIA GPU, AMD GPU |
+ x86 CPU, Intel GPU, NVIDIA GPU, AMD GPU, Other SYCL devices (unsupported) |
portFFT |
@@ -172,7 +172,7 @@ Supported compilers include:
- BLAS |
+ BLAS |
x86 CPU |
Intel(R) oneMKL |
Intel DPC++AdaptiveCpp |
@@ -221,6 +221,12 @@ Supported compilers include:
Open DPC++ |
Dynamic, Static |
+
+ Other SYCL devices (unsupported) |
+ portBLAS |
+ Intel DPC++Open DPC++ |
+ Dynamic, Static |
+
LAPACK |
x86 CPU |
@@ -405,6 +411,7 @@ Supported compilers include:
- Intel(R) Data Center GPU Max Series
- NVIDIA(R) A100 (Linux* only)
- AMD(R) GPUs see [here](https://github.com/RadeonOpenCompute/ROCm#hardware-and-software-support) tested on AMD Vega 20 (gfx906)
+ - Other SYCL devices can be used, but are not supported
---
### Supported Operating Systems
diff --git a/docs/building_the_project_with_dpcpp.rst b/docs/building_the_project_with_dpcpp.rst
index e33a78046..2fea9395f 100644
--- a/docs/building_the_project_with_dpcpp.rst
+++ b/docs/building_the_project_with_dpcpp.rst
@@ -225,6 +225,21 @@ A few often-used architectures are listed below:
For a host with ROCm installed, the device architecture can be retrieved via the
``rocminfo`` tool. The architecture will be displayed in the ``Name:`` row.
+.. _build_for_other_SYCL_devices:
+
+Building for other SYCL devices
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+SYCL enables portable heterogeneous computing on a wide range of accelerators.
+Consequently, it is possible to use oneMKL Interfaces with accelerators not
+anticipated by the oneMKL Interfaces team.
+
+For generic SYCL devices, only the portBLAS backend is enabled. The user must
+set the appropriate ``-fsycl-targets`` for their device, and also any
+``PORTBLAS_TUNING_TARGET`` required for performance. See
+`Building for portBLAS`_. Extensive testing is strongly advised for these
+unsupported configurations.
+
.. _build_for_portlibs_dpcpp:
Pure SYCL backends: portBLAS and portFFT
@@ -408,6 +423,21 @@ set, the backend libraries to enable the use of BLAS, LAPACK and RNG with MKLGPU
and MKLCPU would also be enabled. The build of examples is disabled. Since
functional testing was not disabled, tests would be built.
+Build oneMKL for the BLAS domain on a generic SYCL device:
+
+.. code-block:: bash
+
+ cmake $ONEMKL_DIR \
+ -DCMAKE_CXX_COMPILER=clang++ \
+ -DCMAKE_C_COMPILER=clang \
+ -DENABLE_MKLCPU_BACKEND=False \
+ -DENABLE_MKLGPU_BACKEND=False \
+ -DENABLE_PORTBLAS_BACKEND=True
+
+Note that this is not a tested configuration. This builds oneMKL Interfaces
+with the portBLAS backend only, for a generic SYCL device supported by the
+Open DPC++ project.
+
.. _project_cleanup:
Project Cleanup
diff --git a/include/oneapi/mkl/detail/backends_table.hpp b/include/oneapi/mkl/detail/backends_table.hpp
index 8e68674cc..b385b21b0 100644
--- a/include/oneapi/mkl/detail/backends_table.hpp
+++ b/include/oneapi/mkl/detail/backends_table.hpp
@@ -40,7 +40,7 @@
namespace oneapi {
namespace mkl {
-enum class device : uint16_t { x86cpu, intelgpu, nvidiagpu, amdgpu };
+enum class device : uint16_t { x86cpu, intelgpu, nvidiagpu, amdgpu, generic_device };
enum class domain : uint16_t { blas, dft, lapack, rng, sparse_blas };
static std::map>> libraries = {
@@ -82,6 +82,12 @@ static std::map>> libraries =
#endif
#ifdef ENABLE_PORTBLAS_BACKEND_NVIDIA_GPU
LIB_NAME("blas_portblas"),
+#endif
+ } },
+ { device::generic_device,
+ {
+#ifdef ENABLE_PORTBLAS_BACKEND
+ LIB_NAME("blas_portblas"),
#endif
} } } },
diff --git a/include/oneapi/mkl/detail/get_device_id.hpp b/include/oneapi/mkl/detail/get_device_id.hpp
index 88b235754..fbfe64219 100644
--- a/include/oneapi/mkl/detail/get_device_id.hpp
+++ b/include/oneapi/mkl/detail/get_device_id.hpp
@@ -59,11 +59,11 @@ inline oneapi::mkl::device get_device_id(sycl::queue &queue) {
else if (vendor_id == AMD_ID)
device_id = device::amdgpu;
else {
- throw unsupported_device("", "", queue.get_device());
+ device_id = device::generic_device;
}
}
else {
- throw unsupported_device("", "", queue.get_device());
+ device_id = device::generic_device;
}
return device_id;
}
diff --git a/src/blas/blas_loader.cpp b/src/blas/blas_loader.cpp
index c1f1339c6..1c3cfcb71 100644
--- a/src/blas/blas_loader.cpp
+++ b/src/blas/blas_loader.cpp
@@ -35,413 +35,418 @@ static oneapi::mkl::detail::table_initializer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_scasum_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_scasum_sycl(queue, n, x, incx, result);
}
void asum(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_dzasum_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_dzasum_sycl(queue, n, x, incx, result);
}
void asum(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_sasum_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_sasum_sycl(queue, n, x, incx, result);
}
void asum(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_dasum_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_dasum_sycl(queue, n, x, incx, result);
}
void axpy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, float alpha,
sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_saxpy_sycl(queue, n, alpha, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_saxpy_sycl(queue, n, alpha, x, incx, y, incy);
}
void axpy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, double alpha,
sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_daxpy_sycl(queue, n, alpha, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_daxpy_sycl(queue, n, alpha, x, incx, y, incy);
}
void axpy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, std::complex alpha,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_caxpy_sycl(queue, n, alpha, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_caxpy_sycl(queue, n, alpha, x, incx, y, incy);
}
void axpy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zaxpy_sycl(queue, n, alpha, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_zaxpy_sycl(queue, n, alpha, x, incx, y, incy);
}
void axpy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, float alpha,
sycl::buffer &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_saxpy_batch_strided_sycl(queue, n, alpha, x, incx, stridex,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_saxpy_batch_strided_sycl(
+ queue, n, alpha, x, incx, stridex, y, incy, stridey, batch_size);
}
void axpy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, double alpha,
sycl::buffer &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_daxpy_batch_strided_sycl(queue, n, alpha, x, incx, stridex,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_daxpy_batch_strided_sycl(
+ queue, n, alpha, x, incx, stridex, y, incy, stridey, batch_size);
}
void axpy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x,
std::int64_t incx, std::int64_t stridex, sycl::buffer, 1> &y,
std::int64_t incy, std::int64_t stridey, std::int64_t batch_size) {
- function_tables[libkey].column_major_caxpy_batch_strided_sycl(queue, n, alpha, x, incx, stridex,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_caxpy_batch_strided_sycl(
+ queue, n, alpha, x, incx, stridex, y, incy, stridey, batch_size);
}
void axpy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x,
std::int64_t incx, std::int64_t stridex, sycl::buffer, 1> &y,
std::int64_t incy, std::int64_t stridey, std::int64_t batch_size) {
- function_tables[libkey].column_major_zaxpy_batch_strided_sycl(queue, n, alpha, x, incx, stridex,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_zaxpy_batch_strided_sycl(
+ queue, n, alpha, x, incx, stridex, y, incy, stridey, batch_size);
}
void axpby(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, float alpha,
sycl::buffer &x, std::int64_t incx, float beta, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_saxpby_sycl(queue, n, alpha, x, incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_saxpby_sycl(queue, n, alpha, x, incx, beta, y,
+ incy);
}
void axpby(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, double alpha,
sycl::buffer &x, std::int64_t incx, double beta, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_daxpby_sycl(queue, n, alpha, x, incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_daxpby_sycl(queue, n, alpha, x, incx, beta, y,
+ incy);
}
void axpby(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
std::complex beta, sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_caxpby_sycl(queue, n, alpha, x, incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_caxpby_sycl(queue, n, alpha, x, incx, beta, y,
+ incy);
}
void axpby(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
std::complex beta, sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zaxpby_sycl(queue, n, alpha, x, incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_zaxpby_sycl(queue, n, alpha, x, incx, beta, y,
+ incy);
}
void copy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy) {
- function_tables[libkey].column_major_scopy_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_scopy_sycl(queue, n, x, incx, y, incy);
}
void copy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_dcopy_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_dcopy_sycl(queue, n, x, incx, y, incy);
}
void copy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_ccopy_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_ccopy_sycl(queue, n, x, incx, y, incy);
}
void copy(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zcopy_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_zcopy_sycl(queue, n, x, incx, y, incy);
}
void copy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_scopy_batch_strided_sycl(queue, n, x, incx, stridex, y,
- incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_scopy_batch_strided_sycl(
+ queue, n, x, incx, stridex, y, incy, stridey, batch_size);
}
void copy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_dcopy_batch_strided_sycl(queue, n, x, incx, stridex, y,
- incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_dcopy_batch_strided_sycl(
+ queue, n, x, incx, stridex, y, incy, stridey, batch_size);
}
void copy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer, 1> &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_ccopy_batch_strided_sycl(queue, n, x, incx, stridex, y,
- incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_ccopy_batch_strided_sycl(
+ queue, n, x, incx, stridex, y, incy, stridey, batch_size);
}
void copy_batch(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer, 1> &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_zcopy_batch_strided_sycl(queue, n, x, incx, stridex, y,
- incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_zcopy_batch_strided_sycl(
+ queue, n, x, incx, stridex, y, incy, stridey, batch_size);
}
void dot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy,
sycl::buffer &result) {
- function_tables[libkey].column_major_sdot_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_sdot_sycl(queue, n, x, incx, y, incy, result);
}
void dot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy,
sycl::buffer &result) {
- function_tables[libkey].column_major_ddot_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_ddot_sycl(queue, n, x, incx, y, incy, result);
}
void dot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy,
sycl::buffer &result) {
- function_tables[libkey].column_major_dsdot_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_dsdot_sycl(queue, n, x, incx, y, incy, result);
}
void dotc(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &result) {
- function_tables[libkey].column_major_cdotc_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_cdotc_sycl(queue, n, x, incx, y, incy, result);
}
void dotc(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &result) {
- function_tables[libkey].column_major_zdotc_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_zdotc_sycl(queue, n, x, incx, y, incy, result);
}
void dotu(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &result) {
- function_tables[libkey].column_major_cdotu_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_cdotu_sycl(queue, n, x, incx, y, incy, result);
}
void dotu(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &result) {
- function_tables[libkey].column_major_zdotu_sycl(queue, n, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_zdotu_sycl(queue, n, x, incx, y, incy, result);
}
void iamin(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_isamin_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_isamin_sycl(queue, n, x, incx, result);
}
void iamin(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_idamin_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_idamin_sycl(queue, n, x, incx, result);
}
void iamin(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_icamin_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_icamin_sycl(queue, n, x, incx, result);
}
void iamin(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_izamin_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_izamin_sycl(queue, n, x, incx, result);
}
void iamax(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_isamax_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_isamax_sycl(queue, n, x, incx, result);
}
void iamax(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_idamax_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_idamax_sycl(queue, n, x, incx, result);
}
void iamax(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_icamax_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_icamax_sycl(queue, n, x, incx, result);
}
void iamax(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_izamax_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_izamax_sycl(queue, n, x, incx, result);
}
void nrm2(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_scnrm2_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_scnrm2_sycl(queue, n, x, incx, result);
}
void nrm2(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer &result) {
- function_tables[libkey].column_major_dznrm2_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_dznrm2_sycl(queue, n, x, incx, result);
}
void nrm2(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_snrm2_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_snrm2_sycl(queue, n, x, incx, result);
}
void nrm2(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &result) {
- function_tables[libkey].column_major_dnrm2_sycl(queue, n, x, incx, result);
+ function_tables[{ libkey, queue }].column_major_dnrm2_sycl(queue, n, x, incx, result);
}
void rot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy, float c, float s) {
- function_tables[libkey].column_major_srot_sycl(queue, n, x, incx, y, incy, c, s);
+ function_tables[{ libkey, queue }].column_major_srot_sycl(queue, n, x, incx, y, incy, c, s);
}
void rot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy, double c, double s) {
- function_tables[libkey].column_major_drot_sycl(queue, n, x, incx, y, incy, c, s);
+ function_tables[{ libkey, queue }].column_major_drot_sycl(queue, n, x, incx, y, incy, c, s);
}
void rot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy, float c, float s) {
- function_tables[libkey].column_major_csrot_sycl(queue, n, x, incx, y, incy, c, s);
+ function_tables[{ libkey, queue }].column_major_csrot_sycl(queue, n, x, incx, y, incy, c, s);
}
void rot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy, double c, double s) {
- function_tables[libkey].column_major_zdrot_sycl(queue, n, x, incx, y, incy, c, s);
+ function_tables[{ libkey, queue }].column_major_zdrot_sycl(queue, n, x, incx, y, incy, c, s);
}
void rotg(oneapi::mkl::device libkey, sycl::queue &queue, sycl::buffer &a,
sycl::buffer &b, sycl::buffer &c, sycl::buffer &s) {
- function_tables[libkey].column_major_srotg_sycl(queue, a, b, c, s);
+ function_tables[{ libkey, queue }].column_major_srotg_sycl(queue, a, b, c, s);
}
void rotg(oneapi::mkl::device libkey, sycl::queue &queue, sycl::buffer &a,
sycl::buffer &b, sycl::buffer &c, sycl::buffer &s) {
- function_tables[libkey].column_major_drotg_sycl(queue, a, b, c, s);
+ function_tables[{ libkey, queue }].column_major_drotg_sycl(queue, a, b, c, s);
}
void rotg(oneapi::mkl::device libkey, sycl::queue &queue, sycl::buffer, 1> &a,
sycl::buffer, 1> &b, sycl::buffer &c,
sycl::buffer, 1> &s) {
- function_tables[libkey].column_major_crotg_sycl(queue, a, b, c, s);
+ function_tables[{ libkey, queue }].column_major_crotg_sycl(queue, a, b, c, s);
}
void rotg(oneapi::mkl::device libkey, sycl::queue &queue, sycl::buffer, 1> &a,
sycl::buffer, 1> &b, sycl::buffer &c,
sycl::buffer, 1> &s) {
- function_tables[libkey].column_major_zrotg_sycl(queue, a, b, c, s);
+ function_tables[{ libkey, queue }].column_major_zrotg_sycl(queue, a, b, c, s);
}
void rotm(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy,
sycl::buffer ¶m) {
- function_tables[libkey].column_major_srotm_sycl(queue, n, x, incx, y, incy, param);
+ function_tables[{ libkey, queue }].column_major_srotm_sycl(queue, n, x, incx, y, incy, param);
}
void rotm(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy, sycl::buffer ¶m) {
- function_tables[libkey].column_major_drotm_sycl(queue, n, x, incx, y, incy, param);
+ function_tables[{ libkey, queue }].column_major_drotm_sycl(queue, n, x, incx, y, incy, param);
}
void rotmg(oneapi::mkl::device libkey, sycl::queue &queue, sycl::buffer &d1,
sycl::buffer &d2, sycl::buffer &x1, float y1,
sycl::buffer ¶m) {
- function_tables[libkey].column_major_srotmg_sycl(queue, d1, d2, x1, y1, param);
+ function_tables[{ libkey, queue }].column_major_srotmg_sycl(queue, d1, d2, x1, y1, param);
}
void rotmg(oneapi::mkl::device libkey, sycl::queue &queue, sycl::buffer &d1,
sycl::buffer &d2, sycl::buffer &x1, double y1,
sycl::buffer ¶m) {
- function_tables[libkey].column_major_drotmg_sycl(queue, d1, d2, x1, y1, param);
+ function_tables[{ libkey, queue }].column_major_drotmg_sycl(queue, d1, d2, x1, y1, param);
}
void scal(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, float alpha,
sycl::buffer &x, std::int64_t incx) {
- function_tables[libkey].column_major_sscal_sycl(queue, n, alpha, x, incx);
+ function_tables[{ libkey, queue }].column_major_sscal_sycl(queue, n, alpha, x, incx);
}
void scal(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, double alpha,
sycl::buffer &x, std::int64_t incx) {
- function_tables[libkey].column_major_dscal_sycl(queue, n, alpha, x, incx);
+ function_tables[{ libkey, queue }].column_major_dscal_sycl(queue, n, alpha, x, incx);
}
void scal(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, std::complex alpha,
sycl::buffer, 1> &x, std::int64_t incx) {
- function_tables[libkey].column_major_cscal_sycl(queue, n, alpha, x, incx);
+ function_tables[{ libkey, queue }].column_major_cscal_sycl(queue, n, alpha, x, incx);
}
void scal(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx) {
- function_tables[libkey].column_major_csscal_sycl(queue, n, alpha, x, incx);
+ function_tables[{ libkey, queue }].column_major_csscal_sycl(queue, n, alpha, x, incx);
}
void scal(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, float alpha,
sycl::buffer, 1> &x, std::int64_t incx) {
- function_tables[libkey].column_major_zscal_sycl(queue, n, alpha, x, incx);
+ function_tables[{ libkey, queue }].column_major_zscal_sycl(queue, n, alpha, x, incx);
}
void scal(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, double alpha,
sycl::buffer, 1> &x, std::int64_t incx) {
- function_tables[libkey].column_major_zdscal_sycl(queue, n, alpha, x, incx);
+ function_tables[{ libkey, queue }].column_major_zdscal_sycl(queue, n, alpha, x, incx);
}
void sdsdot(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, float sb,
sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy, sycl::buffer &result) {
- function_tables[libkey].column_major_sdsdot_sycl(queue, n, sb, x, incx, y, incy, result);
+ function_tables[{ libkey, queue }].column_major_sdsdot_sycl(queue, n, sb, x, incx, y, incy,
+ result);
}
void swap(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n, sycl::buffer &x,
std::int64_t incx, sycl::buffer &y, std::int64_t incy) {
- function_tables[libkey].column_major_sswap_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_sswap_sycl(queue, n, x, incx, y, incy);
}
void swap(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_dswap_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_dswap_sycl(queue, n, x, incx, y, incy);
}
void swap(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_cswap_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_cswap_sycl(queue, n, x, incx, y, incy);
}
void swap(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t n,
sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zswap_sycl(queue, n, x, incx, y, incy);
+ function_tables[{ libkey, queue }].column_major_zswap_sycl(queue, n, x, incx, y, incy);
}
void gbmv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
std::int64_t n, std::int64_t kl, std::int64_t ku, float alpha, sycl::buffer &a,
std::int64_t lda, sycl::buffer &x, std::int64_t incx, float beta,
sycl::buffer &y, std::int64_t incy) {
- function_tables[libkey].column_major_sgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a, lda, x,
- incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_sgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a,
+ lda, x, incx, beta, y, incy);
}
void gbmv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
std::int64_t n, std::int64_t kl, std::int64_t ku, double alpha,
sycl::buffer &a, std::int64_t lda, sycl::buffer &x,
std::int64_t incx, double beta, sycl::buffer &y, std::int64_t incy) {
- function_tables[libkey].column_major_dgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a, lda, x,
- incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_dgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a,
+ lda, x, incx, beta, y, incy);
}
void gbmv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
@@ -449,8 +454,8 @@ void gbmv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::
sycl::buffer, 1> &a, std::int64_t lda,
sycl::buffer, 1> &x, std::int64_t incx, std::complex beta,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_cgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a, lda, x,
- incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_cgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a,
+ lda, x, incx, beta, y, incy);
}
void gbmv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
@@ -458,40 +463,40 @@ void gbmv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::
sycl::buffer, 1> &a, std::int64_t lda,
sycl::buffer, 1> &x, std::int64_t incx, std::complex beta,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a, lda, x,
- incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_zgbmv_sycl(queue, trans, m, n, kl, ku, alpha, a,
+ lda, x, incx, beta, y, incy);
}
void gemv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
std::int64_t n, float alpha, sycl::buffer &a, std::int64_t lda,
sycl::buffer &x, std::int64_t incx, float beta, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_sgemv_sycl(queue, trans, m, n, alpha, a, lda, x, incx,
- beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_sgemv_sycl(queue, trans, m, n, alpha, a, lda, x,
+ incx, beta, y, incy);
}
void gemv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
std::int64_t n, double alpha, sycl::buffer &a, std::int64_t lda,
sycl::buffer &x, std::int64_t incx, double beta, sycl::buffer &y,
std::int64_t incy) {
- function_tables[libkey].column_major_dgemv_sycl(queue, trans, m, n, alpha, a, lda, x, incx,
- beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_dgemv_sycl(queue, trans, m, n, alpha, a, lda, x,
+ incx, beta, y, incy);
}
void gemv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
std::int64_t n, std::complex alpha, sycl::buffer, 1> &a,
std::int64_t lda, sycl::buffer, 1> &x, std::int64_t incx,
std::complex beta, sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_cgemv_sycl(queue, trans, m, n, alpha, a, lda, x, incx,
- beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_cgemv_sycl(queue, trans, m, n, alpha, a, lda, x,
+ incx, beta, y, incy);
}
void gemv(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
std::int64_t n, std::complex alpha, sycl::buffer, 1> &a,
std::int64_t lda, sycl::buffer, 1> &x, std::int64_t incx,
std::complex beta, sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zgemv_sycl(queue, trans, m, n, alpha, a, lda, x, incx,
- beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_zgemv_sycl(queue, trans, m, n, alpha, a, lda, x,
+ incx, beta, y, incy);
}
void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
@@ -499,9 +504,9 @@ void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans,
std::int64_t stridea, sycl::buffer &x, std::int64_t incx,
std::int64_t stridex, float beta, sycl::buffer &y, std::int64_t incy,
std::int64_t stridey, std::int64_t batch_size) {
- function_tables[libkey].column_major_sgemv_batch_strided_sycl(queue, trans, m, n, alpha, a, lda,
- stridea, x, incx, stridex, beta,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_sgemv_batch_strided_sycl(
+ queue, trans, m, n, alpha, a, lda, stridea, x, incx, stridex, beta, y, incy, stridey,
+ batch_size);
}
void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
@@ -509,9 +514,9 @@ void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans,
std::int64_t stridea, sycl::buffer &x, std::int64_t incx,
std::int64_t stridex, double beta, sycl::buffer &y, std::int64_t incy,
std::int64_t stridey, std::int64_t batch_size) {
- function_tables[libkey].column_major_dgemv_batch_strided_sycl(queue, trans, m, n, alpha, a, lda,
- stridea, x, incx, stridex, beta,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_dgemv_batch_strided_sycl(
+ queue, trans, m, n, alpha, a, lda, stridea, x, incx, stridex, beta, y, incy, stridey,
+ batch_size);
}
void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
@@ -520,9 +525,9 @@ void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans,
std::int64_t incx, std::int64_t stridex, std::complex beta,
sycl::buffer, 1> &y, std::int64_t incy, std::int64_t stridey,
std::int64_t batch_size) {
- function_tables[libkey].column_major_cgemv_batch_strided_sycl(queue, trans, m, n, alpha, a, lda,
- stridea, x, incx, stridex, beta,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_cgemv_batch_strided_sycl(
+ queue, trans, m, n, alpha, a, lda, stridea, x, incx, stridex, beta, y, incy, stridey,
+ batch_size);
}
void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans, std::int64_t m,
@@ -531,9 +536,9 @@ void gemv_batch(oneapi::mkl::device libkey, sycl::queue &queue, transpose trans,
sycl::buffer, 1> &x, std::int64_t incx, std::int64_t stridex,
std::complex beta, sycl::buffer, 1> &y,
std::int64_t incy, std::int64_t stridey, std::int64_t batch_size) {
- function_tables[libkey].column_major_zgemv_batch_strided_sycl(queue, trans, m, n, alpha, a, lda,
- stridea, x, incx, stridex, beta,
- y, incy, stridey, batch_size);
+ function_tables[{ libkey, queue }].column_major_zgemv_batch_strided_sycl(
+ queue, trans, m, n, alpha, a, lda, stridea, x, incx, stridex, beta, y, incy, stridey,
+ batch_size);
}
void dgmm_batch(oneapi::mkl::device libkey, sycl::queue &queue, side left_right, std::int64_t m,
@@ -541,7 +546,7 @@ void dgmm_batch(oneapi::mkl::device libkey, sycl::queue &queue, side left_right,
sycl::buffer &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer &c, std::int64_t ldc, std::int64_t stridec,
std::int64_t batch_size) {
- function_tables[libkey].column_major_sdgmm_batch_strided_sycl(
+ function_tables[{ libkey, queue }].column_major_sdgmm_batch_strided_sycl(
queue, left_right, m, n, a, lda, stridea, x, incx, stridex, c, ldc, stridec, batch_size);
}
@@ -550,7 +555,7 @@ void dgmm_batch(oneapi::mkl::device libkey, sycl::queue &queue, side left_right,
sycl::buffer &x, std::int64_t incx, std::int64_t stridex,
sycl::buffer &c, std::int64_t ldc, std::int64_t stridec,
std::int64_t batch_size) {
- function_tables[libkey].column_major_ddgmm_batch_strided_sycl(
+ function_tables[{ libkey, queue }].column_major_ddgmm_batch_strided_sycl(
queue, left_right, m, n, a, lda, stridea, x, incx, stridex, c, ldc, stridec, batch_size);
}
@@ -559,7 +564,7 @@ void dgmm_batch(oneapi::mkl::device libkey, sycl::queue &queue, side left_right,
std::int64_t stridea, sycl::buffer, 1> &x, std::int64_t incx,
std::int64_t stridex, sycl::buffer, 1> &c, std::int64_t ldc,
std::int64_t stridec, std::int64_t batch_size) {
- function_tables[libkey].column_major_cdgmm_batch_strided_sycl(
+ function_tables[{ libkey, queue }].column_major_cdgmm_batch_strided_sycl(
queue, left_right, m, n, a, lda, stridea, x, incx, stridex, c, ldc, stridec, batch_size);
}
@@ -568,430 +573,444 @@ void dgmm_batch(oneapi::mkl::device libkey, sycl::queue &queue, side left_right,
std::int64_t stridea, sycl::buffer, 1> &x, std::int64_t incx,
std::int64_t stridex, sycl::buffer, 1> &c, std::int64_t ldc,
std::int64_t stridec, std::int64_t batch_size) {
- function_tables[libkey].column_major_zdgmm_batch_strided_sycl(
+ function_tables[{ libkey, queue }].column_major_zdgmm_batch_strided_sycl(
queue, left_right, m, n, a, lda, stridea, x, incx, stridex, c, ldc, stridec, batch_size);
}
void ger(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t m, std::int64_t n,
float alpha, sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy, sycl::buffer &a, std::int64_t lda) {
- function_tables[libkey].column_major_sger_sycl(queue, m, n, alpha, x, incx, y, incy, a, lda);
+ function_tables[{ libkey, queue }].column_major_sger_sycl(queue, m, n, alpha, x, incx, y, incy,
+ a, lda);
}
void ger(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t m, std::int64_t n,
double alpha, sycl::buffer &x, std::int64_t incx, sycl::buffer &y,
std::int64_t incy, sycl::buffer &a, std::int64_t lda) {
- function_tables[libkey].column_major_dger_sycl(queue, m, n, alpha, x, incx, y, incy, a, lda);
+ function_tables[{ libkey, queue }].column_major_dger_sycl(queue, m, n, alpha, x, incx, y, incy,
+ a, lda);
}
void gerc(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t m, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &a, std::int64_t lda) {
- function_tables[libkey].column_major_cgerc_sycl(queue, m, n, alpha, x, incx, y, incy, a, lda);
+ function_tables[{ libkey, queue }].column_major_cgerc_sycl(queue, m, n, alpha, x, incx, y, incy,
+ a, lda);
}
void gerc(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t m, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &a, std::int64_t lda) {
- function_tables[libkey].column_major_zgerc_sycl(queue, m, n, alpha, x, incx, y, incy, a, lda);
+ function_tables[{ libkey, queue }].column_major_zgerc_sycl(queue, m, n, alpha, x, incx, y, incy,
+ a, lda);
}
void geru(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t m, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &a, std::int64_t lda) {
- function_tables[libkey].column_major_cgeru_sycl(queue, m, n, alpha, x, incx, y, incy, a, lda);
+ function_tables[{ libkey, queue }].column_major_cgeru_sycl(queue, m, n, alpha, x, incx, y, incy,
+ a, lda);
}
void geru(oneapi::mkl::device libkey, sycl::queue &queue, std::int64_t m, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &y, std::int64_t incy,
sycl::buffer, 1> &a, std::int64_t lda) {
- function_tables[libkey].column_major_zgeru_sycl(queue, m, n, alpha, x, incx, y, incy, a, lda);
+ function_tables[{ libkey, queue }].column_major_zgeru_sycl(queue, m, n, alpha, x, incx, y, incy,
+ a, lda);
}
void hbmv(oneapi::mkl::device libkey, sycl::queue &queue, uplo upper_lower, std::int64_t n,
std::int64_t k, std::complex alpha, sycl::buffer, 1> &a,
std::int64_t lda, sycl::buffer, 1> &x, std::int64_t incx,
std::complex beta, sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_chbmv_sycl(queue, upper_lower, n, k, alpha, a, lda, x,
- incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_chbmv_sycl(queue, upper_lower, n, k, alpha, a,
+ lda, x, incx, beta, y, incy);
}
void hbmv(oneapi::mkl::device libkey, sycl::queue &queue, uplo upper_lower, std::int64_t n,
std::int64_t k, std::complex alpha, sycl::buffer, 1> &a,
std::int64_t lda, sycl::buffer, 1> &x, std::int64_t incx,
std::complex beta, sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zhbmv_sycl(queue, upper_lower, n, k, alpha, a, lda, x,
- incx, beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_zhbmv_sycl(queue, upper_lower, n, k, alpha, a,
+ lda, x, incx, beta, y, incy);
}
void hemv(oneapi::mkl::device libkey, sycl::queue &queue, uplo upper_lower, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &a, std::int64_t lda,
sycl::buffer, 1> &x, std::int64_t incx, std::complex beta,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_chemv_sycl(queue, upper_lower, n, alpha, a, lda, x, incx,
- beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_chemv_sycl(queue, upper_lower, n, alpha, a, lda,
+ x, incx, beta, y, incy);
}
void hemv(oneapi::mkl::device libkey, sycl::queue &queue, uplo upper_lower, std::int64_t n,
std::complex alpha, sycl::buffer, 1> &a, std::int64_t lda,
sycl::buffer, 1> &x, std::int64_t incx, std::complex beta,
sycl::buffer, 1> &y, std::int64_t incy) {
- function_tables[libkey].column_major_zhemv_sycl(queue, upper_lower, n, alpha, a, lda, x, incx,
- beta, y, incy);
+ function_tables[{ libkey, queue }].column_major_zhemv_sycl(queue, upper_lower, n, alpha, a, lda,
+ x, incx, beta, y, incy);
}
void her(oneapi::mkl::device libkey, sycl::queue &queue, uplo upper_lower, std::int64_t n,
float alpha, sycl::buffer, 1> &x, std::int64_t incx,
sycl::buffer, 1> &a, std::int64_t lda) {
- function_tables[libkey].column_major_cher_sycl(queue, upper_lower, n, alpha, x, incx, a, lda);
+ function_tables[{ libkey, queue }].column_major_cher_sycl(queue, upper_lower, n, alpha, x, incx,
+ a, lda);
}
void her(oneapi::mkl::device libkey, sycl::queue &queue, uplo upper_lower, std::int64_t n,
double alpha, sycl::buffer