diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2016-06-18 20:20:13 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2016-06-18 20:20:13 +0200 |
commit | f726fbdc9fef937fbe32222f0e66aac8d7e2678c (patch) | |
tree | cb62cc877ea239052fb1882f7bf327aace3e7776 /test/routines/level1/xswap.h | |
parent | bacb5d2bb2ea7b141034878090aca850db8f9d00 (diff) |
Moved all headers into the source tree, changed headers to .hpp extension
Diffstat (limited to 'test/routines/level1/xswap.h')
-rw-r--r-- | test/routines/level1/xswap.h | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/test/routines/level1/xswap.h b/test/routines/level1/xswap.h deleted file mode 100644 index e870b602..00000000 --- a/test/routines/level1/xswap.h +++ /dev/null @@ -1,141 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Cedric Nugteren <www.cedricnugteren.nl> -// -// This file implements a class with static methods to describe the Xswap routine. Examples of -// such 'descriptions' are how to calculate the size a of buffer or how to run the routine. These -// static methods are used by the correctness tester and the performance tester. -// -// ================================================================================================= - -#ifndef CLBLAST_TEST_ROUTINES_XSWAP_H_ -#define CLBLAST_TEST_ROUTINES_XSWAP_H_ - -#include <vector> -#include <string> - -#ifdef CLBLAST_REF_CLBLAS - #include "wrapper_clblas.h" -#endif -#ifdef CLBLAST_REF_CBLAS - #include "wrapper_cblas.h" -#endif - -namespace clblast { -// ================================================================================================= - -// See comment at top of file for a description of the class -template <typename T> -class TestXswap { - public: - - // The BLAS level: 1, 2, or 3 - static size_t BLASLevel() { return 1; } - - // The list of arguments relevant for this routine - static std::vector<std::string> GetOptions() { - return {kArgN, - kArgXInc, kArgYInc, - kArgXOffset, kArgYOffset}; - } - - // Describes how to obtain the sizes of the buffers - static size_t GetSizeX(const Arguments<T> &args) { - return args.n * args.x_inc + args.x_offset; - } - static size_t GetSizeY(const Arguments<T> &args) { - return args.n * args.y_inc + args.y_offset; - } - - // Describes how to set the sizes of all the buffers - static void SetSizes(Arguments<T> &args) { - args.x_size = GetSizeX(args); - args.y_size = GetSizeY(args); - } - - // Describes what the default values of the leading dimensions of the matrices are - static size_t DefaultLDA(const Arguments<T> &) { return 1; } // N/A for this routine - static size_t DefaultLDB(const Arguments<T> &) { return 1; } // N/A for this routine - static size_t DefaultLDC(const Arguments<T> &) { return 1; } // N/A for this routine - - // Describes which transpose options are relevant for this routine - using Transposes = std::vector<Transpose>; - static Transposes GetATransposes(const Transposes &) { return {}; } // N/A for this routine - static Transposes GetBTransposes(const Transposes &) { return {}; } // N/A for this routine - - // Describes how to run the CLBlast routine - static StatusCode RunRoutine(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - auto queue_plain = queue(); - auto event = cl_event{}; - auto status = Swap<T>(args.n, - buffers.x_vec(), args.x_offset, args.x_inc, - buffers.y_vec(), args.y_offset, args.y_inc, - &queue_plain, &event); - clWaitForEvents(1, &event); - return status; - } - - // Describes how to run the clBLAS routine (for correctness/performance comparison) - #ifdef CLBLAST_REF_CLBLAS - static StatusCode RunReference1(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - auto queue_plain = queue(); - auto event = cl_event{}; - auto status = clblasXswap<T>(args.n, - buffers.x_vec, args.x_offset, args.x_inc, - buffers.y_vec, args.y_offset, args.y_inc, - 1, &queue_plain, 0, nullptr, &event); - clWaitForEvents(1, &event); - return static_cast<StatusCode>(status); - } - #endif - - // 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> x_vec_cpu(args.x_size, static_cast<T>(0)); - std::vector<T> y_vec_cpu(args.y_size, static_cast<T>(0)); - buffers.x_vec.Read(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Read(queue, args.y_size, y_vec_cpu); - cblasXswap(args.n, - x_vec_cpu, args.x_offset, args.x_inc, - y_vec_cpu, args.y_offset, args.y_inc); - buffers.x_vec.Write(queue, args.x_size, x_vec_cpu); - buffers.y_vec.Write(queue, args.y_size, y_vec_cpu); - return StatusCode::kSuccess; - } - #endif - - // Describes how to download the results of the computation (more importantly: which buffer) - static std::vector<T> DownloadResult(const Arguments<T> &args, Buffers<T> &buffers, Queue &queue) { - std::vector<T> result(args.x_size + args.y_size, static_cast<T>(0)); - buffers.x_vec.Read(queue, args.x_size, &result[0]); - buffers.y_vec.Read(queue, args.y_size, &result[args.x_size]); - return result; - } - - // Describes how to compute the indices of the result buffer - static size_t ResultID1(const Arguments<T> &args) { return args.n; } - static size_t ResultID2(const Arguments<T> &) { return 2; } // x_vec and y_vec - static size_t GetResultIndex(const Arguments<T> &args, const size_t id1, const size_t id2) { - return (id2 == 0) ? id1*args.x_inc + args.x_offset : id1*args.y_inc + args.y_offset; - } - - // Describes how to compute performance metrics - static size_t GetFlops(const Arguments<T> &args) { - return args.n; - } - static size_t GetBytes(const Arguments<T> &args) { - return (2 * args.n) * sizeof(T); - } -}; - -// ================================================================================================= -} // namespace clblast - -// CLBLAST_TEST_ROUTINES_XSWAP_H_ -#endif |