Deep Neural Network Library (DNNL)  1.90.1
Performance library for Deep Learning
dnnl_types.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright 2016-2019 Intel Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *******************************************************************************/
16 
19 
20 #ifndef DNNL_TYPES_H
21 #define DNNL_TYPES_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 
28 #include <stddef.h>
29 #include <stdint.h>
31 
40 
42 typedef struct {
43  int major;
44  int minor;
45  int patch;
46  const char *hash;
48 
50 typedef enum {
52  dnnl_success = 0,
66 
68 typedef enum {
72  dnnl_f16 = 1,
74  dnnl_bf16 = 2,
76  dnnl_f32 = 3,
78  dnnl_s32 = 4,
80  dnnl_s8 = 5,
82  dnnl_u8 = 6,
84 
86 typedef enum {
101 
170 typedef enum {
176 
177  // Semantic agnostic section
178  // The physical order of dimensions is defined by the permutation of the
179  // characters, assuming that ab..z defines the natural order.
180 
181  // Plain formats
182 
188  dnnl_abcdef,
189 
190  // Permuted plain formats
191 
206  dnnl_decab,
207 
208  // Opaque blocked formats
209 
210  dnnl_Abc16a,
211  dnnl_ABc16a16b,
213  dnnl_aBc16b,
214  dnnl_ABc16b16a,
215  dnnl_Abc4a,
217  dnnl_aBc4b,
218  dnnl_ABc4b16a4b,
219  dnnl_ABc4b4a,
220  dnnl_ABc8a16b2a,
221  dnnl_ABc8a8b,
223  dnnl_aBc8b,
224  dnnl_ABc8b16a2b,
225  dnnl_BAc8a16b2a,
226  dnnl_ABc8b8a,
227  dnnl_Abcd16a,
228  dnnl_ABcd16a16b,
229  dnnl_ABcd32a32b,
231  dnnl_aBcd16b,
232  dnnl_ABcd16b16a,
233  dnnl_aBCd16b16c,
234  dnnl_aBCd16c16b,
235  dnnl_Abcd4a,
237  dnnl_aBcd4b,
238  dnnl_ABcd4b16a4b,
239  dnnl_ABcd4b4a,
240  dnnl_aBCd4c16b4c,
241  dnnl_aBCd4c4b,
242  dnnl_ABcd8a16b2a,
243  dnnl_ABcd8a8b,
245  dnnl_aBcd8b,
246  dnnl_ABcd8b16a2b,
247  dnnl_aBCd8b16c2b,
248  dnnl_BAcd8a16b2a,
251  dnnl_aBCd8b8c,
252  dnnl_aBCd8c16b2c,
253  dnnl_ABcde8a16b2a,
254  dnnl_aCBd8b16c2b,
255  dnnl_aBCd8c8b,
256  dnnl_Abcde16a,
257  dnnl_ABcde16a16b,
258  dnnl_BAcde8a16b2a,
261  dnnl_ABcde16b16a,
262  dnnl_aBCde16b16c,
263  dnnl_aBCde16c16b,
264  dnnl_aBCde2c8b4c,
265  dnnl_Abcde4a,
267  dnnl_aBcde4b,
268  dnnl_ABcde4b4a,
269  dnnl_aBCde4b4c,
270  dnnl_aBCde4c16b4c,
271  dnnl_aBCde4c4b,
272  dnnl_Abcde8a,
273  dnnl_ABcde8a8b,
274  dnnl_BAcde16b16a,
276  dnnl_aBcde8b,
277  dnnl_ABcde8b16a2b,
278  dnnl_aBCde8b16c2b,
279  dnnl_aCBde8b16c2b,
280  dnnl_ABcde8b8a,
281  dnnl_aBCde8b8c,
282  dnnl_ABcd4a8b8a4b,
283  dnnl_ABcd2a8b8a2b,
284  dnnl_aBCde4b8c8b4c,
285  dnnl_aBCde2b8c8b2c,
286  dnnl_aBCde8c16b2c,
287  dnnl_aBCde8c8b,
290  dnnl_aBCdef16b16c,
291  dnnl_aBCdef16c16b,
294  dnnl_aBCdef4c4b,
295  dnnl_aBCdef8b8c,
296  dnnl_aBCdef8c16b2c,
297  dnnl_aBCdef8b16c2b,
298  dnnl_aCBdef8b16c2b,
299  dnnl_aBCdef8c8b,
300  dnnl_aBdc16b,
301  dnnl_aBdc4b,
302  dnnl_aBdc8b,
303  dnnl_aBdec16b,
304  dnnl_aBdec32b,
305  dnnl_aBdec4b,
306  dnnl_aBdec8b,
307  dnnl_aBdefc16b,
308  dnnl_aCBdef16c16b,
309  dnnl_aBdefc4b,
310  dnnl_aBdefc8b,
311  dnnl_Abcdef16a,
312  dnnl_Acb16a,
313  dnnl_Acb4a,
314  dnnl_Acb8a,
315  dnnl_aCBd16b16c,
316  dnnl_aCBd16c16b,
317  dnnl_aCBde16b16c,
318  dnnl_aCBde16c16b,
319  dnnl_Acdb16a,
320  dnnl_Acdb32a,
321  dnnl_Acdb4a,
322  dnnl_Acdb8a,
323  dnnl_Acdeb16a,
324  dnnl_Acdeb4a,
325  dnnl_Acdeb8a,
326  dnnl_BAc16a16b,
327  dnnl_BAc16b16a,
328  dnnl_BAcd16a16b,
329  dnnl_BAcd16b16a,
330 
334 
335  // Aliases
336 
338  dnnl_x = dnnl_a,
340  dnnl_nc = dnnl_ab,
342  dnnl_cn = dnnl_ba,
344  dnnl_tn = dnnl_ab,
346  dnnl_nt = dnnl_ba,
348  dnnl_ncw = dnnl_abc,
350  dnnl_nwc = dnnl_acb,
361 
363  dnnl_oi = dnnl_ab,
365  dnnl_io = dnnl_ba,
367  dnnl_oiw = dnnl_abc,
369  dnnl_owi = dnnl_acb,
371  dnnl_wio = dnnl_cba,
373  dnnl_iwo = dnnl_bca,
392 
403 
405  dnnl_tnc = dnnl_abc,
407  dnnl_ntc = dnnl_bac,
432 
433  // Opaque data types, are not to be used explicitly
434 
435  // data
436 
464  dnnl_NCw16n16c = dnnl_ABc16a16b,
465  dnnl_NCdhw16n16c = dnnl_ABcde16a16b,
466  dnnl_NChw16n16c = dnnl_ABcd16a16b,
467  dnnl_NChw32n32c = dnnl_ABcd32a32b,
468 
469  // weights, 3D
470  dnnl_IOw16o16i = dnnl_BAc16a16b,
471  dnnl_IOw16i16o = dnnl_BAc16b16a,
472  dnnl_OIw16i16o = dnnl_ABc16b16a,
473  dnnl_OIw16o16i = dnnl_ABc16a16b,
474  dnnl_Oiw16o = dnnl_Abc16a,
475  dnnl_OIw4i16o4i = dnnl_ABc4b16a4b,
476  dnnl_OIw4i4o = dnnl_ABc4b4a,
477  dnnl_Oiw4o = dnnl_Abc4a,
478  dnnl_OIw8i16o2i = dnnl_ABc8b16a2b,
479  dnnl_OIw8i8o = dnnl_ABc8b8a,
480  dnnl_OIw8o16i2o = dnnl_ABc8a16b2a,
481  dnnl_IOw8o16i2o = dnnl_BAc8a16b2a,
482  dnnl_OIw8o8i = dnnl_ABc8a8b,
483  dnnl_Owi16o = dnnl_Acb16a,
484  dnnl_Owi4o = dnnl_Acb4a,
485  dnnl_Owi8o = dnnl_Acb8a,
486 
487  // weights, 4D
488  dnnl_IOhw16i16o = dnnl_BAcd16b16a,
489  dnnl_IOhw16o16i = dnnl_BAcd16a16b,
490  dnnl_Ohwi16o = dnnl_Acdb16a,
491  dnnl_Ohwi32o = dnnl_Acdb32a,
492  dnnl_Ohwi4o = dnnl_Acdb4a,
493  dnnl_Ohwi8o = dnnl_Acdb8a,
494  dnnl_OIhw16i16o = dnnl_ABcd16b16a,
495  dnnl_OIhw16o16i = dnnl_ABcd16a16b,
496  dnnl_Oihw16o = dnnl_Abcd16a,
497  dnnl_OIhw4i16o4i = dnnl_ABcd4b16a4b,
498  dnnl_OIhw4i4o = dnnl_ABcd4b4a,
499  dnnl_Oihw4o = dnnl_Abcd4a,
500  dnnl_OIhw8i16o2i = dnnl_ABcd8b16a2b,
501  dnnl_OIhw8i8o = dnnl_ABcd8b8a,
502  dnnl_OIhw8o16i2o = dnnl_ABcd8a16b2a,
503  dnnl_IOhw8o16i2o = dnnl_BAcd8a16b2a,
504  dnnl_OIhw8o8i = dnnl_ABcd8a8b,
505 
506  // weights, 5D
507  dnnl_Odhwi16o = dnnl_Acdeb16a,
508  dnnl_Odhwi4o = dnnl_Acdeb4a,
509  dnnl_Odhwi8o = dnnl_Acdeb8a,
510  dnnl_OIdhw16i16o = dnnl_ABcde16b16a,
511  dnnl_OIdhw16o16i = dnnl_ABcde16a16b,
512  dnnl_Oidhw16o = dnnl_Abcde16a,
513  dnnl_OIdhw4i4o = dnnl_ABcde4b4a,
514  dnnl_Oidhw4o = dnnl_Abcde4a,
515  dnnl_OIdhw8i16o2i = dnnl_ABcde8b16a2b,
516  dnnl_OIdhw8i8o = dnnl_ABcde8b8a,
517  dnnl_OIdhw8o16i2o = dnnl_ABcde8a16b2a,
518  dnnl_IOdhw8o16i2o = dnnl_BAcde8a16b2a,
519  dnnl_OIdhw8o8i = dnnl_ABcde8a8b,
520  dnnl_IOdhw16i16o = dnnl_BAcde16b16a,
521 
522  // weights w/ groups, 3D
523  dnnl_Goiw16g = dnnl_Abcd16a,
524  dnnl_gIOw16o16i = dnnl_aCBd16b16c,
525  dnnl_gIOw16i16o = dnnl_aCBd16c16b,
526  dnnl_gOIw16i16o = dnnl_aBCd16c16b,
527  dnnl_gOIw16o16i = dnnl_aBCd16b16c,
528  dnnl_gOiw16o = dnnl_aBcd16b,
529  dnnl_gOIw4i16o4i = dnnl_aBCd4c16b4c,
530  dnnl_gOIw4i4o = dnnl_aBCd4c4b,
531  dnnl_gOiw4o = dnnl_aBcd4b,
532  dnnl_gOIw8i16o2i = dnnl_aBCd8c16b2c,
533  dnnl_gOIw8i8o = dnnl_aBCd8c8b,
534  dnnl_gOIw8o16i2o = dnnl_aBCd8b16c2b,
535  dnnl_gIOw8o16i2o = dnnl_aCBd8b16c2b,
536  dnnl_gOIw8o8i = dnnl_aBCd8b8c,
537  dnnl_gOwi16o = dnnl_aBdc16b,
538  dnnl_gOwi4o = dnnl_aBdc4b,
539  dnnl_gOwi8o = dnnl_aBdc8b,
540 
541  // weights w/ groups, 4D
542  dnnl_gIOhw16i16o = dnnl_aCBde16c16b,
543  dnnl_gIOhw16o16i = dnnl_aCBde16b16c,
544  dnnl_gOhwi16o = dnnl_aBdec16b,
545  dnnl_gOhwi32o = dnnl_aBdec32b,
546  dnnl_gOhwi4o = dnnl_aBdec4b,
547  dnnl_gOhwi8o = dnnl_aBdec8b,
548  dnnl_Goihw16g = dnnl_Abcde16a,
549  dnnl_gOIhw16i16o = dnnl_aBCde16c16b,
550  dnnl_gOIhw16o16i = dnnl_aBCde16b16c,
551  dnnl_gOihw16o = dnnl_aBcde16b,
552  dnnl_gOIhw2i8o4i = dnnl_aBCde2c8b4c,
553  dnnl_gOIhw4i16o4i = dnnl_aBCde4c16b4c,
554  dnnl_gOIhw4i4o = dnnl_aBCde4c4b,
555  dnnl_gOIhw4o4i = dnnl_aBCde4b4c,
556  dnnl_gOihw4o = dnnl_aBcde4b,
557  dnnl_Goihw8g = dnnl_Abcde8a,
558  dnnl_gOIhw8i16o2i = dnnl_aBCde8c16b2c,
559  dnnl_gOIhw8i8o = dnnl_aBCde8c8b,
560  dnnl_gOIhw8o16i2o = dnnl_aBCde8b16c2b,
561  dnnl_gIOhw8o16i2o = dnnl_aCBde8b16c2b,
562  dnnl_gOIhw8o8i = dnnl_aBCde8b8c,
563 
564  dnnl_OIhw4o8i8o4i = dnnl_ABcd4a8b8a4b,
565  dnnl_OIhw2o8i8o2i = dnnl_ABcd2a8b8a2b,
566  dnnl_gOIhw4o8i8o4i = dnnl_aBCde4b8c8b4c,
567  dnnl_gOIhw2o8i8o2i = dnnl_aBCde2b8c8b2c,
568 
569  // weights w/ groups, 6D
570  dnnl_gIOdhw16i16o = dnnl_aCBdef16c16b,
571  dnnl_gOdhwi16o = dnnl_aBdefc16b,
572  dnnl_gOdhwi4o = dnnl_aBdefc4b,
573  dnnl_gOdhwi8o = dnnl_aBdefc8b,
574  dnnl_gOIdhw16i16o = dnnl_aBCdef16c16b,
575  dnnl_gOIdhw16o16i = dnnl_aBCdef16b16c,
576  dnnl_gOidhw16o = dnnl_aBcdef16b,
577  dnnl_gOIdhw4i4o = dnnl_aBCdef4c4b,
578  dnnl_gOidhw4o = dnnl_aBcdef4b,
579  dnnl_gOIdhw8i16o2i = dnnl_aBCdef8c16b2c,
580  dnnl_gOIdhw8i8o = dnnl_aBCdef8c8b,
581  dnnl_gOIdhw8o16i2o = dnnl_aBCdef8b16c2b,
582  dnnl_gIOdhw8o16i2o = dnnl_aCBdef8b16c2b,
583  dnnl_gOIdhw8o8i = dnnl_aBCdef8b8c,
584  dnnl_Goidhw16g = dnnl_Abcdef16a,
586 
588 typedef enum {
589  // TODO: suggest renames
604  dnnl_backward = 128,
606  dnnl_backward_data = 160,
608  dnnl_backward_weights = 192,
610  dnnl_backward_bias = 193,
612 
615 typedef enum {
619  dnnl_reorder,
621  dnnl_shuffle,
623  dnnl_concat,
625  dnnl_sum,
631  dnnl_eltwise,
633  dnnl_softmax,
635  dnnl_pooling,
637  dnnl_lrn,
645  dnnl_rnn,
647  dnnl_gemm,
649  dnnl_binary,
651 
653 typedef enum {
654  dnnl_alg_kind_undef,
660  dnnl_convolution_auto = 0x3,
666  dnnl_eltwise_relu = 0x1f,
668  dnnl_eltwise_tanh = 0x2f,
670  dnnl_eltwise_elu = 0x3f,
672  dnnl_eltwise_square = 0x4f,
674  dnnl_eltwise_abs = 0x5f,
676  dnnl_eltwise_sqrt = 0x6f,
678  dnnl_eltwise_linear = 0x7f,
682  dnnl_eltwise_soft_relu = 0x9f,
684  dnnl_eltwise_logistic = 0xaf,
686  dnnl_eltwise_exp = 0xbf,
691  dnnl_eltwise_gelu = 0xcf,
693  dnnl_eltwise_swish = 0xdf,
695  dnnl_pooling_max = 0x1ff,
700  dnnl_pooling_avg = dnnl_pooling_avg_exclude_padding,
702  dnnl_lrn_across_channels = 0xaff,
704  dnnl_lrn_within_channel = 0xbff,
706  dnnl_vanilla_rnn = 0x1fff,
708  dnnl_vanilla_lstm = 0x2fff,
710  dnnl_vanilla_gru = 0x3fff,
718  dnnl_lbr_gru = 0x4fff,
720  dnnl_binary_add = 0x1fff0,
722  dnnl_binary_mul = 0x1fff1,
724 
726 typedef enum {
738  dnnl_use_global_stats = 0x1U,
739 
751  dnnl_use_scaleshift = 0x2U,
752 
764  dnnl_fuse_norm_relu = 0x4U,
766 
768 
771 
775 #define DNNL_MAX_NDIMS 12
776 
778 typedef int64_t dnnl_dim_t;
779 
782 
786 typedef struct {
789  dnnl_dims_t strides;
790  // Innermost section
791  // ASSUMPTION: the innermost blocks are always dense
793  int inner_nblks;
795  dnnl_dims_t inner_blks;
798  dnnl_dims_t inner_idxs;
800 
802 typedef enum {
804  dnnl_wino_undef = 0,
805  // Tensors of weights for 2x3 winograd convolutions.
809  // Tensor of weights for 4x3 convolution.
812 
814 typedef struct {
815  dnnl_wino_memory_format_t wino_format;
816  int r;
817  int alpha;
818  int ic;
819  int oc;
820  int ic_block;
821  int oc_block;
822  int ic2_block;
823  int oc2_block;
824  float adj_scale;
825  size_t size;
827 
828 typedef enum {
829  dnnl_packed_format_undef = 0,
830  dnnl_ldigo_p,
831  dnnl_ldgoi_p
832 } dnnl_rnn_packed_memory_format_t;
833 
836 #define DNNL_RNN_MAX_N_PARTS 4
837 
839 typedef struct {
840  dnnl_rnn_packed_memory_format_t format;
841  int n_parts;
842  int n;
843  int ldb;
844  int parts[DNNL_RNN_MAX_N_PARTS];
845  size_t part_pack_size[DNNL_RNN_MAX_N_PARTS];
846  unsigned pack_part[DNNL_RNN_MAX_N_PARTS];
847  size_t offset_compensation;
848  size_t size;
849  char reserved[200];
851 
853 typedef enum {
854  dnnl_memory_extra_flag_none = 0x0U,
863  dnnl_memory_extra_flag_scale_adjust = 0x2U,
864  dnnl_memory_extra_flag_gpu_rnn_u8s8_compensation = 0x4U,
866 
868 typedef struct {
871  uint64_t flags;
873  int compensation_mask;
875  float scale_adjust;
877  char reserved[64];
879 
884 typedef struct {
886  int ndims;
901  dnnl_dims_t dims;
902 
904  dnnl_data_type_t data_type;
905 
907  dnnl_dims_t padded_dims;
908 
911  dnnl_dims_t padded_offsets;
912 
915  dnnl_dim_t offset0;
916 
918  dnnl_format_kind_t format_kind;
919  union {
922  dnnl_blocking_desc_t blocking;
924  dnnl_wino_desc_t wino_desc;
926  dnnl_rnn_packed_desc_t rnn_packed_desc;
927  // ... other descriptions possible
928  } format_desc;
929 
932 
935 struct dnnl_memory;
936 
938 typedef struct dnnl_memory *dnnl_memory_t;
939 
941 typedef const struct dnnl_memory *const_dnnl_memory_t;
942 
943 #define DNNL_MEMORY_NONE (NULL)
944 #define DNNL_MEMORY_ALLOCATE ((void *)(size_t)-1)
945 
947 
950 
952 typedef void *dnnl_op_desc_t;
954 typedef const void *const_dnnl_op_desc_t;
955 
957 typedef struct {
967  dnnl_alg_kind_t alg_kind;
969  dnnl_memory_desc_t src_desc;
971  dnnl_memory_desc_t diff_src_desc;
973  dnnl_memory_desc_t weights_desc;
975  dnnl_memory_desc_t diff_weights_desc;
977  dnnl_memory_desc_t bias_desc;
979  dnnl_memory_desc_t diff_bias_desc;
981  dnnl_memory_desc_t dst_desc;
983  dnnl_memory_desc_t diff_dst_desc;
985  dnnl_dims_t strides;
987  dnnl_dims_t dilates;
991  dnnl_dims_t padding[2];
993  dnnl_data_type_t accum_data_type;
995 
998 
1000 typedef struct {
1009  dnnl_memory_desc_t data_desc;
1011  int axis;
1013  dnnl_dim_t group_size;
1015 
1017 typedef struct {
1030  dnnl_alg_kind_t alg_kind;
1032  dnnl_memory_desc_t data_desc;
1034  dnnl_memory_desc_t diff_data_desc;
1049  float alpha, beta;
1051 
1053 typedef struct {
1061  dnnl_memory_desc_t data_desc;
1063  dnnl_memory_desc_t diff_desc;
1065  int softmax_axis;
1067 
1069 typedef struct {
1080  dnnl_alg_kind_t alg_kind;
1082  dnnl_memory_desc_t src_desc;
1084  dnnl_memory_desc_t diff_src_desc;
1086  dnnl_memory_desc_t dst_desc;
1088  dnnl_memory_desc_t diff_dst_desc;
1090  dnnl_dims_t strides;
1092  dnnl_dims_t kernel;
1096  dnnl_dims_t padding[2];
1098  dnnl_data_type_t accum_data_type;
1100 
1102 typedef struct {
1111  dnnl_alg_kind_t alg_kind;
1113  dnnl_memory_desc_t data_desc;
1115  dnnl_memory_desc_t diff_data_desc;
1118  dnnl_dim_t local_size;
1120  float lrn_alpha;
1122  float lrn_beta;
1124  float lrn_k;
1125 } dnnl_lrn_desc_t;
1126 
1128 typedef struct {
1136  dnnl_memory_desc_t data_desc;
1138  dnnl_memory_desc_t diff_data_desc;
1144  dnnl_memory_desc_t data_scaleshift_desc;
1145  dnnl_memory_desc_t diff_data_scaleshift_desc;
1149  dnnl_memory_desc_t stat_desc;
1151  float batch_norm_epsilon;
1152  unsigned flags;
1154 
1156 typedef struct {
1164  dnnl_memory_desc_t data_desc;
1166  dnnl_memory_desc_t diff_data_desc;
1174  dnnl_memory_desc_t data_scaleshift_desc;
1175  dnnl_memory_desc_t diff_data_scaleshift_desc;
1181  dnnl_memory_desc_t stat_desc;
1183  float layer_norm_epsilon;
1184  unsigned flags;
1186 
1188 typedef struct {
1197  dnnl_memory_desc_t src_desc;
1199  dnnl_memory_desc_t diff_src_desc;
1201  dnnl_memory_desc_t weights_desc;
1203  dnnl_memory_desc_t diff_weights_desc;
1205  dnnl_memory_desc_t bias_desc;
1207  dnnl_memory_desc_t diff_bias_desc;
1209  dnnl_memory_desc_t dst_desc;
1211  dnnl_memory_desc_t diff_dst_desc;
1213  dnnl_data_type_t accum_data_type;
1215 
1217 typedef enum { dnnl_rnn_flags_undef = 0x0 } dnnl_rnn_flags_t;
1218 
1220 typedef enum {
1231  dnnl_unidirectional = dnnl_unidirectional_left2right,
1233 
1235 typedef struct {
1244  dnnl_alg_kind_t cell_kind;
1246  dnnl_rnn_direction_t direction;
1248  dnnl_memory_desc_t src_layer_desc;
1250  dnnl_memory_desc_t src_iter_desc;
1252  dnnl_memory_desc_t src_iter_c_desc;
1254  dnnl_memory_desc_t weights_layer_desc;
1256  dnnl_memory_desc_t weights_iter_desc;
1258  dnnl_memory_desc_t bias_desc;
1260  dnnl_memory_desc_t dst_layer_desc;
1262  dnnl_memory_desc_t dst_iter_desc;
1264  dnnl_memory_desc_t dst_iter_c_desc;
1266  dnnl_memory_desc_t placeholder_desc;
1267  dnnl_memory_desc_t placeholder2_desc;
1268 
1270  dnnl_memory_desc_t diff_src_layer_desc;
1272  dnnl_memory_desc_t diff_src_iter_desc;
1274  dnnl_memory_desc_t diff_src_iter_c_desc;
1276  dnnl_memory_desc_t diff_weights_layer_desc;
1278  dnnl_memory_desc_t diff_weights_iter_desc;
1280  dnnl_memory_desc_t diff_bias_desc;
1282  dnnl_memory_desc_t diff_dst_layer_desc;
1284  dnnl_memory_desc_t diff_dst_iter_desc;
1286  dnnl_memory_desc_t diff_dst_iter_c_desc;
1288  dnnl_memory_desc_t diff_placeholder_desc;
1289  dnnl_memory_desc_t diff_placeholder2_desc;
1290 
1292  unsigned int flags;
1295  dnnl_alg_kind_t activation_kind;
1296  float alpha;
1297  float beta;
1298 
1299 } dnnl_rnn_desc_t;
1300 
1302 typedef struct {
1308  dnnl_alg_kind_t alg_kind;
1310  dnnl_memory_desc_t src_desc[2];
1312  dnnl_memory_desc_t dst_desc;
1314 
1316 
1319 
1321 typedef enum {
1325  dnnl_cpu,
1327  dnnl_gpu,
1329 
1332 struct dnnl_engine;
1334 typedef struct dnnl_engine *dnnl_engine_t;
1335 #if 0
1336 // FIXME: looks like this never happens
1338 typedef const struct dnnl_engine *const_dnnl_engine_t;
1339 #endif
1340 
1342 
1345 
1349 
1352 
1354 typedef const struct dnnl_primitive_desc_iterator
1356 
1358 
1361 
1364 struct dnnl_primitive_desc;
1365 
1368 
1370 typedef const struct dnnl_primitive_desc *const_dnnl_primitive_desc_t;
1371 
1373 
1376 
1378 typedef enum {
1384 
1390 struct dnnl_primitive_attr;
1391 
1395 
1397 typedef const struct dnnl_primitive_attr *const_dnnl_primitive_attr_t;
1398 
1417 struct dnnl_post_ops;
1418 
1420 typedef struct dnnl_post_ops *dnnl_post_ops_t;
1421 
1423 typedef const struct dnnl_post_ops *const_dnnl_post_ops_t;
1424 
1426 
1429 
1432 struct dnnl_primitive;
1434 typedef struct dnnl_primitive *dnnl_primitive_t;
1436 typedef const struct dnnl_primitive *const_dnnl_primitive_t;
1437 
1440 
1441 #define DNNL_ARG_SRC_0 1
1442 #define DNNL_ARG_SRC DNNL_ARG_SRC_0
1443 #define DNNL_ARG_SRC_LAYER DNNL_ARG_SRC_0
1444 #define DNNL_ARG_FROM DNNL_ARG_SRC_0
1445 
1446 #define DNNL_ARG_SRC_1 2
1447 #define DNNL_ARG_SRC_ITER DNNL_ARG_SRC_1
1448 
1449 #define DNNL_ARG_SRC_2 3
1450 #define DNNL_ARG_SRC_ITER_C DNNL_ARG_SRC_2
1451 
1452 #define DNNL_ARG_DST_0 17
1453 #define DNNL_ARG_DST DNNL_ARG_DST_0
1454 #define DNNL_ARG_TO DNNL_ARG_DST_0
1455 #define DNNL_ARG_DST_LAYER DNNL_ARG_DST_0
1456 
1457 #define DNNL_ARG_DST_1 18
1458 #define DNNL_ARG_DST_ITER DNNL_ARG_DST_1
1459 
1460 #define DNNL_ARG_DST_2 19
1461 #define DNNL_ARG_DST_ITER_C DNNL_ARG_DST_2
1462 
1463 #define DNNL_ARG_WEIGHTS_0 33
1464 #define DNNL_ARG_WEIGHTS DNNL_ARG_WEIGHTS_0
1465 #define DNNL_ARG_SCALE_SHIFT DNNL_ARG_WEIGHTS_0
1466 #define DNNL_ARG_WEIGHTS_LAYER DNNL_ARG_WEIGHTS_0
1467 
1468 #define DNNL_ARG_WEIGHTS_1 34
1469 #define DNNL_ARG_WEIGHTS_ITER DNNL_ARG_WEIGHTS_1
1470 
1471 #define DNNL_ARG_BIAS 41
1472 
1473 #define DNNL_ARG_MEAN 49
1474 #define DNNL_ARG_VARIANCE 50
1475 
1476 #define DNNL_ARG_WORKSPACE 64
1477 #define DNNL_ARG_SCRATCHPAD 80
1478 
1479 #define DNNL_ARG_DIFF_SRC_0 129
1480 #define DNNL_ARG_DIFF_SRC DNNL_ARG_DIFF_SRC_0
1481 #define DNNL_ARG_DIFF_SRC_LAYER DNNL_ARG_DIFF_SRC_0
1482 
1483 #define DNNL_ARG_DIFF_SRC_1 130
1484 #define DNNL_ARG_DIFF_SRC_ITER DNNL_ARG_DIFF_SRC_1
1485 
1486 #define DNNL_ARG_DIFF_SRC_2 131
1487 #define DNNL_ARG_DIFF_SRC_ITER_C DNNL_ARG_DIFF_SRC_2
1488 
1489 #define DNNL_ARG_DIFF_DST_0 145
1490 #define DNNL_ARG_DIFF_DST DNNL_ARG_DIFF_DST_0
1491 #define DNNL_ARG_DIFF_DST_LAYER DNNL_ARG_DIFF_DST_0
1492 
1493 #define DNNL_ARG_DIFF_DST_1 146
1494 #define DNNL_ARG_DIFF_DST_ITER DNNL_ARG_DIFF_DST_1
1495 
1496 #define DNNL_ARG_DIFF_DST_2 147
1497 #define DNNL_ARG_DIFF_DST_ITER_C DNNL_ARG_DIFF_DST_2
1498 
1499 #define DNNL_ARG_DIFF_WEIGHTS_0 161
1500 #define DNNL_ARG_DIFF_WEIGHTS DNNL_ARG_DIFF_WEIGHTS_0
1501 #define DNNL_ARG_DIFF_SCALE_SHIFT DNNL_ARG_DIFF_WEIGHTS_0
1502 #define DNNL_ARG_DIFF_WEIGHTS_LAYER DNNL_ARG_DIFF_WEIGHTS_0
1503 
1504 #define DNNL_ARG_DIFF_WEIGHTS_1 162
1505 #define DNNL_ARG_DIFF_WEIGHTS_ITER DNNL_ARG_DIFF_WEIGHTS_1
1506 
1507 #define DNNL_ARG_DIFF_BIAS 169
1508 
1509 #define DNNL_ARG_MULTIPLE_SRC 1024
1510 #define DNNL_ARG_MULTIPLE_DST 2048
1511 
1513 
1520 typedef struct {
1521  int arg;
1522  dnnl_memory_t memory;
1523 } dnnl_exec_arg_t;
1524 
1526 
1529 
1558 typedef enum {
1559  dnnl_query_undef = 0,
1569 
1574 
1582 
1583  // memory and op descriptor section
1599 
1600  // memory descriptor section
1610 } dnnl_query_t;
1611 
1613 
1616 
1618 typedef enum {
1623  dnnl_stream_in_order = 0x2U,
1625  dnnl_stream_out_of_order = 0x4U,
1629 
1632 struct dnnl_stream;
1634 typedef struct dnnl_stream *dnnl_stream_t;
1636 typedef const struct dnnl_stream *const_dnnl_stream_t;
1637 
1641 
1642 #ifdef __cplusplus
1643 }
1644 #endif
1645 
1646 #endif
dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:1563
dnnl_nt
2D RNN statistics tensor, an alias to dnnl_ba
Definition: dnnl_types.h:345
dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:1620
dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:456
dnnl_runtime_error
Primitive or engine failed on execution.
Definition: dnnl_types.h:61
dnnl_data_type_undef
Undefined data type, used for empty memory descriptors.
Definition: dnnl_types.h:69
dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:717
dnnl_wino_wei_OBaaIBOIio
Internal weights format for 4x3 Winograd.
Definition: dnnl_types.h:809
dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:609
dnnl_cn
2D CNN activations tensor, an alias to dnnl_ba
Definition: dnnl_types.h:341
dnnl_bac
permuted 3D tensor
Definition: dnnl_types.h:197
dnnl_rnn_packed_desc_t
Description of tensor of packed weights for rnn.
Definition: dnnl_types.h:838
dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:1572
dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:1594
dnnl_sum
A sum primitive.
Definition: dnnl_types.h:624
dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:244
dnnl_abcdef
plain 6D tensor
Definition: dnnl_types.h:187
dnnl_nc
2D CNN activations tensor, an alias to dnnl_ab
Definition: dnnl_types.h:339
dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:634
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:1557
dnnl_f32
32-bit/single-precision floating point.
Definition: dnnl_types.h:75
dnnl_io
2D CNN weights tensor, an alias to dnnl_ba
Definition: dnnl_types.h:364
dnnl_s32
32-bit signed integer.
Definition: dnnl_types.h:77
dnnl_memory
dnnl_primitive_desc_iterator
An opaque structure to describe a primitive descriptor iterator.
dnnl_dims_t
dnnl_dim_t dnnl_dims_t[DNNL_MAX_NDIMS]
A type to describe tensor dimensions.
Definition: dnnl_types.h:780
dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:1608
dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:673
dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:1585
const_dnnl_primitive_attr_t
const struct dnnl_primitive_attr * const_dnnl_primitive_attr_t
A constant primitive descriptor attributes handle.
Definition: dnnl_types.h:1396
dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:593
dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1324
dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:204
dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:79
dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:453
dnnl_abcd
plain 4D tensor
Definition: dnnl_types.h:185
dnnl_wio
3D CNN weights tensor, an alias to dnnl_cba
Definition: dnnl_types.h:370
dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:249
dnnl_engine
An opaque structure to describe an engine.
dnnl_aBcde16b
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:259
dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:192
dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:1597
dnnl_iterator_ends
Primitive iterator passed over last primitive descriptor.
Definition: dnnl_types.h:59
dnnl_query_primitive_kind
primitive kind
Definition: dnnl_types.h:1561
dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:663
dnnl_engine_kind_t
dnnl_engine_kind_t
Kinds of engines.
Definition: dnnl_types.h:1320
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:956
dnnl_eltwise_soft_relu
Eltwise: soft_relu.
Definition: dnnl_types.h:681
DNNL_MAX_NDIMS
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:774
dnnl_status_t
dnnl_status_t
Status values returned by the library functions.
Definition: dnnl_types.h:49
dnnl_stream_in_order
In-order execution.
Definition: dnnl_types.h:1622
dnnl_inner_product
An inner product primitive.
Definition: dnnl_types.h:642
dnnl_aBcde8b
5D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:275
dnnl_exec_arg_t
An auxiliary structure to specify primitive's inputs/outputs at execution.
Definition: dnnl_types.h:1519
dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:622
dnnl_ihwo
4D CNN weights tensor, an alias to dnnl_bcda
Definition: dnnl_types.h:380
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1216
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1234
dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:657
dnnl_wino_undef
Undefined memory format, used for empty memory descriptors.
Definition: dnnl_types.h:803
dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:640
dnnl_abdec
permuted 5D tensor
Definition: dnnl_types.h:191
dnnl_eltwise_elu
Eltwise: parametric exponential linear unit (elu)
Definition: dnnl_types.h:669
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1187
dnnl_query_some_d
stub
Definition: dnnl_types.h:1583
dnnl_stream_t
struct dnnl_stream * dnnl_stream_t
An execution stream handle.
Definition: dnnl_types.h:1633
dnnl_oihw
4D CNN weights tensor, an alias to dnnl_abcd
Definition: dnnl_types.h:374
dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:694
dnnl_binary_add
Binary add.
Definition: dnnl_types.h:719
dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:1606
dnnl_a
plain 1D tensor
Definition: dnnl_types.h:182
dnnl_ab
plain 2D tensor
Definition: dnnl_types.h:183
dnnl_query_undef
no query
Definition: dnnl_types.h:1558
dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:679
dnnl_op_desc_t
void * dnnl_op_desc_t
A pointer to any of the operation descriptors.
Definition: dnnl_types.h:951
dnnl_undefined_primitive
Undefined primitive.
Definition: dnnl_types.h:616
dnnl_ndhwc
5D CNN activations tensor, an alias to dnnl_acdeb
Definition: dnnl_types.h:359
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1219
const_dnnl_primitive_desc_t
const struct dnnl_primitive_desc * const_dnnl_primitive_desc_t
A constant primitive descriptor handle.
Definition: dnnl_types.h:1369
dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:1607
dnnl_query_op_d
op descriptor
Definition: dnnl_types.h:1584
dnnl_oidhw
5D CNN weights tensor, an alias to dnnl_abcde
Definition: dnnl_types.h:384
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1068
dnnl_giohw
5D CNN weights tensor (incl. groups), an alias to dnnl_acbde
Definition: dnnl_types.h:399
dnnl_query_batch_normalization_d
batch normalization descriptor
Definition: dnnl_types.h:1592
dnnl_format_kind_t
dnnl_format_kind_t
Memory format kind.
Definition: dnnl_types.h:85
dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:701
dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:201
dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:1575
dnnl_format_tag_undef
Undefined memory format tag.
Definition: dnnl_types.h:171
dnnl_wino_memory_format_t
dnnl_wino_memory_format_t
Winograd-specific formats.
Definition: dnnl_types.h:801
dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:638
dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:644
dnnl_hwio
4D CNN weights tensor, an alias to dnnl_cdba
Definition: dnnl_types.h:376
dnnl_pooling_avg_include_padding
Average pooling include padding.
Definition: dnnl_types.h:696
dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:203
dnnl_success
The operation was successful.
Definition: dnnl_types.h:51
dnnl_use_scaleshift
Use scale and shift parameters.
Definition: dnnl_types.h:750
dnnl_f16
16-bit/half-precision floating point.
Definition: dnnl_types.h:71
dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:236
dnnl_out_of_memory
The operation failed due to an out-of-memory condition.
Definition: dnnl_types.h:53
dnnl_eltwise_gelu
Eltwise: gelu.
Definition: dnnl_types.h:690
dnnl_owi
3D CNN weights tensor, an alias to dnnl_acb
Definition: dnnl_types.h:368
dnnl_invalid_arguments
The operation failed because of incorrect function arguments.
Definition: dnnl_types.h:55
dnnl_backward
Backward propagation (with respect to all parameters).
Definition: dnnl_types.h:603
dnnl_nwc
3D CNN activations tensor, an alias to dnnl_acb
Definition: dnnl_types.h:349
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1052
dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:661
DNNL_RNN_MAX_N_PARTS
#define DNNL_RNN_MAX_N_PARTS
Maximum number of parts of RNN weights tensor that require separate computation.
Definition: dnnl_types.h:835
dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:1602
const_dnnl_primitive_desc_iterator_t
const struct dnnl_primitive_desc_iterator * const_dnnl_primitive_desc_iterator_t
A constant primitive descriptor iterator handle.
Definition: dnnl_types.h:1353
dnnl_eltwise_swish
Eltwise: swish.
Definition: dnnl_types.h:692
dnnl_primitive_desc
An opaque structure to describe a primitive descriptor.
dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:1624
dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:628
dnnl_query_src_md
source memory desc
Definition: dnnl_types.h:1601
dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:607
dnnl_lrn
An LRN primitive.
Definition: dnnl_types.h:636
dnnl_query_engine
execution engine
Definition: dnnl_types.h:1560
dnnl_iohw
4D CNN weights tensor, an alias to dnnl_bacd
Definition: dnnl_types.h:382
dnnl_memory_extra_flags_t
dnnl_memory_extra_flags_t
Flags for memory special features.
Definition: dnnl_types.h:852
dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:1577
dnnl_backward_data
Backward data propagation.
Definition: dnnl_types.h:605
dnnl_query_weights_md
weights memory descriptor desc
Definition: dnnl_types.h:1603
dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:677
dnnl_ldnc
4D RNN states tensor in the format (num_layers, num_directions, batch, state channels).
Definition: dnnl_types.h:409
dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:1580
dnnl_primitive
dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:230
dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:1564
dnnl_format_kind_rnn_packed
Packed weights format used in RNN.
Definition: dnnl_types.h:98
dnnl_ohwi
4D CNN weights tensor, an alias to dnnl_acdb
Definition: dnnl_types.h:378
dnnl_format_kind_undef
Undefined memory format kind, used for empty memory descriptors.
Definition: dnnl_types.h:87
dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:737
dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:193
dnnl_lrn_desc_t
A descriptor of a Local Response Normalization (LRN) operation.
Definition: dnnl_types.h:1101
dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:1586
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:999
dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:1595
dnnl_normalization_flags_t
dnnl_normalization_flags_t
Flags for batch normalization primitive.
Definition: dnnl_types.h:725
dnnl_version_t
Version type.
Definition: dnnl_types.h:41
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1127
dnnl_wino_wei_aaOio
Internal weights format for 2x3 Winograd.
Definition: dnnl_types.h:806
dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:1567
dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1322
dnnl_eltwise_desc_t
A descriptor of a element-wise operation.
Definition: dnnl_types.h:1016
dnnl_primitive_attr_t
struct dnnl_primitive_attr * dnnl_primitive_attr_t
A primitive descriptor attributes handle that controls primitive behavior.
Definition: dnnl_types.h:1393
dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1326
dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:1587
dnnl_deconvolution_desc_t
dnnl_convolution_desc_t dnnl_deconvolution_desc_t
A descriptor of a deconvolution operation.
Definition: dnnl_types.h:996
dnnl_blocking_desc_t
Generic description of blocked data layout for most memory formats.
Definition: dnnl_types.h:785
dnnl_u8
8-bit unsigned integer.
Definition: dnnl_types.h:81
dnnl_ldgoi
5D RNN weights tensor in the format (num_layers, num_directions, num_gates, output_channels,...
Definition: dnnl_types.h:423
dnnl::query::primitive_kind
primitive kind
dnnl_wino_wei_aaOIoi
Internal weights format for 2x3 Winograd.
Definition: dnnl_types.h:805
dnnl_layer_normalization_desc_t
A descriptor of a Layer Normalization operation.
Definition: dnnl_types.h:1155
dnnl_tn
2D RNN statistics tensor, an alias to dnnl_ab
Definition: dnnl_types.h:343
dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:438
dnnl_wino_desc_t
Description of tensor of weights for winograd 2x3 convolution.
Definition: dnnl_types.h:813
dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:705
dnnl_binary_mul
Binary mul.
Definition: dnnl_types.h:721
dnnl_engine_t
struct dnnl_engine * dnnl_engine_t
An engine handle.
Definition: dnnl_types.h:1333
dnnl_aBcdef4b
6D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:292
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:652
dnnl_nchw
4D CNN activations tensor, an alias to dnnl_abcd
Definition: dnnl_types.h:351
const_dnnl_post_ops_t
const struct dnnl_post_ops * const_dnnl_post_ops_t
A constant post operation chain handle.
Definition: dnnl_types.h:1422
dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:667
dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:703
dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:266
dnnl_primitive_t
struct dnnl_primitive * dnnl_primitive_t
A primitive handle.
Definition: dnnl_types.h:1433
dnnl_ldigo
5D RNN weights tensor in the format (num_layers, num_directions, input_channels, num_gates,...
Definition: dnnl_types.h:416
dnnl_nCw8c
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:462
dnnl_primitive_attr
An opaque structure for primitive descriptor attributes.
dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:1566
dnnl_data_type_t
dnnl_data_type_t
Data type specification.
Definition: dnnl_types.h:67
dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:1578
dnnl_not_required
Queried element is not required for given primitive.
Definition: dnnl_types.h:63
dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1221
dnnl_bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1226
dnnl_ncdhw
5D CNN activations tensor, an alias to dnnl_abcde
Definition: dnnl_types.h:357
dnnl_pooling_avg_exclude_padding
Average pooling exclude padding.
Definition: dnnl_types.h:698
dnnl_primitive_desc_iterator_t
struct dnnl_primitive_desc_iterator * dnnl_primitive_desc_iterator_t
A primitive descriptor iterator handle.
Definition: dnnl_types.h:1350
dnnl_chwn
4D CNN activations tensor, an alias to dnnl_bcda
Definition: dnnl_types.h:355
dnnl_query_some_md
stub
Definition: dnnl_types.h:1600
dnnl_odhwi
5D CNN weights tensor, an alias to dnnl_acdeb
Definition: dnnl_types.h:388
dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:202
dnnl_post_ops
An opaque structure for a chain of post operations.
dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:620
dnnl_oiw
3D CNN weights tensor, an alias to dnnl_abc
Definition: dnnl_types.h:366
dnnl_bcda
permuted 4D tensor
Definition: dnnl_types.h:200
dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:675
dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:630
dnnl_abc
plain 3D tensor
Definition: dnnl_types.h:184
dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:1605
dnnl_acdeb
permuted 5D tensor
Definition: dnnl_types.h:195
dnnl_memory_extra_flag_compensation_conv_s8s8
Indicates the weights have an additional buffer, that depends on the compensation_mask.
Definition: dnnl_types.h:861
dnnl_goiw
4D CNN weights tensor (incl. groups), an alias to dnnl_abcd
Definition: dnnl_types.h:393
dnnl_wino_wei_aaOBiOo
Internal weights format for 2x3 Winograd.
Definition: dnnl_types.h:807
dnnl_format_tag_any
Undefined memory format tag.
Definition: dnnl_types.h:174
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:883
dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:709
dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:659
dnnl_format_kind_wino
Weights format used in 8bit Winograd convolution.
Definition: dnnl_types.h:96
dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:1604
const_dnnl_memory_t
const struct dnnl_memory * const_dnnl_memory_t
A constant memory handle.
Definition: dnnl_types.h:940
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:777
dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:665
dnnl_goihw
5D CNN weights tensor (incl. groups), an alias to dnnl_abcde
Definition: dnnl_types.h:395
dnnl_binary
A binary primitive.
Definition: dnnl_types.h:648
dnnl_oi
2D CNN weights tensor, an alias to dnnl_ab
Definition: dnnl_types.h:362
dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:212
dnnl_stream_flags_t
dnnl_stream_flags_t
Stream flags.
Definition: dnnl_types.h:1617
dnnl_softmax
A softmax primitive.
Definition: dnnl_types.h:632
dnnl_ntc
3D RNN data tensor in the format (batch, seq_length, input channels).
Definition: dnnl_types.h:406
dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:1626
dnnl_post_ops_t
struct dnnl_post_ops * dnnl_post_ops_t
A post operation chain handle.
Definition: dnnl_types.h:1419
dnnl_nChw16c
4D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcd16b
Definition: dnnl_types.h:447
dnnl_format_tag_t
dnnl_format_tag_t
Memory format tag specification.
Definition: dnnl_types.h:169
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:1366
dnnl_scratchpad_mode_library
The library manages scratchpad (default)
Definition: dnnl_types.h:1379
dnnl_ldgo
4D RNN bias tensor in the format (num_layers, num_directions, num_gates, output_channels).
Definition: dnnl_types.h:430
dnnl_hwigo
5D CNN weights tensor (incl. groups), an alias to dnnl_decab
Definition: dnnl_types.h:397
dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:683
dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:216
dnnl_iwo
3D CNN weights tensor, an alias to dnnl_bca
Definition: dnnl_types.h:372
dnnl_stream
dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:599
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1301
dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:198
dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:288
dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:199
dnnl_abcde
plain 5D tensor
Definition: dnnl_types.h:186
const_dnnl_primitive_t
const struct dnnl_primitive * const_dnnl_primitive_t
A constant primitive handle.
Definition: dnnl_types.h:1435
dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1229
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:587
dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:655
dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:1591
dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:597
dnnl_gemm
A matrix multiplication primitive.
Definition: dnnl_types.h:646
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:614
dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1223
dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:590
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1377
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:275
dnnl_forward
Forward data propagation (alias for dnnl_forward_training).
Definition: dnnl_types.h:601
dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:222
dnnl_goidhw
6D CNN weights tensor (incl. groups), an alias to dnnl_abcdef
Definition: dnnl_types.h:401
dnnl_reorder
A reorder primitive.
Definition: dnnl_types.h:618
dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:1593
dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:1589
dnnl_idhwo
5D CNN weights tensor, an alias to dnnl_bcdea
Definition: dnnl_types.h:390
dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:671
dnnl_ba
permuted 2D tensor
Definition: dnnl_types.h:196
dnnl_ncw
3D CNN activations tensor, an alias to dnnl_abc
Definition: dnnl_types.h:347
dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:194
dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:1590
dnnl_memory_t
struct dnnl_memory * dnnl_memory_t
A memory handle.
Definition: dnnl_types.h:937
dnnl_nhwc
4D CNN activations tensor, an alias to dnnl_acdb
Definition: dnnl_types.h:353
dnnl_nCw4c
3D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBc4b
Definition: dnnl_types.h:459
dnnl_scratchpad_mode_user
A user shall query and provide the scratchpad memory to primitives.
Definition: dnnl_types.h:1381
dnnl_query_gemm_d
GEMM descriptor.
Definition: dnnl_types.h:1596
dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:444
dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:763
dnnl_memory_extra_desc_t
Description of extra information stored in memory.
Definition: dnnl_types.h:867
dnnl_format_kind_any
Unspecified format kind.
Definition: dnnl_types.h:90
dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:685
const_dnnl_stream_t
const struct dnnl_stream * const_dnnl_stream_t
A constant execution stream handle.
Definition: dnnl_types.h:1635
const_dnnl_op_desc_t
const typedef void * const_dnnl_op_desc_t
A pointer to any of the operation descriptors (constant variant).
Definition: dnnl_types.h:953
dnnl_tnc
3D RNN data tensor in the format (seq_length, batch, input channels).
Definition: dnnl_types.h:404
dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:1588
dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:441
dnnl_bf16
non-standard 16-bit (bfloat16 w/ 7 bit mantissa) floating point.
Definition: dnnl_types.h:73
dnnl_blocked
A tensor in a generic format described by the stride and blocking values in each dimension.
Definition: dnnl_types.h:94
dnnl_x
1D tensor, an alias to dnnl_a
Definition: dnnl_types.h:337
dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:332
dnnl_dhwio
5D CNN weights tensor, an alias to dnnl_cdeba
Definition: dnnl_types.h:386
dnnl_unimplemented
The operation failed because requested functionality is not implemented.
Definition: dnnl_types.h:57
dnnl_decab
permuted 5D tensor
Definition: dnnl_types.h:205
dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:707
dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:450
dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:626