Deep Neural Network Library (DNNL)  1.91.0
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 
34 
37 
39 typedef enum {
41  dnnl_success = 0,
55 
57 
60 
62 typedef enum {
66  dnnl_f16 = 1,
68  dnnl_bf16 = 2,
70  dnnl_f32 = 3,
72  dnnl_s32 = 4,
74  dnnl_s8 = 5,
76  dnnl_u8 = 6,
78 
80 typedef enum {
95 
164 typedef enum {
170 
171  // Semantic agnostic section
172  // The physical order of dimensions is defined by the permutation of the
173  // characters, assuming that ab..z defines the natural order.
174 
175  // Plain formats
176 
182  dnnl_abcdef,
183 
184  // Permuted plain formats
185 
202  dnnl_defcab,
203 
204  // Opaque blocked formats
205 
206  dnnl_Abc16a,
207  dnnl_ABc16a16b,
208  dnnl_ABc4a4b,
210  dnnl_aBc16b,
211  dnnl_ABc16b16a,
212  dnnl_Abc4a,
214  dnnl_aBc4b,
215  dnnl_ABc4b16a4b,
216  dnnl_ABc2b8a4b,
217  dnnl_ABc4b4a,
218  dnnl_ABc8a16b2a,
219  dnnl_ABc8a8b,
221  dnnl_aBc8b,
222  dnnl_ABc8b16a2b,
223  dnnl_BAc8a16b2a,
224  dnnl_ABc8b8a,
225  dnnl_Abcd16a,
226  dnnl_Abcd8a,
227  dnnl_ABcd16a16b,
228  dnnl_ABcd32a32b,
230  dnnl_aBcd16b,
231  dnnl_ABcd16b16a,
232  dnnl_aBCd16b16c,
233  dnnl_aBCd16c16b,
234  dnnl_Abcd4a,
236  dnnl_aBcd4b,
237  dnnl_ABcd4b16a4b,
238  dnnl_ABcd4b4a,
239  dnnl_ABcd4a4b,
240  dnnl_aBCd4c16b4c,
241  dnnl_aBCd2c8b4c,
242  dnnl_aBCd4c4b,
243  dnnl_aBCd4b4c,
244  dnnl_ABcd8a16b2a,
245  dnnl_ABcd2b8a4b,
246  dnnl_ABcd8a8b,
248  dnnl_aBcd8b,
249  dnnl_ABcd8b16a2b,
250  dnnl_aBCd8b16c2b,
251  dnnl_BAcd8a16b2a,
254  dnnl_aBCd8b8c,
255  dnnl_aBCd8c16b2c,
256  dnnl_ABcde8a16b2a,
257  dnnl_aCBd8b16c2b,
258  dnnl_aBCd8c8b,
259  dnnl_Abcde16a,
260  dnnl_ABcde16a16b,
261  dnnl_BAcde8a16b2a,
268  dnnl_ABcde16b16a,
269  dnnl_aBCde16b16c,
270  dnnl_aBCde16c16b,
271  dnnl_aBCde2c8b4c,
272  dnnl_Abcde4a,
274  dnnl_aBcde4b,
275  dnnl_ABcde4b4a,
276  dnnl_ABcde4a4b,
277  dnnl_aBCde4b4c,
278  dnnl_aBCde4c16b4c,
279  dnnl_aBCde4c4b,
280  dnnl_Abcde8a,
281  dnnl_ABcde8a8b,
282  dnnl_BAcde16b16a,
284  dnnl_aBcde8b,
285  dnnl_ABcde8b16a2b,
286  dnnl_aBCde8b16c2b,
287  dnnl_aCBde8b16c2b,
288  dnnl_ABcde8b8a,
289  dnnl_aBCde8b8c,
290  dnnl_ABcd4a8b8a4b,
291  dnnl_ABcd2a8b8a2b,
292  dnnl_aBCde4b8c8b4c,
293  dnnl_aBCde2b8c8b2c,
294  dnnl_aBCde8c16b2c,
295  dnnl_aBCde8c8b,
298  dnnl_aBCdef16b16c,
299  dnnl_aBCdef16c16b,
300  dnnl_aBCdef4c16b4c,
305  dnnl_aBCdef4c4b,
306  dnnl_aBCdef4b4c,
307  dnnl_aBCdef8b8c,
308  dnnl_aBCdef8c16b2c,
309  dnnl_aBCdef8b16c2b,
310  dnnl_aCBdef8b16c2b,
311  dnnl_aBCdef8c8b,
312  dnnl_aBdc16b,
313  dnnl_aBdC16b2c,
314  dnnl_aBdc4b,
315  dnnl_aBdc8b,
316  dnnl_aBdec16b,
317  dnnl_aBdeC16b2c,
318  dnnl_aBdec32b,
319  dnnl_aBdec4b,
320  dnnl_aBdec8b,
321  dnnl_aBdefc16b,
322  dnnl_aBdefC16b2c,
323  dnnl_aCBdef16c16b,
324  dnnl_aBdefc4b,
325  dnnl_aBdefc8b,
326  dnnl_Abcdef16a,
327  dnnl_Acb16a,
328  dnnl_AcB16a2b,
329  dnnl_Acb4a,
330  dnnl_Acb8a,
331  dnnl_aCBd16b16c,
332  dnnl_aCBd16c16b,
333  dnnl_aCBde16b16c,
334  dnnl_aCBde16c16b,
335  dnnl_Acdb16a,
336  dnnl_AcdB16a2b,
337  dnnl_Acdb32a,
338  dnnl_Acdb4a,
339  dnnl_Acdb8a,
340  dnnl_Acdeb16a,
341  dnnl_AcdeB16a2b,
342  dnnl_Acdeb4a,
343  dnnl_Acdeb8a,
344  dnnl_BAc16a16b,
345  dnnl_BAc16b16a,
346  dnnl_BAcd16a16b,
347  dnnl_BAcd16b16a,
348 
352 
353  // Aliases
354 
356  dnnl_x = dnnl_a,
358  dnnl_nc = dnnl_ab,
360  dnnl_cn = dnnl_ba,
362  dnnl_tn = dnnl_ab,
364  dnnl_nt = dnnl_ba,
366  dnnl_ncw = dnnl_abc,
368  dnnl_nwc = dnnl_acb,
379 
381  dnnl_oi = dnnl_ab,
383  dnnl_io = dnnl_ba,
385  dnnl_oiw = dnnl_abc,
387  dnnl_owi = dnnl_acb,
389  dnnl_wio = dnnl_cba,
391  dnnl_iwo = dnnl_bca,
410 
425 
427  dnnl_tnc = dnnl_abc,
429  dnnl_ntc = dnnl_bac,
454 
455  // Opaque data types, are not to be used explicitly
456 
457  // data
458 
486  dnnl_NCw16n16c = dnnl_ABc16a16b,
487  dnnl_NCdhw16n16c = dnnl_ABcde16a16b,
488  dnnl_NChw16n16c = dnnl_ABcd16a16b,
489  dnnl_NChw32n32c = dnnl_ABcd32a32b,
490 
491  // weights, 3D
492  dnnl_IOw16o16i = dnnl_BAc16a16b,
493  dnnl_IOw16i16o = dnnl_BAc16b16a,
494  dnnl_OIw16i16o = dnnl_ABc16b16a,
495  dnnl_OIw16o16i = dnnl_ABc16a16b,
496  dnnl_Oiw16o = dnnl_Abc16a,
497  dnnl_OIw4i16o4i = dnnl_ABc4b16a4b,
498  dnnl_OIw2i8o4i = dnnl_ABc2b8a4b,
499  dnnl_OIw4i4o = dnnl_ABc4b4a,
500  dnnl_OIw4o4i = dnnl_ABc4a4b,
501  dnnl_Oiw4o = dnnl_Abc4a,
502  dnnl_OIw8i16o2i = dnnl_ABc8b16a2b,
503  dnnl_OIw8i8o = dnnl_ABc8b8a,
504  dnnl_OIw8o16i2o = dnnl_ABc8a16b2a,
505  dnnl_IOw8o16i2o = dnnl_BAc8a16b2a,
506  dnnl_OIw8o8i = dnnl_ABc8a8b,
507  dnnl_Owi16o = dnnl_Acb16a,
508  dnnl_OwI16o2i = dnnl_AcB16a2b,
509  dnnl_Owi4o = dnnl_Acb4a,
510  dnnl_Owi8o = dnnl_Acb8a,
511 
512  // weights, 4D
513  dnnl_IOhw16i16o = dnnl_BAcd16b16a,
514  dnnl_IOhw16o16i = dnnl_BAcd16a16b,
515  dnnl_Ohwi16o = dnnl_Acdb16a,
516  dnnl_OhwI16o2i = dnnl_AcdB16a2b,
517  dnnl_Ohwi32o = dnnl_Acdb32a,
518  dnnl_Ohwi4o = dnnl_Acdb4a,
519  dnnl_Ohwi8o = dnnl_Acdb8a,
520  dnnl_OIhw16i16o = dnnl_ABcd16b16a,
521  dnnl_OIhw16o16i = dnnl_ABcd16a16b,
522  dnnl_Oihw16o = dnnl_Abcd16a,
523  dnnl_OIhw4i16o4i = dnnl_ABcd4b16a4b,
524  dnnl_OIhw4i4o = dnnl_ABcd4b4a,
525  dnnl_OIhw4o4i = dnnl_ABcd4a4b,
526  dnnl_Oihw4o = dnnl_Abcd4a,
527  dnnl_OIhw8i16o2i = dnnl_ABcd8b16a2b,
528  dnnl_OIhw8i8o = dnnl_ABcd8b8a,
529  dnnl_OIhw8o16i2o = dnnl_ABcd8a16b2a,
530  dnnl_OIhw2i8o4i = dnnl_ABcd2b8a4b,
531  dnnl_IOhw8o16i2o = dnnl_BAcd8a16b2a,
532  dnnl_OIhw8o8i = dnnl_ABcd8a8b,
533 
534  // weights, 5D
535  dnnl_Odhwi16o = dnnl_Acdeb16a,
536  dnnl_OdhwI16o2i = dnnl_AcdeB16a2b,
537  dnnl_Odhwi4o = dnnl_Acdeb4a,
538  dnnl_Odhwi8o = dnnl_Acdeb8a,
539  dnnl_OIdhw16i16o = dnnl_ABcde16b16a,
540  dnnl_OIdhw16o16i = dnnl_ABcde16a16b,
541  dnnl_Oidhw16o = dnnl_Abcde16a,
542  dnnl_OIdhw4i4o = dnnl_ABcde4b4a,
543  dnnl_OIdhw4o4i = dnnl_ABcde4a4b,
544  dnnl_Oidhw4o = dnnl_Abcde4a,
545  dnnl_OIdhw8i16o2i = dnnl_ABcde8b16a2b,
546  dnnl_OIdhw8i8o = dnnl_ABcde8b8a,
547  dnnl_OIdhw8o16i2o = dnnl_ABcde8a16b2a,
548  dnnl_IOdhw8o16i2o = dnnl_BAcde8a16b2a,
549  dnnl_OIdhw4i16o4i = dnnl_ABcde4b16a4b,
550  dnnl_OIdhw2i8o4i = dnnl_ABcde2b8a4b,
551  dnnl_OIdhw8o8i = dnnl_ABcde8a8b,
552  dnnl_IOdhw16i16o = dnnl_BAcde16b16a,
553 
554  // weights w/ groups, 3D
555  dnnl_Goiw16g = dnnl_Abcd16a,
556  dnnl_Goiw8g = dnnl_Abcd8a,
557  dnnl_gIOw16o16i = dnnl_aCBd16b16c,
558  dnnl_gIOw16i16o = dnnl_aCBd16c16b,
559  dnnl_gOIw16i16o = dnnl_aBCd16c16b,
560  dnnl_gOIw16o16i = dnnl_aBCd16b16c,
561  dnnl_gOiw16o = dnnl_aBcd16b,
562  dnnl_gOIw4i16o4i = dnnl_aBCd4c16b4c,
563  dnnl_gOIw2i8o4i = dnnl_aBCd2c8b4c,
564  dnnl_gOIw4i4o = dnnl_aBCd4c4b,
565  dnnl_gOIw4o4i = dnnl_aBCd4b4c,
566  dnnl_gOiw4o = dnnl_aBcd4b,
567  dnnl_gOIw8i16o2i = dnnl_aBCd8c16b2c,
568  dnnl_gOIw8i8o = dnnl_aBCd8c8b,
569  dnnl_gOIw8o16i2o = dnnl_aBCd8b16c2b,
570  dnnl_gIOw8o16i2o = dnnl_aCBd8b16c2b,
571  dnnl_gOIw8o8i = dnnl_aBCd8b8c,
572  dnnl_gOwi16o = dnnl_aBdc16b,
573  dnnl_gOwI16o2i = dnnl_aBdC16b2c,
574  dnnl_gOwi4o = dnnl_aBdc4b,
575  dnnl_gOwi8o = dnnl_aBdc8b,
576 
577  // weights w/ groups, 4D
578  dnnl_gIOhw16i16o = dnnl_aCBde16c16b,
579  dnnl_gIOhw16o16i = dnnl_aCBde16b16c,
580  dnnl_gOhwi16o = dnnl_aBdec16b,
581  dnnl_gOhwI16o2i = dnnl_aBdeC16b2c,
582  dnnl_gOhwi32o = dnnl_aBdec32b,
583  dnnl_gOhwi4o = dnnl_aBdec4b,
584  dnnl_gOhwi8o = dnnl_aBdec8b,
585  dnnl_Goihw16g = dnnl_Abcde16a,
586  dnnl_gOIhw16i16o = dnnl_aBCde16c16b,
587  dnnl_gOIhw16o16i = dnnl_aBCde16b16c,
588  dnnl_gOihw16o = dnnl_aBcde16b,
589  dnnl_gOIhw2i8o4i = dnnl_aBCde2c8b4c,
590  dnnl_gOIhw4i16o4i = dnnl_aBCde4c16b4c,
591  dnnl_gOIhw4i4o = dnnl_aBCde4c4b,
592  dnnl_gOIhw4o4i = dnnl_aBCde4b4c,
593  dnnl_gOihw4o = dnnl_aBcde4b,
594  dnnl_Goihw8g = dnnl_Abcde8a,
595  dnnl_gOIhw8i16o2i = dnnl_aBCde8c16b2c,
596  dnnl_gOIhw8i8o = dnnl_aBCde8c8b,
597  dnnl_gOIhw8o16i2o = dnnl_aBCde8b16c2b,
598  dnnl_gIOhw8o16i2o = dnnl_aCBde8b16c2b,
599  dnnl_gOIhw8o8i = dnnl_aBCde8b8c,
600 
601  dnnl_OIhw4o8i8o4i = dnnl_ABcd4a8b8a4b,
602  dnnl_OIhw2o8i8o2i = dnnl_ABcd2a8b8a2b,
603  dnnl_gOIhw4o8i8o4i = dnnl_aBCde4b8c8b4c,
604  dnnl_gOIhw2o8i8o2i = dnnl_aBCde2b8c8b2c,
605 
606  // weights w/ groups, 6D
607  dnnl_gIOdhw16i16o = dnnl_aCBdef16c16b,
608  dnnl_gOdhwi16o = dnnl_aBdefc16b,
609  dnnl_gOdhwI16o2i = dnnl_aBdefC16b2c,
610  dnnl_gOdhwi4o = dnnl_aBdefc4b,
611  dnnl_gOdhwi8o = dnnl_aBdefc8b,
612  dnnl_gOIdhw16i16o = dnnl_aBCdef16c16b,
613  dnnl_gOIdhw4i16o4i = dnnl_aBCdef4c16b4c,
614  dnnl_gOIdhw2i8o4i = dnnl_aBCdef2c8b4c,
615  dnnl_gOIdhw16o16i = dnnl_aBCdef16b16c,
616  dnnl_gOidhw16o = dnnl_aBcdef16b,
617  dnnl_gOIdhw4i4o = dnnl_aBCdef4c4b,
618  dnnl_gOIdhw4o4i = dnnl_aBCdef4b4c,
619  dnnl_gOidhw4o = dnnl_aBcdef4b,
620  dnnl_gOIdhw8i16o2i = dnnl_aBCdef8c16b2c,
621  dnnl_gOIdhw8i8o = dnnl_aBCdef8c8b,
622  dnnl_gOIdhw8o16i2o = dnnl_aBCdef8b16c2b,
623  dnnl_gIOdhw8o16i2o = dnnl_aCBdef8b16c2b,
624  dnnl_gOIdhw8o8i = dnnl_aBCdef8b8c,
625  dnnl_Goidhw16g = dnnl_Abcdef16a,
627 
629 
634 
636 typedef enum {
637  // TODO: suggest renames
652  dnnl_backward = 128,
654  dnnl_backward_data = 160,
656  dnnl_backward_weights = 192,
658  dnnl_backward_bias = 193,
660 
663 typedef enum {
667  dnnl_reorder,
669  dnnl_shuffle,
671  dnnl_concat,
673  dnnl_sum,
679  dnnl_eltwise,
681  dnnl_softmax,
683  dnnl_pooling,
685  dnnl_lrn,
693  dnnl_rnn,
695  dnnl_gemm,
697  dnnl_binary,
701  dnnl_matmul,
705 
707 typedef enum {
708  dnnl_alg_kind_undef,
714  dnnl_convolution_auto = 0x3,
720  dnnl_eltwise_relu = 0x1f,
722  dnnl_eltwise_tanh = 0x2f,
724  dnnl_eltwise_elu = 0x3f,
726  dnnl_eltwise_square = 0x4f,
728  dnnl_eltwise_abs = 0x5f,
730  dnnl_eltwise_sqrt = 0x6f,
732  dnnl_eltwise_linear = 0x7f,
736  dnnl_eltwise_soft_relu = 0x9f,
738  dnnl_eltwise_logistic = 0xaf,
740  dnnl_eltwise_exp = 0xbf,
745  dnnl_eltwise_gelu = 0xcf,
747  dnnl_eltwise_swish = 0xdf,
749  dnnl_eltwise_log = 0xef,
751  dnnl_eltwise_clip = 0xff,
753  dnnl_pooling_max = 0x1ff,
761  dnnl_lrn_across_channels = 0xaff,
763  dnnl_lrn_within_channel = 0xbff,
765  dnnl_vanilla_rnn = 0x1fff,
767  dnnl_vanilla_lstm = 0x2fff,
769  dnnl_vanilla_gru = 0x3fff,
777  dnnl_lbr_gru = 0x4fff,
779  dnnl_binary_add = 0x1fff0,
781  dnnl_binary_mul = 0x1fff1,
783  dnnl_resampling_nearest = 0x2fff0,
785  dnnl_resampling_linear = 0x2fff1,
787 
789 typedef enum {
801  dnnl_use_global_stats = 0x1U,
802 
814  dnnl_use_scaleshift = 0x2U,
815 
827  dnnl_fuse_norm_relu = 0x4U,
829 
832 
835 
839 #define DNNL_MAX_NDIMS 12
840 
843 #define DNNL_RUNTIME_DIM_VAL INT64_MIN
844 
848 #define DNNL_RUNTIME_SIZE_VAL ((size_t)DNNL_RUNTIME_DIM_VAL)
849 
852 static const union {
853  unsigned u;
854  float f;
855 } DNNL_RUNTIME_F32_VAL_REP = {0x7fc000d0};
857 
860 #define DNNL_RUNTIME_F32_VAL (DNNL_RUNTIME_F32_VAL_REP.f)
861 
863 static const int DNNL_RUNTIME_S32_VAL_REP = INT32_MIN;
865 
868 #define DNNL_RUNTIME_S32_VAL DNNL_RUNTIME_S32_VAL_REP
869 
871 typedef int64_t dnnl_dim_t;
872 
875 
879 typedef struct {
882  dnnl_dims_t strides;
883  // Innermost section
884  // ASSUMPTION: the innermost blocks are always dense
886  int inner_nblks;
888  dnnl_dims_t inner_blks;
891  dnnl_dims_t inner_idxs;
893 
895 typedef enum {
897  dnnl_wino_undef = 0,
898  // Tensors of weights for 2x3 winograd convolutions.
902  // Tensor of weights for 4x3 convolution.
905 
907 typedef struct {
908  dnnl_wino_memory_format_t wino_format;
909  int r;
910  int alpha;
911  int ic;
912  int oc;
913  int ic_block;
914  int oc_block;
915  int ic2_block;
916  int oc2_block;
917  float adj_scale;
918  size_t size;
920 
921 typedef enum {
922  dnnl_packed_format_undef = 0,
923  dnnl_ldigo_p,
924  dnnl_ldgoi_p
925 } dnnl_rnn_packed_memory_format_t;
926 
929 #define DNNL_RNN_MAX_N_PARTS 4
930 
932 typedef struct {
933  dnnl_rnn_packed_memory_format_t format;
934  int n_parts;
935  int n;
936  int ldb;
937  int parts[DNNL_RNN_MAX_N_PARTS];
938  size_t part_pack_size[DNNL_RNN_MAX_N_PARTS];
939  unsigned pack_part[DNNL_RNN_MAX_N_PARTS];
940  size_t offset_compensation;
941  size_t size;
942  char reserved[200];
944 
946 typedef enum {
947  dnnl_memory_extra_flag_none = 0x0U,
956  dnnl_memory_extra_flag_scale_adjust = 0x2U,
957  dnnl_memory_extra_flag_gpu_rnn_u8s8_compensation = 0x4U,
959 
961 typedef struct {
964  uint64_t flags;
966  int compensation_mask;
968  float scale_adjust;
970  char reserved[64];
972 
977 typedef struct {
979  int ndims;
994  dnnl_dims_t dims;
995 
997  dnnl_data_type_t data_type;
998 
1000  dnnl_dims_t padded_dims;
1001 
1004  dnnl_dims_t padded_offsets;
1005 
1008  dnnl_dim_t offset0;
1009 
1011  dnnl_format_kind_t format_kind;
1012  union {
1015  dnnl_blocking_desc_t blocking;
1017  dnnl_wino_desc_t wino_desc;
1019  dnnl_rnn_packed_desc_t rnn_packed_desc;
1020  // ... other descriptions possible
1021  } format_desc;
1022 
1025 
1028 struct dnnl_memory;
1029 
1031 typedef struct dnnl_memory *dnnl_memory_t;
1032 
1034 typedef const struct dnnl_memory *const_dnnl_memory_t;
1035 
1036 #define DNNL_MEMORY_NONE (NULL)
1037 #define DNNL_MEMORY_ALLOCATE ((void *)(size_t)-1)
1038 
1040 
1045 
1047 typedef void *dnnl_op_desc_t;
1049 typedef const void *const_dnnl_op_desc_t;
1050 
1053 
1056 
1059 
1061 typedef struct {
1071  dnnl_alg_kind_t alg_kind;
1073  dnnl_memory_desc_t src_desc;
1075  dnnl_memory_desc_t diff_src_desc;
1077  dnnl_memory_desc_t weights_desc;
1079  dnnl_memory_desc_t diff_weights_desc;
1081  dnnl_memory_desc_t bias_desc;
1083  dnnl_memory_desc_t diff_bias_desc;
1085  dnnl_memory_desc_t dst_desc;
1087  dnnl_memory_desc_t diff_dst_desc;
1089  dnnl_dims_t strides;
1091  dnnl_dims_t dilates;
1095  dnnl_dims_t padding[2];
1097  dnnl_data_type_t accum_data_type;
1099 
1101 
1104 
1107 
1109 
1112 
1114 typedef struct {
1123  dnnl_memory_desc_t data_desc;
1125  int axis;
1127  dnnl_dim_t group_size;
1129 
1131 
1134 
1136 typedef struct {
1149  dnnl_alg_kind_t alg_kind;
1151  dnnl_memory_desc_t data_desc;
1153  dnnl_memory_desc_t diff_data_desc;
1171  float alpha, beta;
1173 
1175 
1178 
1180 typedef struct {
1188  dnnl_memory_desc_t data_desc;
1190  dnnl_memory_desc_t diff_desc;
1192  int softmax_axis;
1194 
1196 
1199 
1203 
1205 
1208 
1210 typedef struct {
1221  dnnl_alg_kind_t alg_kind;
1223  dnnl_memory_desc_t src_desc;
1225  dnnl_memory_desc_t diff_src_desc;
1227  dnnl_memory_desc_t dst_desc;
1229  dnnl_memory_desc_t diff_dst_desc;
1231  dnnl_dims_t strides;
1233  dnnl_dims_t kernel;
1237  dnnl_dims_t padding[2];
1239  dnnl_data_type_t accum_data_type;
1241 
1243 
1246 
1248 typedef struct {
1257  dnnl_alg_kind_t alg_kind;
1259  dnnl_memory_desc_t data_desc;
1261  dnnl_memory_desc_t diff_data_desc;
1264  dnnl_dim_t local_size;
1266  float lrn_alpha;
1268  float lrn_beta;
1270  float lrn_k;
1271 } dnnl_lrn_desc_t;
1272 
1274 
1277 
1279 typedef struct {
1287  dnnl_memory_desc_t data_desc;
1289  dnnl_memory_desc_t diff_data_desc;
1295  dnnl_memory_desc_t data_scaleshift_desc;
1296  dnnl_memory_desc_t diff_data_scaleshift_desc;
1300  dnnl_memory_desc_t stat_desc;
1302  float batch_norm_epsilon;
1303  unsigned flags;
1305 
1307 
1310 
1312 typedef struct {
1320  dnnl_memory_desc_t data_desc;
1322  dnnl_memory_desc_t diff_data_desc;
1330  dnnl_memory_desc_t data_scaleshift_desc;
1331  dnnl_memory_desc_t diff_data_scaleshift_desc;
1337  dnnl_memory_desc_t stat_desc;
1339  float layer_norm_epsilon;
1340  unsigned flags;
1342 
1344 
1347 
1349 typedef struct {
1358  dnnl_memory_desc_t src_desc;
1360  dnnl_memory_desc_t diff_src_desc;
1362  dnnl_memory_desc_t weights_desc;
1364  dnnl_memory_desc_t diff_weights_desc;
1366  dnnl_memory_desc_t bias_desc;
1368  dnnl_memory_desc_t diff_bias_desc;
1370  dnnl_memory_desc_t dst_desc;
1372  dnnl_memory_desc_t diff_dst_desc;
1374  dnnl_data_type_t accum_data_type;
1376 
1378 
1381 
1383 typedef enum {
1385  dnnl_rnn_flags_undef = 0x0
1387 
1389 typedef enum {
1403 
1405 typedef struct {
1414  dnnl_alg_kind_t cell_kind;
1416  dnnl_rnn_direction_t direction;
1418  dnnl_memory_desc_t src_layer_desc;
1420  dnnl_memory_desc_t src_iter_desc;
1422  dnnl_memory_desc_t src_iter_c_desc;
1424  dnnl_memory_desc_t weights_layer_desc;
1426  dnnl_memory_desc_t weights_iter_desc;
1428  dnnl_memory_desc_t bias_desc;
1430  dnnl_memory_desc_t dst_layer_desc;
1432  dnnl_memory_desc_t dst_iter_desc;
1434  dnnl_memory_desc_t dst_iter_c_desc;
1436  dnnl_memory_desc_t placeholder_desc;
1437  dnnl_memory_desc_t placeholder2_desc;
1438 
1440  dnnl_memory_desc_t diff_src_layer_desc;
1442  dnnl_memory_desc_t diff_src_iter_desc;
1444  dnnl_memory_desc_t diff_src_iter_c_desc;
1446  dnnl_memory_desc_t diff_weights_layer_desc;
1448  dnnl_memory_desc_t diff_weights_iter_desc;
1450  dnnl_memory_desc_t diff_bias_desc;
1452  dnnl_memory_desc_t diff_dst_layer_desc;
1454  dnnl_memory_desc_t diff_dst_iter_desc;
1456  dnnl_memory_desc_t diff_dst_iter_c_desc;
1458  dnnl_memory_desc_t diff_placeholder_desc;
1459  dnnl_memory_desc_t diff_placeholder2_desc;
1460 
1462  unsigned int flags;
1465  dnnl_alg_kind_t activation_kind;
1466  float alpha;
1467  float beta;
1468 
1469 } dnnl_rnn_desc_t;
1470 
1472 
1475 
1477 typedef struct {
1483  dnnl_alg_kind_t alg_kind;
1485  dnnl_memory_desc_t src_desc[2];
1487  dnnl_memory_desc_t dst_desc;
1489 
1491 
1494 
1502 typedef struct {
1507  dnnl_memory_desc_t src_desc;
1509  dnnl_memory_desc_t weights_desc;
1511  dnnl_memory_desc_t bias_desc;
1513  dnnl_memory_desc_t dst_desc;
1515  dnnl_data_type_t accum_data_type;
1517 
1519 
1522 
1524 typedef struct {
1533  dnnl_alg_kind_t alg_kind;
1535  dnnl_memory_desc_t src_desc;
1537  dnnl_memory_desc_t diff_src_desc;
1539  dnnl_memory_desc_t dst_desc;
1541  dnnl_memory_desc_t diff_dst_desc;
1543  float factors[DNNL_MAX_NDIMS];
1545 
1547 
1549 
1552 
1554 typedef enum {
1558  dnnl_cpu,
1560  dnnl_gpu,
1562 
1565 struct dnnl_engine;
1567 typedef struct dnnl_engine *dnnl_engine_t;
1568 #if 0
1569 // FIXME: looks like this never happens
1571 typedef const struct dnnl_engine *const_dnnl_engine_t;
1572 #endif
1573 
1575 
1580 
1584 
1587 
1589 typedef const struct dnnl_primitive_desc_iterator
1591 
1594 struct dnnl_primitive_desc;
1595 
1598 
1600 typedef const struct dnnl_primitive_desc *const_dnnl_primitive_desc_t;
1601 
1603 
1606 
1608 typedef enum {
1632 
1638 struct dnnl_primitive_attr;
1639 
1643 
1645 typedef const struct dnnl_primitive_attr *const_dnnl_primitive_attr_t;
1646 
1665 struct dnnl_post_ops;
1666 
1668 typedef struct dnnl_post_ops *dnnl_post_ops_t;
1669 
1671 typedef const struct dnnl_post_ops *const_dnnl_post_ops_t;
1672 
1674 
1677 
1680 struct dnnl_primitive;
1682 typedef struct dnnl_primitive *dnnl_primitive_t;
1684 typedef const struct dnnl_primitive *const_dnnl_primitive_t;
1685 
1687 #define DNNL_ARG_SRC_0 1
1688 #define DNNL_ARG_SRC DNNL_ARG_SRC_0
1691 #define DNNL_ARG_SRC_LAYER DNNL_ARG_SRC_0
1694 #define DNNL_ARG_FROM DNNL_ARG_SRC_0
1697 
1699 #define DNNL_ARG_SRC_1 2
1700 #define DNNL_ARG_SRC_ITER DNNL_ARG_SRC_1
1703 
1705 #define DNNL_ARG_SRC_2 3
1706 #define DNNL_ARG_SRC_ITER_C DNNL_ARG_SRC_2
1709 
1711 #define DNNL_ARG_DST_0 17
1712 #define DNNL_ARG_DST DNNL_ARG_DST_0
1715 #define DNNL_ARG_TO DNNL_ARG_DST_0
1718 #define DNNL_ARG_DST_LAYER DNNL_ARG_DST_0
1720 
1722 #define DNNL_ARG_DST_1 18
1723 #define DNNL_ARG_DST_ITER DNNL_ARG_DST_1
1726 
1728 #define DNNL_ARG_DST_2 19
1729 #define DNNL_ARG_DST_ITER_C DNNL_ARG_DST_2
1732 
1734 #define DNNL_ARG_WEIGHTS_0 33
1735 #define DNNL_ARG_WEIGHTS DNNL_ARG_WEIGHTS_0
1738 #define DNNL_ARG_SCALE_SHIFT DNNL_ARG_WEIGHTS_0
1741 #define DNNL_ARG_WEIGHTS_LAYER DNNL_ARG_WEIGHTS_0
1744 
1746 #define DNNL_ARG_WEIGHTS_1 34
1747 #define DNNL_ARG_WEIGHTS_ITER DNNL_ARG_WEIGHTS_1
1750 
1752 #define DNNL_ARG_BIAS 41
1753 
1755 #define DNNL_ARG_MEAN 49
1756 #define DNNL_ARG_VARIANCE 50
1758 
1761 #define DNNL_ARG_WORKSPACE 64
1762 #define DNNL_ARG_SCRATCHPAD 80
1764 
1766 #define DNNL_ARG_DIFF_SRC_0 129
1767 #define DNNL_ARG_DIFF_SRC DNNL_ARG_DIFF_SRC_0
1770 #define DNNL_ARG_DIFF_SRC_LAYER DNNL_ARG_DIFF_SRC_0
1773 
1775 #define DNNL_ARG_DIFF_SRC_1 130
1776 #define DNNL_ARG_DIFF_SRC_ITER DNNL_ARG_DIFF_SRC_1
1779 
1781 #define DNNL_ARG_DIFF_SRC_2 131
1782 #define DNNL_ARG_DIFF_SRC_ITER_C DNNL_ARG_DIFF_SRC_2
1785 
1787 #define DNNL_ARG_DIFF_DST_0 145
1788 #define DNNL_ARG_DIFF_DST DNNL_ARG_DIFF_DST_0
1791 #define DNNL_ARG_DIFF_DST_LAYER DNNL_ARG_DIFF_DST_0
1794 
1796 #define DNNL_ARG_DIFF_DST_1 146
1797 #define DNNL_ARG_DIFF_DST_ITER DNNL_ARG_DIFF_DST_1
1800 
1802 #define DNNL_ARG_DIFF_DST_2 147
1803 #define DNNL_ARG_DIFF_DST_ITER_C DNNL_ARG_DIFF_DST_2
1806 
1808 #define DNNL_ARG_DIFF_WEIGHTS_0 161
1809 #define DNNL_ARG_DIFF_WEIGHTS DNNL_ARG_DIFF_WEIGHTS_0
1812 #define DNNL_ARG_DIFF_SCALE_SHIFT DNNL_ARG_DIFF_WEIGHTS_0
1815 #define DNNL_ARG_DIFF_WEIGHTS_LAYER DNNL_ARG_DIFF_WEIGHTS_0
1818 
1820 #define DNNL_ARG_DIFF_WEIGHTS_1 162
1821 #define DNNL_ARG_DIFF_WEIGHTS_ITER DNNL_ARG_DIFF_WEIGHTS_1
1824 
1826 #define DNNL_ARG_DIFF_BIAS 169
1827 
1829 #define DNNL_ARG_ATTR_OUTPUT_SCALES 513
1830 
1833 #define DNNL_ARG_MULTIPLE_SRC 1024
1834 #define DNNL_ARG_MULTIPLE_DST 2048
1837 
1839 #define DNNL_ARG_ATTR_ZERO_POINTS 4096
1840 
1843 typedef struct {
1844  int arg;
1845  dnnl_memory_t memory;
1846 } dnnl_exec_arg_t;
1847 
1849 
1852 
1882 typedef enum {
1883  dnnl_query_undef = 0,
1893 
1898 
1906 
1907  // memory and op descriptor section
1926 
1927  // memory descriptor section
1937  dnnl_query_exec_arg_md = 255,
1938 } dnnl_query_t;
1939 
1941 
1943 
1946 
1948 typedef enum {
1953  dnnl_stream_in_order = 0x2U,
1955  dnnl_stream_out_of_order = 0x4U,
1959 
1962 struct dnnl_stream;
1964 typedef struct dnnl_stream *dnnl_stream_t;
1966 typedef const struct dnnl_stream *const_dnnl_stream_t;
1967 
1969 
1972 
1974 #define DNNL_RUNTIME_NONE 0u
1975 
1977 #define DNNL_RUNTIME_SEQ 1u
1978 
1980 #define DNNL_RUNTIME_OMP 2u
1981 
1983 #define DNNL_RUNTIME_TBB 4u
1984 
1986 #define DNNL_RUNTIME_OCL 256u
1987 
1988 // SYCL runtime
1989 #define DNNL_RUNTIME_SYCL 512u
1990 
1991 // DPC++ runtime
1992 #define DNNL_RUNTIME_DPCPP DNNL_RUNTIME_SYCL
1993 
1996 typedef struct {
1997  int major;
1998  int minor;
1999  int patch;
2000  const char *hash;
2001  unsigned cpu_runtime;
2002  unsigned gpu_runtime;
2003 } dnnl_version_t;
2004 
2006 #define DNNL_JIT_PROFILE_NONE 0u
2007 
2009 #define DNNL_JIT_PROFILE_VTUNE 1u
2010 
2012 #define DNNL_JIT_PROFILE_LINUX_PERFMAP 2u
2013 
2015 #define DNNL_JIT_PROFILE_LINUX_JITDUMP 4u
2016 
2019 #define DNNL_JIT_PROFILE_LINUX_JITDUMP_USE_TSC 8u
2020 
2022 #define DNNL_JIT_PROFILE_LINUX_PERF \
2023  (DNNL_JIT_PROFILE_LINUX_JITDUMP | DNNL_JIT_PROFILE_LINUX_PERFMAP)
2024 
2026 typedef enum {
2028  dnnl_cpu_isa_all = 0x0,
2029 
2031  dnnl_cpu_isa_sse41 = 0x1,
2032 
2034  dnnl_cpu_isa_avx = 0x3,
2035 
2037  dnnl_cpu_isa_avx2 = 0x7,
2038 
2042 
2046 
2049  dnnl_cpu_isa_avx512_core = 0x27,
2050 
2055 
2060 } dnnl_cpu_isa_t;
2061 
2063 
2065 
2066 #ifdef __cplusplus
2067 }
2068 #endif
2069 
2070 #endif
dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:1890
dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:1902
dnnl_aBcdef4b
6D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:303
dnnl_dhwigo
6D CNN weights tensor (incl. groups), an alias to dnnl_defcab
Definition: dnnl_types.h:423
dnnl_scratchpad_mode_library
The library manages scratchpad (default) The allocation policy is controlled by the DNNL_ENABLE_CONCU...
Definition: dnnl_types.h:1625
dnnl_goidhw
6D CNN weights tensor (incl. groups), an alias to dnnl_abcdef
Definition: dnnl_types.h:419
dnnl_wino_wei_aaOIoi
Internal weights format for 2x3 Winograd.
Definition: dnnl_types.h:898
dnnl_io
2D CNN weights tensor, an alias to dnnl_ba
Definition: dnnl_types.h:382
dnnl_nc
2D CNN activations tensor, an alias to dnnl_ab
Definition: dnnl_types.h:357
dnnl_s32
32-bit signed integer.
Definition: dnnl_types.h:71
dnnl_x
1D tensor, an alias to dnnl_a
Definition: dnnl_types.h:355
dnnl_rnn_packed_desc_t
Description of tensor of packed weights for rnn.
Definition: dnnl_types.h:931
dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:1914
dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:264
dnnl_wino_wei_aaOio
Internal weights format for 2x3 Winograd.
Definition: dnnl_types.h:899
dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:1891
dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:73
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:443
dnnl_format_tag_t
dnnl_format_tag_t
Memory format tag specification.
Definition: dnnl_types.h:163
dnnl_f16
16-bit/half-precision floating point.
Definition: dnnl_types.h:65
dnnl_inner_product
An inner product primitive.
Definition: dnnl_types.h:690
dnnl_unimplemented
The operation failed because requested functionality is not implemented.
Definition: dnnl_types.h:46
dnnl_memory
dnnl_decab
permuted 5D tensor
Definition: dnnl_types.h:200
dnnl_primitive_desc_iterator
An opaque structure to describe a primitive descriptor iterator.
dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:686
dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:1922
dnnl_stream_t
struct dnnl_stream * dnnl_stream_t
An execution stream handle.
Definition: dnnl_types.h:1963
dnnl_status_t
dnnl_status_t
Status values returned by the library functions.
Definition: dnnl_types.h:38
dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:1901
dnnl_wino_undef
Undefined memory format, used for empty memory descriptors.
Definition: dnnl_types.h:896
dnnl_memory_extra_flag_compensation_conv_s8s8
Indicates the weights have an additional buffer, that depends on the compensation_mask.
Definition: dnnl_types.h:954
dnnl_softmax
A softmax primitive.
Definition: dnnl_types.h:680
dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:1919
dnnl_cn
2D CNN activations tensor, an alias to dnnl_ba
Definition: dnnl_types.h:359
DNNL_MAX_NDIMS
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:838
dnnl_ldnc
4D RNN states tensor in the format (num_layers, num_directions, batch, state channels).
Definition: dnnl_types.h:431
dnnl_scratchpad_mode_user
A user shall query and provide the scratchpad memory to primitives This mode is thread-safe as long a...
Definition: dnnl_types.h:1629
dnnl_defcab
permuted 6D tensor
Definition: dnnl_types.h:201
dnnl_aBcde16b
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:266
dnnl_engine
An opaque structure to describe an engine.
dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:719
dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:186
dnnl_matmul_desc_t
A descriptor of a matrix multiplication operation.
Definition: dnnl_types.h:1501
dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:727
dnnl_oihw
4D CNN weights tensor, an alias to dnnl_abcd
Definition: dnnl_types.h:392
dnnl_normalization_flags_t
dnnl_normalization_flags_t
Flags for batch normalization primitive.
Definition: dnnl_types.h:788
dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:668
dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:1911
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:1060
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:662
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1382
dnnl_ldigo
5D RNN weights tensor in the format (num_layers, num_directions, input_channels, num_gates,...
Definition: dnnl_types.h:438
dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:752
dnnl_exec_arg_t
A structure that contains an index and a memory object, and is used to pass arguments to dnnl_primiti...
Definition: dnnl_types.h:1842
dnnl_stream_flags_t
dnnl_stream_flags_t
Stream flags.
Definition: dnnl_types.h:1947
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:1881
dnnl_bf16
non-standard 16-bit (bfloat16 w/ 7 bit mantissa) floating point.
Definition: dnnl_types.h:67
dnnl_nhwc
4D CNN activations tensor, an alias to dnnl_acdb
Definition: dnnl_types.h:371
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1404
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1388
dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:196
dnnl_sum
A sum primitive.
Definition: dnnl_types.h:672
dnnl_oidhw
5D CNN weights tensor, an alias to dnnl_abcde
Definition: dnnl_types.h:402
dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:655
dnnl_a
plain 1D tensor
Definition: dnnl_types.h:176
const_dnnl_stream_t
const struct dnnl_stream * const_dnnl_stream_t
A constant execution stream handle.
Definition: dnnl_types.h:1965
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1348
dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1559
dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:1931
dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:1904
dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:737
dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:678
dnnl_stream_in_order
In-order execution.
Definition: dnnl_types.h:1952
dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:209
dnnl_oiw
3D CNN weights tensor, an alias to dnnl_abc
Definition: dnnl_types.h:384
dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:713
dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:729
dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:198
dnnl_cpu_isa_avx512_core
Intel(R) Advanced Vector Extensions 512 for Intel(R) Xeon(R) Processor Scalable Family and Intel(R) C...
Definition: dnnl_types.h:2048
dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:733
dnnl_hwio
4D CNN weights tensor, an alias to dnnl_cdba
Definition: dnnl_types.h:394
dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:645
dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:1899
dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:1932
dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:1924
dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:1918
dnnl_rnn_flags_undef
Undefined RNN flags.
Definition: dnnl_types.h:1384
dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:460
dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:1909
dnnl_aBCdef2c8b4c
6D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:301
dnnl_bcda
permuted 4D tensor
Definition: dnnl_types.h:195
dnnl_bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1395
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1209
dnnl_ba
permuted 2D tensor
Definition: dnnl_types.h:191
dnnl_data_type_t
dnnl_data_type_t
Data type specification.
Definition: dnnl_types.h:61
dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:762
dnnl_engine_t
struct dnnl_engine * dnnl_engine_t
An engine handle.
Definition: dnnl_types.h:1566
dnnl_binary_mul
Binary mul.
Definition: dnnl_types.h:780
dnnl_ihwo
4D CNN weights tensor, an alias to dnnl_bcda
Definition: dnnl_types.h:398
dnnl_format_tag_undef
Undefined memory format tag.
Definition: dnnl_types.h:165
dnnl_format_kind_rnn_packed
Packed weights format used in RNN.
Definition: dnnl_types.h:92
dnnl_goiw
4D CNN weights tensor (incl. groups), an alias to dnnl_abcd
Definition: dnnl_types.h:411
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:1588
dnnl_use_scaleshift
Use scale and shift parameters.
Definition: dnnl_types.h:813
dnnl_eltwise_log
Eltwise: natural logarithm.
Definition: dnnl_types.h:748
dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:1917
dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:252
dnnl_resampling_linear
Linear Resampling Method.
Definition: dnnl_types.h:784
dnnl_dhwio
5D CNN weights tensor, an alias to dnnl_cdeba
Definition: dnnl_types.h:404
dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:641
dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:725
dnnl_bac
permuted 3D tensor
Definition: dnnl_types.h:192
dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:826
dnnl_cpu_isa_avx512_mic_4ops
Intel(R) Advanced Vector Extensions 512 subset for Intel(R) Xeon Phi(TM) Processors 7235,...
Definition: dnnl_types.h:2044
dnnl_tn
2D RNN statistics tensor, an alias to dnnl_ab
Definition: dnnl_types.h:361
const_dnnl_primitive_desc_t
const struct dnnl_primitive_desc * const_dnnl_primitive_desc_t
A constant primitive descriptor handle.
Definition: dnnl_types.h:1599
dnnl_format_kind_wino
Weights format used in 8bit Winograd convolution.
Definition: dnnl_types.h:90
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:1670
dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:711
dnnl_ABcde4b16a4b
5D tensor blocked by 1st dimension with block size 16
Definition: dnnl_types.h:262
dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:475
dnnl_engine_kind_t
dnnl_engine_kind_t
Kinds of engines.
Definition: dnnl_types.h:1553
dnnl_binary
A binary primitive.
Definition: dnnl_types.h:696
dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:199
dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:721
dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:213
dnnl_abcde
plain 5D tensor
Definition: dnnl_types.h:180
dnnl_nCw8c
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:484
dnnl_post_ops_t
struct dnnl_post_ops * dnnl_post_ops_t
A post operation chain handle.
Definition: dnnl_types.h:1667
dnnl_query_gemm_d
GEMM descriptor (internal)
Definition: dnnl_types.h:1920
dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:1950
dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:682
dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:189
dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:1915
dnnl_backward
Backward propagation (with respect to all parameters).
Definition: dnnl_types.h:651
dnnl_giohw
5D CNN weights tensor (incl. groups), an alias to dnnl_acbde
Definition: dnnl_types.h:417
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1179
dnnl_cpu_isa_avx512_core_bf16
Intel(R) Advanced Vector Extensions 512 with Intel(R) DL Boost and Bfloat16 Support for Intel(R) Xeon...
Definition: dnnl_types.h:2058
dnnl_iterator_ends
Primitive iterator passed over last primitive descriptor.
Definition: dnnl_types.h:48
dnnl_primitive_desc
An opaque structure to describe a primitive descriptor.
dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:466
dnnl_pooling_avg
Average pooling (alias for dnnl_pooling_avg_exclude_padding)
Definition: dnnl_types.h:758
dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:764
dnnl_unidirectional
Alias for dnnl_unidirectional_left2right.
Definition: dnnl_types.h:1400
dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:235
dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:1923
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:1596
dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:1921
dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:776
dnnl_forward
Forward data propagation (alias for dnnl_forward_training).
Definition: dnnl_types.h:649
dnnl_f32
32-bit/single-precision floating point.
Definition: dnnl_types.h:69
dnnl_acbdef
permuted 6D tensor
Definition: dnnl_types.h:188
dnnl_iwo
3D CNN weights tensor, an alias to dnnl_bca
Definition: dnnl_types.h:390
dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:800
dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:760
dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:670
dnnl_ntc
3D RNN data tensor in the format (batch, seq_length, input channels).
Definition: dnnl_types.h:428
dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:1933
dnnl_format_kind_undef
Undefined memory format kind, used for empty memory descriptors.
Definition: dnnl_types.h:81
dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:296
dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:688
dnnl_primitive
dnnl_cpu_isa_all
Any ISA (no restrictions)
Definition: dnnl_types.h:2027
dnnl_query_op_d
op descriptor
Definition: dnnl_types.h:1908
dnnl_primitive_desc_iterator_t
struct dnnl_primitive_desc_iterator * dnnl_primitive_desc_iterator_t
A primitive descriptor iterator handle.
Definition: dnnl_types.h:1585
dnnl_out_of_memory
The operation failed due to an out-of-memory condition.
Definition: dnnl_types.h:42
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:870
dnnl_idhwo
5D CNN weights tensor, an alias to dnnl_bcdea
Definition: dnnl_types.h:408
dnnl_abcd
plain 4D tensor
Definition: dnnl_types.h:179
dnnl_u8
8-bit unsigned integer.
Definition: dnnl_types.h:75
dnnl_ncdhw
5D CNN activations tensor, an alias to dnnl_abcde
Definition: dnnl_types.h:375
dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:1934
dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:350
dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:1910
dnnl_memory_t
struct dnnl_memory * dnnl_memory_t
A memory handle.
Definition: dnnl_types.h:1030
dnnl_logsoftmax
A logsoftmax primitive.
Definition: dnnl_types.h:698
dnnl_format_tag_any
Undefined memory format tag.
Definition: dnnl_types.h:168
dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:715
dnnl_reorder
A reorder primitive.
Definition: dnnl_types.h:666
dnnl_lrn_desc_t
A descriptor of a Local Response Normalization (LRN) operation.
Definition: dnnl_types.h:1247
dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:1956
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:1113
dnnl_owi
3D CNN weights tensor, an alias to dnnl_acb
Definition: dnnl_types.h:386
dnnl_backward_data
Backward data propagation.
Definition: dnnl_types.h:653
dnnl_acdeb
permuted 5D tensor
Definition: dnnl_types.h:190
dnnl_version_t
Structure containing version information as per Semantic Versioning
Definition: dnnl_types.h:1995
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1278
dnnl_ldgo
4D RNN bias tensor in the format (num_layers, num_directions, num_gates, output_channels).
Definition: dnnl_types.h:452
dnnl_dims_t
dnnl_dim_t dnnl_dims_t[DNNL_MAX_NDIMS]
A type to describe tensor dimensions.
Definition: dnnl_types.h:873
dnnl_eltwise_desc_t
A descriptor of a element-wise operation.
Definition: dnnl_types.h:1135
dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:229
dnnl_resampling_nearest
Nearest Neighbor Resampling Method.
Definition: dnnl_types.h:782
dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:692
dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:1888
dnnl_cpu_isa_sse41
Intel(R) SSE4.1.
Definition: dnnl_types.h:2030
dnnl_format_kind_t
dnnl_format_kind_t
Memory format kind.
Definition: dnnl_types.h:79
dnnl_blocking_desc_t
Generic description of blocked data layout for most memory formats.
Definition: dnnl_types.h:878
const_dnnl_primitive_t
const struct dnnl_primitive * const_dnnl_primitive_t
A constant primitive handle.
Definition: dnnl_types.h:1683
dnnl_abdec
permuted 5D tensor
Definition: dnnl_types.h:185
dnnl_cpu_isa_avx2
Intel(R) Advanced Vector Extensions 2.
Definition: dnnl_types.h:2036
dnnl_cpu_isa_avx512_core_vnni
Intel(R) Advanced Vector Extensions 512 with Intel(R) DL Boost Support for Intel(R) Xeon(R) Processor...
Definition: dnnl_types.h:2053
dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:220
dnnl_layer_normalization_desc_t
A descriptor of a Layer Normalization operation.
Definition: dnnl_types.h:1311
dnnl_not_required
Queried element is not required for given primitive.
Definition: dnnl_types.h:52
dnnl_eltwise_clip
Eltwise: clip.
Definition: dnnl_types.h:750
dnnl_wino_desc_t
Description of tensor of weights for winograd 2x3 convolution.
Definition: dnnl_types.h:906
dnnl_pooling_avg_include_padding
Average pooling include padding.
Definition: dnnl_types.h:754
dnnl_hwigo
5D CNN weights tensor (incl. groups), an alias to dnnl_decab
Definition: dnnl_types.h:415
dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:676
dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:273
dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:1954
dnnl_gemm
A matrix multiplication primitive (internal).
Definition: dnnl_types.h:694
dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:674
dnnl_primitive_t
struct dnnl_primitive * dnnl_primitive_t
A primitive handle.
Definition: dnnl_types.h:1681
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:1644
dnnl_primitive_attr
An opaque structure for primitive descriptor attributes.
dnnl_lrn
An LRN primitive.
Definition: dnnl_types.h:684
dnnl_query_src_md
source memory desc
Definition: dnnl_types.h:1928
dnnl_logsoftmax_desc_t
dnnl_softmax_desc_t dnnl_logsoftmax_desc_t
A descriptor of a LogSoftmax operation.
Definition: dnnl_types.h:1201
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:928
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1607
dnnl_data_type_undef
Undefined data type, used for empty memory descriptors.
Definition: dnnl_types.h:63
dnnl_query_engine
execution engine
Definition: dnnl_types.h:1884
dnnl_wino_memory_format_t
dnnl_wino_memory_format_t
Winograd-specific formats.
Definition: dnnl_types.h:894
dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:1913
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1523
dnnl_invalid_arguments
The operation failed because of incorrect function arguments.
Definition: dnnl_types.h:44
dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1557
dnnl_post_ops
An opaque structure for a chain of post operations.
dnnl_query_undef
no query
Definition: dnnl_types.h:1882
dnnl_eltwise_swish
Eltwise: swish.
Definition: dnnl_types.h:746
dnnl_ndhwc
5D CNN activations tensor, an alias to dnnl_acdeb
Definition: dnnl_types.h:377
dnnl_wino_wei_OBaaIBOIio
Internal weights format for 4x3 Winograd.
Definition: dnnl_types.h:902
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:976
dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:657
dnnl_op_desc_t
void * dnnl_op_desc_t
A pointer to any of the operation descriptors.
Definition: dnnl_types.h:1046
dnnl_ncw
3D CNN activations tensor, an alias to dnnl_abc
Definition: dnnl_types.h:365
dnnl_matmul
A matrix multiplication primitive.
Definition: dnnl_types.h:700
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2025
dnnl_query_some_md
stub
Definition: dnnl_types.h:1927
const_dnnl_memory_t
const struct dnnl_memory * const_dnnl_memory_t
A constant memory handle.
Definition: dnnl_types.h:1033
dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:472
dnnl_oi
2D CNN weights tensor, an alias to dnnl_ab
Definition: dnnl_types.h:380
dnnl_ohwi
4D CNN weights tensor, an alias to dnnl_acdb
Definition: dnnl_types.h:396
dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:193
dnnl_format_kind_any
Unspecified format kind.
Definition: dnnl_types.h:84
dnnl_tnc
3D RNN data tensor in the format (seq_length, batch, input channels).
Definition: dnnl_types.h:426
dnnl_nChw16c
4D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcd16b
Definition: dnnl_types.h:469
dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:1912
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:1641
dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:197
dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:1887
dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:187
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:706
dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:717
dnnl_cpu_isa_avx512_mic
Intel(R) Advanced Vector Extensions 512 subset for Intel(R) Xeon Phi(TM) Processors x200 Series.
Definition: dnnl_types.h:2040
dnnl_ldgoi
5D RNN weights tensor in the format (num_layers, num_directions, num_gates, output_channels,...
Definition: dnnl_types.h:445
dnnl_success
The operation was successful.
Definition: dnnl_types.h:40
dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:739
dnnl_abcdef
plain 6D tensor
Definition: dnnl_types.h:181
dnnl_goihw
5D CNN weights tensor (incl. groups), an alias to dnnl_abcde
Definition: dnnl_types.h:413
dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1398
dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:731
dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:478
dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:768
dnnl_abc
plain 3D tensor
Definition: dnnl_types.h:178
dnnl_stream
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1476
dnnl_memory_extra_flags_t
dnnl_memory_extra_flags_t
Flags for memory special features.
Definition: dnnl_types.h:945
dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:709
dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:1929
dnnl_wio
3D CNN weights tensor, an alias to dnnl_cba
Definition: dnnl_types.h:388
dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:647
dnnl_aBcde8b
5D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:283
dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:638
dnnl_blocked
A tensor in a generic format described by the stride and blocking values in each dimension.
Definition: dnnl_types.h:88
dnnl_query_primitive_kind
primitive kind
Definition: dnnl_types.h:1885
dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1390
dnnl_iohw
4D CNN weights tensor, an alias to dnnl_bacd
Definition: dnnl_types.h:400
dnnl_eltwise_elu
Eltwise: parametric exponential linear unit (elu)
Definition: dnnl_types.h:723
dnnl_odhwi
5D CNN weights tensor, an alias to dnnl_acdeb
Definition: dnnl_types.h:406
dnnl_nwc
3D CNN activations tensor, an alias to dnnl_acb
Definition: dnnl_types.h:367
dnnl_nCw4c
3D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBc4b
Definition: dnnl_types.h:481
dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:766
dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1555
dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:463
dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:702
dnnl_wino_wei_aaOBiOo
Internal weights format for 2x3 Winograd.
Definition: dnnl_types.h:900
dnnl_cpu_isa_avx
Intel(R) Advanced Vector Extensions.
Definition: dnnl_types.h:2033
dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:194
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:635
dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:1935
dnnl_nchw
4D CNN activations tensor, an alias to dnnl_abcd
Definition: dnnl_types.h:369
dnnl_eltwise_gelu
Eltwise: gelu.
Definition: dnnl_types.h:744
dnnl_query_weights_md
weights memory descriptor desc
Definition: dnnl_types.h:1930
dnnl_memory_extra_desc_t
Description of extra information stored in memory.
Definition: dnnl_types.h:960
dnnl_query_batch_normalization_d
batch normalization descriptor
Definition: dnnl_types.h:1916
dnnl_chwn
4D CNN activations tensor, an alias to dnnl_bcda
Definition: dnnl_types.h:373
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:1048
dnnl_undefined_primitive
Undefined primitive.
Definition: dnnl_types.h:664
dnnl_eltwise_soft_relu
Eltwise: soft_relu.
Definition: dnnl_types.h:735
dnnl_nt
2D RNN statistics tensor, an alias to dnnl_ba
Definition: dnnl_types.h:363
dnnl_deconvolution_desc_t
dnnl_convolution_desc_t dnnl_deconvolution_desc_t
A descriptor of a deconvolution operation.
Definition: dnnl_types.h:1105
dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1392
dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:247
dnnl_ab
plain 2D tensor
Definition: dnnl_types.h:177
dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:1896
dnnl_runtime_error
Primitive or engine failed on execution.
Definition: dnnl_types.h:50
dnnl_giodhw
6D CNN weights tensor (incl. groups), an alias to dnnl_acbdef
Definition: dnnl_types.h:421
dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:1936
dnnl_query_some_d
stub
Definition: dnnl_types.h:1907
dnnl::query::primitive_kind
primitive kind
dnnl_pooling_avg_exclude_padding
Average pooling exclude padding.
Definition: dnnl_types.h:756
dnnl_binary_add
Binary add.
Definition: dnnl_types.h:778