From 49eb490ee1c60ed254eb1c501e18ebd9948e0ab5 Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Mon, 17 Feb 2020 22:07:51 +0100 Subject: Catches all exceptions of the tuners --- CHANGELOG | 1 + src/tuning/kernels/copy_fast.cpp | 20 +++++++++++--------- src/tuning/kernels/copy_pad.cpp | 20 +++++++++++--------- src/tuning/kernels/invert.cpp | 20 +++++++++++--------- src/tuning/kernels/transpose_fast.cpp | 20 +++++++++++--------- src/tuning/kernels/transpose_pad.cpp | 20 +++++++++++--------- src/tuning/kernels/xaxpy.cpp | 20 +++++++++++--------- src/tuning/kernels/xconvgemm.cpp | 6 ++++-- src/tuning/kernels/xdot.cpp | 8 +++++--- src/tuning/kernels/xgemm.cpp | 20 +++++++++++--------- src/tuning/kernels/xgemm_direct.cpp | 8 +++++--- src/tuning/kernels/xgemv.cpp | 10 ++++++---- src/tuning/kernels/xger.cpp | 20 +++++++++++--------- src/tuning/routines/xgemm.cpp | 20 +++++++++++--------- src/tuning/routines/xtrsv.cpp | 18 ++++++++++-------- 15 files changed, 130 insertions(+), 101 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7a468e7c..ac51ac58 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,5 +1,6 @@ Development (next version) - Implemented single-kernel version of convolution as GEMM +- Now catches all exceptions thrown by the tuners - Fixed a bug in ISAMIN kernel - Fixed an out-of-bounds read/write in the XHAD routine (thanks to etomzak) - Various minor fixes and enhancements diff --git a/src/tuning/kernels/copy_fast.cpp b/src/tuning/kernels/copy_fast.cpp index 13f7ef3c..44860f6e 100644 --- a/src/tuning/kernels/copy_fast.cpp +++ b/src/tuning/kernels/copy_fast.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::CopyGetTunerDefaults, clblast::CopyGetTunerSettings, clblast::CopyTestValidArguments, clblast::CopySetConstraints, clblast::CopyComputeLocalMemSize, clblast::CopySetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/copy_pad.cpp b/src/tuning/kernels/copy_pad.cpp index ffaed6ed..589900a9 100644 --- a/src/tuning/kernels/copy_pad.cpp +++ b/src/tuning/kernels/copy_pad.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::PadGetTunerDefaults, clblast::PadGetTunerSettings, clblast::PadTestValidArguments, clblast::PadSetConstraints, clblast::PadComputeLocalMemSize, clblast::PadSetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/invert.cpp b/src/tuning/kernels/invert.cpp index 3795da88..9b2c0467 100644 --- a/src/tuning/kernels/invert.cpp +++ b/src/tuning/kernels/invert.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::InvertGetTunerDefaults, clblast::InvertGetTunerSettings, clblast::InvertTestValidArguments, clblast::InvertSetConstraints, clblast::InvertComputeLocalMemSize, clblast::InvertSetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/transpose_fast.cpp b/src/tuning/kernels/transpose_fast.cpp index 024f7385..b48293ee 100644 --- a/src/tuning/kernels/transpose_fast.cpp +++ b/src/tuning/kernels/transpose_fast.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::TransposeGetTunerDefaults, clblast::TransposeGetTunerSettings, clblast::TransposeTestValidArguments, clblast::TransposeSetConstraints, clblast::TransposeComputeLocalMemSize, clblast::TransposeSetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/transpose_pad.cpp b/src/tuning/kernels/transpose_pad.cpp index ffaa252b..73c8ef27 100644 --- a/src/tuning/kernels/transpose_pad.cpp +++ b/src/tuning/kernels/transpose_pad.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::PadtransposeGetTunerDefaults, clblast::PadtransposeGetTunerSettings, clblast::PadtransposeTestValidArguments, clblast::PadtransposeSetConstraints, clblast::PadtransposeComputeLocalMemSize, clblast::PadtransposeSetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xaxpy.cpp b/src/tuning/kernels/xaxpy.cpp index 681876ea..e7f3b26a 100644 --- a/src/tuning/kernels/xaxpy.cpp +++ b/src/tuning/kernels/xaxpy.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::XaxpyGetTunerDefaults, clblast::XaxpyGetTunerSettings, clblast::XaxpyTestValidArguments, clblast::XaxpySetConstraints, clblast::XaxpyComputeLocalMemSize, clblast::XaxpySetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xconvgemm.cpp b/src/tuning/kernels/xconvgemm.cpp index 15dfe829..e9044279 100644 --- a/src/tuning/kernels/xconvgemm.cpp +++ b/src/tuning/kernels/xconvgemm.cpp @@ -31,8 +31,10 @@ void StartVariation(int argc, char *argv[]) { // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - StartVariation<1>(argc, argv); - return 0; + try { + StartVariation<1>(argc, argv); + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xdot.cpp b/src/tuning/kernels/xdot.cpp index a481f23b..bdd93067 100644 --- a/src/tuning/kernels/xdot.cpp +++ b/src/tuning/kernels/xdot.cpp @@ -34,9 +34,11 @@ void StartVariation(int argc, char *argv[]) { // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - StartVariation<1>(argc, argv); - StartVariation<2>(argc, argv); - return 0; + try { + StartVariation<1>(argc, argv); + StartVariation<2>(argc, argv); + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xgemm.cpp b/src/tuning/kernels/xgemm.cpp index dd907ba4..5a48a50d 100644 --- a/src/tuning/kernels/xgemm.cpp +++ b/src/tuning/kernels/xgemm.cpp @@ -33,15 +33,17 @@ void StartVariation(int argc, char *argv[]) { // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - printf("* (1/4) Tuning main GEMM kernel (GEMMK == 0) for fixed set of parameters\n\n"); - StartVariation<1>(argc, argv); - printf("* (2/4) Tuning main GEMM kernel (GEMMK == 0) for random parameters out of larger set\n\n"); - StartVariation<2>(argc, argv); - printf("* (3/4) Tuning secondary GEMM kernel (GEMMK == 1) for fixed set of parameters\n\n"); - StartVariation<11>(argc, argv); - printf("* (4/4) Tuning secondary GEMM kernel (GEMMK == 1) for random parameters out of larger set\n\n"); - StartVariation<12>(argc, argv); - return 0; + try { + printf("* (1/4) Tuning main GEMM kernel (GEMMK == 0) for fixed set of parameters\n\n"); + StartVariation<1>(argc, argv); + printf("* (2/4) Tuning main GEMM kernel (GEMMK == 0) for random parameters out of larger set\n\n"); + StartVariation<2>(argc, argv); + printf("* (3/4) Tuning secondary GEMM kernel (GEMMK == 1) for fixed set of parameters\n\n"); + StartVariation<11>(argc, argv); + printf("* (4/4) Tuning secondary GEMM kernel (GEMMK == 1) for random parameters out of larger set\n\n"); + StartVariation<12>(argc, argv); + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xgemm_direct.cpp b/src/tuning/kernels/xgemm_direct.cpp index 73c2217c..330e6d51 100644 --- a/src/tuning/kernels/xgemm_direct.cpp +++ b/src/tuning/kernels/xgemm_direct.cpp @@ -33,9 +33,11 @@ void StartVariation(int argc, char *argv[]) { // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - StartVariation<1>(argc, argv); - StartVariation<2>(argc, argv); - return 0; + try { + StartVariation<1>(argc, argv); + StartVariation<2>(argc, argv); + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xgemv.cpp b/src/tuning/kernels/xgemv.cpp index 6505a081..065f6b6f 100644 --- a/src/tuning/kernels/xgemv.cpp +++ b/src/tuning/kernels/xgemv.cpp @@ -33,10 +33,12 @@ void StartVariation(int argc, char *argv[]) { // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - StartVariation<1>(argc, argv); - StartVariation<2>(argc, argv); - StartVariation<3>(argc, argv); - return 0; + try { + StartVariation<1>(argc, argv); + StartVariation<2>(argc, argv); + StartVariation<3>(argc, argv); + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/kernels/xger.cpp b/src/tuning/kernels/xger.cpp index e4c9fc03..372d9d05 100644 --- a/src/tuning/kernels/xger.cpp +++ b/src/tuning/kernels/xger.cpp @@ -20,15 +20,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; - case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; - case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; - case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; - case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; + case clblast::Precision::kSingle: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; + case clblast::Precision::kDouble: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; + case clblast::Precision::kComplexSingle: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; + case clblast::Precision::kComplexDouble: clblast::Tuner(argc, argv, 0, clblast::XgerGetTunerDefaults, clblast::XgerGetTunerSettings, clblast::XgerTestValidArguments, clblast::XgerSetConstraints, clblast::XgerComputeLocalMemSize, clblast::XgerSetArguments); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/routines/xgemm.cpp b/src/tuning/routines/xgemm.cpp index 7d886ebf..f5c4569e 100644 --- a/src/tuning/routines/xgemm.cpp +++ b/src/tuning/routines/xgemm.cpp @@ -214,15 +214,17 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kHalf: clblast::TuneXgemm(argc, argv); break; - case clblast::Precision::kSingle: clblast::TuneXgemm(argc, argv); break; - case clblast::Precision::kDouble: clblast::TuneXgemm(argc, argv); break; - case clblast::Precision::kComplexSingle: clblast::TuneXgemm(argc, argv); break; - case clblast::Precision::kComplexDouble: clblast::TuneXgemm(argc, argv); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kHalf: clblast::TuneXgemm(argc, argv); break; + case clblast::Precision::kSingle: clblast::TuneXgemm(argc, argv); break; + case clblast::Precision::kDouble: clblast::TuneXgemm(argc, argv); break; + case clblast::Precision::kComplexSingle: clblast::TuneXgemm(argc, argv); break; + case clblast::Precision::kComplexDouble: clblast::TuneXgemm(argc, argv); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= diff --git a/src/tuning/routines/xtrsv.cpp b/src/tuning/routines/xtrsv.cpp index 7551d1f5..77252273 100644 --- a/src/tuning/routines/xtrsv.cpp +++ b/src/tuning/routines/xtrsv.cpp @@ -132,14 +132,16 @@ using double2 = clblast::double2; // Main function (not within the clblast namespace) int main(int argc, char *argv[]) { - const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); - switch(clblast::GetPrecision(command_line_args)) { - case clblast::Precision::kSingle: clblast::TuneXtrsv(argc, argv); break; - case clblast::Precision::kDouble: clblast::TuneXtrsv(argc, argv); break; - case clblast::Precision::kComplexSingle: clblast::TuneXtrsv(argc, argv); break; - case clblast::Precision::kComplexDouble: clblast::TuneXtrsv(argc, argv); break; - } - return 0; + try { + const auto command_line_args = clblast::RetrieveCommandLineArguments(argc, argv); + switch(clblast::GetPrecision(command_line_args)) { + case clblast::Precision::kSingle: clblast::TuneXtrsv(argc, argv); break; + case clblast::Precision::kDouble: clblast::TuneXtrsv(argc, argv); break; + case clblast::Precision::kComplexSingle: clblast::TuneXtrsv(argc, argv); break; + case clblast::Precision::kComplexDouble: clblast::TuneXtrsv(argc, argv); break; + } + return 0; + } catch (...) { return static_cast(clblast::DispatchException()); } } // ================================================================================================= -- cgit v1.2.3