summaryrefslogtreecommitdiff
path: root/src/tuning
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2016-05-13 20:49:34 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2016-05-13 20:49:34 +0200
commit120c31a30f933eea12d4dfffd4951fa22102ef5f (patch)
tree853aa6fae0522c9e92fce266c5fddb12a19dafd3 /src/tuning
parentf2ba75890c522b4fe1762bfeac3e08667cf9588a (diff)
Initial experimental version of the half-precision HAXPY routine
Diffstat (limited to 'src/tuning')
-rw-r--r--src/tuning/xaxpy.cc5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/tuning/xaxpy.cc b/src/tuning/xaxpy.cc
index 31aa6a8e..7f62b811 100644
--- a/src/tuning/xaxpy.cc
+++ b/src/tuning/xaxpy.cc
@@ -90,7 +90,7 @@ class TuneXaxpy {
std::vector<T> &, std::vector<T> &, std::vector<T> &,
std::vector<T> &) {
tuner.AddArgumentScalar(static_cast<int>(args.n));
- tuner.AddArgumentScalar(args.alpha);
+ tuner.AddArgumentScalar(static_cast<typename RealArg<T>::Type>(args.alpha));
tuner.AddArgumentInput(x_vec);
tuner.AddArgumentOutput(y_vec);
}
@@ -106,13 +106,14 @@ class TuneXaxpy {
} // namespace clblast
// Shortcuts to the clblast namespace
+using half = clblast::half;
using float2 = clblast::float2;
using double2 = clblast::double2;
// Main function (not within the clblast namespace)
int main(int argc, char *argv[]) {
switch(clblast::GetPrecision(argc, argv)) {
- case clblast::Precision::kHalf: throw std::runtime_error("Unsupported precision mode");
+ case clblast::Precision::kHalf: clblast::Tuner<clblast::TuneXaxpy<half>, half>(argc, argv); break;
case clblast::Precision::kSingle: clblast::Tuner<clblast::TuneXaxpy<float>, float>(argc, argv); break;
case clblast::Precision::kDouble: clblast::Tuner<clblast::TuneXaxpy<double>, double>(argc, argv); break;
case clblast::Precision::kComplexSingle: clblast::Tuner<clblast::TuneXaxpy<float2>, float2>(argc, argv); break;