@@ -55,6 +55,36 @@ inline void verbose_templ(char *buffer, mkldnn_primitive_kind_t prim_kind,
5555 mkldnn_prop_kind2str (prop_kind), data_str, aux_str, prb_str);
5656}
5757
58+ inline void format_mem_desc_str_generic (char *str, int len,
59+ const memory_desc_t *md) {
60+ auto ndims = md->ndims ;
61+ auto dims = md->dims ;
62+ int l = 0 ;
63+ for (int d = 0 ; d < ndims - 1 ; ++d)
64+ l += snprintf (str + l, len - l, " %dx" , dims[d]);
65+ snprintf (str + l, len - l, " %d" , dims[ndims - 1 ]);
66+ }
67+
68+ // XXX: Outputs strings corresponding to memory formats used for data tensors.
69+ inline void format_mem_desc_str (char *str, int len, const memory_desc_t *md) {
70+ auto ndims = md->ndims ;
71+ auto dims = md->dims ;
72+ if (ndims == 1 )
73+ snprintf (str, len, " x%d" , dims[0 ]);
74+ else if (ndims == 2 )
75+ snprintf (str, len, " mb%dic%d" , dims[0 ], dims[1 ]);
76+ else if (ndims == 3 )
77+ snprintf (str, len, " mb%dic%diw%d" , dims[0 ], dims[1 ], dims[2 ]);
78+ else if (ndims == 4 )
79+ snprintf (str, len, " mb%dic%dih%diw%d" ,
80+ dims[0 ], dims[1 ], dims[2 ], dims[3 ]);
81+ else if (ndims == 5 )
82+ snprintf (str, len, " mb%dic%did%dih%diw%d" ,
83+ dims[0 ], dims[1 ], dims[2 ], dims[3 ], dims[4 ]);
84+ else
85+ format_mem_desc_str_generic (str, len, md);
86+ }
87+
5888template <typename pd_t > static void init_info_bnorm (pd_t *s, char *buffer) {
5989 DECL_DAT_AUX_PRB_STRS ();
6090
@@ -66,17 +96,7 @@ template <typename pd_t> static void init_info_bnorm(pd_t *s, char *buffer) {
6696
6797 snprintf (aux_str, MKLDNN_VERBOSE_AUX_LEN, " flags:%u" , s->desc ()->flags );
6898
69- if (s->ndims () == 5 )
70- {
71- snprintf (prb_str, MKLDNN_VERBOSE_PRB_LEN,
72- " mb%dic%did%dih%diw%d" , s->MB (), s->C (), s->D (), s->H (), s->W ());
73- } else if (s->ndims () == 4 ) {
74- snprintf (prb_str, MKLDNN_VERBOSE_PRB_LEN,
75- " mb%dic%dih%diw%d" , s->MB (), s->C (), s->H (), s->W ());
76- } else if (s->ndims () == 2 ) {
77- snprintf (prb_str, MKLDNN_VERBOSE_PRB_LEN,
78- " mb%dic%d" , s->MB (), s->C ());
79- }
99+ format_mem_desc_str (prb_str, MKLDNN_VERBOSE_PRB_LEN, s->src_pd ()->desc ());
80100
81101 verbose_templ (buffer, s->kind (), s->name (), s->desc ()->prop_kind , dat_str,
82102 aux_str, prb_str);
@@ -140,12 +160,7 @@ template <typename pd_t> static void init_info_shuffle(pd_t *s, char *buffer) {
140160 snprintf (aux_str, MKLDNN_VERBOSE_AUX_LEN, " axis:%d group_size:%d" ,
141161 s->axis (), s->group_size ());
142162
143- int l = 0 ;
144- for (int d = 0 ; d < md->ndims - 1 ; ++d)
145- l += snprintf (prb_str + l, MKLDNN_VERBOSE_PRB_LEN - l,
146- " %dx" , md->dims [d]);
147- snprintf (prb_str + l, MKLDNN_VERBOSE_PRB_LEN - l,
148- " %d" , md->dims [md->ndims - 1 ]);
163+ format_mem_desc_str_generic (prb_str, MKLDNN_VERBOSE_PRB_LEN, md);
149164
150165 verbose_templ (buffer, s->kind (), s->name (), s->desc ()->prop_kind , dat_str,
151166 aux_str, prb_str);
@@ -163,8 +178,7 @@ template <typename pd_t> static void init_info_eltwise(pd_t *s, char *buffer) {
163178 snprintf (aux_str, MKLDNN_VERBOSE_AUX_LEN,
164179 " alg:%s" , mkldnn_alg_kind2str (s->desc ()->alg_kind ));
165180
166- snprintf (prb_str, MKLDNN_VERBOSE_PRB_LEN,
167- " mb%dic%dih%diw%d" , s->MB (), s->C (), s->H (), s->W ());
181+ format_mem_desc_str (prb_str, MKLDNN_VERBOSE_PRB_LEN, s->src_pd ()->desc ());
168182
169183 verbose_templ (buffer, s->kind (), s->name (), s->desc ()->prop_kind , dat_str,
170184 aux_str, prb_str);
@@ -208,8 +222,7 @@ template <typename pd_t> static void init_info_lrn(pd_t *s, char *buffer) {
208222 snprintf (aux_str, MKLDNN_VERBOSE_AUX_LEN,
209223 " alg:%s" , mkldnn_alg_kind2str (s->desc ()->alg_kind ));
210224
211- snprintf (prb_str, MKLDNN_VERBOSE_PRB_LEN,
212- " mb%dic%dih%diw%d" , s->MB (), s->C (), s->H (), s->W ());
225+ format_mem_desc_str (prb_str, MKLDNN_VERBOSE_PRB_LEN, s->src_pd ()->desc ());
213226
214227 verbose_templ (buffer, s->kind (), s->name (), s->desc ()->prop_kind , dat_str,
215228 aux_str, prb_str);
@@ -227,12 +240,7 @@ template <typename pd_t> static void init_info_mem(pd_t *s, char *buffer) {
227240
228241 snprintf (aux_str, MKLDNN_VERBOSE_AUX_LEN, " num:%d" , s->n_inputs ());
229242
230- int l = 0 ;
231- for (int d = 0 ; d < o_md->ndims - 1 ; ++d)
232- l += snprintf (prb_str + l, MKLDNN_VERBOSE_PRB_LEN - l,
233- " %dx" , o_md->dims [d]);
234- snprintf (prb_str + l, MKLDNN_VERBOSE_PRB_LEN - l,
235- " %d" , o_md->dims [o_md->ndims - 1 ]);
243+ format_mem_desc_str_generic (prb_str, MKLDNN_VERBOSE_PRB_LEN, o_md);
236244
237245 verbose_templ (buffer, s->kind (), s->name (), prop_kind::undef, dat_str,
238246 aux_str, prb_str);
@@ -274,15 +282,15 @@ template <typename pd_t> static void init_info_pool(pd_t *s, char *buffer) {
274282template <typename pd_t > static void init_info_softmax (pd_t *s, char *buffer) {
275283 DECL_DAT_AUX_PRB_STRS ();
276284
277- auto fmt_data = (s->desc ()->prop_kind == prop_kind::backward_data
278- ? s->diff_src_pd () : s->src_pd ())->desc ()->format ;
285+ auto md = (s->desc ()->prop_kind == prop_kind::backward_data
286+ ? s->diff_src_pd () : s->src_pd ())->desc ();
287+ auto fmt_data = md->format ;
279288 auto fmt_diff = s->desc ()->prop_kind == prop_kind::backward_data
280289 ? s->diff_src_pd ()->desc ()->format : memory_format::undef;
281290 snprintf (dat_str, MKLDNN_VERBOSE_DAT_LEN, " fdata:%s fdiff:%s" ,
282291 mkldnn_fmt2str (fmt_data), mkldnn_fmt2str (fmt_diff));
283292
284- snprintf (prb_str, MKLDNN_VERBOSE_PRB_LEN,
285- " mb%dic%dih%diw%d" , s->MB (), s->C (), s->H (), s->W ());
293+ format_mem_desc_str (prb_str, MKLDNN_VERBOSE_PRB_LEN, md);
286294
287295 verbose_templ (buffer, s->kind (), s->name (), s->desc ()->prop_kind , dat_str,
288296 aux_str, prb_str);
0 commit comments