summaryrefslogtreecommitdiff
path: root/test/correctness
diff options
context:
space:
mode:
authorCNugteren <web@cedricnugteren.nl>2015-09-18 15:25:20 +0200
committerCNugteren <web@cedricnugteren.nl>2015-09-18 15:25:20 +0200
commit4507ba4997cd546418eae0972c018073ac7b36aa (patch)
tree08e549a9e4f174a85eb7d9a8efd3735b1daae44a /test/correctness
parent42db8ea968d9d2972446aa4fd73515a3d7aa093e (diff)
Added first version of banded matrix-vector multiplication
Diffstat (limited to 'test/correctness')
-rw-r--r--test/correctness/testblas.h41
-rw-r--r--test/correctness/tester.cc2
2 files changed, 27 insertions, 16 deletions
diff --git a/test/correctness/testblas.h b/test/correctness/testblas.h
index 9e1d110c..d4e6f24b 100644
--- a/test/correctness/testblas.h
+++ b/test/correctness/testblas.h
@@ -49,6 +49,7 @@ class TestBlas: public Tester<T,U> {
const std::vector<size_t> kIncrements = { 1, 2, 7 };
const std::vector<size_t> kMatrixDims = { 7, 64 };
const std::vector<size_t> kMatrixVectorDims = { 61, 512 };
+ const std::vector<size_t> kBandSizes = { 4, 19 };
const std::vector<size_t> kOffsets = GetOffsets();
const std::vector<U> kAlphaValues = GetExampleScalars<U>(full_test_);
const std::vector<U> kBetaValues = GetExampleScalars<U>(full_test_);
@@ -121,6 +122,8 @@ void RunTests(int argc, char *argv[], const bool silent, const std::string &name
auto ms = std::vector<size_t>{args.m};
auto ns = std::vector<size_t>{args.n};
auto ks = std::vector<size_t>{args.k};
+ auto kus = std::vector<size_t>{args.ku};
+ auto kls = std::vector<size_t>{args.kl};
auto layouts = std::vector<Layout>{args.layout};
auto a_transposes = std::vector<Transpose>{args.a_transpose};
auto b_transposes = std::vector<Transpose>{args.b_transpose};
@@ -156,6 +159,8 @@ void RunTests(int argc, char *argv[], const bool silent, const std::string &name
if (option == kArgM) { ms = dimensions; }
if (option == kArgN) { ns = dimensions; }
if (option == kArgK) { ks = dimensions; }
+ if (option == kArgKU) { kus = tester.kBandSizes; }
+ if (option == kArgKL) { kls = tester.kBandSizes; }
if (option == kArgLayout) { layouts = tester.kLayouts; }
if (option == kArgATransp) { a_transposes = C::GetATransposes(tester.kTransposes); }
if (option == kArgBTransp) { b_transposes = C::GetBTransposes(tester.kTransposes); }
@@ -197,21 +202,25 @@ void RunTests(int argc, char *argv[], const bool silent, const std::string &name
for (auto &m: ms) { r_args.m = m;
for (auto &n: ns) { r_args.n = n;
for (auto &k: ks) { r_args.k = k;
- for (auto &x_inc: x_incs) { r_args.x_inc = x_inc;
- for (auto &x_offset: x_offsets) { r_args.x_offset = x_offset;
- for (auto &y_inc: y_incs) { r_args.y_inc = y_inc;
- for (auto &y_offset: y_offsets) { r_args.y_offset = y_offset;
- for (auto &a_ld: a_lds) { r_args.a_ld = a_ld;
- for (auto &a_offset: a_offsets) { r_args.a_offset = a_offset;
- for (auto &b_ld: b_lds) { r_args.b_ld = b_ld;
- for (auto &b_offset: b_offsets) { r_args.b_offset = b_offset;
- for (auto &c_ld: c_lds) { r_args.c_ld = c_ld;
- for (auto &c_offset: c_offsets) { r_args.c_offset = c_offset;
- for (auto &dot_offset: dot_offsets) { r_args.dot_offset = dot_offset;
- for (auto &alpha: alphas) { r_args.alpha = alpha;
- for (auto &beta: betas) { r_args.beta = beta;
- C::SetSizes(r_args);
- regular_test_vector.push_back(r_args);
+ for (auto &ku: kus) { r_args.ku = ku;
+ for (auto &kl: kls) { r_args.kl = kl;
+ for (auto &x_inc: x_incs) { r_args.x_inc = x_inc;
+ for (auto &x_offset: x_offsets) { r_args.x_offset = x_offset;
+ for (auto &y_inc: y_incs) { r_args.y_inc = y_inc;
+ for (auto &y_offset: y_offsets) { r_args.y_offset = y_offset;
+ for (auto &a_ld: a_lds) { r_args.a_ld = a_ld;
+ for (auto &a_offset: a_offsets) { r_args.a_offset = a_offset;
+ for (auto &b_ld: b_lds) { r_args.b_ld = b_ld;
+ for (auto &b_offset: b_offsets) { r_args.b_offset = b_offset;
+ for (auto &c_ld: c_lds) { r_args.c_ld = c_ld;
+ for (auto &c_offset: c_offsets) { r_args.c_offset = c_offset;
+ for (auto &dot_offset: dot_offsets) { r_args.dot_offset = dot_offset;
+ for (auto &alpha: alphas) { r_args.alpha = alpha;
+ for (auto &beta: betas) { r_args.beta = beta;
+ C::SetSizes(r_args);
+ regular_test_vector.push_back(r_args);
+ }
+ }
}
}
}
@@ -232,7 +241,7 @@ void RunTests(int argc, char *argv[], const bool silent, const std::string &name
// Creates the arguments vector for the invalid-buffer tests
auto invalid_test_vector = std::vector<Arguments<U>>{};
auto i_args = args;
- i_args.m = i_args.n = i_args.k = tester.kBufferSize;
+ i_args.m = i_args.n = i_args.k = i_args.kl = i_args.ku = tester.kBufferSize;
i_args.a_ld = i_args.b_ld = i_args.c_ld = tester.kBufferSize;
for (auto &x_size: x_sizes) { i_args.x_size = x_size;
for (auto &y_size: y_sizes) { i_args.y_size = y_size;
diff --git a/test/correctness/tester.cc b/test/correctness/tester.cc
index f792925e..b1a58102 100644
--- a/test/correctness/tester.cc
+++ b/test/correctness/tester.cc
@@ -132,6 +132,8 @@ void Tester<T,U>::TestEnd() {
if (o == kArgM) { fprintf(stdout, "%s=%lu ", kArgM, entry.args.m); }
if (o == kArgN) { fprintf(stdout, "%s=%lu ", kArgN, entry.args.n); }
if (o == kArgK) { fprintf(stdout, "%s=%lu ", kArgK, entry.args.k); }
+ if (o == kArgKU) { fprintf(stdout, "%s=%lu ", kArgKU, entry.args.ku); }
+ if (o == kArgKL) { fprintf(stdout, "%s=%lu ", kArgKL, entry.args.kl); }
if (o == kArgLayout) { fprintf(stdout, "%s=%d ", kArgLayout, entry.args.layout);}
if (o == kArgATransp) { fprintf(stdout, "%s=%d ", kArgATransp, entry.args.a_transpose);}
if (o == kArgBTransp) { fprintf(stdout, "%s=%d ", kArgBTransp, entry.args.b_transpose);}