summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-03-25 10:00:40 +0100
committerCedric Nugteren <web@cedricnugteren.nl>2016-03-25 10:00:40 +0100
commit3876096c30ad4eed5769dbc88dbfe75b7571718a (patch)
treef902f2ee43df982152ada5d8d8d0573653cef58a /src
parent49822c8ead3313e88a08f31162870e88f8ad2bb5 (diff)
Added prototypes for SNRM2/DNRM2 routines
Diffstat (limited to 'src')
-rw-r--r--src/clblast.cc17
-rw-r--r--src/clblast_c.cc22
2 files changed, 39 insertions, 0 deletions
diff --git a/src/clblast.cc b/src/clblast.cc
index e7f2477f..9079355a 100644
--- a/src/clblast.cc
+++ b/src/clblast.cc
@@ -285,6 +285,23 @@ template StatusCode PUBLIC_API Dotc<double2>(const size_t,
const cl_mem, const size_t, const size_t,
cl_command_queue*, cl_event*);
+// Euclidian norm of a vector: SNRM2/DNRM2
+template <typename T>
+StatusCode Nrm2(const size_t,
+ cl_mem, const size_t,
+ const cl_mem, const size_t, const size_t,
+ cl_command_queue*, cl_event*) {
+ return StatusCode::kNotImplemented;
+}
+template StatusCode PUBLIC_API Nrm2<float>(const size_t,
+ cl_mem, const size_t,
+ const cl_mem, const size_t, const size_t,
+ cl_command_queue*, cl_event*);
+template StatusCode PUBLIC_API Nrm2<double>(const size_t,
+ cl_mem, const size_t,
+ const cl_mem, const size_t, const size_t,
+ cl_command_queue*, cl_event*);
+
// =================================================================================================
// BLAS level-2 (matrix-vector) routines
// =================================================================================================
diff --git a/src/clblast_c.cc b/src/clblast_c.cc
index 66d16f6d..d735fa35 100644
--- a/src/clblast_c.cc
+++ b/src/clblast_c.cc
@@ -279,6 +279,28 @@ StatusCode CLBlastZdotc(const size_t n,
return static_cast<StatusCode>(status);
}
+// NRM2
+StatusCode CLBlastSnrm2(const size_t n,
+ cl_mem nrm2_buffer, const size_t nrm2_offset,
+ const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
+ cl_command_queue* queue, cl_event* event) {
+ auto status = clblast::Nrm2<float>(n,
+ nrm2_buffer, nrm2_offset,
+ x_buffer, x_offset, x_inc,
+ queue, event);
+ return static_cast<StatusCode>(status);
+}
+StatusCode CLBlastDnrm2(const size_t n,
+ cl_mem nrm2_buffer, const size_t nrm2_offset,
+ const cl_mem x_buffer, const size_t x_offset, const size_t x_inc,
+ cl_command_queue* queue, cl_event* event) {
+ auto status = clblast::Nrm2<double>(n,
+ nrm2_buffer, nrm2_offset,
+ x_buffer, x_offset, x_inc,
+ queue, event);
+ return static_cast<StatusCode>(status);
+}
+
// =================================================================================================
// BLAS level-2 (matrix-vector) routines
// =================================================================================================