summaryrefslogtreecommitdiff
path: root/inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp
diff options
context:
space:
mode:
authoropenvino-pushbot <openvino_pushbot@intel.com>2018-10-16 13:45:03 +0300
committeropenvino-pushbot <openvino_pushbot@intel.com>2018-10-16 13:45:03 +0300
commit866530fb047cd17af6bd2dbbde5f5cb35f876840 (patch)
tree91451785d290a2481d82ed8dfe175aade3a0f727 /inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp
parentc37d4661a27afb408a45f7752acea968032afcc0 (diff)
downloaddldt-866530fb047cd17af6bd2dbbde5f5cb35f876840.tar.gz
dldt-866530fb047cd17af6bd2dbbde5f5cb35f876840.tar.bz2
dldt-866530fb047cd17af6bd2dbbde5f5cb35f876840.zip
Publishing R3
Diffstat (limited to 'inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp')
-rw-r--r--inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp348
1 files changed, 348 insertions, 0 deletions
diff --git a/inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp b/inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp
new file mode 100644
index 000000000..ffdb41acf
--- /dev/null
+++ b/inference-engine/thirdparty/mkl-dnn/src/common/verbose.hpp
@@ -0,0 +1,348 @@
+/*******************************************************************************
+* Copyright 2018 Intel Corporation
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*******************************************************************************/
+
+#ifndef VERBOSE_HPP
+#define VERBOSE_HPP
+
+#include "mkldnn_debug.h"
+#include "c_types_map.hpp"
+#include "utils.hpp"
+#include "z_magic.hpp"
+
+namespace mkldnn {
+namespace impl {
+
+struct verbose_t {
+ int level;
+};
+
+const verbose_t *mkldnn_verbose();
+double get_msec();
+
+#if !defined(DISABLE_VERBOSE)
+#include <stdio.h>
+
+#define MKLDNN_VERBOSE_BUF_LEN 1024
+
+#define MKLDNN_VERBOSE_DAT_LEN 64
+#define MKLDNN_VERBOSE_AUX_LEN 384
+#define MKLDNN_VERBOSE_PRB_LEN 384
+
+#define DECL_DAT_AUX_PRB_STRS() \
+ char dat_str[MKLDNN_VERBOSE_PRB_LEN] = {'\0'}; MAYBE_UNUSED(dat_str); \
+ char aux_str[MKLDNN_VERBOSE_PRB_LEN] = {'\0'}; MAYBE_UNUSED(aux_str); \
+ char prb_str[MKLDNN_VERBOSE_PRB_LEN] = {'\0'}; MAYBE_UNUSED(prb_str)
+
+inline void verbose_templ(char *buffer, mkldnn_primitive_kind_t prim_kind,
+ const char *impl_str, mkldnn_prop_kind_t prop_kind,
+ const char *data_str, const char *aux_str, const char *prb_str) {
+ MAYBE_UNUSED(verbose_templ);
+ snprintf(buffer, MKLDNN_VERBOSE_BUF_LEN, "%s,%s,%s,%s,%s,%s",
+ mkldnn_prim_kind2str(prim_kind), impl_str,
+ mkldnn_prop_kind2str(prop_kind), data_str, aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_bnorm(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = s->src_pd()->desc()->format;
+ auto fmt_diff = s->is_bwd()
+ ? s->diff_src_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fdiff:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_diff));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN, "flags:%u", s->desc()->flags);
+
+ if (s->ndims() == 5)
+ {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%did%dih%diw%d", s->MB(), s->C(), s->D(), s->H(), s->W());
+ } else if (s->ndims() == 4) {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%dih%diw%d", s->MB(), s->C(), s->H(), s->W());
+ } else if (s->ndims() == 2) {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%d", s->MB(), s->C());
+ }
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_conv(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_src = (s->cdesc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd() : s->src_pd())->desc()->format;
+ auto fmt_wei = (s->cdesc()->prop_kind == prop_kind::backward_weights
+ ? s->diff_weights_pd(0) : s->weights_pd(0))->desc()->format;
+ auto fmt_bia = s->with_bias()
+ ? (s->cdesc()->prop_kind == prop_kind::backward_weights
+ ? s->diff_weights_pd(1) : s->weights_pd(1))->desc()->format
+ : memory_format::undef;
+ auto fmt_dst = (s->cdesc()->prop_kind == prop_kind::backward_data
+ || s->cdesc()->prop_kind == prop_kind::backward_weights
+ ? s->diff_dst_pd() : s->dst_pd())->desc()->format;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN,
+ "fsrc:%s fwei:%s fbia:%s fdst:%s",
+ mkldnn_fmt2str(fmt_src), mkldnn_fmt2str(fmt_wei),
+ mkldnn_fmt2str(fmt_bia), mkldnn_fmt2str(fmt_dst));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(s->cdesc()->alg_kind));
+
+ if (s->ndims() == 5) {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%d_g%dic%doc%d"
+ "_id%dod%dkd%dsd%ddd%dpd%d"
+ "_ih%doh%dkh%dsh%ddh%dph%d"
+ "_iw%dow%dkw%dsw%ddw%dpw%d",
+ s->MB(), s->G(), s->IC(), s->OC(),
+ s->ID(), s->OD(), s->KD(), s->KSD(), s->KDD(), s->padFront(),
+ s->IH(), s->OH(), s->KH(), s->KSH(), s->KDH(), s->padT(),
+ s->IW(), s->OW(), s->KW(), s->KSW(), s->KDW(), s->padL());
+ } else {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%d_g%dic%doc%d"
+ "_ih%doh%dkh%dsh%ddh%dph%d"
+ "_iw%dow%dkw%dsw%ddw%dpw%d",
+ s->MB(), s->G(), s->IC(), s->OC(),
+ s->IH(), s->OH(), s->KH(), s->KSH(), s->KDH(), s->padT(),
+ s->IW(), s->OW(), s->KW(), s->KSW(), s->KDW(), s->padL());
+ }
+
+ verbose_templ(buffer, s->kind(), s->name(), s->cdesc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_eltwise(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = s->src_pd()->desc()->format;
+ auto fmt_diff = s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fdiff:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_diff));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(s->desc()->alg_kind));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%dih%diw%d", s->MB(), s->C(), s->H(), s->W());
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_depthwise(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = s->src_pd()->desc()->format;
+ auto fmt_diff = s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fdiff:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_diff));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(s->desc()->alg_kind));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%dih%diw%d", s->MB(), s->C(), s->H(), s->W());
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_iprod(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_src = (s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd() : s->src_pd())->desc()->format;
+ auto fmt_wei = (s->desc()->prop_kind == prop_kind::backward_weights
+ ? s->diff_weights_pd(0) : s->weights_pd(0))->desc()->format;
+ auto fmt_bia = s->with_bias()
+ ? (s->desc()->prop_kind == prop_kind::backward_weights
+ ? s->diff_weights_pd(1) : s->weights_pd(1))->desc()->format
+ : memory_format::undef;
+ auto fmt_dst = (s->desc()->prop_kind == prop_kind::backward_data
+ || s->desc()->prop_kind == prop_kind::backward_weights
+ ? s->diff_dst_pd() : s->dst_pd())->desc()->format;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN,
+ "fsrc:%s fwei:%s fbia:%s fdst:%s",
+ mkldnn_fmt2str(fmt_src), mkldnn_fmt2str(fmt_wei),
+ mkldnn_fmt2str(fmt_bia), mkldnn_fmt2str(fmt_dst));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%doc%d", s->MB(), s->IC_total(), s->OC());
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_lrn(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = s->src_pd()->desc()->format;
+ auto fmt_diff = s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fdiff:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_diff));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(s->desc()->alg_kind));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%dih%diw%d", s->MB(), s->C(), s->H(), s->W());
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_mem(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ const auto i_md = s->input_pd(0)->desc();
+ const auto o_md = s->output_pd(0)->desc();
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN,
+ "in:%s_%s out:%s_%s",
+ mkldnn_dt2str(i_md->data_type), mkldnn_fmt2str(i_md->format),
+ mkldnn_dt2str(o_md->data_type), mkldnn_fmt2str(o_md->format));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN, "num:%d", s->n_inputs());
+
+ int l = 0;
+ for (int d = 0; d < o_md->ndims - 1; ++d)
+ l += snprintf(prb_str + l, MKLDNN_VERBOSE_PRB_LEN - l,
+ "%dx", o_md->dims[d]);
+ snprintf(prb_str + l, MKLDNN_VERBOSE_PRB_LEN - l,
+ "%d", o_md->dims[o_md->ndims - 1]);
+
+ verbose_templ(buffer, s->kind(), s->name(), prop_kind::undef, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_pool(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = (s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd() : s->src_pd())->desc()->format;
+ auto fmt_ws = s->workspace_pd()
+ ? s->workspace_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fws:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_ws));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(s->desc()->alg_kind));
+
+ if (s->is_3d())
+ {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%d_id%dod%dkd%dsd%dpd%d_ih%doh%dkh%dsh%dph%d_iw%dow%dkw%dsw%dpw%d",
+ s->MB(), s->C(),
+ s->ID(), s->OD(), s->KD(), s->KSD(), s->padFront(),
+ s->IH(), s->OH(), s->KH(), s->KSH(), s->padT(),
+ s->IW(), s->OW(), s->KW(), s->KSW(), s->padL());
+ } else {
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%d_ih%doh%dkh%dsh%dph%d_iw%dow%dkw%dsw%dpw%d",
+ s->MB(), s->C(),
+ s->IH(), s->OH(), s->KH(), s->KSH(), s->padT(),
+ s->IW(), s->OW(), s->KW(), s->KSW(), s->padL());
+ }
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_softmax(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = (s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd() : s->src_pd())->desc()->format;
+ auto fmt_diff = s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fdiff:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_diff));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "mb%dic%dih%diw%d", s->MB(), s->C(), s->H(), s->W());
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+/// @todo print meaningful data
+template <typename pd_t> static void init_info_rnn(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ alg_kind_t alg_kind = s->desc()->cell_desc.cell_kind;
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(alg_kind));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "l%dd%dmb%dt%d_ic%dsc%doc%d_wi%dws%d",
+ s->L(), s->D(), s->MB(), s->T(),
+ s->SLC(), s->DIC(), s->DIC(),
+ s->SLC(), s->SIC());
+
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+template <typename pd_t> static void init_info_roi_pooling(pd_t *s, char *buffer) {
+ DECL_DAT_AUX_PRB_STRS();
+
+ auto fmt_data = s->src_pd()->desc()->format;
+ auto fmt_diff = s->desc()->prop_kind == prop_kind::backward_data
+ ? s->diff_src_pd()->desc()->format : memory_format::undef;
+ snprintf(dat_str, MKLDNN_VERBOSE_DAT_LEN, "fdata:%s fdiff:%s",
+ mkldnn_fmt2str(fmt_data), mkldnn_fmt2str(fmt_diff));
+
+ snprintf(aux_str, MKLDNN_VERBOSE_AUX_LEN,
+ "alg:%s", mkldnn_alg_kind2str(s->desc()->alg_kind));
+
+ snprintf(prb_str, MKLDNN_VERBOSE_PRB_LEN,
+ "ph%dpw%dcs%f", s->pooledH(), s->pooledW(), s->spatialScale());
+ verbose_templ(buffer, s->kind(), s->name(), s->desc()->prop_kind, dat_str,
+ aux_str, prb_str);
+}
+
+#else /* !defined(DISABLE_VERBOSE) */
+#define MKLDNN_VERBOSE_BUF_LEN 1
+
+#define DEFINE_STUB(name) \
+ template <typename pd_t> \
+ static void CONCAT2(init_info_, name)(pd_t *s, char *buffer) \
+ { UNUSED(s); UNUSED(buffer); }
+
+DEFINE_STUB(bnorm);
+DEFINE_STUB(conv);
+DEFINE_STUB(eltwise);
+DEFINE_STUB(depthwise);
+DEFINE_STUB(iprod);
+DEFINE_STUB(lrn);
+DEFINE_STUB(mem);
+DEFINE_STUB(pool);
+DEFINE_STUB(softmax);
+DEFINE_STUB(rnn);
+DEFINE_STUB(roi_pooling);
+#undef DEFINE_STUB
+#endif /* !defined(DISABLE_VERBOSE) */
+
+}
+}
+
+#endif