summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-03-30 17:32:13 +0200
committercnugteren <web@cedricnugteren.nl>2016-03-30 16:13:37 -0700
commitc1df78676471a8a26ea8ec5a092734566d490db4 (patch)
tree272bd2cda6a54929f83e4d2c6c7a0652384f88ec /src
parent6ecc0d089c80296cce3089734771279a30783f81 (diff)
Added prototypes for the xROTM and xROTMG routines
Diffstat (limited to 'src')
-rw-r--r--src/clblast.cc47
-rw-r--r--src/clblast_c.cc106
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,