diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/correctness/misc/override_parameters.cpp | 6 | ||||
-rw-r--r-- | test/routines/level2/xher.hpp | 2 | ||||
-rw-r--r-- | test/routines/level2/xhpr.hpp | 2 | ||||
-rw-r--r-- | test/routines/level3/xher2k.hpp | 3 | ||||
-rw-r--r-- | test/routines/level3/xherk.hpp | 2 | ||||
-rw-r--r-- | test/routines/level3/xsyrk.hpp | 4 | ||||
-rw-r--r-- | test/routines/levelx/xinvert.hpp | 5 | ||||
-rw-r--r-- | test/routines/levelx/xomatcopy.hpp | 3 | ||||
-rw-r--r-- | test/wrapper_cublas.hpp | 158 |
9 files changed, 160 insertions, 25 deletions
diff --git a/test/correctness/misc/override_parameters.cpp b/test/correctness/misc/override_parameters.cpp index e6eebef7..4283c039 100644 --- a/test/correctness/misc/override_parameters.cpp +++ b/test/correctness/misc/override_parameters.cpp @@ -129,15 +129,11 @@ size_t RunOverrideTests(int argc, char *argv[], const bool silent, const std::st // ================================================================================================= } // namespace clblast -// Shortcuts to the clblast namespace -using float2 = clblast::float2; -using double2 = clblast::double2; - // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { auto errors = size_t{0}; errors += clblast::RunOverrideTests<float>(argc, argv, false, "SGEMM"); - errors += clblast::RunOverrideTests<float2>(argc, argv, true, "CGEMM"); + errors += clblast::RunOverrideTests<clblast::float2>(argc, argv, true, "CGEMM"); if (errors > 0) { return 1; } else { return 0; } } diff --git a/test/routines/level2/xher.hpp b/test/routines/level2/xher.hpp index 980e8d8b..c313d0f5 100644 --- a/test/routines/level2/xher.hpp +++ b/test/routines/level2/xher.hpp @@ -112,7 +112,7 @@ class TestXher { // Describes how to run the cuBLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CUBLAS - static StatusCode RunReference3(const Arguments<T> &args, BuffersCUDA<T> &buffers, Queue &) { + static StatusCode RunReference3(const Arguments<U> &args, BuffersCUDA<T> &buffers, Queue &) { auto status = cublasXher(args.layout, convertToCUBLAS(args.triangle), args.n, args.alpha, diff --git a/test/routines/level2/xhpr.hpp b/test/routines/level2/xhpr.hpp index 8148c253..986059bd 100644 --- a/test/routines/level2/xhpr.hpp +++ b/test/routines/level2/xhpr.hpp @@ -112,7 +112,7 @@ class TestXhpr { // Describes how to run the cuBLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CUBLAS - static StatusCode RunReference3(const Arguments<T> &args, BuffersCUDA<T> &buffers, Queue &) { + static StatusCode RunReference3(const Arguments<U> &args, BuffersCUDA<T> &buffers, Queue &) { auto status = cublasXhpr(args.layout, convertToCUBLAS(args.triangle), args.n, args.alpha, diff --git a/test/routines/level3/xher2k.hpp b/test/routines/level3/xher2k.hpp index b341c4d7..2b0fff64 100644 --- a/test/routines/level3/xher2k.hpp +++ b/test/routines/level3/xher2k.hpp @@ -130,7 +130,8 @@ class TestXher2k { // Describes how to run the cuBLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CUBLAS - static StatusCode RunReference3(const Arguments<T> &args, BuffersCUDA<T> &buffers, Queue &) { + static StatusCode RunReference3(const Arguments<U> &args, BuffersCUDA<T> &buffers, Queue &) { + auto alpha2 = T{args.alpha, args.alpha}; auto status = cublasXher2k(args.layout, convertToCUBLAS(args.triangle), convertToCUBLAS(args.a_transpose), diff --git a/test/routines/level3/xherk.hpp b/test/routines/level3/xherk.hpp index 676d5286..3a676f59 100644 --- a/test/routines/level3/xherk.hpp +++ b/test/routines/level3/xherk.hpp @@ -117,7 +117,7 @@ class TestXherk { // Describes how to run the cuBLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CUBLAS - static StatusCode RunReference3(const Arguments<T> &args, BuffersCUDA<T> &buffers, Queue &) { + static StatusCode RunReference3(const Arguments<U> &args, BuffersCUDA<T> &buffers, Queue &) { auto status = cublasXherk(args.layout, convertToCUBLAS(args.triangle), convertToCUBLAS(args.a_transpose), diff --git a/test/routines/level3/xsyrk.hpp b/test/routines/level3/xsyrk.hpp index 2ee24a2e..34f8f41a 100644 --- a/test/routines/level3/xsyrk.hpp +++ b/test/routines/level3/xsyrk.hpp @@ -122,8 +122,8 @@ class TestXsyrk { convertToCUBLAS(args.triangle), convertToCUBLAS(args.a_transpose), args.n, args.k, args.alpha, - buffer.a_mat, args.a_offset, args.a_ld, args.beta, - buffer.c_mat, args.c_offset, args.c_ld); + buffers.a_mat, args.a_offset, args.a_ld, args.beta, + buffers.c_mat, args.c_offset, args.c_ld); if (status == CUBLAS_STATUS_SUCCESS) { return StatusCode::kSuccess; } else { return StatusCode::kUnknownError; } } #endif diff --git a/test/routines/levelx/xinvert.hpp b/test/routines/levelx/xinvert.hpp index ac9e9a2d..cc02a88b 100644 --- a/test/routines/levelx/xinvert.hpp +++ b/test/routines/levelx/xinvert.hpp @@ -16,10 +16,7 @@ #ifndef CLBLAST_TEST_ROUTINES_XINVERT_H_ #define CLBLAST_TEST_ROUTINES_XINVERT_H_ -#include <vector> -#include <string> - -#include "utilities/utilities.hpp" +#include "test/routines/common.hpp" namespace clblast { // ================================================================================================= diff --git a/test/routines/levelx/xomatcopy.hpp b/test/routines/levelx/xomatcopy.hpp index 2e77e6f7..bbf6006c 100644 --- a/test/routines/levelx/xomatcopy.hpp +++ b/test/routines/levelx/xomatcopy.hpp @@ -16,8 +16,7 @@ #ifndef CLBLAST_TEST_ROUTINES_XOMATCOPY_H_ #define CLBLAST_TEST_ROUTINES_XOMATCOPY_H_ -#include <vector> -#include <string> +#include "test/routines/common.hpp" namespace clblast { // ================================================================================================= diff --git a/test/wrapper_cublas.hpp b/test/wrapper_cublas.hpp index 22eb3971..4de8451a 100644 --- a/test/wrapper_cublas.hpp +++ b/test/wrapper_cublas.hpp @@ -44,6 +44,7 @@ cublasStatus_t cublasXrotg<float>(float* sa_buffer, const size_t sa_offset, float* sc_buffer, const size_t sc_offset, float* ss_buffer, const size_t ss_offset) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSrotg(handle, &sa_buffer[sa_offset], &sb_buffer[sb_offset], &sc_buffer[sc_offset], @@ -57,6 +58,7 @@ cublasStatus_t cublasXrotg<double>(double* sa_buffer, const size_t sa_offset, double* sc_buffer, const size_t sc_offset, double* ss_buffer, const size_t ss_offset) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDrotg(handle, &sa_buffer[sa_offset], &sb_buffer[sb_offset], &sc_buffer[sc_offset], @@ -79,6 +81,7 @@ cublasStatus_t cublasXrotmg<float>(float* sd1_buffer, const size_t sd1_offset, const float* sy1_buffer, const size_t sy1_offset, float* sparam_buffer, const size_t sparam_offset) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSrotmg(handle, &sd1_buffer[sd1_offset], &sd2_buffer[sd2_offset], &sx1_buffer[sx1_offset], @@ -94,6 +97,7 @@ cublasStatus_t cublasXrotmg<double>(double* sd1_buffer, const size_t sd1_offset, const double* sy1_buffer, const size_t sy1_offset, double* sparam_buffer, const size_t sparam_offset) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDrotmg(handle, &sd1_buffer[sd1_offset], &sd2_buffer[sd2_offset], &sx1_buffer[sx1_offset], @@ -110,6 +114,7 @@ cublasStatus_t cublasXrot(const size_t n, const float cos, const float sin) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSrot(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc), @@ -124,6 +129,7 @@ cublasStatus_t cublasXrot(const size_t n, const double cos, const double sin) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDrot(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc), @@ -145,6 +151,7 @@ cublasStatus_t cublasXrotm<float>(const size_t n, float* y_buffer, const size_t y_offset, const size_t y_inc, float* sparam_buffer, const size_t sparam_offset) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSrotm(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc), @@ -158,6 +165,7 @@ cublasStatus_t cublasXrotm<double>(const size_t n, double* y_buffer, const size_t y_offset, const size_t y_inc, double* sparam_buffer, const size_t sparam_offset) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDrotm(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc), @@ -176,6 +184,7 @@ cublasStatus_t cublasXswap<float>(const size_t n, float* x_buffer, const size_t x_offset, const size_t x_inc, float* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSswap(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc)); @@ -187,6 +196,7 @@ cublasStatus_t cublasXswap<double>(const size_t n, double* x_buffer, const size_t x_offset, const size_t x_inc, double* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDswap(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc)); @@ -198,6 +208,7 @@ cublasStatus_t cublasXswap<float2>(const size_t n, float2* x_buffer, const size_t x_offset, const size_t x_inc, float2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCswap(handle, static_cast<int>(n), reinterpret_cast<cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<cuComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc)); @@ -209,6 +220,7 @@ cublasStatus_t cublasXswap<double2>(const size_t n, double2* x_buffer, const size_t x_offset, const size_t x_inc, double2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZswap(handle, static_cast<int>(n), reinterpret_cast<cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<cuDoubleComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc)); @@ -227,6 +239,7 @@ cublasStatus_t cublasXscal(const size_t n, const float alpha, float* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSscal(handle, static_cast<int>(n), &alpha, &x_buffer[x_offset], static_cast<int>(x_inc)); @@ -237,6 +250,7 @@ cublasStatus_t cublasXscal(const size_t n, const double alpha, double* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDscal(handle, static_cast<int>(n), &alpha, &x_buffer[x_offset], static_cast<int>(x_inc)); @@ -250,6 +264,7 @@ cublasStatus_t cublasXscal(const size_t n, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCscal(handle, static_cast<int>(n), &alpha_cuda, reinterpret_cast<cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc)); @@ -263,6 +278,7 @@ cublasStatus_t cublasXscal(const size_t n, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZscal(handle, static_cast<int>(n), &alpha_cuda, reinterpret_cast<cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc)); @@ -285,6 +301,7 @@ cublasStatus_t cublasXcopy<float>(const size_t n, const float* x_buffer, const size_t x_offset, const size_t x_inc, float* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasScopy(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc)); @@ -296,6 +313,7 @@ cublasStatus_t cublasXcopy<double>(const size_t n, const double* x_buffer, const size_t x_offset, const size_t x_inc, double* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDcopy(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc)); @@ -307,6 +325,7 @@ cublasStatus_t cublasXcopy<float2>(const size_t n, const float2* x_buffer, const size_t x_offset, const size_t x_inc, float2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCcopy(handle, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<cuComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc)); @@ -318,6 +337,7 @@ cublasStatus_t cublasXcopy<double2>(const size_t n, const double2* x_buffer, const size_t x_offset, const size_t x_inc, double2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZcopy(handle, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<cuDoubleComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc)); @@ -337,6 +357,7 @@ cublasStatus_t cublasXaxpy(const size_t n, const float* x_buffer, const size_t x_offset, const size_t x_inc, float* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSaxpy(handle, static_cast<int>(n), &alpha, &x_buffer[x_offset], static_cast<int>(x_inc), @@ -349,6 +370,7 @@ cublasStatus_t cublasXaxpy(const size_t n, const double* x_buffer, const size_t x_offset, const size_t x_inc, double* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDaxpy(handle, static_cast<int>(n), &alpha, &x_buffer[x_offset], static_cast<int>(x_inc), @@ -364,6 +386,7 @@ cublasStatus_t cublasXaxpy(const size_t n, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCaxpy(handle, static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), @@ -379,6 +402,7 @@ cublasStatus_t cublasXaxpy(const size_t n, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZaxpy(handle, static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), @@ -405,6 +429,7 @@ cublasStatus_t cublasXdot<float>(const size_t n, const float* x_buffer, const size_t x_offset, const size_t x_inc, const float* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSdot(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc), @@ -418,6 +443,7 @@ cublasStatus_t cublasXdot<double>(const size_t n, const double* x_buffer, const size_t x_offset, const size_t x_inc, const double* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDdot(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &y_buffer[y_offset], static_cast<int>(y_inc), @@ -445,6 +471,7 @@ cublasStatus_t cublasXdotu<float2>(const size_t n, const float2* x_buffer, const size_t x_offset, const size_t x_inc, const float2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCdotu(handle, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<const cuComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc), @@ -458,6 +485,7 @@ cublasStatus_t cublasXdotu<double2>(const size_t n, const double2* x_buffer, const size_t x_offset, const size_t x_inc, const double2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZdotu(handle, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<const cuDoubleComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc), @@ -478,6 +506,7 @@ cublasStatus_t cublasXdotc<float2>(const size_t n, const float2* x_buffer, const size_t x_offset, const size_t x_inc, const float2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCdotc(handle, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<const cuComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc), @@ -491,6 +520,7 @@ cublasStatus_t cublasXdotc<double2>(const size_t n, const double2* x_buffer, const size_t x_offset, const size_t x_inc, const double2* y_buffer, const size_t y_offset, const size_t y_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZdotc(handle, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), reinterpret_cast<const cuDoubleComplex*>(&y_buffer[y_offset]), static_cast<int>(y_inc), @@ -509,6 +539,7 @@ cublasStatus_t cublasXnrm2<float>(const size_t n, float* nrm2_buffer, const size_t nrm2_offset, const float* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSnrm2(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &nrm2_buffer[nrm2_offset]); @@ -520,6 +551,7 @@ cublasStatus_t cublasXnrm2<double>(const size_t n, double* nrm2_buffer, const size_t nrm2_offset, const double* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDnrm2(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &nrm2_buffer[nrm2_offset]); @@ -531,9 +563,10 @@ cublasStatus_t cublasXnrm2<float2>(const size_t n, float2* nrm2_buffer, const size_t nrm2_offset, const float2* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasScnrm2(handle, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), - reinterpret_cast<cuComplex*>(&nrm2_buffer[nrm2_offset])); + reinterpret_cast<float*>(&nrm2_buffer[nrm2_offset])); cublasDestroy(handle); return status; } @@ -542,9 +575,10 @@ cublasStatus_t cublasXnrm2<double2>(const size_t n, double2* nrm2_buffer, const size_t nrm2_offset, const double2* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDznrm2(handle, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), - reinterpret_cast<cuDoubleComplex*>(&nrm2_buffer[nrm2_offset])); + reinterpret_cast<double*>(&nrm2_buffer[nrm2_offset])); cublasDestroy(handle); return status; } @@ -565,6 +599,7 @@ cublasStatus_t cublasXasum<float>(const size_t n, float* asum_buffer, const size_t asum_offset, const float* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSasum(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &asum_buffer[asum_offset]); @@ -576,6 +611,7 @@ cublasStatus_t cublasXasum<double>(const size_t n, double* asum_buffer, const size_t asum_offset, const double* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDasum(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), &asum_buffer[asum_offset]); @@ -587,9 +623,10 @@ cublasStatus_t cublasXasum<float2>(const size_t n, float2* asum_buffer, const size_t asum_offset, const float2* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasScasum(handle, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), - reinterpret_cast<cuComplex*>(&asum_buffer[asum_offset])); + reinterpret_cast<float*>(&asum_buffer[asum_offset])); cublasDestroy(handle); return status; } @@ -598,9 +635,10 @@ cublasStatus_t cublasXasum<double2>(const size_t n, double2* asum_buffer, const size_t asum_offset, const double2* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDzasum(handle, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), - reinterpret_cast<cuDoubleComplex*>(&asum_buffer[asum_offset])); + reinterpret_cast<double*>(&asum_buffer[asum_offset])); cublasDestroy(handle); return status; } @@ -621,9 +659,10 @@ cublasStatus_t cublasXamax<float>(const size_t n, float* imax_buffer, const size_t imax_offset, const float* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasIsamax(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), - &imax_buffer[imax_offset]); + reinterpret_cast<int*>(&imax_buffer[imax_offset])); cublasDestroy(handle); return status; } @@ -632,9 +671,10 @@ cublasStatus_t cublasXamax<double>(const size_t n, double* imax_buffer, const size_t imax_offset, const double* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasIdamax(handle, static_cast<int>(n), &x_buffer[x_offset], static_cast<int>(x_inc), - &imax_buffer[imax_offset]); + reinterpret_cast<int*>(&imax_buffer[imax_offset])); cublasDestroy(handle); return status; } @@ -643,9 +683,10 @@ cublasStatus_t cublasXamax<float2>(const size_t n, float2* imax_buffer, const size_t imax_offset, const float2* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasIcamax(handle, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), - reinterpret_cast<cuComplex*>(&imax_buffer[imax_offset])); + reinterpret_cast<int*>(&imax_buffer[imax_offset])); cublasDestroy(handle); return status; } @@ -654,9 +695,10 @@ cublasStatus_t cublasXamax<double2>(const size_t n, double2* imax_buffer, const size_t imax_offset, const double2* x_buffer, const size_t x_offset, const size_t x_inc) { cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasIzamax(handle, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), - reinterpret_cast<cuDoubleComplex*>(&imax_buffer[imax_offset])); + reinterpret_cast<int*>(&imax_buffer[imax_offset])); cublasDestroy(handle); return status; } @@ -681,6 +723,7 @@ cublasStatus_t cublasXgemv(const Layout layout, const cublasOperation_t a_transp float* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSgemv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), &alpha, @@ -700,6 +743,7 @@ cublasStatus_t cublasXgemv(const Layout layout, const cublasOperation_t a_transp double* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDgemv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), &alpha, @@ -725,6 +769,7 @@ cublasStatus_t cublasXgemv(const Layout layout, const cublasOperation_t a_transp beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCgemv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -750,6 +795,7 @@ cublasStatus_t cublasXgemv(const Layout layout, const cublasOperation_t a_transp beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZgemv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -780,6 +826,7 @@ cublasStatus_t cublasXgbmv(const Layout layout, const cublasOperation_t a_transp float* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSgbmv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(kl), static_cast<int>(ku), &alpha, @@ -799,6 +846,7 @@ cublasStatus_t cublasXgbmv(const Layout layout, const cublasOperation_t a_transp double* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDgbmv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(kl), static_cast<int>(ku), &alpha, @@ -824,6 +872,7 @@ cublasStatus_t cublasXgbmv(const Layout layout, const cublasOperation_t a_transp beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCgbmv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(kl), static_cast<int>(ku), &alpha_cuda, @@ -849,6 +898,7 @@ cublasStatus_t cublasXgbmv(const Layout layout, const cublasOperation_t a_transp beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZgbmv(handle, a_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(kl), static_cast<int>(ku), &alpha_cuda, @@ -885,6 +935,7 @@ cublasStatus_t cublasXhemv(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasChemv(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -910,6 +961,7 @@ cublasStatus_t cublasXhemv(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZhemv(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -937,6 +989,7 @@ cublasStatus_t cublasXhbmv(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasChbmv(handle, triangle, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -962,6 +1015,7 @@ cublasStatus_t cublasXhbmv(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZhbmv(handle, triangle, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -989,6 +1043,7 @@ cublasStatus_t cublasXhpmv(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasChpmv(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -1014,6 +1069,7 @@ cublasStatus_t cublasXhpmv(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZhpmv(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -1035,6 +1091,7 @@ cublasStatus_t cublasXsymv(const Layout layout, const cublasFillMode_t triangle, float* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsymv(handle, triangle, static_cast<int>(n), &alpha, @@ -1054,6 +1111,7 @@ cublasStatus_t cublasXsymv(const Layout layout, const cublasFillMode_t triangle, double* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsymv(handle, triangle, static_cast<int>(n), &alpha, @@ -1084,6 +1142,7 @@ cublasStatus_t cublasXsbmv(const Layout layout, const cublasFillMode_t triangle, float* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsbmv(handle, triangle, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -1103,6 +1162,7 @@ cublasStatus_t cublasXsbmv(const Layout layout, const cublasFillMode_t triangle, double* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsbmv(handle, triangle, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -1133,6 +1193,7 @@ cublasStatus_t cublasXspmv(const Layout layout, const cublasFillMode_t triangle, float* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSspmv(handle, triangle, static_cast<int>(n), &alpha, @@ -1152,6 +1213,7 @@ cublasStatus_t cublasXspmv(const Layout layout, const cublasFillMode_t triangle, double* y_buffer, const size_t y_offset, const size_t y_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDspmv(handle, triangle, static_cast<int>(n), &alpha, @@ -1185,6 +1247,7 @@ cublasStatus_t cublasXtrmv<float>(const Layout layout, const cublasFillMode_t tr float* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStrmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &a_buffer[a_offset], a_ld, @@ -1199,6 +1262,7 @@ cublasStatus_t cublasXtrmv<double>(const Layout layout, const cublasFillMode_t t double* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtrmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &a_buffer[a_offset], a_ld, @@ -1213,6 +1277,7 @@ cublasStatus_t cublasXtrmv<float2>(const Layout layout, const cublasFillMode_t t float2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtrmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&a_buffer[a_offset]), a_ld, @@ -1227,6 +1292,7 @@ cublasStatus_t cublasXtrmv<double2>(const Layout layout, const cublasFillMode_t double2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtrmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&a_buffer[a_offset]), a_ld, @@ -1255,6 +1321,7 @@ cublasStatus_t cublasXtbmv<float>(const Layout layout, const cublasFillMode_t tr float* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStbmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), &a_buffer[a_offset], a_ld, @@ -1269,6 +1336,7 @@ cublasStatus_t cublasXtbmv<double>(const Layout layout, const cublasFillMode_t t double* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtbmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), &a_buffer[a_offset], a_ld, @@ -1283,6 +1351,7 @@ cublasStatus_t cublasXtbmv<float2>(const Layout layout, const cublasFillMode_t t float2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtbmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), reinterpret_cast<const cuComplex*>(&a_buffer[a_offset]), a_ld, @@ -1297,6 +1366,7 @@ cublasStatus_t cublasXtbmv<double2>(const Layout layout, const cublasFillMode_t double2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtbmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), reinterpret_cast<const cuDoubleComplex*>(&a_buffer[a_offset]), a_ld, @@ -1325,6 +1395,7 @@ cublasStatus_t cublasXtpmv<float>(const Layout layout, const cublasFillMode_t tr float* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStpmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &ap_buffer[ap_offset], @@ -1339,6 +1410,7 @@ cublasStatus_t cublasXtpmv<double>(const Layout layout, const cublasFillMode_t t double* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtpmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &ap_buffer[ap_offset], @@ -1353,6 +1425,7 @@ cublasStatus_t cublasXtpmv<float2>(const Layout layout, const cublasFillMode_t t float2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtpmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&ap_buffer[ap_offset]), @@ -1367,6 +1440,7 @@ cublasStatus_t cublasXtpmv<double2>(const Layout layout, const cublasFillMode_t double2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtpmv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&ap_buffer[ap_offset]), @@ -1395,6 +1469,7 @@ cublasStatus_t cublasXtrsv<float>(const Layout layout, const cublasFillMode_t tr float* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStrsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &a_buffer[a_offset], a_ld, @@ -1409,6 +1484,7 @@ cublasStatus_t cublasXtrsv<double>(const Layout layout, const cublasFillMode_t t double* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtrsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &a_buffer[a_offset], a_ld, @@ -1423,6 +1499,7 @@ cublasStatus_t cublasXtrsv<float2>(const Layout layout, const cublasFillMode_t t float2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtrsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&a_buffer[a_offset]), a_ld, @@ -1437,6 +1514,7 @@ cublasStatus_t cublasXtrsv<double2>(const Layout layout, const cublasFillMode_t double2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtrsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&a_buffer[a_offset]), a_ld, @@ -1458,6 +1536,7 @@ cublasStatus_t cublasXtbsv<float>(const Layout layout, const cublasFillMode_t tr float* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStbsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), &a_buffer[a_offset], a_ld, @@ -1472,6 +1551,7 @@ cublasStatus_t cublasXtbsv<double>(const Layout layout, const cublasFillMode_t t double* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtbsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), &a_buffer[a_offset], a_ld, @@ -1486,6 +1566,7 @@ cublasStatus_t cublasXtbsv<float2>(const Layout layout, const cublasFillMode_t t float2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtbsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), reinterpret_cast<const cuComplex*>(&a_buffer[a_offset]), a_ld, @@ -1500,6 +1581,7 @@ cublasStatus_t cublasXtbsv<double2>(const Layout layout, const cublasFillMode_t double2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtbsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), static_cast<int>(k), reinterpret_cast<const cuDoubleComplex*>(&a_buffer[a_offset]), a_ld, @@ -1521,6 +1603,7 @@ cublasStatus_t cublasXtpsv<float>(const Layout layout, const cublasFillMode_t tr float* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStpsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &ap_buffer[ap_offset], @@ -1535,6 +1618,7 @@ cublasStatus_t cublasXtpsv<double>(const Layout layout, const cublasFillMode_t t double* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtpsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), &ap_buffer[ap_offset], @@ -1549,6 +1633,7 @@ cublasStatus_t cublasXtpsv<float2>(const Layout layout, const cublasFillMode_t t float2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtpsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuComplex*>(&ap_buffer[ap_offset]), @@ -1563,6 +1648,7 @@ cublasStatus_t cublasXtpsv<double2>(const Layout layout, const cublasFillMode_t double2* x_buffer, const size_t x_offset, const size_t x_inc) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtpsv(handle, triangle, a_transpose, diagonal, static_cast<int>(n), reinterpret_cast<const cuDoubleComplex*>(&ap_buffer[ap_offset]), @@ -1580,6 +1666,7 @@ cublasStatus_t cublasXger(const Layout layout, float* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSger(handle, static_cast<int>(m), static_cast<int>(n), &alpha, &x_buffer[x_offset], static_cast<int>(x_inc), @@ -1596,6 +1683,7 @@ cublasStatus_t cublasXger(const Layout layout, double* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDger(handle, static_cast<int>(m), static_cast<int>(n), &alpha, &x_buffer[x_offset], static_cast<int>(x_inc), @@ -1625,6 +1713,7 @@ cublasStatus_t cublasXgeru(const Layout layout, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCgeru(handle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), @@ -1644,6 +1733,7 @@ cublasStatus_t cublasXgeru(const Layout layout, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZgeru(handle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), @@ -1665,6 +1755,7 @@ cublasStatus_t cublasXgerc(const Layout layout, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCgerc(handle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), @@ -1684,6 +1775,7 @@ cublasStatus_t cublasXgerc(const Layout layout, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZgerc(handle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuDoubleComplex*>(&x_buffer[x_offset]), static_cast<int>(x_inc), @@ -1701,6 +1793,7 @@ cublasStatus_t cublasXher(const Layout layout, const cublasFillMode_t triangle, float2* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCher(handle, triangle, static_cast<int>(n), &alpha, @@ -1716,6 +1809,7 @@ cublasStatus_t cublasXher(const Layout layout, const cublasFillMode_t triangle, double2* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZher(handle, triangle, static_cast<int>(n), &alpha, @@ -1733,6 +1827,7 @@ cublasStatus_t cublasXhpr(const Layout layout, const cublasFillMode_t triangle, float2* ap_buffer, const size_t ap_offset) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasChpr(handle, triangle, static_cast<int>(n), &alpha, @@ -1748,6 +1843,7 @@ cublasStatus_t cublasXhpr(const Layout layout, const cublasFillMode_t triangle, double2* ap_buffer, const size_t ap_offset) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZhpr(handle, triangle, static_cast<int>(n), &alpha, @@ -1769,6 +1865,7 @@ cublasStatus_t cublasXher2(const Layout layout, const cublasFillMode_t triangle, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCher2(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -1789,6 +1886,7 @@ cublasStatus_t cublasXher2(const Layout layout, const cublasFillMode_t triangle, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZher2(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -1811,6 +1909,7 @@ cublasStatus_t cublasXhpr2(const Layout layout, const cublasFillMode_t triangle, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasChpr2(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -1831,6 +1930,7 @@ cublasStatus_t cublasXhpr2(const Layout layout, const cublasFillMode_t triangle, alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZhpr2(handle, triangle, static_cast<int>(n), &alpha_cuda, @@ -1849,6 +1949,7 @@ cublasStatus_t cublasXsyr(const Layout layout, const cublasFillMode_t triangle, float* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsyr(handle, triangle, static_cast<int>(n), &alpha, @@ -1864,6 +1965,7 @@ cublasStatus_t cublasXsyr(const Layout layout, const cublasFillMode_t triangle, double* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsyr(handle, triangle, static_cast<int>(n), &alpha, @@ -1888,6 +1990,7 @@ cublasStatus_t cublasXspr(const Layout layout, const cublasFillMode_t triangle, float* ap_buffer, const size_t ap_offset) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSspr(handle, triangle, static_cast<int>(n), &alpha, @@ -1903,6 +2006,7 @@ cublasStatus_t cublasXspr(const Layout layout, const cublasFillMode_t triangle, double* ap_buffer, const size_t ap_offset) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDspr(handle, triangle, static_cast<int>(n), &alpha, @@ -1928,6 +2032,7 @@ cublasStatus_t cublasXsyr2(const Layout layout, const cublasFillMode_t triangle, float* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsyr2(handle, triangle, static_cast<int>(n), &alpha, @@ -1945,6 +2050,7 @@ cublasStatus_t cublasXsyr2(const Layout layout, const cublasFillMode_t triangle, double* a_buffer, const size_t a_offset, const size_t a_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsyr2(handle, triangle, static_cast<int>(n), &alpha, @@ -1972,6 +2078,7 @@ cublasStatus_t cublasXspr2(const Layout layout, const cublasFillMode_t triangle, float* ap_buffer, const size_t ap_offset) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSspr2(handle, triangle, static_cast<int>(n), &alpha, @@ -1989,6 +2096,7 @@ cublasStatus_t cublasXspr2(const Layout layout, const cublasFillMode_t triangle, double* ap_buffer, const size_t ap_offset) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDspr2(handle, triangle, static_cast<int>(n), &alpha, @@ -2021,6 +2129,7 @@ cublasStatus_t cublasXgemm(const Layout layout, const cublasOperation_t a_transp float* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSgemm(handle, a_transpose, b_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2040,6 +2149,7 @@ cublasStatus_t cublasXgemm(const Layout layout, const cublasOperation_t a_transp double* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDgemm(handle, a_transpose, b_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2065,6 +2175,7 @@ cublasStatus_t cublasXgemm(const Layout layout, const cublasOperation_t a_transp beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCgemm(handle, a_transpose, b_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2090,6 +2201,7 @@ cublasStatus_t cublasXgemm(const Layout layout, const cublasOperation_t a_transp beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZgemm(handle, a_transpose, b_transpose, static_cast<int>(m), static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2120,6 +2232,7 @@ cublasStatus_t cublasXsymm(const Layout layout, const cublasSideMode_t side, con float* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsymm(handle, side, triangle, static_cast<int>(m), static_cast<int>(n), &alpha, @@ -2139,6 +2252,7 @@ cublasStatus_t cublasXsymm(const Layout layout, const cublasSideMode_t side, con double* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsymm(handle, side, triangle, static_cast<int>(m), static_cast<int>(n), &alpha, @@ -2164,6 +2278,7 @@ cublasStatus_t cublasXsymm(const Layout layout, const cublasSideMode_t side, con beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCsymm(handle, side, triangle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -2189,6 +2304,7 @@ cublasStatus_t cublasXsymm(const Layout layout, const cublasSideMode_t side, con beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZsymm(handle, side, triangle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -2225,6 +2341,7 @@ cublasStatus_t cublasXhemm(const Layout layout, const cublasSideMode_t side, con beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasChemm(handle, side, triangle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -2250,6 +2367,7 @@ cublasStatus_t cublasXhemm(const Layout layout, const cublasSideMode_t side, con beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZhemm(handle, side, triangle, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -2270,6 +2388,7 @@ cublasStatus_t cublasXsyrk(const Layout layout, const cublasFillMode_t triangle, float* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsyrk(handle, triangle, a_transpose, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2287,6 +2406,7 @@ cublasStatus_t cublasXsyrk(const Layout layout, const cublasFillMode_t triangle, double* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsyrk(handle, triangle, a_transpose, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2310,6 +2430,7 @@ cublasStatus_t cublasXsyrk(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCsyrk(handle, triangle, a_transpose, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2333,6 +2454,7 @@ cublasStatus_t cublasXsyrk(const Layout layout, const cublasFillMode_t triangle, beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZsyrk(handle, triangle, a_transpose, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2360,6 +2482,7 @@ cublasStatus_t cublasXherk(const Layout layout, const cublasFillMode_t triangle, float2* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCherk(handle, triangle, a_transpose, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2377,6 +2500,7 @@ cublasStatus_t cublasXherk(const Layout layout, const cublasFillMode_t triangle, double2* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZherk(handle, triangle, a_transpose, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2397,6 +2521,7 @@ cublasStatus_t cublasXsyr2k(const Layout layout, const cublasFillMode_t triangle float* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasSsyr2k(handle, triangle, ab_transpose, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2416,6 +2541,7 @@ cublasStatus_t cublasXsyr2k(const Layout layout, const cublasFillMode_t triangle double* c_buffer, const size_t c_offset, const size_t c_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDsyr2k(handle, triangle, ab_transpose, static_cast<int>(n), static_cast<int>(k), &alpha, @@ -2441,6 +2567,7 @@ cublasStatus_t cublasXsyr2k(const Layout layout, const cublasFillMode_t triangle beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCsyr2k(handle, triangle, ab_transpose, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2466,6 +2593,7 @@ cublasStatus_t cublasXsyr2k(const Layout layout, const cublasFillMode_t triangle beta_cuda.x = beta.real(); beta_cuda.y = beta.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZsyr2k(handle, triangle, ab_transpose, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2499,6 +2627,7 @@ cublasStatus_t cublasXher2k(const Layout layout, const cublasFillMode_t triangle alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCher2k(handle, triangle, ab_transpose, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2521,6 +2650,7 @@ cublasStatus_t cublasXher2k(const Layout layout, const cublasFillMode_t triangle alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZher2k(handle, triangle, ab_transpose, static_cast<int>(n), static_cast<int>(k), &alpha_cuda, @@ -2540,10 +2670,12 @@ cublasStatus_t cublasXtrmm(const Layout layout, const cublasSideMode_t side, con float* b_buffer, const size_t b_offset, const size_t b_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStrmm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha, &a_buffer[a_offset], a_ld, + &a_buffer[a_offset], a_ld, &b_buffer[b_offset], b_ld); cublasDestroy(handle); return status; @@ -2555,10 +2687,12 @@ cublasStatus_t cublasXtrmm(const Layout layout, const cublasSideMode_t side, con double* b_buffer, const size_t b_offset, const size_t b_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtrmm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha, &a_buffer[a_offset], a_ld, + &a_buffer[a_offset], a_ld, &b_buffer[b_offset], b_ld); cublasDestroy(handle); return status; @@ -2573,10 +2707,12 @@ cublasStatus_t cublasXtrmm(const Layout layout, const cublasSideMode_t side, con alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtrmm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuComplex*>(&a_buffer[a_offset]), a_ld, + reinterpret_cast<const cuComplex*>(&a_buffer[a_offset]), a_ld, reinterpret_cast<cuComplex*>(&b_buffer[b_offset]), b_ld); cublasDestroy(handle); return status; @@ -2591,10 +2727,12 @@ cublasStatus_t cublasXtrmm(const Layout layout, const cublasSideMode_t side, con alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtrmm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, reinterpret_cast<const cuDoubleComplex*>(&a_buffer[a_offset]), a_ld, + reinterpret_cast<const cuDoubleComplex*>(&a_buffer[a_offset]), a_ld, reinterpret_cast<cuDoubleComplex*>(&b_buffer[b_offset]), b_ld); cublasDestroy(handle); return status; @@ -2615,6 +2753,7 @@ cublasStatus_t cublasXtrsm(const Layout layout, const cublasSideMode_t side, con float* b_buffer, const size_t b_offset, const size_t b_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasStrsm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha, @@ -2630,6 +2769,7 @@ cublasStatus_t cublasXtrsm(const Layout layout, const cublasSideMode_t side, con double* b_buffer, const size_t b_offset, const size_t b_ld) { if (layout == Layout::kRowMajor) { return CUBLAS_STATUS_NOT_SUPPORTED; } cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasDtrsm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha, @@ -2648,6 +2788,7 @@ cublasStatus_t cublasXtrsm(const Layout layout, const cublasSideMode_t side, con alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasCtrsm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, @@ -2666,6 +2807,7 @@ cublasStatus_t cublasXtrsm(const Layout layout, const cublasSideMode_t side, con alpha_cuda.x = alpha.real(); alpha_cuda.y = alpha.imag(); cublasHandle_t handle; + if (cublasCreate(&handle) != CUBLAS_STATUS_SUCCESS) { return CUBLAS_STATUS_NOT_INITIALIZED; } auto status = cublasZtrsm(handle, side, triangle, a_transpose, diagonal, static_cast<int>(m), static_cast<int>(n), &alpha_cuda, |