diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2016-03-30 17:32:13 +0200 |
---|---|---|
committer | cnugteren <web@cedricnugteren.nl> | 2016-03-30 16:13:37 -0700 |
commit | c1df78676471a8a26ea8ec5a092734566d490db4 (patch) | |
tree | 272bd2cda6a54929f83e4d2c6c7a0652384f88ec /src | |
parent | 6ecc0d089c80296cce3089734771279a30783f81 (diff) |
Added prototypes for the xROTM and xROTMG routines
Diffstat (limited to 'src')
-rw-r--r-- | src/clblast.cc | 47 | ||||
-rw-r--r-- | src/clblast_c.cc | 106 |
2 files changed, 126 insertions, 27 deletions
diff --git a/src/clblast.cc b/src/clblast.cc index 8f7abfd6..1b2c3a12 100644 --- a/src/clblast.cc +++ b/src/clblast.cc @@ -67,7 +67,7 @@ namespace clblast { // BLAS level-1 (vector-vector) routines // ================================================================================================= -// Generate plane rotation: SROTG/DROTG +// Generate givens plane rotation: SROTG/DROTG template <typename T> StatusCode Rotg(cl_mem, const size_t, cl_mem, const size_t, @@ -87,7 +87,30 @@ template StatusCode PUBLIC_API Rotg<double>(cl_mem, const size_t, cl_mem, const size_t, cl_command_queue*, cl_event*); -// Apply plane rotation: SROT/DROT +// Generate modified givens plane rotation: SROTMG/DROTMG +template <typename T> +StatusCode Rotmg(cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_command_queue*, cl_event*) { + return StatusCode::kNotImplemented; +} +template StatusCode PUBLIC_API Rotmg<float>(cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_command_queue*, cl_event*); +template StatusCode PUBLIC_API Rotmg<double>(cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_mem, const size_t, + cl_command_queue*, cl_event*); + +// Apply givens plane rotation: SROT/DROT template <typename T> StatusCode Rot(const size_t, cl_mem, const size_t, const size_t, @@ -110,6 +133,26 @@ template StatusCode PUBLIC_API Rot<double>(const size_t, const double, cl_command_queue*, cl_event*); +// Apply modified givens plane rotation: SROTM/DROTM +template <typename T> +StatusCode Rotm(const size_t, + cl_mem, const size_t, const size_t, + cl_mem, const size_t, const size_t, + cl_mem, const size_t, + cl_command_queue*, cl_event*) { + return StatusCode::kNotImplemented; +} +template StatusCode PUBLIC_API Rotm<float>(const size_t, + cl_mem, const size_t, const size_t, + cl_mem, const size_t, const size_t, + cl_mem, const size_t, + cl_command_queue*, cl_event*); +template StatusCode PUBLIC_API Rotm<double>(const size_t, + cl_mem, const size_t, const size_t, + cl_mem, const size_t, const size_t, + cl_mem, const size_t, + cl_command_queue*, cl_event*); + // Swap two vectors: SSWAP/DSWAP/CSWAP/ZSWAP template <typename T> StatusCode Swap(const size_t n, diff --git a/src/clblast_c.cc b/src/clblast_c.cc index d36b2695..b530732c 100644 --- a/src/clblast_c.cc +++ b/src/clblast_c.cc @@ -26,61 +26,117 @@ using double2 = clblast::double2; // ================================================================================================= // ROTG -StatusCode CLBlastSrotg(cl_mem SA_buffer, const size_t SA_offset, - cl_mem SB_buffer, const size_t SB_offset, - cl_mem C_buffer, const size_t C_offset, - cl_mem S_buffer, const size_t S_offset, - cl_command_queue* queue, cl_event* event) { - auto status = clblast::Rotg<float>(SA_buffer, SA_offset, - SB_buffer, SB_offset, - C_buffer, C_offset, - S_buffer, S_offset, +StatusCode CLBlastSrotg(cl_mem sa_buffer, const size_t sa_offset, + cl_mem sb_buffer, const size_t sb_offset, + cl_mem sc_buffer, const size_t sc_offset, + cl_mem ss_buffer, const size_t ss_offset, + cl_command_queue* queue, cl_event* event) { + auto status = clblast::Rotg<float>(sa_buffer, sa_offset, + sb_buffer, sb_offset, + sc_buffer, sc_offset, + ss_buffer, ss_offset, queue, event); return static_cast<StatusCode>(status); } -StatusCode CLBlastDrotg(cl_mem SA_buffer, const size_t SA_offset, - cl_mem SB_buffer, const size_t SB_offset, - cl_mem C_buffer, const size_t C_offset, - cl_mem S_buffer, const size_t S_offset, +StatusCode CLBlastDrotg(cl_mem sa_buffer, const size_t sa_offset, + cl_mem sb_buffer, const size_t sb_offset, + cl_mem sc_buffer, const size_t sc_offset, + cl_mem ss_buffer, const size_t ss_offset, cl_command_queue* queue, cl_event* event) { - auto status = clblast::Rotg<double>(SA_buffer, SA_offset, - SB_buffer, SB_offset, - C_buffer, C_offset, - S_buffer, S_offset, + auto status = clblast::Rotg<double>(sa_buffer, sa_offset, + sb_buffer, sb_offset, + sc_buffer, sc_offset, + ss_buffer, ss_offset, queue, event); return static_cast<StatusCode>(status); } +// ROTMG +StatusCode CLBlastSrotmg(cl_mem sd1_buffer, const size_t sd1_offset, + cl_mem sd2_buffer, const size_t sd2_offset, + cl_mem sx1_buffer, const size_t sx1_offset, + cl_mem sy1_buffer, const size_t sy1_offset, + cl_mem sparam_buffer, const size_t sparam_offset, + cl_command_queue* queue, cl_event* event) { + auto status = clblast::Rotmg<float>(sd1_buffer, sd1_offset, + sd2_buffer, sd2_offset, + sx1_buffer, sx1_offset, + sy1_buffer, sy1_offset, + sparam_buffer, sparam_offset, + queue, event); + return static_cast<StatusCode>(status); +} +StatusCode CLBlastDrotmg(cl_mem sd1_buffer, const size_t sd1_offset, + cl_mem sd2_buffer, const size_t sd2_offset, + cl_mem sx1_buffer, const size_t sx1_offset, + cl_mem sy1_buffer, const size_t sy1_offset, + cl_mem sparam_buffer, const size_t sparam_offset, + cl_command_queue* queue, cl_event* event) { + auto status = clblast::Rotmg<double>(sd1_buffer, sd1_offset, + sd2_buffer, sd2_offset, + sx1_buffer, sx1_offset, + sy1_buffer, sy1_offset, + sparam_buffer, sparam_offset, + queue, event); + return static_cast<StatusCode>(status); +} + // ROT StatusCode CLBlastSrot(const size_t n, cl_mem x_buffer, const size_t x_offset, const size_t x_inc, cl_mem y_buffer, const size_t y_offset, const size_t y_inc, - const float C, - const float S, + const float cos, + const float sin, cl_command_queue* queue, cl_event* event) { auto status = clblast::Rot(n, x_buffer, x_offset, x_inc, y_buffer, y_offset, y_inc, - C, - S, + cos, + sin, queue, event); return static_cast<StatusCode>(status); } StatusCode CLBlastDrot(const size_t n, cl_mem x_buffer, const size_t x_offset, const size_t x_inc, cl_mem y_buffer, const size_t y_offset, const size_t y_inc, - const double C, - const double S, + const double cos, + const double sin, cl_command_queue* queue, cl_event* event) { auto status = clblast::Rot(n, x_buffer, x_offset, x_inc, y_buffer, y_offset, y_inc, - C, - S, + cos, + sin, queue, event); return static_cast<StatusCode>(status); } +// ROTM +StatusCode CLBlastSrotm(const size_t n, + cl_mem x_buffer, const size_t x_offset, const size_t x_inc, + cl_mem y_buffer, const size_t y_offset, const size_t y_inc, + cl_mem sparam_buffer, const size_t sparam_offset, + cl_command_queue* queue, cl_event* event) { + auto status = clblast::Rotm<float>(n, + x_buffer, x_offset, x_inc, + y_buffer, y_offset, y_inc, + sparam_buffer, sparam_offset, + queue, event); + return static_cast<StatusCode>(status); +} +StatusCode CLBlastDrotm(const size_t n, + cl_mem x_buffer, const size_t x_offset, const size_t x_inc, + cl_mem y_buffer, const size_t y_offset, const size_t y_inc, + cl_mem sparam_buffer, const size_t sparam_offset, + cl_command_queue* queue, cl_event* event) { + auto status = clblast::Rotm<double>(n, + x_buffer, x_offset, x_inc, + y_buffer, y_offset, y_inc, + sparam_buffer, sparam_offset, + queue, event); + return static_cast<StatusCode>(status); +} + // SWAP StatusCode CLBlastSswap(const size_t n, cl_mem x_buffer, const size_t x_offset, const size_t x_inc, |