diff options
author | CNugteren <web@cedricnugteren.nl> | 2015-07-27 07:18:06 +0200 |
---|---|---|
committer | CNugteren <web@cedricnugteren.nl> | 2015-07-27 07:18:06 +0200 |
commit | f7199b831f847340f0921ef2140a4e64809db037 (patch) | |
tree | d725b7e63b0662598ad4be0a4c2457820ded8ed4 /test/correctness | |
parent | b10f4a633c4ffb3bb04d35503396ff94528df4d0 (diff) |
Now using the new Claduc C++11 OpenCL header
Diffstat (limited to 'test/correctness')
-rw-r--r-- | test/correctness/testblas.cc | 68 | ||||
-rw-r--r-- | test/correctness/testblas.h | 4 | ||||
-rw-r--r-- | test/correctness/tester.cc | 8 | ||||
-rw-r--r-- | test/correctness/tester.h | 5 |
4 files changed, 41 insertions, 44 deletions
diff --git a/test/correctness/testblas.cc b/test/correctness/testblas.cc index 5951b177..ff81f4c3 100644 --- a/test/correctness/testblas.cc +++ b/test/correctness/testblas.cc @@ -76,31 +76,31 @@ void TestBlas<T,U>::TestRegular(std::vector<Arguments<U>> &test_vector, const st for (auto &args: test_vector) { // Runs the reference clBLAS code - auto x_vec1 = Buffer(context_, CL_MEM_READ_WRITE, args.x_size*sizeof(T)); - auto y_vec1 = Buffer(context_, CL_MEM_READ_WRITE, args.y_size*sizeof(T)); - auto a_mat1 = Buffer(context_, CL_MEM_READ_WRITE, args.a_size*sizeof(T)); - auto b_mat1 = Buffer(context_, CL_MEM_READ_WRITE, args.b_size*sizeof(T)); - auto c_mat1 = Buffer(context_, CL_MEM_READ_WRITE, args.c_size*sizeof(T)); - x_vec1.WriteBuffer(queue_, args.x_size*sizeof(T), x_source_); - y_vec1.WriteBuffer(queue_, args.y_size*sizeof(T), y_source_); - a_mat1.WriteBuffer(queue_, args.a_size*sizeof(T), a_source_); - b_mat1.WriteBuffer(queue_, args.b_size*sizeof(T), b_source_); - c_mat1.WriteBuffer(queue_, args.c_size*sizeof(T), c_source_); - auto buffers1 = Buffers{x_vec1, y_vec1, a_mat1, b_mat1, c_mat1}; + auto x_vec1 = Buffer<T>(context_, args.x_size); + auto y_vec1 = Buffer<T>(context_, args.y_size); + auto a_mat1 = Buffer<T>(context_, args.a_size); + auto b_mat1 = Buffer<T>(context_, args.b_size); + auto c_mat1 = Buffer<T>(context_, args.c_size); + x_vec1.Write(queue_, args.x_size, x_source_); + y_vec1.Write(queue_, args.y_size, y_source_); + a_mat1.Write(queue_, args.a_size, a_source_); + b_mat1.Write(queue_, args.b_size, b_source_); + c_mat1.Write(queue_, args.c_size, c_source_); + auto buffers1 = Buffers<T>{x_vec1, y_vec1, a_mat1, b_mat1, c_mat1}; auto status1 = run_reference_(args, buffers1, queue_); // Runs the CLBlast code - auto x_vec2 = Buffer(context_, CL_MEM_READ_WRITE, args.x_size*sizeof(T)); - auto y_vec2 = Buffer(context_, CL_MEM_READ_WRITE, args.y_size*sizeof(T)); - auto a_mat2 = Buffer(context_, CL_MEM_READ_WRITE, args.a_size*sizeof(T)); - auto b_mat2 = Buffer(context_, CL_MEM_READ_WRITE, args.b_size*sizeof(T)); - auto c_mat2 = Buffer(context_, CL_MEM_READ_WRITE, args.c_size*sizeof(T)); - x_vec2.WriteBuffer(queue_, args.x_size*sizeof(T), x_source_); - y_vec2.WriteBuffer(queue_, args.y_size*sizeof(T), y_source_); - a_mat2.WriteBuffer(queue_, args.a_size*sizeof(T), a_source_); - b_mat2.WriteBuffer(queue_, args.b_size*sizeof(T), b_source_); - c_mat2.WriteBuffer(queue_, args.c_size*sizeof(T), c_source_); - auto buffers2 = Buffers{x_vec2, y_vec2, a_mat2, b_mat2, c_mat2}; + auto x_vec2 = Buffer<T>(context_, args.x_size); + auto y_vec2 = Buffer<T>(context_, args.y_size); + auto a_mat2 = Buffer<T>(context_, args.a_size); + auto b_mat2 = Buffer<T>(context_, args.b_size); + auto c_mat2 = Buffer<T>(context_, args.c_size); + x_vec2.Write(queue_, args.x_size, x_source_); + y_vec2.Write(queue_, args.y_size, y_source_); + a_mat2.Write(queue_, args.a_size, a_source_); + b_mat2.Write(queue_, args.b_size, b_source_); + c_mat2.Write(queue_, args.c_size, c_source_); + auto buffers2 = Buffers<T>{x_vec2, y_vec2, a_mat2, b_mat2, c_mat2}; auto status2 = run_routine_(args, buffers2, queue_); // Tests for equality of the two status codes @@ -149,25 +149,25 @@ void TestBlas<T,U>::TestInvalid(std::vector<Arguments<U>> &test_vector, const st auto a1 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.a_size*sizeof(T), nullptr,nullptr); auto b1 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.b_size*sizeof(T), nullptr,nullptr); auto c1 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.c_size*sizeof(T), nullptr,nullptr); - auto x_vec1 = Buffer(x1); - auto y_vec1 = Buffer(y1); - auto a_mat1 = Buffer(a1); - auto b_mat1 = Buffer(b1); - auto c_mat1 = Buffer(c1); + auto x_vec1 = Buffer<T>(x1); + auto y_vec1 = Buffer<T>(y1); + auto a_mat1 = Buffer<T>(a1); + auto b_mat1 = Buffer<T>(b1); + auto c_mat1 = Buffer<T>(c1); auto x2 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.x_size*sizeof(T), nullptr,nullptr); auto y2 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.y_size*sizeof(T), nullptr,nullptr); auto a2 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.a_size*sizeof(T), nullptr,nullptr); auto b2 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.b_size*sizeof(T), nullptr,nullptr); auto c2 = clCreateBuffer(context_(), CL_MEM_READ_WRITE, args.c_size*sizeof(T), nullptr,nullptr); - auto x_vec2 = Buffer(x2); - auto y_vec2 = Buffer(y2); - auto a_mat2 = Buffer(a2); - auto b_mat2 = Buffer(b2); - auto c_mat2 = Buffer(c2); + auto x_vec2 = Buffer<T>(x2); + auto y_vec2 = Buffer<T>(y2); + auto a_mat2 = Buffer<T>(a2); + auto b_mat2 = Buffer<T>(b2); + auto c_mat2 = Buffer<T>(c2); // Runs the two routines - auto status1 = run_reference_(args, Buffers{x_vec1, y_vec1, a_mat1, b_mat1, c_mat1}, queue_); - auto status2 = run_routine_(args, Buffers{x_vec2, y_vec2, a_mat2, b_mat2, c_mat2}, queue_); + auto status1 = run_reference_(args, Buffers<T>{x_vec1, y_vec1, a_mat1, b_mat1, c_mat1}, queue_); + auto status2 = run_routine_(args, Buffers<T>{x_vec2, y_vec2, a_mat2, b_mat2, c_mat2}, queue_); // Tests for equality of the two status codes TestErrorCodes(status1, status2, args); diff --git a/test/correctness/testblas.h b/test/correctness/testblas.h index 96c140c1..af8a4d0e 100644 --- a/test/correctness/testblas.h +++ b/test/correctness/testblas.h @@ -66,8 +66,8 @@ class TestBlas: public Tester<T,U> { static const std::vector<Transpose> kTransposes; // Data-type dependent, see .cc-file // Shorthand for the routine-specific functions passed to the tester - using Routine = std::function<StatusCode(const Arguments<U>&, const Buffers&, CommandQueue&)>; - using ResultGet = std::function<std::vector<T>(const Arguments<U>&, Buffers&, CommandQueue&)>; + using Routine = std::function<StatusCode(const Arguments<U>&, const Buffers<T>&, Queue&)>; + using ResultGet = std::function<std::vector<T>(const Arguments<U>&, Buffers<T>&, Queue&)>; using ResultIndex = std::function<size_t(const Arguments<U>&, const size_t, const size_t)>; using ResultIterator = std::function<size_t(const Arguments<U>&)>; diff --git a/test/correctness/tester.cc b/test/correctness/tester.cc index 378968ed..002cb1a6 100644 --- a/test/correctness/tester.cc +++ b/test/correctness/tester.cc @@ -28,9 +28,9 @@ Tester<T,U>::Tester(int argc, char *argv[], const bool silent, const std::string &name, const std::vector<std::string> &options): help_("Options given/available:\n"), platform_(Platform(GetArgument(argc, argv, help_, kArgPlatform, size_t{0}))), - device_(Device(platform_, kDeviceType, GetArgument(argc, argv, help_, kArgDevice, size_t{0}))), + device_(Device(platform_, GetArgument(argc, argv, help_, kArgDevice, size_t{0}))), context_(Context(device_)), - queue_(CommandQueue(context_, device_)), + queue_(Queue(context_, device_)), full_test_(CheckArgument(argc, argv, help_, kArgFullTest)), error_log_{}, num_passed_{0}, @@ -339,11 +339,11 @@ template <> const std::vector<double2> GetExampleScalars(const bool full_test) { template <> bool PrecisionSupported<float>(const Device &) { return true; } template <> bool PrecisionSupported<float2>(const Device &) { return true; } template <> bool PrecisionSupported<double>(const Device &device) { - auto extensions = device.Extensions(); + auto extensions = device.Capabilities(); return (extensions.find(kKhronosDoublePrecision) == std::string::npos) ? false : true; } template <> bool PrecisionSupported<double2>(const Device &device) { - auto extensions = device.Extensions(); + auto extensions = device.Capabilities(); return (extensions.find(kKhronosDoublePrecision) == std::string::npos) ? false : true; } diff --git a/test/correctness/tester.h b/test/correctness/tester.h index 93515138..06f4afbe 100644 --- a/test/correctness/tester.h +++ b/test/correctness/tester.h @@ -36,9 +36,6 @@ template <typename T, typename U> class Tester { public: - // Types of devices to consider - const cl_device_type kDeviceType = CL_DEVICE_TYPE_ALL; - // Maximum number of test results printed on a single line static constexpr auto kResultsPerLine = size_t{64}; @@ -92,7 +89,7 @@ class Tester { Platform platform_; Device device_; Context context_; - CommandQueue queue_; + Queue queue_; // Whether or not to run the full test-suite or just a smoke test bool full_test_; |