diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-04-01 13:36:24 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-04-01 13:36:24 +0200 |
commit | b84d2296b87ac212474af855d916b12adf96bdb7 (patch) | |
tree | 0f2e85e1e1acef1d22f046499dd0b8a30e5da4f9 /test/routines/level2 | |
parent | a98c00a2671b8981579f3a73dca8fb3365a95e53 (diff) |
Separated host-device and device-host memory copies from execution of the CBLAS reference code; for fair timing and code de-duplication
Diffstat (limited to 'test/routines/level2')
-rw-r--r-- | test/routines/level2/xgbmv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xgemv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xger.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xgerc.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xgeru.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xhbmv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xhemv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xher.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xher2.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xhpmv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xhpr.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xhpr2.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xsbmv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xspmv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xspr.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xspr2.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xsymv.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xsyr.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xsyr2.hpp | 17 | ||||
-rw-r--r-- | test/routines/level2/xtbmv.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xtpmv.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xtrmv.hpp | 13 | ||||
-rw-r--r-- | test/routines/level2/xtrsv.hpp | 13 |
23 files changed, 130 insertions, 229 deletions
diff --git a/test/routines/level2/xgbmv.hpp b/test/routines/level2/xgbmv.hpp index f371b9a7..990ef49f 100644 --- a/test/routines/level2/xgbmv.hpp +++ b/test/routines/level2/xgbmv.hpp @@ -45,6 +45,8 @@ class TestXgbmv { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -118,20 +120,13 @@ class TestXgbmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXgbmv(convertToCBLAS(args.layout), convertToCBLAS(args.a_transpose), args.m, args.n, args.kl, args.ku, args.alpha, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xgemv.hpp b/test/routines/level2/xgemv.hpp index 2442be4c..a007cb62 100644 --- a/test/routines/level2/xgemv.hpp +++ b/test/routines/level2/xgemv.hpp @@ -45,6 +45,8 @@ class TestXgemv { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -118,20 +120,13 @@ class TestXgemv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXgemv(convertToCBLAS(args.layout), convertToCBLAS(args.a_transpose), args.m, args.n, args.alpha, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xger.hpp b/test/routines/level2/xger.hpp index 3e7ccbc3..5c131e2d 100644 --- a/test/routines/level2/xger.hpp +++ b/test/routines/level2/xger.hpp @@ -45,6 +45,8 @@ class TestXger { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -113,19 +115,12 @@ class TestXger { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXger(convertToCBLAS(args.layout), args.m, args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xgerc.hpp b/test/routines/level2/xgerc.hpp index d880ae1f..e3544424 100644 --- a/test/routines/level2/xgerc.hpp +++ b/test/routines/level2/xgerc.hpp @@ -45,6 +45,8 @@ class TestXgerc { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -113,19 +115,12 @@ class TestXgerc { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXgerc(convertToCBLAS(args.layout), args.m, args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xgeru.hpp b/test/routines/level2/xgeru.hpp index 1735e42a..1d81e292 100644 --- a/test/routines/level2/xgeru.hpp +++ b/test/routines/level2/xgeru.hpp @@ -45,6 +45,8 @@ class TestXgeru { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -113,19 +115,12 @@ class TestXgeru { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXgeru(convertToCBLAS(args.layout), args.m, args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xhbmv.hpp b/test/routines/level2/xhbmv.hpp index 99538bf1..21194fd6 100644 --- a/test/routines/level2/xhbmv.hpp +++ b/test/routines/level2/xhbmv.hpp @@ -45,6 +45,8 @@ class TestXhbmv { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXhbmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXhbmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.kl, args.alpha, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xhemv.hpp b/test/routines/level2/xhemv.hpp index 3792cb66..ffef8ff8 100644 --- a/test/routines/level2/xhemv.hpp +++ b/test/routines/level2/xhemv.hpp @@ -45,6 +45,8 @@ class TestXhemv { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXhemv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXhemv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xher.hpp b/test/routines/level2/xher.hpp index c58eb189..083bd3fc 100644 --- a/test/routines/level2/xher.hpp +++ b/test/routines/level2/xher.hpp @@ -45,6 +45,8 @@ class TestXher { kArgAOffset, kArgXOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<U> &args) { @@ -106,17 +108,12 @@ class TestXher { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<U> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<U> &args, BuffersHost<T> &buffers_host, Queue&) { cblasXher(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xher2.hpp b/test/routines/level2/xher2.hpp index 8a7eb0b6..7bd890a5 100644 --- a/test/routines/level2/xher2.hpp +++ b/test/routines/level2/xher2.hpp @@ -45,6 +45,8 @@ class TestXher2 { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXher2 { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXher2(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xhpmv.hpp b/test/routines/level2/xhpmv.hpp index 0862b619..285dd6d3 100644 --- a/test/routines/level2/xhpmv.hpp +++ b/test/routines/level2/xhpmv.hpp @@ -45,6 +45,8 @@ class TestXhpmv { kArgAPOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXhpmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXhpmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - ap_mat_cpu, args.ap_offset, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.ap_mat, args.ap_offset, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xhpr.hpp b/test/routines/level2/xhpr.hpp index 5b454174..88bae86b 100644 --- a/test/routines/level2/xhpr.hpp +++ b/test/routines/level2/xhpr.hpp @@ -45,6 +45,8 @@ class TestXhpr { kArgAPOffset, kArgXOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufMatAP}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<U> &args) { @@ -106,17 +108,12 @@ class TestXhpr { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<U> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<U> &args, BuffersHost<T> &buffers_host, Queue&) { cblasXhpr(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - ap_mat_cpu, args.ap_offset); - buffers.ap_mat.Write(queue, args.ap_size, ap_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.ap_mat, args.ap_offset); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xhpr2.hpp b/test/routines/level2/xhpr2.hpp index b770da2e..cd10fa00 100644 --- a/test/routines/level2/xhpr2.hpp +++ b/test/routines/level2/xhpr2.hpp @@ -45,6 +45,8 @@ class TestXhpr2 { kArgAPOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatAP}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXhpr2 { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXhpr2(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - ap_mat_cpu, args.ap_offset); - buffers.ap_mat.Write(queue, args.ap_size, ap_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.ap_mat, args.ap_offset); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xsbmv.hpp b/test/routines/level2/xsbmv.hpp index 7a836170..5c70aba5 100644 --- a/test/routines/level2/xsbmv.hpp +++ b/test/routines/level2/xsbmv.hpp @@ -45,6 +45,8 @@ class TestXsbmv { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXsbmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXsbmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.kl, args.alpha, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xspmv.hpp b/test/routines/level2/xspmv.hpp index 352c8cfd..560f5baa 100644 --- a/test/routines/level2/xspmv.hpp +++ b/test/routines/level2/xspmv.hpp @@ -45,6 +45,8 @@ class TestXspmv { kArgAPOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXspmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXspmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - ap_mat_cpu, args.ap_offset, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.ap_mat, args.ap_offset, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xspr.hpp b/test/routines/level2/xspr.hpp index 988bcdc2..2e12db33 100644 --- a/test/routines/level2/xspr.hpp +++ b/test/routines/level2/xspr.hpp @@ -45,6 +45,8 @@ class TestXspr { kArgAPOffset, kArgXOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufMatAP}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -106,17 +108,12 @@ class TestXspr { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXspr(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - ap_mat_cpu, args.ap_offset); - buffers.ap_mat.Write(queue, args.ap_size, ap_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.ap_mat, args.ap_offset); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xspr2.hpp b/test/routines/level2/xspr2.hpp index ee517bc1..a7e22227 100644 --- a/test/routines/level2/xspr2.hpp +++ b/test/routines/level2/xspr2.hpp @@ -45,6 +45,8 @@ class TestXspr2 { kArgAPOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatAP}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXspr2 { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXspr2(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - ap_mat_cpu, args.ap_offset); - buffers.ap_mat.Write(queue, args.ap_size, ap_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.ap_mat, args.ap_offset); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xsymv.hpp b/test/routines/level2/xsymv.hpp index 5eecfb74..d9cf9c1e 100644 --- a/test/routines/level2/xsymv.hpp +++ b/test/routines/level2/xsymv.hpp @@ -45,6 +45,8 @@ class TestXsymv { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha, kArgBeta}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufVecY}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXsymv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXsymv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc, args.beta, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc, args.beta, + buffers_host.y_vec, args.y_offset, args.y_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xsyr.hpp b/test/routines/level2/xsyr.hpp index ac4ee1ff..b60c3a36 100644 --- a/test/routines/level2/xsyr.hpp +++ b/test/routines/level2/xsyr.hpp @@ -45,6 +45,8 @@ class TestXsyr { kArgAOffset, kArgXOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -106,17 +108,12 @@ class TestXsyr { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXsyr(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xsyr2.hpp b/test/routines/level2/xsyr2.hpp index 43644883..dd10a3d0 100644 --- a/test/routines/level2/xsyr2.hpp +++ b/test/routines/level2/xsyr2.hpp @@ -45,6 +45,8 @@ class TestXsyr2 { kArgAOffset, kArgXOffset, kArgYOffset, kArgAlpha}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX, kBufVecY}; } + static std::vector<std::string> BuffersOut() { return {kBufMatA}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -112,20 +114,13 @@ class TestXsyr2 { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXsyr2(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), args.n, args.alpha, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc, - a_mat_cpu, args.a_offset, args.a_ld); - buffers.a_mat.Write(queue, args.a_size, a_mat_cpu); + buffers_host.x_vec, args.x_offset, args.x_inc, + buffers_host.y_vec, args.y_offset, args.y_inc, + buffers_host.a_mat, args.a_offset, args.a_ld); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xtbmv.hpp b/test/routines/level2/xtbmv.hpp index ab9244af..7eb8ce9e 100644 --- a/test/routines/level2/xtbmv.hpp +++ b/test/routines/level2/xtbmv.hpp @@ -44,6 +44,8 @@ class TestXtbmv { kArgALeadDim, kArgXInc, kArgAOffset, kArgXOffset}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufVecX}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -107,19 +109,14 @@ class TestXtbmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXtbmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), convertToCBLAS(args.a_transpose), convertToCBLAS(args.diagonal), args.n, args.kl, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc); - buffers.x_vec.Write(queue, args.x_size, x_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xtpmv.hpp b/test/routines/level2/xtpmv.hpp index 3821e1a4..7f4842f0 100644 --- a/test/routines/level2/xtpmv.hpp +++ b/test/routines/level2/xtpmv.hpp @@ -44,6 +44,8 @@ class TestXtpmv { kArgXInc, kArgAPOffset, kArgXOffset}; } + static std::vector<std::string> BuffersIn() { return {kBufMatAP, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufVecX}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -107,19 +109,14 @@ class TestXtpmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> ap_mat_cpu(args.ap_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.ap_mat.Read(queue, args.ap_size, ap_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXtpmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), convertToCBLAS(args.a_transpose), convertToCBLAS(args.diagonal), args.n, - ap_mat_cpu, args.ap_offset, - x_vec_cpu, args.x_offset, args.x_inc); - buffers.x_vec.Write(queue, args.x_size, x_vec_cpu); + buffers_host.ap_mat, args.ap_offset, + buffers_host.x_vec, args.x_offset, args.x_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xtrmv.hpp b/test/routines/level2/xtrmv.hpp index 7211c757..cb7527ed 100644 --- a/test/routines/level2/xtrmv.hpp +++ b/test/routines/level2/xtrmv.hpp @@ -44,6 +44,8 @@ class TestXtrmv { kArgALeadDim, kArgXInc, kArgAOffset, kArgXOffset}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufVecX}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -107,19 +109,14 @@ class TestXtrmv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXtrmv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), convertToCBLAS(args.a_transpose), convertToCBLAS(args.diagonal), args.n, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc); - buffers.x_vec.Write(queue, args.x_size, x_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc); return StatusCode::kSuccess; } #endif diff --git a/test/routines/level2/xtrsv.hpp b/test/routines/level2/xtrsv.hpp index 78b9672f..63d34758 100644 --- a/test/routines/level2/xtrsv.hpp +++ b/test/routines/level2/xtrsv.hpp @@ -44,6 +44,8 @@ class TestXtrsv { kArgALeadDim, kArgXInc, kArgAOffset, kArgXOffset}; } + static std::vector<std::string> BuffersIn() { return {kBufMatA, kBufVecX}; } + static std::vector<std::string> BuffersOut() { return {kBufVecX}; } // Describes how to obtain the sizes of the buffers static size_t GetSizeX(const Arguments<T> &args) { @@ -122,19 +124,14 @@ class TestXtrsv { // Describes how to run the CPU BLAS routine (for correctness/performance comparison) #ifdef CLBLAST_REF_CBLAS - static StatusCode RunReference2(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> a_mat_cpu(args.a_size, static_cast<T>(0)); - std::vector<T> x_vec_cpu(args.x_size, static_cast<T>(0)); - buffers.a_mat.Read(queue, args.a_size, a_mat_cpu); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); + static StatusCode RunReference2(const Arguments<T> &args, BuffersHost<T> &buffers_host, Queue &) { cblasXtrsv(convertToCBLAS(args.layout), convertToCBLAS(args.triangle), convertToCBLAS(args.a_transpose), convertToCBLAS(args.diagonal), args.n, - a_mat_cpu, args.a_offset, args.a_ld, - x_vec_cpu, args.x_offset, args.x_inc); - buffers.x_vec.Write(queue, args.x_size, x_vec_cpu); + buffers_host.a_mat, args.a_offset, args.a_ld, + buffers_host.x_vec, args.x_offset, args.x_inc); return StatusCode::kSuccess; } #endif |