From 032e3b0cc00a15dd2af8b4fb82d261eb7b086e26 Mon Sep 17 00:00:00 2001 From: Koichi Akabe Date: Mon, 12 Nov 2018 10:12:07 +0900 Subject: Add kernel_mode option to im2col, col2im, and convgemm functions --- src/utilities/utilities.cpp | 8 ++++++++ src/utilities/utilities.hpp | 2 ++ 2 files changed, 10 insertions(+) (limited to 'src/utilities') diff --git a/src/utilities/utilities.cpp b/src/utilities/utilities.cpp index a6cd82e7..a0e89c98 100644 --- a/src/utilities/utilities.cpp +++ b/src/utilities/utilities.cpp @@ -175,6 +175,13 @@ std::string ToString(Precision value) { } } template <> +std::string ToString(KernelMode value) { + switch(value) { + case KernelMode::kCrossCorrelation: return ToString(static_cast(value))+" (cross-correlation)"; + case KernelMode::kConvolution: return ToString(static_cast(value))+" (convolution)"; + } +} +template <> std::string ToString(StatusCode value) { return std::to_string(static_cast(value)); } @@ -281,6 +288,7 @@ template Side GetArgument(const std::vector&, std::string&, c template Triangle GetArgument(const std::vector&, std::string&, const std::string&, const Triangle); template Diagonal GetArgument(const std::vector&, std::string&, const std::string&, const Diagonal); template Precision GetArgument(const std::vector&, std::string&, const std::string&, const Precision); +template KernelMode GetArgument(const std::vector&, std::string&, const std::string&, const KernelMode); // ================================================================================================= diff --git a/src/utilities/utilities.hpp b/src/utilities/utilities.hpp index fcc1c57f..23486d35 100644 --- a/src/utilities/utilities.hpp +++ b/src/utilities/utilities.hpp @@ -69,6 +69,7 @@ constexpr auto kArgBTransp = "transB"; constexpr auto kArgSide = "side"; constexpr auto kArgTriangle = "triangle"; constexpr auto kArgDiagonal = "diagonal"; +constexpr auto kArgKernelMode = "kernel_mode"; constexpr auto kArgXInc = "incx"; constexpr auto kArgYInc = "incy"; constexpr auto kArgXOffset = "offx"; @@ -183,6 +184,7 @@ struct Arguments { Side side = Side::kLeft; Triangle triangle = Triangle::kUpper; Diagonal diagonal = Diagonal::kUnit; + KernelMode kernel_mode = KernelMode::kCrossCorrelation; size_t x_inc = 1; size_t y_inc = 1; size_t x_offset = 0; -- cgit v1.2.3