oneAPI Deep Neural Network Library (oneDNN)  1.6.4
Performance library for Deep Learning
dnnl.hpp
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright 2016-2020 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_HPP
21 #define DNNL_HPP
22 
23 #include "dnnl_config.h"
24 
26 #include <algorithm>
27 #include <cstdlib>
28 #include <iterator>
29 #include <memory>
30 #include <string>
31 #include <vector>
32 #include <unordered_map>
33 
34 #include "dnnl.h"
35 
36 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
37 #include "dnnl_threadpool_iface.hpp"
38 #endif
39 
40 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
41 #include <CL/cl.h>
42 #endif
43 
45 // __cpp_exceptions is referred from
46 // https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html
47 // gcc < 5 does not define __cpp_exceptions but __EXCEPTIONS,
48 // Microsoft C++ Compiler does not provide an option to disable exceptions
49 #ifndef DNNL_ENABLE_EXCEPTIONS
50 #if __cpp_exceptions || __EXCEPTIONS \
51  || (defined(_MSC_VER) && !defined(__clang__))
52 #define DNNL_ENABLE_EXCEPTIONS 1
53 #else
54 #define DNNL_ENABLE_EXCEPTIONS 0
55 #endif
56 #endif
57 
58 #if defined(__GNUC__) || defined(__clang__)
59 #define DNNL_TRAP() __builtin_trap()
60 #elif defined(__INTEL_COMPILER) || defined(_MSC_VER)
61 #define DNNL_TRAP() __debugbreak()
62 #else
63 #error "unknown compiler"
64 #endif
65 
66 #if DNNL_ENABLE_EXCEPTIONS
67 #define DNNL_THROW_ERROR(status, msg) throw error(status, msg)
68 #else
69 #include <cstdio>
70 #define DNNL_THROW_ERROR(status, msg) \
71  do { \
72  fputs(msg, stderr); \
73  DNNL_TRAP(); \
74  } while (0)
75 #endif
76 
79 
81 namespace dnnl {
82 
86 
91 struct error : public std::exception {
93  const char *message;
94 
99  error(dnnl_status_t status, const char *message)
100  : status(status), message(message) {}
101 
103  const char *what() const noexcept override { return message; }
104 
110  static void wrap_c_api(dnnl_status_t status, const char *message) {
111  if (status != dnnl_success) DNNL_THROW_ERROR(status, message);
112  }
113 };
114 
116 template <typename T>
117 void validate_container_size(const T &v, const char *error_message,
118  int min_size = 1, int max_size = -1) {
119  const int size = (int)v.size();
120  if (size < min_size || (max_size >= 0 && size > max_size))
121  DNNL_THROW_ERROR(dnnl_invalid_arguments, error_message);
122 }
124 
126 template <typename T>
127 struct handle_traits {};
128 
142 template <typename T, typename traits = handle_traits<T>>
143 struct handle {
144 private:
145  static dnnl_status_t dummy_destructor(T) { return dnnl_success; }
146  std::shared_ptr<typename std::remove_pointer<T>::type> data_ {0};
147 
148 protected:
149  bool operator==(const T other) const { return other == data_.get(); }
150  bool operator!=(const T other) const { return !(*this == other); }
151 
152 public:
160  handle() = default;
161 
163  handle(const handle<T, traits> &) = default;
167  handle(handle<T, traits> &&) = default;
170 
176  explicit handle(T t, bool weak = false) { reset(t, weak); }
177 
183  void reset(T t, bool weak = false) {
184  data_.reset(t, weak ? &dummy_destructor : traits::destructor);
185  }
186 
192  T get(bool allow_empty = false) const {
193  T result = data_.get();
194  if (allow_empty == false && result == nullptr)
195  DNNL_THROW_ERROR(
196  dnnl_invalid_arguments, "object is not initialized");
197  return result;
198  }
199 
204  explicit operator T() const { return get(true); }
205 
209  explicit operator bool() const { return get(true) != nullptr; }
210 
217  bool operator==(const handle<T, traits> &other) const {
218  return other.data_.get() == data_.get();
219  }
220 
227  bool operator!=(const handle &other) const { return !(*this == other); }
228 };
229 
231 template <>
232 struct handle_traits<dnnl_memory_t> {
233  static dnnl_status_t destructor(dnnl_memory_t p) {
234  return dnnl_memory_destroy(p);
235  }
236 };
237 
238 template <>
239 struct handle_traits<dnnl_primitive_desc_t> {
240  static dnnl_status_t destructor(dnnl_primitive_desc_t p) {
241  return dnnl_primitive_desc_destroy(p);
242  }
243 };
244 
245 template <>
246 struct handle_traits<dnnl_primitive_t> {
247  static dnnl_status_t destructor(dnnl_primitive_t p) {
248  return dnnl_primitive_destroy(p);
249  }
250 };
251 
252 template <>
253 struct handle_traits<dnnl_primitive_desc_iterator_t> {
254  static dnnl_status_t destructor(dnnl_primitive_desc_iterator_t p) {
256  }
257 };
259 
261 
262 struct stream;
263 struct memory;
264 struct primitive_desc;
265 
270 
274 
276 struct primitive : public handle<dnnl_primitive_t> {
278  enum class kind {
288  sum = dnnl_sum,
300  lrn = dnnl_lrn,
308  rnn = dnnl_rnn,
317  };
318 
319  using handle::handle;
320 
322  primitive() = default;
323 
328 
333 
339 
343  inline kind get_kind() const;
344 
357  void execute(const stream &astream,
358  const std::unordered_map<int, memory> &args) const;
359 };
360 
366  return static_cast<dnnl_primitive_kind_t>(akind);
367 }
368 
372  "could not get a primitive descriptor from a primitive");
373  return pd;
374 }
375 
378  // TODO (Roma): the code below is only needed because get_primitive_desc
379  // returns a C type.
382  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
383  "could not get a primitive kind from a primitive descriptor");
384  return static_cast<dnnl::primitive::kind>(kind);
385 }
386 
388 
400 
402 enum class scratchpad_mode {
425 };
426 
432  return static_cast<dnnl_scratchpad_mode_t>(mode);
433 }
434 
436 enum class prop_kind {
441  forward_training = dnnl_forward_training,
445  forward_inference = dnnl_forward_inference,
448  forward_scoring = dnnl_forward_scoring,
451  forward = dnnl_forward,
453  backward = dnnl_backward,
455  backward_data = dnnl_backward_data,
457  backward_weights = dnnl_backward_weights,
460 };
461 
467  return static_cast<dnnl_prop_kind_t>(akind);
468 }
469 
471 enum class algorithm {
473  undef = dnnl_alg_kind_undef,
476  convolution_auto = dnnl_convolution_auto,
478  convolution_direct = dnnl_convolution_direct,
480  convolution_winograd = dnnl_convolution_winograd,
482  deconvolution_direct = dnnl_deconvolution_direct,
484  deconvolution_winograd = dnnl_deconvolution_winograd,
486  eltwise_relu = dnnl_eltwise_relu,
488  eltwise_tanh = dnnl_eltwise_tanh,
490  eltwise_elu = dnnl_eltwise_elu,
492  eltwise_square = dnnl_eltwise_square,
494  eltwise_abs = dnnl_eltwise_abs,
496  eltwise_sqrt = dnnl_eltwise_sqrt,
498  eltwise_swish = dnnl_eltwise_swish,
500  eltwise_linear = dnnl_eltwise_linear,
502  eltwise_bounded_relu = dnnl_eltwise_bounded_relu,
504  eltwise_soft_relu = dnnl_eltwise_soft_relu,
506  eltwise_logistic = dnnl_eltwise_logistic,
508  eltwise_exp = dnnl_eltwise_exp,
511  eltwise_gelu = dnnl_eltwise_gelu,
513  eltwise_gelu_tanh = dnnl_eltwise_gelu_tanh,
515  eltwise_gelu_erf = dnnl_eltwise_gelu_erf,
517  eltwise_log = dnnl_eltwise_log,
519  eltwise_clip = dnnl_eltwise_clip,
521  eltwise_pow = dnnl_eltwise_pow,
523  eltwise_round = dnnl_eltwise_round,
525  eltwise_relu_use_dst_for_bwd = dnnl_eltwise_relu_use_dst_for_bwd,
527  eltwise_tanh_use_dst_for_bwd = dnnl_eltwise_tanh_use_dst_for_bwd,
529  eltwise_elu_use_dst_for_bwd = dnnl_eltwise_elu_use_dst_for_bwd,
531  eltwise_sqrt_use_dst_for_bwd = dnnl_eltwise_sqrt_use_dst_for_bwd,
533  eltwise_logistic_use_dst_for_bwd = dnnl_eltwise_logistic_use_dst_for_bwd,
535  eltwise_exp_use_dst_for_bwd = dnnl_eltwise_exp_use_dst_for_bwd,
537  lrn_across_channels = dnnl_lrn_across_channels,
539  lrn_within_channel = dnnl_lrn_within_channel,
541  pooling_max = dnnl_pooling_max,
544  pooling_avg = dnnl_pooling_avg,
546  pooling_avg_include_padding = dnnl_pooling_avg_include_padding,
548  pooling_avg_exclude_padding = dnnl_pooling_avg_exclude_padding,
550  vanilla_rnn = dnnl_vanilla_rnn,
552  vanilla_lstm = dnnl_vanilla_lstm,
554  vanilla_gru = dnnl_vanilla_gru,
560  lbr_gru = dnnl_lbr_gru,
562  binary_add = dnnl_binary_add,
564  binary_mul = dnnl_binary_mul,
566  binary_max = dnnl_binary_max,
568  binary_min = dnnl_binary_min,
570  resampling_nearest = dnnl_resampling_nearest,
573 };
574 
579  return static_cast<dnnl_alg_kind_t>(aalgorithm);
580 }
581 
583 
586 
588 enum class normalization_flags : unsigned {
594 
602  use_global_stats = dnnl_use_global_stats,
603 
609  use_scale_shift = dnnl_use_scaleshift,
610 
616 };
617 
622  return static_cast<dnnl_normalization_flags_t>(flags);
623 }
624 
626 
629 
631 enum class rnn_flags : unsigned {
634 };
635 
640  return static_cast<dnnl_rnn_flags_t>(flags);
641 }
642 
643 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
644  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
645  return static_cast<enum_name>( \
646  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
647  } \
648 \
649  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
650  return static_cast<enum_name>( \
651  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
652  } \
653 \
654  inline enum_name operator^(enum_name lhs, enum_name rhs) { \
655  return static_cast<enum_name>( \
656  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
657  } \
658 \
659  inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
660  lhs = static_cast<enum_name>( \
661  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
662  return lhs; \
663  } \
664 \
665  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
666  lhs = static_cast<enum_name>( \
667  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
668  return lhs; \
669  } \
670 \
671  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
672  lhs = static_cast<enum_name>( \
673  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
674  return lhs; \
675  } \
676 \
677  inline enum_name operator~(enum_name rhs) { \
678  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
679  }
680 
681 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
682 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
683 
684 enum class rnn_direction {
687  unidirectional_left2right = dnnl_unidirectional_left2right,
689  unidirectional_right2left = dnnl_unidirectional_right2left,
692  bidirectional_concat = dnnl_bidirectional_concat,
695  bidirectional_sum = dnnl_bidirectional_sum,
698 };
699 
704  return static_cast<dnnl_rnn_direction_t>(dir);
705 }
706 
708 
711 
718 enum class query {
721 
726 
728  num_of_inputs_s32 = dnnl_query_num_of_inputs_s32,
730  num_of_outputs_s32 = dnnl_query_num_of_outputs_s32,
731 
733  time_estimate_f64 = dnnl_query_time_estimate_f64,
737  memory_consumption_s64 = dnnl_query_memory_consumption_s64,
738 
743 
745  reorder_src_engine = dnnl_query_reorder_src_engine,
747  reorder_dst_engine = dnnl_query_reorder_dst_engine,
748 
751 
754 
756  op_d = dnnl_query_op_d,
758  convolution_d = dnnl_query_convolution_d,
760  deconvolution_d = dnnl_query_deconvolution_d,
762  shuffle_d = dnnl_query_shuffle_d,
764  eltwise_d = dnnl_query_eltwise_d,
766  softmax_d = dnnl_query_softmax_d,
768  pooling_d = dnnl_query_pooling_d,
770  lrn_d = dnnl_query_lrn_d,
772  batch_normalization_d = dnnl_query_batch_normalization_d,
774  layer_normalization_d = dnnl_query_layer_normalization_d,
776  inner_product_d = dnnl_query_inner_product_d,
778  rnn_d = dnnl_query_rnn_d,
780  binary_d = dnnl_query_binary_d,
782  logsoftmax_d = dnnl_query_logsoftmax_d,
784  matmul_d = dnnl_query_matmul_d,
786  resampling_d = dnnl_query_resampling_d,
787 
789  src_md = dnnl_query_src_md,
791  diff_src_md = dnnl_query_diff_src_md,
793  weights_md = dnnl_query_weights_md,
795  diff_weights_md = dnnl_query_diff_weights_md,
797  dst_md = dnnl_query_dst_md,
799  diff_dst_md = dnnl_query_diff_dst_md,
801  workspace_md = dnnl_query_workspace_md,
803  scratchpad_md = dnnl_query_scratchpad_md,
806 };
807 
812  return static_cast<dnnl_query_t>(aquery);
813 }
814 
816 
818 
829 
831 template <>
832 struct handle_traits<dnnl_engine_t> {
833  static dnnl_status_t destructor(dnnl_engine_t p) {
834  return dnnl_engine_destroy(p);
835  }
836 };
838 
840 struct engine : public handle<dnnl_engine_t> {
841  friend struct primitive;
842  friend struct reorder;
843 
845  enum class kind {
849  cpu = dnnl_cpu,
851  gpu = dnnl_gpu,
852  };
853 
854  using handle::handle;
855 
858  engine() = default;
859 
864  static size_t get_count(kind akind) {
865  return dnnl_engine_get_count(convert_to_c(akind));
866  }
867 
873  engine(kind akind, size_t index) {
876  dnnl_engine_create(&engine, convert_to_c(akind), index),
877  "could not create an engine");
878  reset(engine);
879  }
880 
881 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
882  engine(kind akind, cl_device_id device, cl_context context) {
889  dnnl_engine_t c_engine;
890  error::wrap_c_api(dnnl_engine_create_ocl(&c_engine, convert_to_c(akind),
891  device, context),
892  "could not create an engine");
893  reset(c_engine);
894  }
895 #endif
896 
902  dnnl_engine_t c_engine;
905  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
906  "could not get an engine from a primitive_desc");
907  reset(c_engine, true);
908  }
909 
912  kind get_kind() const {
915  "could not get kind of an engine");
916  return static_cast<engine::kind>(kind);
917  }
918 
919 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
920  cl_context get_ocl_context() const {
923  cl_context context = nullptr;
925  "could not get an OpenCL context from an engine");
926  return context;
927  }
928 
931  cl_device_id get_ocl_device() const {
932  cl_device_id device = nullptr;
934  "could not get an OpenCL device from an engine");
935  return device;
936  }
937 #endif
938 
944  template <typename primitive_desc>
945  static engine query(const primitive_desc &pd) {
946  return query(pd, dnnl::query::engine);
947  }
948 
949 private:
950  static dnnl_engine_kind_t convert_to_c(kind akind) {
951  return static_cast<dnnl_engine_kind_t>(akind);
952  }
953 
954  template <typename primitive_desc>
955  static engine query(const primitive_desc &pd, dnnl::query what) {
956  dnnl_engine_t c_engine;
958  dnnl::convert_to_c(what), 0, &c_engine),
959  "could not get an engine from a primitive_desc");
960  return engine(c_engine, true);
961  }
962 };
963 
969  return static_cast<dnnl_engine_kind_t>(akind);
970 }
971 
973 
981 
983 template <>
984 struct handle_traits<dnnl_stream_t> {
985  static dnnl_status_t destructor(dnnl_stream_t p) {
986  return dnnl_stream_destroy(p);
987  }
988 };
989 template <>
990 struct handle_traits<dnnl_stream_attr_t> {
991  static dnnl_status_t destructor(dnnl_stream_attr_t p) {
992  return dnnl_stream_attr_destroy(p);
993  }
994 };
996 
998 struct stream_attr : public handle<dnnl_stream_attr_t> {
999  using handle::handle;
1000 
1002  stream_attr() = default;
1003 
1009  dnnl_stream_attr_t attr;
1011  "could not create stream attributes");
1012  reset(attr);
1013  }
1014 
1015 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
1016  void set_threadpool(threadpool_iface *threadpool) {
1024  error::wrap_c_api(dnnl_stream_attr_set_threadpool(get(), threadpool),
1025  "could not set stream threadpool attribute");
1026  }
1027 
1034  threadpool_iface *tp;
1035  error::wrap_c_api(dnnl_stream_attr_get_threadpool(get(), (void **)&tp),
1036  "could not set stream threadpool attribute");
1037  return tp;
1038  }
1039 #endif
1040 };
1041 
1043 struct stream : public handle<dnnl_stream_t> {
1044  using handle::handle;
1045 
1047  enum class flags : unsigned {
1057  };
1058 
1061  stream() = default;
1062 
1069  stream(const engine &aengine, flags aflags = flags::default_flags,
1070  const stream_attr &attr = stream_attr()) {
1073  static_cast<dnnl_stream_flags_t>(aflags),
1074  attr.get(true)),
1075  "could not create a stream");
1076  reset(stream);
1077  }
1078 
1079 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1080  stream(const engine &aengine, cl_command_queue queue) {
1086  error::wrap_c_api(dnnl_stream_create_ocl(&stream, aengine.get(), queue),
1087  "could not create a stream");
1088  reset(stream);
1089  }
1090 
1093  cl_command_queue get_ocl_command_queue() const {
1094  cl_command_queue queue = nullptr;
1096  "could not get an OpenCL command queue from a stream");
1097  return queue;
1098  }
1099 #endif
1100 
1105  dnnl_stream_wait(get()), "could not wait on a stream");
1106  return *this;
1107  }
1108 };
1109 
1110 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1111 
1112 
1177 
1184 struct memory : public handle<dnnl_memory_t> {
1186  typedef dnnl_dim_t dim;
1189  typedef std::vector<dim> dims;
1190 
1197  template <typename T>
1198  static void validate_dims(const std::vector<T> &v, int min_size = 0) {
1199  validate_container_size(
1200  v, "dimensions are invalid", min_size, DNNL_MAX_NDIMS);
1201  }
1202 
1204  enum class data_type {
1208  f16 = dnnl_f16,
1210  bf16 = dnnl_bf16,
1212  f32 = dnnl_f32,
1214  s32 = dnnl_s32,
1216  s8 = dnnl_s8,
1218  u8 = dnnl_u8,
1219  };
1220 
1222  enum class format_kind {
1227  any = dnnl_format_kind_any,
1231  blocked = dnnl_blocked,
1233  wino = dnnl_format_kind_wino,
1235  packed = dnnl_format_kind_rnn_packed,
1236  };
1237 
1278  enum class format_tag {
1283  any = dnnl_format_tag_any,
1284 
1286  a = dnnl_a,
1287 
1289  ab = dnnl_ab,
1291  ba = dnnl_ba,
1292 
1294  abc = dnnl_abc,
1296  acb = dnnl_acb,
1298  bac = dnnl_bac,
1300  bca = dnnl_bca,
1302  cba = dnnl_cba,
1303 
1305  abcd = dnnl_abcd,
1307  abdc = dnnl_abdc,
1309  acdb = dnnl_acdb,
1311  bacd = dnnl_bacd,
1313  bcda = dnnl_bcda,
1315  cdba = dnnl_cdba,
1317  dcab = dnnl_dcab,
1318 
1320  abcde = dnnl_abcde,
1322  abdec = dnnl_abdec,
1324  acbde = dnnl_acbde,
1326  acdeb = dnnl_acdeb,
1328  bacde = dnnl_bacde,
1330  bcdea = dnnl_bcdea,
1332  cdeba = dnnl_cdeba,
1334  decab = dnnl_decab,
1336  abced = dnnl_abced,
1337 
1339  abcdef = dnnl_abcdef,
1341  acbdef = dnnl_acbdef,
1343  defcab = dnnl_defcab,
1345  abcdfe = dnnl_abcdfe,
1346 
1348  abcdefg = dnnl_abcdefg,
1350  abcdegf = dnnl_abcdegf,
1351 
1353  abcdefgh = dnnl_abcdefgh,
1355  abcdefhg = dnnl_abcdefhg,
1356 
1358  abcdefghi = dnnl_abcdefghi,
1360  abcdefgih = dnnl_abcdefgih,
1361 
1363  abcdefghij = dnnl_abcdefghij,
1365  abcdefghji = dnnl_abcdefghji,
1366 
1368  abcdefghijk = dnnl_abcdefghijk,
1370  abcdefghikj = dnnl_abcdefghikj,
1371 
1373  abcdefghijkl = dnnl_abcdefghijkl,
1375  abcdefghijlk = dnnl_abcdefghijlk,
1376 
1378  x = a,
1380  nc = ab,
1382  cn = ba,
1384  tn = ab,
1386  nt = ba,
1388  ncw = abc,
1390  nwc = acb,
1392  nchw = abcd,
1394  nhwc = acdb,
1396  chwn = bcda,
1398  ncdhw = abcde,
1400  ndhwc = acdeb,
1401 
1403  oi = ab,
1405  io = ba,
1407  oiw = abc,
1409  owi = acb,
1411  wio = cba,
1413  iwo = bca,
1415  oihw = abcd,
1417  hwio = cdba,
1419  ohwi = acdb,
1421  ihwo = bcda,
1423  iohw = bacd,
1425  oidhw = abcde,
1427  dhwio = cdeba,
1429  odhwi = acdeb,
1431  iodhw = bacde,
1433  idhwo = bcdea,
1434 
1436  goiw = abcd,
1438  wigo = dcab,
1440  goihw = abcde,
1442  hwigo = decab,
1444  giohw = acbde,
1446  goidhw = abcdef,
1448  giodhw = acbdef,
1450  dhwigo = defcab,
1451 
1453  tnc = abc,
1455  ntc = bac,
1458  ldnc = abcd,
1465  ldigo = abcde,
1472  ldgoi = abdec,
1475  ldio = abcd,
1478  ldoi = abdc,
1485  ldgo = abcd,
1486 
1487  // Opaque blocked formats
1488 
1489  Abc16a = dnnl_Abc16a,
1490  ABc16a16b = dnnl_ABc16a16b,
1491  ABc4a4b = dnnl_ABc4a4b,
1492  aBc16b = dnnl_aBc16b,
1493  aBc32b = dnnl_aBc32b,
1494  ABc16b16a = dnnl_ABc16b16a,
1495  Abc4a = dnnl_Abc4a,
1496  aBc4b = dnnl_aBc4b,
1497  ABc4b16a4b = dnnl_ABc4b16a4b,
1498  ABc2b8a4b = dnnl_ABc2b8a4b,
1499  ABc16b16a4b = dnnl_ABc16b16a4b,
1500  ABc16b16a2b = dnnl_ABc16b16a2b,
1501  ABc4b4a = dnnl_ABc4b4a,
1502  ABc8a16b2a = dnnl_ABc8a16b2a,
1503  ABc8a8b = dnnl_ABc8a8b,
1504  ABc8a4b = dnnl_ABc8a4b,
1505  aBc8b = dnnl_aBc8b,
1506  ABc8b16a2b = dnnl_ABc8b16a2b,
1507  ABc8b8a = dnnl_ABc8b8a,
1508  Abcd8a = dnnl_Abcd8a,
1509  Abcd16a = dnnl_Abcd16a,
1510  Abcd32a = dnnl_Abcd32a,
1511  ABcd16a16b = dnnl_ABcd16a16b,
1512  aBcd16b = dnnl_aBcd16b,
1513  aBcd32b = dnnl_aBcd32b,
1514  ABcd16b16a = dnnl_ABcd16b16a,
1515  aBCd16b16c = dnnl_aBCd16b16c,
1516  aBCd16c16b = dnnl_aBCd16c16b,
1517  Abcd4a = dnnl_Abcd4a,
1518  aBcd4b = dnnl_aBcd4b,
1519  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1520  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1521  ABcd4b4a = dnnl_ABcd4b4a,
1522  ABcd4a4b = dnnl_ABcd4a4b,
1523  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1524  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1525  ABcd16b16a4b = dnnl_ABcd16b16a4b,
1526  ABcd16b16a2b = dnnl_ABcd16b16a2b,
1527  aBCd16c16b4c = dnnl_aBCd16c16b4c,
1528  aBCd16c16b2c = dnnl_aBCd16c16b2c,
1529  aBCd4c4b = dnnl_aBCd4c4b,
1530  aBCd4b4c = dnnl_aBCd4b4c,
1531  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1532  ABcd8a8b = dnnl_ABcd8a8b,
1533  ABcd8a4b = dnnl_ABcd8a4b,
1535  aBcd8b = dnnl_aBcd8b,
1536  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1537  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1539  ABcd8b8a = dnnl_ABcd8b8a,
1540  aBCd8b8c = dnnl_aBCd8b8c,
1541  aBCd8b4c = dnnl_aBCd8b4c,
1542  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1543  aBCd8c8b = dnnl_aBCd8c8b,
1544  Abcde16a = dnnl_Abcde16a,
1545  Abcde32a = dnnl_Abcde32a,
1546  ABcde16a16b = dnnl_ABcde16a16b,
1547  aBcde16b = dnnl_aBcde16b,
1548  aBcde32b = dnnl_aBcde32b,
1549  ABcde16b16a = dnnl_ABcde16b16a,
1550  aBCde16b16c = dnnl_aBCde16b16c,
1551  aBCde16c16b = dnnl_aBCde16c16b,
1552  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1553  Abcde4a = dnnl_Abcde4a,
1554  aBcde4b = dnnl_aBcde4b,
1555  ABcde4b4a = dnnl_ABcde4b4a,
1556  ABcde4a4b = dnnl_ABcde4a4b,
1557  aBCde4b4c = dnnl_aBCde4b4c,
1558  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1559  aBCde16c16b4c = dnnl_aBCde16c16b4c,
1560  aBCde16c16b2c = dnnl_aBCde16c16b2c,
1561  aBCde4c4b = dnnl_aBCde4c4b,
1562  Abcde8a = dnnl_Abcde8a,
1563  ABcde8a8b = dnnl_ABcde8a8b,
1564  ABcde8a4b = dnnl_ABcde8a4b,
1565  aBcde8b = dnnl_aBcde8b,
1566  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1567  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1568  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1569  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1570  ABcde8b8a = dnnl_ABcde8b8a,
1571  aBCde8b8c = dnnl_aBCde8b8c,
1572  aBCde8b4c = dnnl_aBCde8b4c,
1573  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1574  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1575  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1576  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1577  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1578  aBCde8c8b = dnnl_aBCde8c8b,
1579  aBcdef16b = dnnl_aBcdef16b,
1580  aBCdef16b16c = dnnl_aBCdef16b16c,
1581  aBCdef16c16b = dnnl_aBCdef16c16b,
1582  aBcdef4b = dnnl_aBcdef4b,
1583  aBCdef2c8b4c = dnnl_aBCdef2c8b4c,
1584  aBCdef4c4b = dnnl_aBCdef4c4b,
1585  aBCdef4b4c = dnnl_aBCdef4b4c,
1586  aBCdef8b8c = dnnl_aBCdef8b8c,
1587  aBCdef8b4c = dnnl_aBCdef8b4c,
1588  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1589  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1590  aBCdef8c8b = dnnl_aBCdef8c8b,
1591  aBdc16b = dnnl_aBdc16b,
1592  aBdc4b = dnnl_aBdc4b,
1593  aBdc8b = dnnl_aBdc8b,
1594  aBdec16b = dnnl_aBdec16b,
1595  aBdec4b = dnnl_aBdec4b,
1596  aBdec8b = dnnl_aBdec8b,
1597  aBdefc16b = dnnl_aBdefc16b,
1598  aCBdef16c16b = dnnl_aCBdef16c16b,
1599  aCBdef16b16c = dnnl_aCBdef16b16c,
1600  aBdefc4b = dnnl_aBdefc4b,
1601  aBdefc8b = dnnl_aBdefc8b,
1602  Acb16a = dnnl_Acb16a,
1603  Acb4a = dnnl_Acb4a,
1604  Acb8a = dnnl_Acb8a,
1605  aCBd16b16c = dnnl_aCBd16b16c,
1606  aCBd16c16b = dnnl_aCBd16c16b,
1607  aCBde16b16c = dnnl_aCBde16b16c,
1608  aCBde16c16b = dnnl_aCBde16c16b,
1609  Acdb16a = dnnl_Acdb16a,
1610  Acdb4a = dnnl_Acdb4a,
1611  Acdb8a = dnnl_Acdb8a,
1612  Acdeb16a = dnnl_Acdeb16a,
1613  Acdeb4a = dnnl_Acdeb4a,
1614  Acdeb8a = dnnl_Acdeb8a,
1615  BAc16a16b = dnnl_BAc16a16b,
1616  BAc16b16a = dnnl_BAc16b16a,
1617  BAcd16a16b = dnnl_BAcd16a16b,
1618  BAcd16b16a = dnnl_BAcd16b16a,
1619  ABcd32a32b = dnnl_ABcd32a32b,
1620  BAcde16b16a = dnnl_BAcde16b16a,
1621  BAcde16a16b = dnnl_BAcde16a16b,
1622  aBdec32b = dnnl_aBdec32b,
1623  Abcdef16a = dnnl_Abcdef16a,
1624  Abcdef32a = dnnl_Abcdef32a,
1625  Acdb32a = dnnl_Acdb32a,
1626  aBCd2b4c2b = dnnl_aBCd2b4c2b,
1627  aBCde2b4c2b = dnnl_aBCde2b4c2b,
1628  aBCdef2b4c2b = dnnl_aBCdef2b4c2b,
1629  aBCd2c4b2c = dnnl_aBCd2c4b2c,
1630  aBCde2c4b2c = dnnl_aBCde2c4b2c,
1631  aBCdef2c4b2c = dnnl_aBCdef2c4b2c,
1632  aBCd4b8c2b = dnnl_aBCd4b8c2b,
1633  aBCde4b8c2b = dnnl_aBCde4b8c2b,
1634  aBCdef4b8c2b = dnnl_aBCdef4b8c2b,
1635  aBCd4c8b2c = dnnl_aBCd4c8b2c,
1636  aBCde4c8b2c = dnnl_aBCde4c8b2c,
1637  aBCdef4c8b2c = dnnl_aBCdef4c8b2c,
1638 
1639  format_tag_last = dnnl_format_tag_last,
1640 
1641  nCdhw16c = dnnl_nCdhw16c,
1642  nCdhw4c = dnnl_nCdhw4c,
1643  nCdhw8c = dnnl_nCdhw8c,
1644  nChw16c = dnnl_nChw16c,
1645  nChw4c = dnnl_nChw4c,
1646  nChw8c = dnnl_nChw8c,
1647  nCw16c = dnnl_nCw16c,
1648  nCw4c = dnnl_nCw4c,
1649  nCw8c = dnnl_nCw8c,
1650  NCw16n16c = dnnl_NCw16n16c,
1651  NChw16n16c = dnnl_NChw16n16c,
1652  NCdhw16n16c = dnnl_NCdhw16n16c,
1653  NCdhw32n32c = dnnl_NCdhw32n32c,
1654  NChw32n32c = dnnl_NChw32n32c,
1655  IOhw16i16o = dnnl_IOhw16i16o,
1656  Ohwi32o = dnnl_Ohwi32o,
1657  IOdhw16i16o = dnnl_IOdhw16i16o,
1658  gIOhw16i16o = dnnl_gIOhw16i16o,
1659  gOhwi32o = dnnl_gOhwi32o,
1660  Goidhw16g = dnnl_Goidhw16g,
1661  IOw16o16i = dnnl_IOw16o16i,
1662  OIw16i16o = dnnl_OIw16i16o,
1663  IOw16i16o = dnnl_IOw16i16o,
1664  gIOw16i16o = dnnl_gIOw16i16o,
1665  OIw16o16i = dnnl_OIw16o16i,
1666  Oiw16o = dnnl_Oiw16o,
1667  OIw4i16o4i = dnnl_OIw4i16o4i,
1668  OIw2i8o4i = dnnl_OIw2i8o4i,
1669  OIw4i4o = dnnl_OIw4i4o,
1670  OIw4o4i = dnnl_OIw4o4i,
1671  Oiw4o = dnnl_Oiw4o,
1672  OIw8i16o2i = dnnl_OIw8i16o2i,
1673  OIw8i8o = dnnl_OIw8i8o,
1674  OIw8o16i2o = dnnl_OIw8o16i2o,
1675  OIw8o8i = dnnl_OIw8o8i,
1676  OIw8o4i = dnnl_OIw8o4i,
1677  Owi16o = dnnl_Owi16o,
1678  OwI16o2i = dnnl_OwI16o2i,
1679  Owi4o = dnnl_Owi4o,
1680  Owi8o = dnnl_Owi8o,
1681  IOhw16o16i = dnnl_IOhw16o16i,
1682  Ohwi16o = dnnl_Ohwi16o,
1683  OhwI16o2i = dnnl_OhwI16o2i,
1684  Ohwi4o = dnnl_Ohwi4o,
1685  Ohwi8o = dnnl_Ohwi8o,
1686  OIhw16i16o = dnnl_OIhw16i16o,
1687  OIhw16o16i = dnnl_OIhw16o16i,
1688  Oihw16o = dnnl_Oihw16o,
1689  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1690  OIhw4i4o = dnnl_OIhw4i4o,
1691  OIhw4o4i = dnnl_OIhw4o4i,
1692  Oihw4o = dnnl_Oihw4o,
1693  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1694  OIhw8i8o = dnnl_OIhw8i8o,
1695  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1696  OIhw8o8i = dnnl_OIhw8o8i,
1697  OIhw8o4i = dnnl_OIhw8o4i,
1698  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1699  IOdhw16o16i = dnnl_IOdhw16o16i,
1700  Odhwi16o = dnnl_Odhwi16o,
1701  OdhwI16o2i = dnnl_OdhwI16o2i,
1702  Odhwi4o = dnnl_Odhwi4o,
1703  Odhwi8o = dnnl_Odhwi8o,
1704  OIdhw16i16o = dnnl_OIdhw16i16o,
1705  OIdhw16o16i = dnnl_OIdhw16o16i,
1706  Oidhw16o = dnnl_Oidhw16o,
1707  OIdhw4i4o = dnnl_OIdhw4i4o,
1708  OIdhw4o4i = dnnl_OIdhw4o4i,
1709  Oidhw4o = dnnl_Oidhw4o,
1710  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1711  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1712  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1713  OIdhw8i8o = dnnl_OIdhw8i8o,
1714  OIdhw8o8i = dnnl_OIdhw8o8i,
1715  OIdhw8o4i = dnnl_OIdhw8o4i,
1716  gIOw16o16i = dnnl_gIOw16o16i,
1717  gOIw16i16o = dnnl_gOIw16i16o,
1718  gOIw16o16i = dnnl_gOIw16o16i,
1719  gOiw16o = dnnl_gOiw16o,
1720  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1721  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1722  gOIw4i4o = dnnl_gOIw4i4o,
1723  gOIw4o4i = dnnl_gOIw4o4i,
1724  gOiw4o = dnnl_gOiw4o,
1725  gOIw8i16o2i = dnnl_gOIw8i16o2i,
1726  gOIw8i8o = dnnl_gOIw8i8o,
1727  gOIw8o16i2o = dnnl_gOIw8o16i2o,
1728  gOIw8o8i = dnnl_gOIw8o8i,
1729  gOIw8o4i = dnnl_gOIw8o4i,
1730  gOwi16o = dnnl_gOwi16o,
1731  gOwI16o2i = dnnl_gOwI16o2i,
1732  gOwi4o = dnnl_gOwi4o,
1733  gOwi8o = dnnl_gOwi8o,
1734  Goiw8g = dnnl_Goiw8g,
1735  Goiw16g = dnnl_Goiw16g,
1736  gIOhw16o16i = dnnl_gIOhw16o16i,
1737  gOhwi16o = dnnl_gOhwi16o,
1738  gOhwI16o2i = dnnl_gOhwI16o2i,
1739  gOhwi4o = dnnl_gOhwi4o,
1740  gOhwi8o = dnnl_gOhwi8o,
1741  Goihw16g = dnnl_Goihw16g,
1742  gOIhw16i16o = dnnl_gOIhw16i16o,
1743  gOIhw16o16i = dnnl_gOIhw16o16i,
1744  gOihw16o = dnnl_gOihw16o,
1745  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1746  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1747  gOIhw4i4o = dnnl_gOIhw4i4o,
1748  gOIhw4o4i = dnnl_gOIhw4o4i,
1749  gOihw4o = dnnl_gOihw4o,
1750  Goihw8g = dnnl_Goihw8g,
1751  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1752  gOIhw8i8o = dnnl_gOIhw8i8o,
1753  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1754  OIw4o8i8o4i = dnnl_OIw4o8i8o4i,
1755  OIdhw4o8i8o4i = dnnl_OIdhw4o8i8o4i,
1756  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1757  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1758  gOIw4o8i8o4i = dnnl_gOIw4o8i8o4i,
1759  gOIdhw4o8i8o4i = dnnl_gOIdhw4o8i8o4i,
1760  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1761  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1762  OIhw16i16o4i = dnnl_OIhw16i16o4i,
1763  OIhw16i16o2i = dnnl_OIhw16i16o2i,
1764  gOIhw16i16o4i = dnnl_gOIhw16i16o4i,
1765  gOIhw16i16o2i = dnnl_gOIhw16i16o2i,
1766  gOIhw8o8i = dnnl_gOIhw8o8i,
1767  gOIhw8o4i = dnnl_gOIhw8o4i,
1768  gIOdhw16i16o = dnnl_gIOdhw16i16o,
1769  gIOdhw16o16i = dnnl_gIOdhw16o16i,
1770  gOdhwi16o = dnnl_gOdhwi16o,
1771  gOdhwI16o2i = dnnl_gOdhwI16o2i,
1772  gOdhwi4o = dnnl_gOdhwi4o,
1773  gOdhwi8o = dnnl_gOdhwi8o,
1774  gOIdhw16i16o = dnnl_gOIdhw16i16o,
1775  gOIdhw16o16i = dnnl_gOIdhw16o16i,
1776  gOidhw16o = dnnl_gOidhw16o,
1777  gOIdhw4i4o = dnnl_gOIdhw4i4o,
1778  gOIdhw4o4i = dnnl_gOIdhw4o4i,
1779  gOidhw4o = dnnl_gOidhw4o,
1780  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1781  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
1782  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
1783  gOIdhw8i8o = dnnl_gOIdhw8i8o,
1784  gOIdhw8o8i = dnnl_gOIdhw8o8i,
1785  gOIdhw8o4i = dnnl_gOIdhw8o4i,
1786  gOIw2i4o2i = dnnl_gOIw2i4o2i,
1787  gOIhw2i4o2i = dnnl_gOIhw2i4o2i,
1788  gOIdhw2i4o2i = dnnl_gOIdhw2i4o2i,
1789  gOIw2o4i2o = dnnl_gOIw2o4i2o,
1790  gOIhw2o4i2o = dnnl_gOIhw2o4i2o,
1791  gOIdhw2o4i2o = dnnl_gOIdhw2o4i2o,
1792  gOIw4i8o2i = dnnl_gOIw4i8o2i,
1793  gOIhw4i8o2i = dnnl_gOIhw4i8o2i,
1794  gOIdhw4i8o2i = dnnl_gOIdhw4i8o2i,
1795  gOIw4o8i2o = dnnl_gOIw4o8i2o,
1796  gOIhw4o8i2o = dnnl_gOIhw4o8i2o,
1797  gOIdhw4o8i2o = dnnl_gOIdhw4o8i2o,
1798  };
1799 
1801  struct desc {
1802  friend struct memory;
1805 
1808  desc() : data() {}
1809 
1825  desc(const dims &adims, data_type adata_type, format_tag aformat_tag,
1826  bool allow_empty = false)
1827  : data() {
1828  validate_dims(adims);
1830  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1831  convert_to_c(aformat_tag));
1832  if (!allow_empty)
1834  "could not construct a memory descriptor using a "
1835  "format tag");
1836  }
1837 
1853  desc(const dims &adims, data_type adata_type, const dims &strides,
1854  bool allow_empty = false)
1855  : data() {
1856  validate_dims(adims);
1857  if (!strides.empty()) validate_dims(strides, (int)adims.size());
1859  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1860  strides.empty() ? nullptr : &strides[0]);
1861  if (!allow_empty)
1863  "could not construct a memory descriptor using "
1864  "strides");
1865  }
1866 
1870  desc(const dnnl_memory_desc_t &data) : data(data) {}
1871 
1874  //
1883  desc submemory_desc(const dims &adims, const dims &offsets,
1884  bool allow_empty = false) const {
1885  validate_dims(adims, data.ndims);
1886  validate_dims(offsets, data.ndims);
1889  &sub_md, &data, adims.data(), offsets.data());
1890  if (!allow_empty)
1891  error::wrap_c_api(status, "could not construct a sub-memory");
1892  return desc(sub_md);
1893  }
1894 
1939  desc reshape(const dims &adims, bool allow_empty = false) const {
1940  if (data.ndims) validate_dims(adims, 1);
1943  &out_md, &data, (int)adims.size(), adims.data());
1944  if (!allow_empty)
1946  status, "could not reshape a memory descriptor");
1947  return desc(out_md);
1948  }
1949 
1986  desc permute_axes(const std::vector<int> &permutation,
1987  bool allow_empty = false) const {
1988  validate_dims(permutation, data.ndims);
1991  &out_md, &data, permutation.data());
1992  if (!allow_empty)
1994  "could not permute axes of a memory descriptor");
1995  return desc(out_md);
1996  }
1997 
2002  memory::dims dims() const {
2003  return memory::dims(data.dims, data.dims + data.ndims);
2004  }
2005 
2009  return static_cast<memory::data_type>(data.data_type);
2010  }
2011 
2016  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
2017 
2021  bool is_zero() const { return data.ndims == 0; }
2022 
2027  bool operator==(const desc &other) const {
2028  return dnnl_memory_desc_equal(&data, &other.data) != 0;
2029  }
2030 
2035  bool operator!=(const desc &other) const { return !operator==(other); }
2036 
2040  explicit operator bool() const { return data.ndims != 0; }
2041  };
2042 
2047  memory() = default;
2048 
2069  memory(const desc &md, const engine &aengine, void *handle) {
2070  dnnl_memory_t result;
2072  dnnl_memory_create(&result, &md.data, aengine.get(), handle),
2073  "could not create a memory object");
2074  reset(result);
2075  }
2076 
2083  memory(const desc &md, const engine &aengine)
2084  : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
2085 
2087  desc get_desc() const {
2088  const dnnl_memory_desc_t *cdesc;
2090  "could not get a memory descriptor from a memory object");
2091  return desc(*cdesc);
2092  }
2093 
2095  engine get_engine() const {
2096  dnnl_engine_t c_engine;
2097  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2098  "could not get an engine from a memory object");
2099  return engine(c_engine, true);
2100  }
2101 
2105  void *get_data_handle() const {
2106  void *handle;
2108  "could not get a native handle from a memory object");
2109  return handle;
2110  }
2111 
2138  void set_data_handle(void *handle, const stream &astream) const {
2140  get(), handle, astream.get(true)),
2141  "could not set native handle of a memory object");
2142  }
2143 
2152  void set_data_handle(void *handle) const {
2154  dnnl_memory_set_data_handle_v2(get(), handle, nullptr),
2155  "could not set native handle of a memory object");
2156  }
2157 
2178  template <typename T = void>
2179  T *map_data() const {
2180  void *mapped_ptr;
2181  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2182  "could not map memory object data");
2183  return static_cast<T *>(mapped_ptr);
2184  }
2185 
2195  void unmap_data(void *mapped_ptr) const {
2196  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2197  "could not unmap memory object data");
2198  }
2199 
2200 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
2201  cl_mem get_ocl_mem_object() const {
2203  cl_mem mem_object;
2205  "could not get OpenCL buffer object from a memory object");
2206  return mem_object;
2207  }
2208 
2216  void set_ocl_mem_object(cl_mem mem_object) {
2218  "could not set OpenCL buffer object from a memory object");
2219  }
2220 #endif
2221 
2222  static dnnl_data_type_t convert_to_c(data_type adata_type) {
2223  return static_cast<dnnl_data_type_t>(adata_type);
2224  }
2225  static dnnl_format_tag_t convert_to_c(format_tag format) {
2226  return static_cast<dnnl_format_tag_t>(format);
2227  }
2228 };
2229 
2230 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2231  return a == memory::convert_to_c(b);
2232 }
2233 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2234  return !(a == b);
2235 }
2236 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2237  return b == a;
2238 }
2239 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2240  return !(a == b);
2241 }
2242 
2243 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2244  return a == memory::convert_to_c(b);
2245 }
2246 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2247  return !(a == b);
2248 }
2249 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2250  return b == a;
2251 }
2252 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2253  return !(a == b);
2254 }
2255 
2257 
2265 
2267 template <>
2268 struct handle_traits<dnnl_post_ops_t> {
2269  static dnnl_status_t destructor(dnnl_post_ops_t p) {
2270  return dnnl_post_ops_destroy(p);
2271  }
2272 };
2274 
2282 struct post_ops : public handle<dnnl_post_ops_t> {
2284 
2287  dnnl_post_ops_t result;
2289  dnnl_post_ops_create(&result), "could not create post-ops");
2290  reset(result);
2291  }
2292 
2294  int len() const { return dnnl_post_ops_len(get()); }
2295 
2299  primitive::kind kind(int index) const {
2301  "post-ops index is out of range");
2302  return static_cast<primitive::kind>(
2303  dnnl_post_ops_get_kind(get(), index));
2304  }
2305 
2336  void append_sum(float scale = 1.f,
2338  if (data_type == memory::data_type::undef)
2340  "could not append a sum post-op");
2341  else
2343  memory::convert_to_c(data_type)),
2344  "could not append a sum post-op");
2345  }
2346 
2351  void get_params_sum(int index, float &scale) const {
2353  "could not get parameters of a sum post-op");
2354  }
2355 
2362  int index, float &scale, memory::data_type &data_type) const {
2363  dnnl_data_type_t c_data_type;
2365  get(), index, &scale, &c_data_type),
2366  "could not get parameters of a sum post-op");
2367  data_type = static_cast<memory::data_type>(c_data_type);
2368  }
2369 
2384  float scale, algorithm aalgorithm, float alpha, float beta) {
2386  convert_to_c(aalgorithm), alpha, beta),
2387  "could not append an elementwise post-op");
2388  }
2389 
2397  void get_params_eltwise(int index, float &scale, algorithm &aalgorithm,
2398  float &alpha, float &beta) const {
2399  dnnl_alg_kind_t c_alg;
2401  get(), index, &scale, &c_alg, &alpha, &beta),
2402  "could not get parameters of an elementwise post-op");
2403  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2404  }
2405 
2434  void append_dw_k3s1p1(memory::data_type weights_data_type,
2435  memory::data_type bias_data_type, memory::data_type dst_data_type,
2436  int mask, const std::vector<float> &scales) {
2437 
2439  memory::convert_to_c(weights_data_type),
2440  memory::convert_to_c(bias_data_type),
2441  memory::convert_to_c(dst_data_type),
2442  scales.size(), mask, &scales[0]),
2443  "could not append depthwise post-op");
2444  }
2445 
2460  void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type,
2461  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2462  int &mask, std::vector<float> &scales) const {
2463 
2464  dnnl_data_type_t c_weights_data_type;
2465  dnnl_data_type_t c_bias_data_type;
2466  dnnl_data_type_t c_dst_data_type;
2467  dnnl_dim_t count;
2468  int c_mask;
2469  const float *c_scales;
2471  &c_weights_data_type, &c_bias_data_type,
2472  &c_dst_data_type, &count, &c_mask, &c_scales),
2473  "could not get parameters of depthwise post-op");
2474 
2475  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2476  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2477  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2478  scales.resize(count);
2479 
2480  mask = c_mask;
2481  for (dnnl_dim_t c = 0; c < count; ++c)
2482  scales[c] = c_scales[c];
2483  return;
2484  }
2485 
2519  void append_dw_k3s2p1(memory::data_type weights_data_type,
2520  memory::data_type bias_data_type, memory::data_type dst_data_type,
2521  int mask, const std::vector<float> &scales) {
2522 
2524  memory::convert_to_c(weights_data_type),
2525  memory::convert_to_c(bias_data_type),
2526  memory::convert_to_c(dst_data_type),
2527  scales.size(), mask, &scales[0]),
2528  "could not append depthwise post-op");
2529  }
2530 
2545  void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type,
2546  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2547  int &mask, std::vector<float> &scales) const {
2548 
2549  dnnl_data_type_t c_weights_data_type;
2550  dnnl_data_type_t c_bias_data_type;
2551  dnnl_data_type_t c_dst_data_type;
2552  dnnl_dim_t count;
2553  int c_mask;
2554  const float *c_scales;
2556  &c_weights_data_type, &c_bias_data_type,
2557  &c_dst_data_type, &count, &c_mask, &c_scales),
2558  "could not get parameters of depthwise post-op");
2559 
2560  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2561  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2562  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2563  scales.resize(count);
2564 
2565  mask = c_mask;
2566  for (dnnl_dim_t c = 0; c < count; ++c)
2567  scales[c] = c_scales[c];
2568  return;
2569  }
2570 };
2571 
2573 template <>
2574 struct handle_traits<dnnl_primitive_attr_t> {
2575  static dnnl_status_t destructor(dnnl_primitive_attr_t p) {
2576  return dnnl_primitive_attr_destroy(p);
2577  }
2578 };
2580 
2584 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
2586 
2589  dnnl_primitive_attr_t result;
2591  "could not create primitive attribute");
2592  reset(result);
2593  }
2594 
2601  : handle<dnnl_primitive_attr_t>(attr) {}
2602 
2605  dnnl_scratchpad_mode_t result;
2608  "could not get scratchpad mode primitive attribute");
2609  return scratchpad_mode(result);
2610  }
2611 
2617  get(), dnnl::convert_to_c(mode)),
2618  "could not set scratchpad mode primitive attribute");
2619  }
2620 
2630  void get_output_scales(int &mask, std::vector<float> &scales) const {
2631  dnnl_dim_t count;
2632  int c_mask;
2633  const float *c_scales;
2635  get(), &count, &c_mask, &c_scales),
2636  "could not get output scales primitive attribute");
2637  scales.resize(count);
2638 
2639  mask = c_mask;
2640  for (dnnl_dim_t c = 0; c < count; ++c)
2641  scales[c] = c_scales[c];
2642  }
2643 
2686  void set_output_scales(int mask, const std::vector<float> &scales) {
2689  get(), (dnnl_dim_t)scales.size(), mask, scales.data()),
2690  "could not set output scales primitive attribute");
2691  }
2692 
2704  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
2705  dnnl_dim_t count;
2706  int c_mask;
2707  const float *c_scales;
2709  get(), arg, &count, &c_mask, &c_scales),
2710  "could not get scales primitive attributes");
2711  scales.resize(count);
2712 
2713  mask = c_mask;
2714  for (dnnl_dim_t c = 0; c < count; ++c)
2715  scales[c] = c_scales[c];
2716  }
2717 
2734  void set_scales(int arg, int mask, const std::vector<float> &scales) {
2737  (dnnl_dim_t)scales.size(), mask, scales.data()),
2738  "could not set scales primitive attribute");
2739  }
2740 
2752  int arg, int &mask, std::vector<int32_t> &zero_points) const {
2753  dnnl_dim_t count;
2754  int c_mask;
2755  const int32_t *c_zero_points;
2757  get(), arg, &count, &c_mask, &c_zero_points),
2758  "could not get zero points primitive attribute");
2759  zero_points.resize(count);
2760 
2761  mask = c_mask;
2762  for (dnnl_dim_t c = 0; c < count; ++c)
2763  zero_points[c] = c_zero_points[c];
2764  }
2765 
2787  int arg, int mask, const std::vector<int32_t> &zero_points) {
2789  (dnnl_dim_t)zero_points.size(), mask,
2790  zero_points.data()),
2791  "could not set zero points primitive attribute");
2792  }
2793 
2797  const post_ops get_post_ops() const {
2798  post_ops result;
2799  const_dnnl_post_ops_t c_result;
2801  "could not get post-ops primitive attribute");
2802  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
2803  return result;
2804  }
2805 
2814  void set_post_ops(const post_ops ops) {
2816  "could not set post-ops primitive attribute");
2817  }
2818 
2852  void set_rnn_data_qparams(float scale, float shift) {
2855  "could not set RNN data quantization parameters primitive "
2856  "attribute");
2857  }
2858 
2885  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
2887  (int)scales.size(), mask, scales.data()),
2888  "could not set RNN weights quantization parameters primitive "
2889  "attribute");
2890  }
2891 };
2892 
2894 
2897 
2899 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
2901 
2903  primitive_desc_base() = default;
2904 
2907  engine get_engine() const { return engine::query(*this); }
2908 
2911  const char *impl_info_str() const {
2912  const char *res;
2914  get(), dnnl_query_impl_info_str, 0, &res),
2915  "could not retrieve implementation info string from a "
2916  "primitive descriptor");
2917  return res;
2918  }
2919 
2924  memory::dim res;
2926  get(), dnnl::convert_to_c(what), 0, &res);
2927  return status == dnnl_success ? res : 0;
2928  }
2929 
2944  memory::desc query_md(query what, int idx = 0) const {
2945  std::vector<query> valid_q {query::src_md, query::diff_src_md,
2946  query::weights_md, query::diff_weights_md, query::dst_md,
2947  query::diff_dst_md, query::workspace_md, query::scratchpad_md,
2949  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
2950  [=](query q) { return what == q; }))
2951  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2952  "memory descriptor query is invalid");
2953 
2955  get(), dnnl::convert_to_c(what), idx);
2956  return cdesc ? memory::desc(*cdesc) : memory::desc();
2957  }
2958 
2964  memory::desc src_desc(int idx) const {
2965  return query_md(query::src_md, idx);
2966  }
2967 
2973  memory::desc dst_desc(int idx) const {
2974  return query_md(query::dst_md, idx);
2975  }
2976 
2982  memory::desc weights_desc(int idx) const {
2983  return query_md(query::weights_md, idx);
2984  }
2985 
2991  memory::desc diff_src_desc(int idx) const {
2992  return query_md(query::diff_src_md, idx);
2993  }
2994 
3000  memory::desc diff_dst_desc(int idx) const {
3001  return query_md(query::diff_dst_md, idx);
3002  }
3003 
3010  return query_md(query::diff_weights_md, idx);
3011  }
3012 
3013  // Separate versions without the index argument for documentation
3014  // purposes.
3015 
3020  memory::desc src_desc() const { return src_desc(0); }
3021 
3026  memory::desc dst_desc() const { return dst_desc(0); }
3027 
3032  memory::desc weights_desc() const { return weights_desc(0); }
3033 
3039 
3045 
3051 
3057  return query_md(query::workspace_md, 0);
3058  }
3059 
3066  return query_md(query::scratchpad_md, 0);
3067  }
3068 
3072  dnnl_engine_t c_engine;
3075  0, &c_engine),
3076  "could not retrieve scratchpad engine from a primitive "
3077  "descriptor");
3078  return engine(c_engine, true);
3079  }
3080 
3084  const_dnnl_primitive_attr_t const_c_attr;
3086  "could not get attributes from a primitive descriptor");
3087  dnnl_primitive_attr_t c_attr;
3088  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
3089  "could not clone primitive attributes");
3090  return primitive_attr(c_attr);
3091  }
3092 
3096  dnnl_primitive_kind_t kind;
3098  dnnl_query_primitive_kind, 0, (void *)&kind),
3099  "could not get primitive kind from a primitive descriptor");
3100  return static_cast<dnnl::primitive::kind>(kind);
3101  }
3102 
3103 protected:
3108  dnnl_primitive_desc_t new_pd;
3110  "could not clone a primitive descriptor");
3111  reset(new_pd);
3112  }
3113 
3129  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
3130 
3143  dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
3144  : primitive_desc_base(pd, prim_kind, aprop_kind, aprop_kind) {}
3145 
3160  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
3161  dnnl::prop_kind prop_kind2) {
3162  // It is OK to pass an empty primitive descriptor
3163  if (pd == nullptr) return;
3164 
3165  dnnl_status_t rc;
3166 
3167  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
3168  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
3169  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
3170 
3171  // Check that primitive kind matches
3172  dnnl_primitive_kind_t pd_kind;
3174  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
3176  rc, "could not get primitive kind from a primitive descriptor");
3177  if (pd_kind != c_prim_kind)
3178  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3179  "primitive descriptor operation kind mismatch");
3180 
3181  // Check that propagation kind matches
3182  dnnl_prop_kind_t pd_prop_kind;
3184  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
3185 
3186  // Something went wrong
3187  if (rc != dnnl_success && rc != dnnl_unimplemented)
3188  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3189  "could not get propagation kind from the primitive "
3190  "descriptor");
3191 
3192  // Everything is fine
3193  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
3194  || (rc == dnnl_success
3195  && (pd_prop_kind == c_prop_kind1
3196  || pd_prop_kind == c_prop_kind2))) {
3197  reset_with_clone(pd);
3198  return;
3199  }
3200 
3201  // We could get the propagation kind but there is a mismatch
3202  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3203  "primitive descriptor propagation kind mismatch");
3204  }
3205 
3206  using base = primitive_desc_base;
3207 };
3208 
3210 
3219 
3221 struct reorder : public primitive {
3225 
3227  primitive_desc() = default;
3228 
3246  primitive_desc(const engine &src_engine, const memory::desc &src_md,
3247  const engine &dst_engine, const memory::desc &dst_md,
3248  const primitive_attr &attr = primitive_attr(),
3249  bool allow_empty = false) {
3250  dnnl_primitive_desc_t result;
3252  &src_md.data, src_engine.get(), &dst_md.data,
3253  dst_engine.get(), attr.get());
3254  if (!allow_empty)
3256  "could not create a primitive descriptor for a reorder "
3257  "primitive");
3259  }
3260 
3272  primitive_desc(const memory &src, const memory &dst,
3273  const primitive_attr &attr = primitive_attr(),
3274  bool allow_empty = false) {
3275  dnnl_primitive_desc_t result;
3276  auto src_md = src.get_desc();
3277  auto dst_md = dst.get_desc();
3279  &src_md.data, src.get_engine().get(), &dst_md.data,
3280  dst.get_engine().get(), attr.get());
3281  if (!allow_empty)
3283  "could not create a primitive descriptor for a reorder "
3284  "primitive");
3286  }
3287 
3294 
3298  return engine::query(*this, dnnl::query::reorder_src_engine);
3299  }
3300 
3304  return engine::query(*this, dnnl::query::reorder_dst_engine);
3305  }
3306 
3308  memory::desc src_desc() const { return base::src_desc(0); }
3309 
3311  memory::desc dst_desc() const { return base::dst_desc(0); }
3312  };
3313 
3315  reorder() = default;
3316 
3319  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
3320 
3328  reorder(const memory &src, const memory &dst,
3329  const primitive_attr &attr = primitive_attr())
3330  : primitive(primitive_desc(src, dst, attr).get()) {}
3331 
3332  using primitive::execute;
3333 
3340  void execute(const stream &astream, memory &src, memory &dst) const {
3341  primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
3342  }
3343 };
3344 
3346 
3354 
3356 inline std::vector<dnnl_memory_desc_t> convert_to_c(
3357  const std::vector<memory::desc> &mems) {
3358  std::vector<dnnl_memory_desc_t> c_mems;
3359  c_mems.reserve(mems.size());
3360  for (const auto &s : mems)
3361  c_mems.push_back(s.data);
3362  return c_mems;
3363 }
3365 
3367 struct concat : public primitive {
3371 
3373  primitive_desc() = default;
3374 
3385  primitive_desc(const memory::desc &dst, int concat_dimension,
3386  const std::vector<memory::desc> &srcs, const engine &aengine,
3387  const primitive_attr &attr = primitive_attr()) {
3388  auto c_srcs = convert_to_c(srcs);
3389 
3390  dnnl_primitive_desc_t result;
3393  (int)c_srcs.size(), concat_dimension, c_srcs.data(),
3394  attr.get(), aengine.get()),
3395  "could not create a primitive descriptor for a concat "
3396  "primitive");
3397  reset(result);
3398  }
3399 
3412  primitive_desc(int concat_dimension,
3413  const std::vector<memory::desc> &srcs, const engine &aengine,
3414  const primitive_attr &attr = primitive_attr()) {
3415  auto c_api_srcs = convert_to_c(srcs);
3416 
3417  dnnl_primitive_desc_t result;
3419  dnnl_concat_primitive_desc_create(&result, nullptr,
3420  (int)c_api_srcs.size(), concat_dimension,
3421  c_api_srcs.data(), attr.get(), aengine.get()),
3422  "could not create a primitive descriptor for a concat "
3423  "primitive");
3424  reset(result);
3425  }
3426 
3433 
3435  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3436 
3438  memory::desc dst_desc() const { return base::dst_desc(0); }
3439  };
3440 
3442  concat() = default;
3443 
3446  concat(const primitive_desc &pd) : primitive(pd.get()) {}
3447 };
3448 
3450 
3458 
3460 struct sum : public primitive {
3464 
3466  primitive_desc() = default;
3467 
3477  const std::vector<float> &scales,
3478  const std::vector<memory::desc> &srcs, const engine &aengine,
3479  const primitive_attr &attr = primitive_attr()) {
3480  validate_container_size(scales,
3481  "counts of scales and sources are not equal",
3482  (int)srcs.size(), (int)srcs.size());
3483 
3484  auto c_api_srcs = convert_to_c(srcs);
3485 
3486  dnnl_primitive_desc_t result;
3488  dnnl_sum_primitive_desc_create(&result, &dst.data,
3489  (int)c_api_srcs.size(), scales.data(),
3490  c_api_srcs.data(), attr.get(), aengine.get()),
3491  "could not create a primitive descriptor for a sum "
3492  "primitive");
3493  reset(result);
3494  }
3495 
3506  primitive_desc(const std::vector<float> &scales,
3507  const std::vector<memory::desc> &srcs, const engine &aengine,
3508  const primitive_attr &attr = primitive_attr()) {
3509  validate_container_size(scales,
3510  "counts of scales and sources are not equal",
3511  (int)srcs.size(), (int)srcs.size());
3512 
3513  auto c_api_srcs = convert_to_c(srcs);
3514  dnnl_primitive_desc_t result;
3516  dnnl_sum_primitive_desc_create(&result, nullptr,
3517  (int)c_api_srcs.size(), scales.data(),
3518  c_api_srcs.data(), attr.get(), aengine.get()),
3519  "could not create a primitive descriptor for a sum "
3520  "primitive");
3521  reset(result);
3522  }
3523 
3530 
3532  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3533 
3535  memory::desc dst_desc() const { return base::dst_desc(0); }
3536  };
3537 
3539  sum() = default;
3540 
3543  sum(const primitive_desc &pd) : primitive(pd.get()) {}
3544 };
3545 
3547 
3550 
3555 
3556  primitive_desc() = default;
3557 
3581  const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd,
3582  bool allow_empty = false)
3583  : allow_empty_(allow_empty) {
3584  dnnl_primitive_desc_iterator_t iterator = nullptr;
3586  desc, attr ? attr->get() : nullptr, aengine.get(), hint_fwd_pd);
3587  if (!allow_empty)
3589  status, "could not create a primitive descriptor iterator");
3590  pd_iterator.reset(iterator);
3591  fetch_impl();
3592  }
3593 
3598  bool next_impl() {
3600  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3601  if (status == dnnl_iterator_ends) return false;
3603  status, "could not advance a primitive descriptor iterator");
3604  fetch_impl();
3605  return true;
3606  }
3607 
3608 private:
3609  bool allow_empty_ = false;
3611  void fetch_impl() {
3613  pd_iterator.get(allow_empty_));
3614  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3616  "could not fetch a primitive descriptor from a primitive "
3617  "descriptor iterator");
3618  reset(pd);
3619  }
3620 };
3621 
3623 
3633 
3637  struct desc {
3639 
3670  desc(prop_kind aprop_kind, algorithm aalgorithm,
3671  const memory::desc &src_desc, const memory::desc &weights_desc,
3672  const memory::desc &bias_desc, const memory::desc &dst_desc,
3673  const memory::dims &strides, const memory::dims &padding_l,
3674  const memory::dims &padding_r) {
3675  memory::validate_dims(strides, src_desc.data.ndims - 2);
3676  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3677  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3680  dnnl::convert_to_c(aprop_kind),
3681  convert_to_c(aalgorithm), &src_desc.data,
3682  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3683  &strides[0], &padding_l[0], &padding_r[0]),
3684  "could not create a descriptor for a convolution forward "
3685  "propagation primitive");
3686  }
3687 
3716  desc(prop_kind aprop_kind, algorithm aalgorithm,
3717  const memory::desc &src_desc, const memory::desc &weights_desc,
3718  const memory::desc &dst_desc, const memory::dims &strides,
3719  const memory::dims &padding_l, const memory::dims &padding_r) {
3720  memory::validate_dims(strides, src_desc.data.ndims - 2);
3721  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3722  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3725  dnnl::convert_to_c(aprop_kind),
3726  convert_to_c(aalgorithm), &src_desc.data,
3727  &weights_desc.data, nullptr, &dst_desc.data,
3728  &strides[0], &padding_l[0], &padding_r[0]),
3729  "could not create a descriptor for a convolution forward "
3730  "propagation primitive");
3731  }
3732 
3765  desc(prop_kind aprop_kind, algorithm aalgorithm,
3766  const memory::desc &src_desc, const memory::desc &weights_desc,
3767  const memory::desc &bias_desc, const memory::desc &dst_desc,
3768  const memory::dims &strides, const memory::dims &dilates,
3769  const memory::dims &padding_l, const memory::dims &padding_r) {
3770  memory::validate_dims(strides, src_desc.data.ndims - 2);
3771  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3772  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3773  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3775  dnnl::convert_to_c(aprop_kind),
3776  convert_to_c(aalgorithm), &src_desc.data,
3777  &weights_desc.data, &bias_desc.data,
3778  &dst_desc.data, &strides[0], &dilates[0],
3779  &padding_l[0], &padding_r[0]),
3780  "could not create a descriptor for a dilated convolution "
3781  "forward propagation primitive");
3782  }
3783 
3814  desc(prop_kind aprop_kind, algorithm aalgorithm,
3815  const memory::desc &src_desc, const memory::desc &weights_desc,
3816  const memory::desc &dst_desc, const memory::dims &strides,
3817  const memory::dims &dilates, const memory::dims &padding_l,
3818  const memory::dims &padding_r) {
3819  memory::validate_dims(strides, src_desc.data.ndims - 2);
3820  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3821  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3822  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3824  dnnl::convert_to_c(aprop_kind),
3825  convert_to_c(aalgorithm), &src_desc.data,
3826  &weights_desc.data, nullptr,
3827  &dst_desc.data, &strides[0], &dilates[0],
3828  &padding_l[0], &padding_r[0]),
3829  "could not create a descriptor for a dilated convolution "
3830  "forward propagation primitive");
3831  }
3832  };
3833 
3837  primitive_desc() = default;
3838 
3849  primitive_desc(const desc &adesc, const engine &aengine,
3850  bool allow_empty = false)
3851  : dnnl::primitive_desc(
3852  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
3853 
3865  primitive_desc(const desc &adesc, const primitive_attr &attr,
3866  const engine &aengine, bool allow_empty = false)
3867  : dnnl::primitive_desc(
3868  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
3869 
3877  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3878  dnnl::prop_kind::forward_training,
3879  dnnl::prop_kind::forward_inference) {}
3880 
3882  memory::desc src_desc() const { return base::src_desc(0); }
3883 
3886 
3888  memory::desc dst_desc() const { return base::dst_desc(0); }
3889 
3895  };
3896 
3898  convolution_forward() = default;
3899 
3904 };
3905 
3908 
3910  struct desc {
3912 
3938  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
3939  const memory::desc &weights_desc,
3940  const memory::desc &diff_dst_desc, const memory::dims &strides,
3941  const memory::dims &padding_l, const memory::dims &padding_r) {
3942  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
3943  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
3944  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
3947  convert_to_c(aalgorithm), &diff_src_desc.data,
3948  &weights_desc.data, &diff_dst_desc.data,
3949  &strides[0], &padding_l[0], &padding_r[0]),
3950  "could not create a descriptor for a convolution backward "
3951  "propagation primitive");
3952  }
3953 
3981  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
3982  const memory::desc &weights_desc,
3983  const memory::desc &diff_dst_desc, const memory::dims &strides,
3984  const memory::dims &dilates, const memory::dims &padding_l,
3985  const memory::dims &padding_r) {
3986  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
3987  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
3988  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
3989  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
3992  convert_to_c(aalgorithm), &diff_src_desc.data,
3993  &weights_desc.data, &diff_dst_desc.data,
3994  &strides[0], &dilates[0], &padding_l[0],
3995  &padding_r[0]),
3996  "could not create a descriptor for a dilated convolution "
3997  "backward propagation primitive");
3998  }
3999  };
4000 
4004  primitive_desc() = default;
4005 
4019  primitive_desc(const desc &adesc, const engine &aengine,
4020  const convolution_forward::primitive_desc &hint_fwd_pd,
4021  bool allow_empty = false)
4022  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4023  hint_fwd_pd.get(), allow_empty) {}
4024 
4039  primitive_desc(const desc &adesc, const primitive_attr &attr,
4040  const engine &aengine,
4041  const convolution_forward::primitive_desc &hint_fwd_pd,
4042  bool allow_empty = false)
4043  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4044  hint_fwd_pd.get(), allow_empty) {}
4045 
4053  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4054  dnnl::prop_kind::backward_data) {}
4055 
4058 
4061 
4064  };
4065 
4068 
4073 };
4074 
4078  struct desc {
4080 
4108  desc(algorithm aalgorithm, const memory::desc &src_desc,
4109  const memory::desc &diff_weights_desc,
4110  const memory::desc &diff_bias_desc,
4111  const memory::desc &diff_dst_desc, const memory::dims &strides,
4112  const memory::dims &padding_l, const memory::dims &padding_r) {
4113  memory::validate_dims(strides, src_desc.data.ndims - 2);
4114  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4115  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4118  convert_to_c(aalgorithm), &src_desc.data,
4119  &diff_weights_desc.data, &diff_bias_desc.data,
4120  &diff_dst_desc.data, &strides[0], &padding_l[0],
4121  &padding_r[0]),
4122  "could not create a descriptor for a convolution weights "
4123  "update primitive");
4124  }
4125 
4151  desc(algorithm aalgorithm, const memory::desc &src_desc,
4152  const memory::desc &diff_weights_desc,
4153  const memory::desc &diff_dst_desc, const memory::dims &strides,
4154  const memory::dims &padding_l, const memory::dims &padding_r) {
4155  memory::validate_dims(strides, src_desc.data.ndims - 2);
4156  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4157  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4159  convert_to_c(aalgorithm), &src_desc.data,
4160  &diff_weights_desc.data, nullptr,
4161  &diff_dst_desc.data, &strides[0],
4162  &padding_l[0], &padding_r[0]),
4163  "could not create a descriptor for a convolution weights "
4164  "update primitive");
4165  }
4166 
4196  desc(algorithm aalgorithm, const memory::desc &src_desc,
4197  const memory::desc &diff_weights_desc,
4198  const memory::desc &diff_bias_desc,
4199  const memory::desc &diff_dst_desc, const memory::dims &strides,
4200  const memory::dims &dilates, const memory::dims &padding_l,
4201  const memory::dims &padding_r) {
4202  memory::validate_dims(strides, src_desc.data.ndims - 2);
4203  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4204  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4205  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4208  convert_to_c(aalgorithm), &src_desc.data,
4209  &diff_weights_desc.data, &diff_bias_desc.data,
4210  &diff_dst_desc.data, &strides[0], &dilates[0],
4211  &padding_l[0], &padding_r[0]),
4212  "could not create a descriptor for a dilated convolution "
4213  "weights gradient primitive");
4214  }
4215 
4243  desc(algorithm aalgorithm, const memory::desc &src_desc,
4244  const memory::desc &diff_weights_desc,
4245  const memory::desc &diff_dst_desc, const memory::dims &strides,
4246  const memory::dims &dilates, const memory::dims &padding_l,
4247  const memory::dims &padding_r) {
4248  memory::validate_dims(strides, src_desc.data.ndims - 2);
4249  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4250  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4251  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4254  convert_to_c(aalgorithm), &src_desc.data,
4255  &diff_weights_desc.data, nullptr,
4256  &diff_dst_desc.data, &strides[0], &dilates[0],
4257  &padding_l[0], &padding_r[0]),
4258  "could not create a descriptor for a dilated convolution "
4259  "weights gradient primitive");
4260  }
4261  };
4262 
4266  primitive_desc() = default;
4267 
4280  primitive_desc(const desc &adesc, const engine &aengine,
4281  const convolution_forward::primitive_desc &hint_fwd_pd,
4282  bool allow_empty = false)
4283  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4284  hint_fwd_pd.get(), allow_empty) {}
4285 
4299  primitive_desc(const desc &adesc, const primitive_attr &attr,
4300  const engine &aengine,
4301  const convolution_forward::primitive_desc &hint_fwd_pd,
4302  bool allow_empty = false)
4303  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4304  hint_fwd_pd.get(), allow_empty) {}
4305 
4313  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4314  dnnl::prop_kind::backward_weights) {}
4315 
4317  memory::desc src_desc() const { return base::src_desc(0); }
4318 
4321  return base::diff_weights_desc(0);
4322  }
4323 
4326 
4332  return base::diff_weights_desc(1);
4333  }
4334  };
4335 
4338 
4343 };
4344 
4346 //
4354 
4358  struct desc {
4360 
4390  desc(prop_kind aprop_kind, algorithm aalgorithm,
4391  const memory::desc &src_desc, const memory::desc &weights_desc,
4392  const memory::desc &bias_desc, const memory::desc &dst_desc,
4393  const memory::dims &strides, const memory::dims &padding_l,
4394  const memory::dims &padding_r) {
4395  memory::validate_dims(strides, src_desc.data.ndims - 2);
4396  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4397  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4400  dnnl::convert_to_c(aprop_kind),
4401  convert_to_c(aalgorithm), &src_desc.data,
4402  &weights_desc.data, &bias_desc.data, &dst_desc.data,
4403  &strides[0], &padding_l[0], &padding_r[0]),
4404  "could not create a descriptor for a deconvolution forward "
4405  "propagation primitive");
4406  }
4407 
4435  desc(prop_kind aprop_kind, algorithm aalgorithm,
4436  const memory::desc &src_desc, const memory::desc &weights_desc,
4437  const memory::desc &dst_desc, const memory::dims &strides,
4438  const memory::dims &padding_l, const memory::dims &padding_r) {
4439  memory::validate_dims(strides, src_desc.data.ndims - 2);
4440  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4441  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4444  dnnl::convert_to_c(aprop_kind),
4445  convert_to_c(aalgorithm), &src_desc.data,
4446  &weights_desc.data, nullptr, &dst_desc.data,
4447  &strides[0], &padding_l[0], &padding_r[0]),
4448  "could not create a descriptor for a deconvolution forward "
4449  "propagation primitive");
4450  }
4451 
4483  desc(prop_kind aprop_kind, algorithm aalgorithm,
4484  const memory::desc &src_desc, const memory::desc &weights_desc,
4485  const memory::desc &bias_desc, const memory::desc &dst_desc,
4486  const memory::dims &strides, const memory::dims &dilates,
4487  const memory::dims &padding_l, const memory::dims &padding_r) {
4488  memory::validate_dims(strides, src_desc.data.ndims - 2);
4489  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4490  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4491  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4493  &data, dnnl::convert_to_c(aprop_kind),
4494  convert_to_c(aalgorithm), &src_desc.data,
4495  &weights_desc.data, &bias_desc.data,
4496  &dst_desc.data, &strides[0], &dilates[0],
4497  &padding_l[0], &padding_r[0]),
4498  "could not create a descriptor for a dilated deconvolution "
4499  "forward propagation primitive");
4500  }
4501 
4531  desc(prop_kind aprop_kind, algorithm aalgorithm,
4532  const memory::desc &src_desc, const memory::desc &weights_desc,
4533  const memory::desc &dst_desc, const memory::dims &strides,
4534  const memory::dims &dilates, const memory::dims &padding_l,
4535  const memory::dims &padding_r) {
4536  memory::validate_dims(strides, src_desc.data.ndims - 2);
4537  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4538  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4539  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4541  &data, dnnl::convert_to_c(aprop_kind),
4542  convert_to_c(aalgorithm), &src_desc.data,
4543  &weights_desc.data, nullptr,
4544  &dst_desc.data, &strides[0], &dilates[0],
4545  &padding_l[0], &padding_r[0]),
4546  "could not create a descriptor for a dilated deconvolution "
4547  "forward propagation primitive");
4548  }
4549  };
4550 
4554  primitive_desc() = default;
4555 
4566  primitive_desc(const desc &adesc, const engine &aengine,
4567  bool allow_empty = false)
4568  : dnnl::primitive_desc(
4569  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4570 
4582  primitive_desc(const desc &adesc, const primitive_attr &attr,
4583  const engine &aengine, bool allow_empty = false)
4584  : dnnl::primitive_desc(
4585  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4586 
4594  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4595  dnnl::prop_kind::forward_training,
4596  dnnl::prop_kind::forward_inference) {}
4597 
4599  memory::desc src_desc() const { return base::src_desc(0); }
4600 
4603 
4605  memory::desc dst_desc() const { return base::dst_desc(0); }
4606 
4609  };
4610 
4613 
4618 };
4619 
4623  struct desc {
4625 
4650  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4651  const memory::desc &weights_desc,
4652  const memory::desc &diff_dst_desc, const memory::dims &strides,
4653  const memory::dims &padding_l, const memory::dims &padding_r) {
4654  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4655  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4656  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4659  convert_to_c(aalgorithm), &diff_src_desc.data,
4660  &weights_desc.data, &diff_dst_desc.data,
4661  &strides[0], &padding_l[0], &padding_r[0]),
4662  "could not create a descriptor for a deconvolution "
4663  "backward propagation primitive");
4664  }
4665 
4692  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4693  const memory::desc &weights_desc,
4694  const memory::desc &diff_dst_desc, const memory::dims &strides,
4695  const memory::dims &dilates, const memory::dims &padding_l,
4696  const memory::dims &padding_r) {
4697  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4698  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4699  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4700  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4703  convert_to_c(aalgorithm), &diff_src_desc.data,
4704  &weights_desc.data, &diff_dst_desc.data,
4705  &strides[0], &dilates[0], &padding_l[0],
4706  &padding_r[0]),
4707  "could not create a descriptor for a dilated deconvolution "
4708  "backward propagation primitive");
4709  }
4710  };
4711 
4715  primitive_desc() = default;
4716 
4730  primitive_desc(const desc &adesc, const engine &aengine,
4731  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4732  bool allow_empty = false)
4733  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4734  hint_fwd_pd.get(), allow_empty) {}
4735 
4750  primitive_desc(const desc &adesc, const primitive_attr &attr,
4751  const engine &aengine,
4752  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4753  bool allow_empty = false)
4754  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4755  hint_fwd_pd.get(), allow_empty) {}
4756 
4764  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4765  dnnl::prop_kind::backward_data) {}
4766 
4769 
4772 
4775  };
4776 
4779 
4784 };
4785 
4789  struct desc {
4791 
4818  desc(algorithm aalgorithm, const memory::desc &src_desc,
4819  const memory::desc &diff_weights_desc,
4820  const memory::desc &diff_bias_desc,
4821  const memory::desc &diff_dst_desc, const memory::dims &strides,
4822  const memory::dims &padding_l, const memory::dims &padding_r) {
4823  memory::validate_dims(strides, src_desc.data.ndims - 2);
4824  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4825  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4828  convert_to_c(aalgorithm), &src_desc.data,
4829  &diff_weights_desc.data, &diff_bias_desc.data,
4830  &diff_dst_desc.data, &strides[0], &padding_l[0],
4831  &padding_r[0]),
4832  "could not create a descriptor for a deconvolution weights "
4833  "update primitive");
4834  }
4835 
4860  desc(algorithm aalgorithm, const memory::desc &src_desc,
4861  const memory::desc &diff_weights_desc,
4862  const memory::desc &diff_dst_desc, const memory::dims &strides,
4863  const memory::dims &padding_l, const memory::dims &padding_r) {
4864  memory::validate_dims(strides, src_desc.data.ndims - 2);
4865  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4866  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4868  &data, convert_to_c(aalgorithm),
4869  &src_desc.data, &diff_weights_desc.data,
4870  nullptr, &diff_dst_desc.data, &strides[0],
4871  &padding_l[0], &padding_r[0]),
4872  "could not create a descriptor for a deconvolution weights "
4873  "update primitive");
4874  }
4875 
4904  desc(algorithm aalgorithm, const memory::desc &src_desc,
4905  const memory::desc &diff_weights_desc,
4906  const memory::desc &diff_bias_desc,
4907  const memory::desc &diff_dst_desc, const memory::dims &strides,
4908  const memory::dims &dilates, const memory::dims &padding_l,
4909  const memory::dims &padding_r) {
4910  memory::validate_dims(strides, src_desc.data.ndims - 2);
4911  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4912  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4913  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4916  convert_to_c(aalgorithm), &src_desc.data,
4917  &diff_weights_desc.data, &diff_bias_desc.data,
4918  &diff_dst_desc.data, &strides[0], &dilates[0],
4919  &padding_l[0], &padding_r[0]),
4920  "could not create a descriptor for a dilated deconvolution "
4921  "weights gradient primitive");
4922  }
4923 
4950  desc(algorithm aalgorithm, const memory::desc &src_desc,
4951  const memory::desc &diff_weights_desc,
4952  const memory::desc &diff_dst_desc, const memory::dims &strides,
4953  const memory::dims &dilates, const memory::dims &padding_l,
4954  const memory::dims &padding_r) {
4955  memory::validate_dims(strides, src_desc.data.ndims - 2);
4956  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4957  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4958  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4961  convert_to_c(aalgorithm), &src_desc.data,
4962  &diff_weights_desc.data, nullptr,
4963  &diff_dst_desc.data, &strides[0], &dilates[0],
4964  &padding_l[0], &padding_r[0]),
4965  "could not create a descriptor for a dilated deconvolution "
4966  "weights gradient primitive");
4967  }
4968  };
4969 
4973  primitive_desc() = default;
4974 
4988  primitive_desc(const desc &adesc, const engine &aengine,
4989  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4990  bool allow_empty = false)
4991  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4992  hint_fwd_pd.get(), allow_empty) {}
4993 
5008  primitive_desc(const desc &adesc, const primitive_attr &attr,
5009  const engine &aengine,
5010  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5011  bool allow_empty = false)
5012  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5013  hint_fwd_pd.get(), allow_empty) {}
5014 
5022  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
5023  dnnl::prop_kind::backward_weights) {}
5024 
5026  memory::desc src_desc() const { return base::src_desc(0); }
5027 
5030  return base::diff_weights_desc(0);
5031  }
5032 
5035 
5038  return base::diff_weights_desc(1);
5039  }
5040  };
5041 
5044 
5049 };
5050 
5052 
5061 
5063 struct lrn_forward : public primitive {
5065  struct desc {
5066  dnnl_lrn_desc_t data;
5067 
5081  desc(prop_kind aprop_kind, algorithm aalgorithm,
5082  const memory::desc &data_desc, memory::dim local_size,
5083  float alpha, float beta, float k = 1.f) {
5085  dnnl::convert_to_c(aprop_kind),
5086  convert_to_c(aalgorithm), &data_desc.data,
5087  local_size, alpha, beta, k),
5088  "could not create a descriptor for a lrn forward "
5089  "propagation primitive");
5090  }
5091  };
5092 
5096  primitive_desc() = default;
5097 
5107  primitive_desc(const desc &adesc, const engine &aengine,
5108  bool allow_empty = false)
5109  : dnnl::primitive_desc(
5110  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5111 
5122  primitive_desc(const desc &adesc, const primitive_attr &attr,
5123  const engine &aengine, bool allow_empty = false)
5124  : dnnl::primitive_desc(
5125  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5126 
5134  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5135  dnnl::prop_kind::forward_training,
5136  dnnl::prop_kind::forward_inference) {}
5137 
5139  memory::desc src_desc() const { return base::src_desc(0); }
5140 
5142  memory::desc dst_desc() const { return base::dst_desc(0); }
5143 
5146  };
5147 
5149  lrn_forward() = default;
5150 
5155 };
5156 
5158 struct lrn_backward : public primitive {
5160  struct desc {
5161  dnnl_lrn_desc_t data;
5162 
5175  desc(algorithm aalgorithm, const memory::desc &data_desc,
5176  const memory::desc &diff_data_desc, memory::dim local_size,
5177  float alpha, float beta, float k = 1.f) {
5179  dnnl_lrn_backward_desc_init(&data, convert_to_c(aalgorithm),
5180  &diff_data_desc.data, &data_desc.data, local_size,
5181  alpha, beta, k),
5182  "could not create a descriptor for a lrn backward "
5183  "propagation primitive");
5184  }
5185  };
5186 
5190  primitive_desc() = default;
5191 
5204  primitive_desc(const desc &adesc, const engine &aengine,
5205  const lrn_forward::primitive_desc &hint_fwd_pd,
5206  bool allow_empty = false)
5207  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5208  hint_fwd_pd.get(), allow_empty) {}
5209 
5223  primitive_desc(const desc &adesc, const primitive_attr &attr,
5224  const engine &aengine,
5225  const lrn_forward::primitive_desc &hint_fwd_pd,
5226  bool allow_empty = false)
5227  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5228  hint_fwd_pd.get(), allow_empty) {}
5229 
5237  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5238  dnnl::prop_kind::backward_data) {}
5239 
5242 
5245 
5248  };
5249 
5251  lrn_backward() = default;
5252 
5257 };
5258 
5260 
5268 
5270 struct pooling_forward : public primitive {
5272  struct desc {
5273  dnnl_pooling_desc_t data;
5274 
5299  desc(prop_kind aprop_kind, algorithm aalgorithm,
5300  const memory::desc &src_desc, const memory::desc &dst_desc,
5301  const memory::dims &strides, const memory::dims &kernel,
5302  const memory::dims &padding_l, const memory::dims &padding_r) {
5303  memory::validate_dims(strides, src_desc.data.ndims - 2);
5304  memory::validate_dims(kernel, src_desc.data.ndims - 2);
5305  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5306  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5308  dnnl::convert_to_c(aprop_kind),
5309  convert_to_c(aalgorithm), &src_desc.data,
5310  &dst_desc.data, &strides[0], &kernel[0],
5311  &padding_l[0], &padding_r[0]),
5312  "could not create a descriptor for a pooling forward "
5313  "propagation primitive");
5314  }
5315  };
5316 
5320  primitive_desc() = default;
5321 
5331  primitive_desc(const desc &adesc, const engine &aengine,
5332  bool allow_empty = false)
5333  : dnnl::primitive_desc(
5334  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5335 
5346  primitive_desc(const desc &adesc, const primitive_attr &attr,
5347  const engine &aengine, bool allow_empty = false)
5348  : dnnl::primitive_desc(
5349  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5350 
5358  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5359  dnnl::prop_kind::forward_training,
5360  dnnl::prop_kind::forward_inference) {}
5361 
5363  memory::desc src_desc() const { return base::src_desc(0); }
5364 
5366  memory::desc dst_desc() const { return base::dst_desc(0); }
5367 
5370  };
5371 
5373  pooling_forward() = default;
5374 
5379 };
5380 
5382 struct pooling_backward : public primitive {
5384  struct desc {
5385  dnnl_pooling_desc_t data;
5386 
5408  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
5409  const memory::desc &diff_dst_desc, const memory::dims &strides,
5410  const memory::dims &kernel, const memory::dims &padding_l,
5411  const memory::dims &padding_r) {
5412  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
5413  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
5414  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
5415  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
5418  convert_to_c(aalgorithm), &diff_src_desc.data,
5419  &diff_dst_desc.data, &strides[0], &kernel[0],
5420  &padding_l[0], &padding_r[0]),
5421  "could not create a descriptor for a pooling backward "
5422  "propagation primitive");
5423  }
5424  };
5425 
5429  primitive_desc() = default;
5430 
5443  primitive_desc(const desc &adesc, const engine &aengine,
5444  const pooling_forward::primitive_desc &hint_fwd_pd,
5445  bool allow_empty = false)
5446  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5447  hint_fwd_pd.get(), allow_empty) {}
5448 
5462  primitive_desc(const desc &adesc, const primitive_attr &attr,
5463  const engine &aengine,
5464  const pooling_forward::primitive_desc &hint_fwd_pd,
5465  bool allow_empty = false)
5466  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5467  hint_fwd_pd.get(), allow_empty) {}
5468 
5476  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5477  dnnl::prop_kind::backward_data) {}
5478 
5481 
5484 
5487  };
5488 
5490  pooling_backward() = default;
5491 
5496 };
5497 
5499 
5520 
5522 struct eltwise_forward : public primitive {
5524  struct desc {
5525  dnnl_eltwise_desc_t data;
5526 
5539  desc(prop_kind aprop_kind, algorithm aalgorithm,
5540  const memory::desc &data_desc, float alpha = 0,
5541  float beta = 0) {
5543  dnnl::convert_to_c(aprop_kind),
5544  dnnl::convert_to_c(aalgorithm),
5545  &data_desc.data, alpha, beta),
5546  "could not create a descriptor for an eltwise forward "
5547  "propagation primitive");
5548  }
5549  };
5550 
5554  primitive_desc() = default;
5555 
5566  primitive_desc(const desc &adesc, const engine &aengine,
5567  bool allow_empty = false)
5568  : dnnl::primitive_desc(
5569  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5570 
5582  primitive_desc(const desc &adesc, const primitive_attr &attr,
5583  const engine &aengine, bool allow_empty = false)
5584  : dnnl::primitive_desc(
5585  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5586 
5594  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5595  dnnl::prop_kind::forward_training,
5596  dnnl::prop_kind::forward_inference) {}
5597 
5599  memory::desc src_desc() const { return base::src_desc(0); }
5600 
5602  memory::desc dst_desc() const { return base::dst_desc(0); }
5603  };
5604 
5606  eltwise_forward() = default;
5607 
5612 };
5613 
5615 struct eltwise_backward : public primitive {
5617  struct desc {
5618  dnnl_eltwise_desc_t data;
5619 
5631  desc(algorithm aalgorithm, const memory::desc &diff_data_desc,
5632  const memory::desc &data_desc, float alpha = 0,
5633  float beta = 0) {
5636  dnnl::convert_to_c(aalgorithm),
5637  &diff_data_desc.data, &data_desc.data, alpha, beta),
5638  "could not create a descriptor for an eltwise backward "
5639  "propagation primitive");
5640  }
5641  };
5642 
5646  primitive_desc() = default;
5647 
5661  primitive_desc(const desc &adesc, const engine &aengine,
5662  const eltwise_forward::primitive_desc &hint_fwd_pd,
5663  bool allow_empty = false)
5664  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5665  hint_fwd_pd.get(), allow_empty) {}
5666 
5681  primitive_desc(const desc &adesc, const primitive_attr &attr,
5682  const engine &aengine,
5683  const eltwise_forward::primitive_desc &hint_fwd_pd,
5684  bool allow_empty = false)
5685  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5686  hint_fwd_pd.get(), allow_empty) {}
5687 
5695  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5696  dnnl::prop_kind::backward_data) {}
5697 
5699  memory::desc src_desc() const { return base::src_desc(0); }
5700 
5703 
5706  };
5707 
5709  eltwise_backward() = default;
5710 
5715 };
5716 
5718 
5726 
5728 struct softmax_forward : public primitive {
5730  struct desc {
5731  dnnl_softmax_desc_t data;
5732 
5734  desc() = default;
5735 
5744  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5745  int softmax_axis) {
5747  dnnl::convert_to_c(aprop_kind),
5748  &data_desc.data, softmax_axis),
5749  "could not create a descriptor for a softmax forward "
5750  "propagation primitive");
5751  }
5752  };
5753 
5757  primitive_desc() = default;
5758 
5769  primitive_desc(const desc &adesc, const engine &aengine,
5770  bool allow_empty = false)
5771  : dnnl::primitive_desc(
5772  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5773 
5785  primitive_desc(const desc &adesc, const primitive_attr &attr,
5786  const engine &aengine, bool allow_empty = false)
5787  : dnnl::primitive_desc(
5788  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5789 
5797  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5798  dnnl::prop_kind::forward_training,
5799  dnnl::prop_kind::forward_inference) {}
5800 
5802  memory::desc src_desc() const { return base::src_desc(0); }
5803 
5805  memory::desc dst_desc() const { return base::dst_desc(0); }
5806  };
5807 
5809  softmax_forward() = default;
5810 
5815 };
5816 
5818 struct softmax_backward : public primitive {
5820  struct desc {
5821  dnnl_softmax_desc_t data;
5822 
5824  desc() = default;
5825 
5833  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5834  int softmax_axis) {
5836  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
5837  &data_desc.data, softmax_axis),
5838  "could not create a descriptor for a softmax backward "
5839  "propagation primitive");
5840  }
5841  };
5842 
5846  primitive_desc() = default;
5847 
5861  primitive_desc(const desc &adesc, const engine &aengine,
5862  const softmax_forward::primitive_desc &hint_fwd_pd,
5863  bool allow_empty = false)
5864  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5865  hint_fwd_pd.get(), allow_empty) {}
5866 
5881  primitive_desc(const desc &adesc, const primitive_attr &attr,
5882  const engine &aengine,
5883  const softmax_forward::primitive_desc &hint_fwd_pd,
5884  bool allow_empty = false)
5885  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5886  hint_fwd_pd.get(), allow_empty) {}
5887 
5895  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5896  dnnl::prop_kind::backward_data) {}
5897 
5899  memory::desc dst_desc() const { return base::dst_desc(0); }
5900 
5903 
5906  };
5907 
5909  softmax_backward() = default;
5910 
5915 };
5916 
5918 
5926 
5930  struct desc {
5932 
5934  desc() = default;
5935 
5944  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5945  int logsoftmax_axis) {
5947  dnnl::convert_to_c(aprop_kind),
5948  &data_desc.data, logsoftmax_axis),
5949  "could not create a descriptor for a logsoftmax forward "
5950  "propagation primitive");
5951  }
5952  };
5953 
5957  primitive_desc() = default;
5958 
5969  primitive_desc(const desc &adesc, const engine &aengine,
5970  bool allow_empty = false)
5971  : dnnl::primitive_desc(
5972  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5973 
5985  primitive_desc(const desc &adesc, const primitive_attr &attr,
5986  const engine &aengine, bool allow_empty = false)
5987  : dnnl::primitive_desc(
5988  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5989 
5997  : dnnl::primitive_desc(pd,
5998  // Logsoftmax and softmax share the implementation and
5999  // currently report the same primitive kind. Hence this
6000  // must be softmax and not logsoftmax.
6001  dnnl::primitive::kind::softmax,
6002  dnnl::prop_kind::forward_training,
6003  dnnl::prop_kind::forward_inference) {}
6004 
6006  memory::desc src_desc() const { return base::src_desc(0); }
6007 
6009  memory::desc dst_desc() const { return base::dst_desc(0); }
6010  };
6011 
6013  logsoftmax_forward() = default;
6014 
6019 };
6020 
6024  struct desc {
6026 
6028  desc() = default;
6029 
6037  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
6038  int logsoftmax_axis) {
6040  &diff_data_desc.data, &data_desc.data,
6041  logsoftmax_axis),
6042  "could not create a descriptor for a logsoftmax backward "
6043  "propagation primitive");
6044  }
6045  };
6046 
6050  primitive_desc() = default;
6051 
6065  primitive_desc(const desc &adesc, const engine &aengine,
6066  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6067  bool allow_empty = false)
6068  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6069  hint_fwd_pd.get(), allow_empty) {}
6070 
6085  primitive_desc(const desc &adesc, const primitive_attr &attr,
6086  const engine &aengine,
6087  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6088  bool allow_empty = false)
6089  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6090  hint_fwd_pd.get(), allow_empty) {}
6091 
6099  : dnnl::primitive_desc(pd,
6100  // Logsoftmax and softmax share the implementation and
6101  // currently report the same primitive kind. Hence this
6102  // must be softmax and not logsoftmax.
6103  dnnl::primitive::kind::softmax,
6104  dnnl::prop_kind::backward_data) {}
6105 
6107  memory::desc dst_desc() const { return base::dst_desc(0); }
6108 
6111 
6114  };
6115 
6117  logsoftmax_backward() = default;
6118 
6123 };
6124 
6126 
6146 
6150  struct desc {
6152 
6167  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6168  normalization_flags flags) {
6171  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6172  epsilon, convert_to_c(flags)),
6173  "could not create a descriptor for a batch normalization "
6174  "forward propagation primitive");
6175  }
6176  };
6177 
6182  primitive_desc() = default;
6183 
6194  primitive_desc(const desc &adesc, const engine &aengine,
6195  bool allow_empty = false)
6196  : dnnl::primitive_desc(
6197  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6198 
6210  primitive_desc(const desc &adesc, const primitive_attr &attr,
6211  const engine &aengine, bool allow_empty = false)
6212  : dnnl::primitive_desc(
6213  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6214 
6222  : dnnl::primitive_desc(pd,
6223  dnnl::primitive::kind::batch_normalization,
6224  dnnl::prop_kind::forward_training,
6225  dnnl::prop_kind::forward_inference) {}
6226 
6228  memory::desc src_desc() const { return base::src_desc(0); }
6229 
6231  memory::desc dst_desc() const { return base::dst_desc(0); }
6232 
6235 
6238 
6241  memory::desc mean_desc() const { return stat_desc(mean); }
6242 
6245  memory::desc variance_desc() const { return stat_desc(var); }
6246 
6247  private:
6248  enum {
6249  mean = 1,
6250  var = 2,
6251  };
6252  memory::desc stat_desc(int kind) const {
6256  dnnl::convert_to_c(query::batch_normalization_d), 0,
6257  &p),
6258  "could not retrieve a descriptor from a primitive "
6259  "descriptor for batch normalization forward propagation "
6260  "primitive");
6261  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6262  : query::dst_md,
6263  kind);
6264  }
6265  };
6266 
6269 
6274 };
6275 
6279  struct desc {
6281 
6294  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6295  const memory::desc &data_desc, float epsilon,
6296  normalization_flags flags) {
6298  dnnl::convert_to_c(aprop_kind),
6299  &diff_data_desc.data, &data_desc.data,
6300  epsilon, convert_to_c(flags)),
6301  "could not create a descriptor for a batch normalization "
6302  "backward propagation primitive");
6303  }
6304  };
6305 
6310  primitive_desc() = default;
6311 
6325  primitive_desc(const desc &adesc, const engine &aengine,
6327  bool allow_empty = false)
6328  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6329  hint_fwd_pd.get(), allow_empty) {}
6330 
6345  primitive_desc(const desc &adesc, const primitive_attr &attr,
6346  const engine &aengine,
6348  bool allow_empty = false)
6349  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6350  hint_fwd_pd.get(), allow_empty) {}
6351 
6359  : dnnl::primitive_desc(pd,
6360  dnnl::primitive::kind::batch_normalization,
6361  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6362  }
6363 
6365  memory::desc src_desc() const { return base::src_desc(0); }
6366 
6369 
6371  memory::desc dst_desc() const { return base::dst_desc(0); }
6372 
6375 
6378 
6381  return base::diff_weights_desc(0);
6382  }
6383 
6385  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6386 
6389  return query_md(query::src_md, 2);
6390  }
6391 
6394  };
6395 
6398 
6403 };
6404 
6406 
6428 
6432  struct desc {
6434 
6446  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6447  const memory::desc &stat_desc, float epsilon,
6448  normalization_flags flags) {
6451  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6452  &stat_desc.data, epsilon, convert_to_c(flags)),
6453  "could not create a descriptor for a layer normalization "
6454  "forward propagation primitive");
6455  }
6456 
6467  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6468  normalization_flags flags) {
6471  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6472  nullptr, epsilon, convert_to_c(flags)),
6473  "could not create a descriptor for a layer normalization "
6474  "forward propagation primitive");
6475  }
6476  };
6477 
6482  primitive_desc() = default;
6483 
6494  primitive_desc(const desc &adesc, const engine &aengine,
6495  bool allow_empty = false)
6496  : dnnl::primitive_desc(
6497  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6498 
6510  primitive_desc(const desc &adesc, const primitive_attr &attr,
6511  const engine &aengine, bool allow_empty = false)
6512  : dnnl::primitive_desc(
6513  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6514 
6522  : dnnl::primitive_desc(pd,
6523  dnnl::primitive::kind::layer_normalization,
6524  dnnl::prop_kind::forward_training,
6525  dnnl::prop_kind::forward_inference) {}
6526 
6528  memory::desc src_desc() const { return base::src_desc(0); }
6529 
6531  memory::desc dst_desc() const { return base::dst_desc(0); }
6532 
6535 
6538 
6540  memory::desc mean_desc() const { return stat_desc(mean); }
6541 
6543  memory::desc variance_desc() const { return stat_desc(var); }
6544 
6545  private:
6546  enum {
6547  mean = 1,
6548  var = 2,
6549  };
6550  memory::desc stat_desc(int kind) const {
6554  dnnl::convert_to_c(query::layer_normalization_d), 0,
6555  &p),
6556  "could not retrieve a descriptor from a primitive "
6557  "descriptor for layer normalization forward propagation "
6558  "primitive");
6559  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6560  : query::dst_md,
6561  kind);
6562  }
6563  };
6564 
6567 
6572 };
6573 
6577  struct desc {
6579 
6593  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6594  const memory::desc &data_desc, const memory::desc &stat_desc,
6595  float epsilon, normalization_flags flags) {
6598  dnnl::convert_to_c(aprop_kind),
6599  &diff_data_desc.data, &data_desc.data,
6600  &stat_desc.data, epsilon, convert_to_c(flags)),
6601  "could not create a descriptor for a batch normalization "
6602  "backward propagation primitive");
6603  }
6604 
6617  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6618  const memory::desc &data_desc, float epsilon,
6619  normalization_flags flags) {
6621  dnnl::convert_to_c(aprop_kind),
6622  &diff_data_desc.data, &data_desc.data,
6623  nullptr, epsilon, convert_to_c(flags)),
6624  "could not create a descriptor for a batch normalization "
6625  "backward propagation primitive");
6626  }
6627  };
6628 
6633  primitive_desc() = default;
6634 
6648  primitive_desc(const desc &adesc, const engine &aengine,
6650  bool allow_empty = false)
6651  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6652  hint_fwd_pd.get(), allow_empty) {}
6653 
6668  primitive_desc(const desc &adesc, const primitive_attr &attr,
6669  const engine &aengine,
6671  bool allow_empty = false)
6672  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6673  hint_fwd_pd.get(), allow_empty) {}
6674 
6682  : dnnl::primitive_desc(pd,
6683  dnnl::primitive::kind::layer_normalization,
6684  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6685  }
6686 
6688  memory::desc src_desc() const { return base::src_desc(0); }
6689 
6692 
6694  memory::desc dst_desc() const { return base::dst_desc(0); }
6695 
6698 
6701 
6704  return base::diff_weights_desc(0);
6705  }
6706 
6708  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6709 
6712  return query_md(query::src_md, 2);
6713  }
6714 
6717  };
6718 
6721 
6726 };
6727 
6729 
6737 
6741  struct desc {
6743 
6758  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6759  const memory::desc &weights_desc, const memory::desc &bias_desc,
6760  const memory::desc &dst_desc) {
6762  dnnl::convert_to_c(aprop_kind),
6763  &src_desc.data, &weights_desc.data,
6764  &bias_desc.data, &dst_desc.data),
6765  "could not create a descriptor for an inner product "
6766  "forward propagation primitive");
6767  }
6768 
6782  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6783  const memory::desc &weights_desc,
6784  const memory::desc &dst_desc) {
6787  dnnl::convert_to_c(aprop_kind), &src_desc.data,
6788  &weights_desc.data, nullptr, &dst_desc.data),
6789  "could not create a descriptor for an inner product "
6790  "forward propagation primitive");
6791  }
6792  };
6793 
6797  primitive_desc() = default;
6798 
6809  primitive_desc(const desc &adesc, const engine &aengine,
6810  bool allow_empty = false)
6811  : dnnl::primitive_desc(
6812  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6813 
6825  primitive_desc(const desc &adesc, const primitive_attr &attr,
6826  const engine &aengine, bool allow_empty = false)
6827  : dnnl::primitive_desc(
6828  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6829 
6837  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6838  dnnl::prop_kind::forward_training,
6839  dnnl::prop_kind::forward_inference) {}
6840 
6842  memory::desc src_desc() const { return base::src_desc(0); }
6843 
6846 
6848  memory::desc dst_desc() const { return base::dst_desc(0); }
6849 
6852  };
6853 
6856 
6861 };
6862 
6866  struct desc {
6868 
6879  desc(const memory::desc &diff_src_desc,
6880  const memory::desc &weights_desc,
6881  const memory::desc &diff_dst_desc) {
6883  &diff_src_desc.data, &weights_desc.data,
6884  &diff_dst_desc.data),
6885  "could not create a descriptor for an inner product "
6886  "backward propagation primitive");
6887  }
6888  };
6889 
6894  primitive_desc() = default;
6895 
6909  primitive_desc(const desc &adesc, const engine &aengine,
6910  const inner_product_forward::primitive_desc &hint_fwd_pd,
6911  bool allow_empty = false)
6912  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6913  hint_fwd_pd.get(), allow_empty) {}
6914 
6929  primitive_desc(const desc &adesc, const primitive_attr &attr,
6930  const engine &aengine,
6931  const inner_product_forward::primitive_desc &hint_fwd_pd,
6932  bool allow_empty = false)
6933  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6934  hint_fwd_pd.get(), allow_empty) {}
6935 
6943  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6944  dnnl::prop_kind::backward_data) {}
6945 
6948 
6951 
6954  };
6955 
6958 
6963 };
6964 
6968  struct desc {
6970 
6982  desc(const memory::desc &src_desc,
6983  const memory::desc &diff_weights_desc,
6984  const memory::desc &diff_bias_desc,
6985  const memory::desc &diff_dst_desc) {
6988  &src_desc.data, &diff_weights_desc.data,
6989  &diff_bias_desc.data, &diff_dst_desc.data),
6990  "could not create a descriptor for an inner product "
6991  "weights gradient primitive");
6992  }
6993 
7004  desc(const memory::desc &src_desc,
7005  const memory::desc &diff_weights_desc,
7006  const memory::desc &diff_dst_desc) {
7009  &src_desc.data, &diff_weights_desc.data, nullptr,
7010  &diff_dst_desc.data),
7011  "could not create a descriptor for an inner product "
7012  "weights gradient primitive");
7013  }
7014  };
7015 
7019  primitive_desc() = default;
7020 
7034  primitive_desc(const desc &adesc, const engine &aengine,
7035  const inner_product_forward::primitive_desc &hint_fwd_pd,
7036  bool allow_empty = false)
7037  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7038  hint_fwd_pd.get(), allow_empty) {}
7039 
7054  primitive_desc(const desc &adesc, const primitive_attr &attr,
7055  const engine &aengine,
7056  const inner_product_forward::primitive_desc &hint_fwd_pd,
7057  bool allow_empty = false)
7058  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7059  hint_fwd_pd.get(), allow_empty) {}
7060 
7068  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7069  dnnl::prop_kind::backward_weights) {}
7070 
7072  memory::desc src_desc() const { return base::src_desc(0); }
7073 
7076  return base::diff_weights_desc(0);
7077  }
7078 
7081 
7084  return base::diff_weights_desc(1);
7085  }
7086  };
7087 
7090 
7095 };
7096 
7098 
7106 
7109  using primitive_desc::primitive_desc;
7110 
7113 
7122  dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
7123  : rnn_primitive_desc_base(pd, aprop_kind, aprop_kind, cell_kind) {}
7124 
7129  }
7130 
7137  }
7138 
7143  }
7144 
7149  }
7150 
7155  }
7156 
7161  }
7162 
7167  }
7168 
7175  }
7176 
7181  }
7182 
7189  }
7190 
7195  }
7196 
7201  }
7202 
7209  }
7210 
7215  }
7216 
7221  }
7222 
7227  }
7228 
7232  return base::query_md(
7234  }
7235 
7239  return base::query_md(
7241  }
7242 
7249  }
7250 
7255  }
7256 
7263  }
7264 
7269  }
7270 
7271 protected:
7272  using rnn_base = rnn_primitive_desc_base;
7273 
7274  // (Deliberately not using doxygen comments)
7275  //
7276  // Constructs an RNN primitive descriptor base from a C API primitive
7277  // descriptor while checking that it actually describes the expected
7278  // primitive by comparing propagation and primitive kinds. Caller can
7279  // pass two options propagation kinds. This is typically used to check
7280  // that propagation kind is inference or training forward propagation.
7281  //
7282  // @param pd C API primitive descriptor.
7283  // @param prop_kind1 Expected propagation kind.
7284  // @param prop_kind2 Expected propagation kind.
7285  // @param cell_kind Expected cell kind.
7287  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
7288  dnnl::algorithm cell_kind) {
7289  dnnl_rnn_desc_t *rnn_d;
7290  dnnl_status_t rc;
7291  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
7292  error::wrap_c_api(rc,
7293  "could not retrieve a descriptor from a primitive descriptor "
7294  "for an RNN primitive");
7295 
7296  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
7297  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
7298  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
7299 
7300  bool ok = rnn_d->primitive_kind == dnnl_rnn
7301  && (rnn_d->prop_kind == c_prop_kind1
7302  || rnn_d->prop_kind == c_prop_kind2)
7303  && rnn_d->cell_kind == c_cell_kind;
7304 
7305  if (!ok)
7306  DNNL_THROW_ERROR(dnnl_invalid_arguments,
7307  "mismatch between expected and provided descriptors for an "
7308  "RNN primitive");
7309 
7310  reset_with_clone(pd);
7311  }
7312 };
7313 
7317  struct desc {
7318  dnnl_rnn_desc_t data;
7319 
7360  desc(prop_kind aprop_kind, algorithm activation,
7361  rnn_direction direction, const memory::desc &src_layer_desc,
7362  const memory::desc &src_iter_desc,
7363  const memory::desc &weights_layer_desc,
7364  const memory::desc &weights_iter_desc,
7365  const memory::desc &bias_desc,
7366  const memory::desc &dst_layer_desc,
7367  const memory::desc &dst_iter_desc,
7368  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7369  float beta = 0.0f) {
7372  dnnl::convert_to_c(aprop_kind),
7373  dnnl::convert_to_c(activation),
7374  dnnl::convert_to_c(direction), &src_layer_desc.data,
7375  &src_iter_desc.data, &weights_layer_desc.data,
7376  &weights_iter_desc.data, &bias_desc.data,
7377  &dst_layer_desc.data, &dst_iter_desc.data,
7378  dnnl::convert_to_c(flags), alpha, beta),
7379  "could not create a descriptor for a vanilla RNN forward "
7380  "propagation primitive");
7381  }
7382  };
7383 
7387  primitive_desc() = default;
7388 
7399  primitive_desc(const desc &adesc, const engine &aengine,
7400  bool allow_empty = false)
7402  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7403 
7415  primitive_desc(const desc &adesc, const primitive_attr &attr,
7416  const engine &aengine, bool allow_empty = false)
7418  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7419 
7427  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
7428  dnnl::prop_kind::forward_inference,
7429  dnnl::algorithm::vanilla_rnn) {}
7430 
7433  return rnn_base::src_layer_desc();
7434  }
7435 
7438 
7442  }
7443 
7446  return rnn_base::weights_iter_desc();
7447  }
7448 
7451 
7454  return rnn_base::dst_layer_desc();
7455  }
7456 
7459 
7462  return rnn_base::workspace_desc();
7463  }
7464  };
7465 
7467  vanilla_rnn_forward() = default;
7468 
7473 };
7474 
7478  struct desc {
7479  dnnl_rnn_desc_t data;
7480 
7533  desc(prop_kind aprop_kind, algorithm activation,
7534  rnn_direction direction, const memory::desc &src_layer_desc,
7535  const memory::desc &src_iter_desc,
7536  const memory::desc &weights_layer_desc,
7537  const memory::desc &weights_iter_desc,
7538  const memory::desc &bias_desc,
7539  const memory::desc &dst_layer_desc,
7540  const memory::desc &dst_iter_desc,
7541  const memory::desc &diff_src_layer_desc,
7542  const memory::desc &diff_src_iter_desc,
7543  const memory::desc &diff_weights_layer_desc,
7544  const memory::desc &diff_weights_iter_desc,
7545  const memory::desc &diff_bias_desc,
7546  const memory::desc &diff_dst_layer_desc,
7547  const memory::desc &diff_dst_iter_desc,
7548  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7549  float beta = 0.0f) {
7552  dnnl::convert_to_c(aprop_kind),
7553  dnnl::convert_to_c(activation),
7554  dnnl::convert_to_c(direction), &src_layer_desc.data,
7555  &src_iter_desc.data, &weights_layer_desc.data,
7556  &weights_iter_desc.data, &bias_desc.data,
7557  &dst_layer_desc.data, &dst_iter_desc.data,
7558  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7559  &diff_weights_layer_desc.data,
7560  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7561  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7562  dnnl::convert_to_c(flags), alpha, beta),
7563  "could not create a descriptor for a vanilla RNN backward "
7564  "propagation primitive");
7565  }
7566  };
7567 
7571  primitive_desc() = default;
7572 
7586  primitive_desc(const desc &adesc, const engine &aengine,
7587  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7588  bool allow_empty = false)
7589  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
7590  hint_fwd_pd.get(), allow_empty) {}
7591 
7606  primitive_desc(const desc &adesc, const primitive_attr &attr,
7607  const engine &aengine,
7608  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7609  bool allow_empty = false)
7610  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
7611  hint_fwd_pd.get(), allow_empty) {}
7612 
7620  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
7621  dnnl::algorithm::vanilla_rnn) {}
7622 
7625  return rnn_base::src_layer_desc();
7626  }
7627 
7630 
7634  }
7635 
7638  return rnn_base::weights_iter_desc();
7639  }
7640 
7643 
7646  return rnn_base::dst_layer_desc();
7647  }
7648 
7651 
7654  return rnn_base::workspace_desc();
7655  }
7656 
7660  }
7661 
7665  }
7666 
7670  }
7671 
7675  }
7676 
7679  return rnn_base::diff_bias_desc();
7680  }
7681 
7685  }
7686 
7690  }
7691  };
7692 
7695 
7700 };
7701 
7703 struct lstm_forward : public primitive {
7705  struct desc {
7706  dnnl_rnn_desc_t data;
7707 
7756  desc(prop_kind aprop_kind, rnn_direction direction,
7757  const memory::desc &src_layer_desc,
7758  const memory::desc &src_iter_desc,
7759  const memory::desc &src_iter_c_desc,
7760  const memory::desc &weights_layer_desc,
7761  const memory::desc &weights_iter_desc,
7762  const memory::desc &weights_peephole_desc,
7763  const memory::desc &weights_projection_desc,
7764  const memory::desc &bias_desc,
7765  const memory::desc &dst_layer_desc,
7766  const memory::desc &dst_iter_desc,
7767  const memory::desc &dst_iter_c_desc,
7768  rnn_flags flags = rnn_flags::undef) {
7771  dnnl::convert_to_c(aprop_kind),
7772  dnnl::convert_to_c(direction), &src_layer_desc.data,
7773  &src_iter_desc.data, &src_iter_c_desc.data,
7774  &weights_layer_desc.data, &weights_iter_desc.data,
7775  &weights_peephole_desc.data,
7776  &weights_projection_desc.data, &bias_desc.data,
7777  &dst_layer_desc.data, &dst_iter_desc.data,
7778  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7779  "could not create a descriptor for an LSTM forward "
7780  "propagation primitive");
7781  }
7782 
7824  desc(prop_kind aprop_kind, rnn_direction direction,
7825  const memory::desc &src_layer_desc,
7826  const memory::desc &src_iter_desc,
7827  const memory::desc &src_iter_c_desc,
7828  const memory::desc &weights_layer_desc,
7829  const memory::desc &weights_iter_desc,
7830  const memory::desc &weights_peephole_desc,
7831  const memory::desc &bias_desc,
7832  const memory::desc &dst_layer_desc,
7833  const memory::desc &dst_iter_desc,
7834  const memory::desc &dst_iter_c_desc,
7835  rnn_flags flags = rnn_flags::undef) {
7838  dnnl::convert_to_c(aprop_kind),
7839  dnnl::convert_to_c(direction), &src_layer_desc.data,
7840  &src_iter_desc.data, &src_iter_c_desc.data,
7841  &weights_layer_desc.data, &weights_iter_desc.data,
7842  &weights_peephole_desc.data, &bias_desc.data,
7843  &dst_layer_desc.data, &dst_iter_desc.data,
7844  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7845  "could not create a descriptor for an LSTM forward "
7846  "propagation primitive");
7847  }
7848 
7885  desc(prop_kind aprop_kind, rnn_direction direction,
7886  const memory::desc &src_layer_desc,
7887  const memory::desc &src_iter_desc,
7888  const memory::desc &src_iter_c_desc,
7889  const memory::desc &weights_layer_desc,
7890  const memory::desc &weights_iter_desc,
7891  const memory::desc &bias_desc,
7892  const memory::desc &dst_layer_desc,
7893  const memory::desc &dst_iter_desc,
7894  const memory::desc &dst_iter_c_desc,
7895  rnn_flags flags = rnn_flags::undef) {
7898  dnnl::convert_to_c(aprop_kind),
7899  dnnl::convert_to_c(direction), &src_layer_desc.data,
7900  &src_iter_desc.data, &src_iter_c_desc.data,
7901  &weights_layer_desc.data, &weights_iter_desc.data,
7902  &bias_desc.data, &dst_layer_desc.data,
7903  &dst_iter_desc.data, &dst_iter_c_desc.data,
7904  dnnl::convert_to_c(flags)),
7905  "could not create a descriptor for an LSTM forward "
7906  "propagation primitive");
7907  }
7908  };
7909 
7913  primitive_desc() = default;
7914 
7924  primitive_desc(const desc &adesc, const engine &aengine,
7925  bool allow_empty = false)
7927  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7928 
7939  primitive_desc(const desc &adesc, const primitive_attr &attr,
7940  const engine &aengine, bool allow_empty = false)
7942  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7943 
7951  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
7952  dnnl::prop_kind::forward_inference,
7953  dnnl::algorithm::vanilla_lstm) {}
7954 
7957  return rnn_base::src_layer_desc();
7958  }
7959 
7962 
7965  return rnn_base::src_iter_c_desc();
7966  }
7967 
7971  }
7972 
7975  return rnn_base::weights_iter_desc();
7976  }
7977 
7981  }
7982 
7986  }
7987 
7990 
7993  return rnn_base::dst_layer_desc();
7994  }
7995 
7998 
8001  return rnn_base::dst_iter_c_desc();
8002  }
8003 
8006  return rnn_base::workspace_desc();
8007  }
8008  };
8009 
8011  lstm_forward() = default;
8012 
8017 };
8018 
8020 struct lstm_backward : public primitive {
8022  struct desc {
8023  dnnl_rnn_desc_t data;
8024 
8100  desc(prop_kind aprop_kind, rnn_direction direction,
8101  const memory::desc &src_layer_desc,
8102  const memory::desc &src_iter_desc,
8103  const memory::desc &src_iter_c_desc,
8104  const memory::desc &weights_layer_desc,
8105  const memory::desc &weights_iter_desc,
8106  const memory::desc &weights_peephole_desc,
8107  const memory::desc &weights_projection_desc,
8108  const memory::desc &bias_desc,
8109  const memory::desc &dst_layer_desc,
8110  const memory::desc &dst_iter_desc,
8111  const memory::desc &dst_iter_c_desc,
8112  const memory::desc &diff_src_layer_desc,
8113  const memory::desc &diff_src_iter_desc,
8114  const memory::desc &diff_src_iter_c_desc,
8115  const memory::desc &diff_weights_layer_desc,
8116  const memory::desc &diff_weights_iter_desc,
8117  const memory::desc &diff_weights_peephole_desc,
8118  const memory::desc &diff_weights_projection_desc,
8119  const memory::desc &diff_bias_desc,
8120  const memory::desc &diff_dst_layer_desc,
8121  const memory::desc &diff_dst_iter_desc,
8122  const memory::desc &diff_dst_iter_c_desc,
8123  rnn_flags flags = rnn_flags::undef) {
8126  dnnl::convert_to_c(aprop_kind),
8127  dnnl::convert_to_c(direction), &src_layer_desc.data,
8128  &src_iter_desc.data, &src_iter_c_desc.data,
8129  &weights_layer_desc.data, &weights_iter_desc.data,
8130  &weights_peephole_desc.data,
8131  &weights_projection_desc.data, &bias_desc.data,
8132  &dst_layer_desc.data, &dst_iter_desc.data,
8133  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8134  &diff_src_iter_desc.data,
8135  &diff_src_iter_c_desc.data,
8136  &diff_weights_layer_desc.data,
8137  &diff_weights_iter_desc.data,
8138  &diff_weights_peephole_desc.data,
8139  &diff_weights_projection_desc.data,
8140  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8141  &diff_dst_iter_desc.data,
8142  &diff_dst_iter_c_desc.data,
8143  dnnl::convert_to_c(flags)),
8144  "could not create a descriptor for an LSTM backward "
8145  "propagation primitive");
8146  }
8147 
8212  desc(prop_kind aprop_kind, rnn_direction direction,
8213  const memory::desc &src_layer_desc,
8214  const memory::desc &src_iter_desc,
8215  const memory::desc &src_iter_c_desc,
8216  const memory::desc &weights_layer_desc,
8217  const memory::desc &weights_iter_desc,
8218  const memory::desc &weights_peephole_desc,
8219  const memory::desc &bias_desc,
8220  const memory::desc &dst_layer_desc,
8221  const memory::desc &dst_iter_desc,
8222  const memory::desc &dst_iter_c_desc,
8223  const memory::desc &diff_src_layer_desc,
8224  const memory::desc &diff_src_iter_desc,
8225  const memory::desc &diff_src_iter_c_desc,
8226  const memory::desc &diff_weights_layer_desc,
8227  const memory::desc &diff_weights_iter_desc,
8228  const memory::desc &diff_weights_peephole_desc,
8229  const memory::desc &diff_bias_desc,
8230  const memory::desc &diff_dst_layer_desc,
8231  const memory::desc &diff_dst_iter_desc,
8232  const memory::desc &diff_dst_iter_c_desc,
8233  rnn_flags flags = rnn_flags::undef) {
8236  dnnl::convert_to_c(aprop_kind),
8237  dnnl::convert_to_c(direction), &src_layer_desc.data,
8238  &src_iter_desc.data, &src_iter_c_desc.data,
8239  &weights_layer_desc.data, &weights_iter_desc.data,
8240  &weights_peephole_desc.data, &bias_desc.data,
8241  &dst_layer_desc.data, &dst_iter_desc.data,
8242  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8243  &diff_src_iter_desc.data,
8244  &diff_src_iter_c_desc.data,
8245  &diff_weights_layer_desc.data,
8246  &diff_weights_iter_desc.data,
8247  &diff_weights_peephole_desc.data,
8248  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8249  &diff_dst_iter_desc.data,
8250  &diff_dst_iter_c_desc.data,
8251  dnnl::convert_to_c(flags)),
8252  "could not create a descriptor for an LSTM backward "
8253  "propagation primitive");
8254  }
8255 
8311  desc(prop_kind aprop_kind, rnn_direction direction,
8312  const memory::desc &src_layer_desc,
8313  const memory::desc &src_iter_desc,
8314  const memory::desc &src_iter_c_desc,
8315  const memory::desc &weights_layer_desc,
8316  const memory::desc &weights_iter_desc,
8317  const memory::desc &bias_desc,
8318  const memory::desc &dst_layer_desc,
8319  const memory::desc &dst_iter_desc,
8320  const memory::desc &dst_iter_c_desc,
8321  const memory::desc &diff_src_layer_desc,
8322  const memory::desc &diff_src_iter_desc,
8323  const memory::desc &diff_src_iter_c_desc,
8324  const memory::desc &diff_weights_layer_desc,
8325  const memory::desc &diff_weights_iter_desc,
8326  const memory::desc &diff_bias_desc,
8327  const memory::desc &diff_dst_layer_desc,
8328  const memory::desc &diff_dst_iter_desc,
8329  const memory::desc &diff_dst_iter_c_desc,
8330  rnn_flags flags = rnn_flags::undef) {
8333  dnnl::convert_to_c(aprop_kind),
8334  dnnl::convert_to_c(direction), &src_layer_desc.data,
8335  &src_iter_desc.data, &src_iter_c_desc.data,
8336  &weights_layer_desc.data, &weights_iter_desc.data,
8337  &bias_desc.data, &dst_layer_desc.data,
8338  &dst_iter_desc.data, &dst_iter_c_desc.data,
8339  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8340  &diff_src_iter_c_desc.data,
8341  &diff_weights_layer_desc.data,
8342  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8343  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8344  &diff_dst_iter_c_desc.data,
8345  dnnl::convert_to_c(flags)),
8346  "could not create a descriptor for an LSTM backward "
8347  "propagation primitive");
8348  }
8349  };
8350 
8354  primitive_desc() = default;
8355 
8368  primitive_desc(const desc &adesc, const engine &aengine,
8369  const lstm_forward::primitive_desc &hint_fwd_pd,
8370  bool allow_empty = false)
8371  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8372  hint_fwd_pd.get(), allow_empty) {}
8373 
8387  primitive_desc(const desc &adesc, const primitive_attr &attr,
8388  const engine &aengine,
8389  const lstm_forward::primitive_desc &hint_fwd_pd,
8390  bool allow_empty = false)
8391  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8392  hint_fwd_pd.get(), allow_empty) {}
8393 
8401  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8402  dnnl::algorithm::vanilla_lstm) {}
8403 
8406  return rnn_base::src_layer_desc();
8407  }
8408 
8411 
8414  return rnn_base::src_iter_c_desc();
8415  }
8416 
8420  }
8421 
8424  return rnn_base::weights_iter_desc();
8425  }
8426 
8430  }
8431 
8435  }
8436 
8439 
8442  return rnn_base::dst_layer_desc();
8443  }
8444 
8447 
8450  return rnn_base::dst_iter_c_desc();
8451  }
8452 
8455  return rnn_base::workspace_desc();
8456  }
8457 
8461  }
8462 
8466  }
8467 
8471  }
8472 
8476  }
8477 
8481  }
8482 
8486  }
8487 
8491  }
8492 
8495  return rnn_base::diff_bias_desc();
8496  }
8497 
8501  }
8502 
8506  }
8507 
8511  }
8512  };
8513 
8515  lstm_backward() = default;
8516 
8521 };
8522 
8524 struct gru_forward : public primitive {
8526  struct desc {
8527  dnnl_rnn_desc_t data;
8528 
8561  desc(prop_kind aprop_kind, rnn_direction direction,
8562  const memory::desc &src_layer_desc,
8563  const memory::desc &src_iter_desc,
8564  const memory::desc &weights_layer_desc,
8565  const memory::desc &weights_iter_desc,
8566  const memory::desc &bias_desc,
8567  const memory::desc &dst_layer_desc,
8568  const memory::desc &dst_iter_desc,
8569  rnn_flags flags = rnn_flags::undef) {
8572  dnnl::convert_to_c(aprop_kind),
8573  dnnl::convert_to_c(direction), &src_layer_desc.data,
8574  &src_iter_desc.data, &weights_layer_desc.data,
8575  &weights_iter_desc.data, &bias_desc.data,
8576  &dst_layer_desc.data, &dst_iter_desc.data,
8577  dnnl::convert_to_c(flags)),
8578  "could not create a descriptor for a GRU forward "
8579  "propagation primitive");
8580  }
8581  };
8582 
8586  primitive_desc() = default;
8587 
8597  primitive_desc(const desc &adesc, const engine &aengine,
8598  bool allow_empty = false)
8600  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8601 
8612  primitive_desc(const desc &adesc, const primitive_attr &attr,
8613  const engine &aengine, bool allow_empty = false)
8615  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8616 
8624  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8625  dnnl::prop_kind::forward_inference,
8626  dnnl::algorithm::vanilla_gru) {}
8627 
8630  return rnn_base::src_layer_desc();
8631  }
8632 
8635 
8639  }
8640 
8643  return rnn_base::weights_iter_desc();
8644  }
8645 
8648 
8651  return rnn_base::dst_layer_desc();
8652  }
8653 
8656 
8659  return rnn_base::workspace_desc();
8660  }
8661  };
8662 
8664  gru_forward() = default;
8665 
8670 };
8671 
8673 struct gru_backward : public primitive {
8675  struct desc {
8676  dnnl_rnn_desc_t data;
8677 
8722  desc(prop_kind aprop_kind, rnn_direction direction,
8723  const memory::desc &src_layer_desc,
8724  const memory::desc &src_iter_desc,
8725  const memory::desc &weights_layer_desc,
8726  const memory::desc &weights_iter_desc,
8727  const memory::desc &bias_desc,
8728  const memory::desc &dst_layer_desc,
8729  const memory::desc &dst_iter_desc,
8730  const memory::desc &diff_src_layer_desc,
8731  const memory::desc &diff_src_iter_desc,
8732  const memory::desc &diff_weights_layer_desc,
8733  const memory::desc &diff_weights_iter_desc,
8734  const memory::desc &diff_bias_desc,
8735  const memory::desc &diff_dst_layer_desc,
8736  const memory::desc &diff_dst_iter_desc,
8737  rnn_flags flags = rnn_flags::undef) {
8740  dnnl::convert_to_c(aprop_kind),
8741  dnnl::convert_to_c(direction), &src_layer_desc.data,
8742  &src_iter_desc.data, &weights_layer_desc.data,
8743  &weights_iter_desc.data, &bias_desc.data,
8744  &dst_layer_desc.data, &dst_iter_desc.data,
8745  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8746  &diff_weights_layer_desc.data,
8747  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8748  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8749  dnnl::convert_to_c(flags)),
8750  "could not create a descriptor for a GRU backward "
8751  "propagation primitive");
8752  }
8753  };
8754 
8758  primitive_desc() = default;
8759 
8772  primitive_desc(const desc &adesc, const engine &aengine,
8773  const gru_forward::primitive_desc &hint_fwd_pd,
8774  bool allow_empty = false)
8775  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8776  hint_fwd_pd.get(), allow_empty) {}
8777 
8791  primitive_desc(const desc &adesc, const primitive_attr &attr,
8792  const engine &aengine,
8793  const gru_forward::primitive_desc &hint_fwd_pd,
8794  bool allow_empty = false)
8795  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8796  hint_fwd_pd.get(), allow_empty) {}
8797 
8805  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8806  dnnl::algorithm::vanilla_gru) {}
8807 
8810  return rnn_base::src_layer_desc();
8811  }
8812 
8815 
8819  }
8820 
8823  return rnn_base::weights_iter_desc();
8824  }
8825 
8828 
8831  return rnn_base::dst_layer_desc();
8832  }
8833 
8836 
8839  return rnn_base::workspace_desc();
8840  }
8841 
8845  }
8846 
8850  }
8851 
8855  }
8856 
8860  }
8861 
8864  return rnn_base::diff_bias_desc();
8865  }
8866 
8870  }
8871 
8875  }
8876  };
8877 
8879  gru_backward() = default;
8880 
8885 };
8886 
8888 struct lbr_gru_forward : public primitive {
8890  struct desc {
8891  dnnl_rnn_desc_t data;
8892 
8926  desc(prop_kind aprop_kind, rnn_direction direction,
8927  const memory::desc &src_layer_desc,
8928  const memory::desc &src_iter_desc,
8929  const memory::desc &weights_layer_desc,
8930  const memory::desc &weights_iter_desc,
8931  const memory::desc &bias_desc,
8932  const memory::desc &dst_layer_desc,
8933  const memory::desc &dst_iter_desc,
8934  rnn_flags flags = rnn_flags::undef) {
8937  dnnl::convert_to_c(aprop_kind),
8938  dnnl::convert_to_c(direction), &src_layer_desc.data,
8939  &src_iter_desc.data, &weights_layer_desc.data,
8940  &weights_iter_desc.data, &bias_desc.data,
8941  &dst_layer_desc.data, &dst_iter_desc.data,
8942  dnnl::convert_to_c(flags)),
8943  "could not create a descriptor for an LBR GRU forward "
8944  "propagation primitive");
8945  }
8946  };
8947 
8951  primitive_desc() = default;
8952 
8963  primitive_desc(const desc &adesc, const engine &aengine,
8964  bool allow_empty = false)
8966  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8967 
8979  primitive_desc(const desc &adesc, const primitive_attr &attr,
8980  const engine &aengine, bool allow_empty = false)
8982  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8983 
8991  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8992  dnnl::prop_kind::forward_inference,
8993  dnnl::algorithm::lbr_gru) {}
8994 
8997  return rnn_base::src_layer_desc();
8998  }
8999 
9002 
9006  }
9007 
9010  return rnn_base::weights_iter_desc();
9011  }
9012 
9015 
9018  return rnn_base::dst_layer_desc();
9019  }
9020 
9023 
9026  return rnn_base::workspace_desc();
9027  }
9028  };
9029 
9031  lbr_gru_forward() = default;
9032 
9037 };
9038 
9040 struct lbr_gru_backward : public primitive {
9042  struct desc {
9043  dnnl_rnn_desc_t data;
9044 
9090  desc(prop_kind aprop_kind, rnn_direction direction,
9091  const memory::desc &src_layer_desc,
9092  const memory::desc &src_iter_desc,
9093  const memory::desc &weights_layer_desc,
9094  const memory::desc &weights_iter_desc,
9095  const memory::desc &bias_desc,
9096  const memory::desc &dst_layer_desc,
9097  const memory::desc &dst_iter_desc,
9098  const memory::desc &diff_src_layer_desc,
9099  const memory::desc &diff_src_iter_desc,
9100  const memory::desc &diff_weights_layer_desc,
9101  const memory::desc &diff_weights_iter_desc,
9102  const memory::desc &diff_bias_desc,
9103  const memory::desc &diff_dst_layer_desc,
9104  const memory::desc &diff_dst_iter_desc,
9105  rnn_flags flags = rnn_flags::undef) {
9108  dnnl::convert_to_c(aprop_kind),
9109  dnnl::convert_to_c(direction), &src_layer_desc.data,
9110  &src_iter_desc.data, &weights_layer_desc.data,
9111  &weights_iter_desc.data, &bias_desc.data,
9112  &dst_layer_desc.data, &dst_iter_desc.data,
9113  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9114  &diff_weights_layer_desc.data,
9115  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9116  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9117  dnnl::convert_to_c(flags)),
9118  "could not create a descriptor for an LBR GRU backward "
9119  "propagation primitive");
9120  }
9121  };
9122 
9126  primitive_desc() = default;
9127 
9141  primitive_desc(const desc &adesc, const engine &aengine,
9142  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9143  bool allow_empty = false)
9144  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9145  hint_fwd_pd.get(), allow_empty) {}
9146 
9161  primitive_desc(const desc &adesc, const primitive_attr &attr,
9162  const engine &aengine,
9163  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9164  bool allow_empty = false)
9165  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9166  hint_fwd_pd.get(), allow_empty) {}
9167 
9176  pd, dnnl::prop_kind::backward, dnnl::algorithm::lbr_gru) {}
9177 
9180  return rnn_base::src_layer_desc();
9181  }
9182 
9185 
9189  }
9190 
9193  return rnn_base::weights_iter_desc();
9194  }
9195 
9198 
9201  return rnn_base::dst_layer_desc();
9202  }
9203 
9206 
9209  return rnn_base::workspace_desc();
9210  }
9211 
9215  }
9216 
9220  }
9221 
9225  }
9226 
9230  }
9231 
9234  return rnn_base::diff_bias_desc();
9235  }
9236 
9240  }
9241 
9245  }
9246  };
9247 
9249  lbr_gru_backward() = default;
9250 
9255 };
9256 
9258 
9266 
9268 struct shuffle_forward : public primitive {
9270  struct desc {
9271  dnnl_shuffle_desc_t data;
9272 
9282  desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis,
9283  int group_size) {
9285  dnnl::convert_to_c(aprop_kind),
9286  &data_desc.data, axis, group_size),
9287  "could not create a descriptor for a shuffle forward "
9288  "propagation primitive");
9289  }
9290  };
9291 
9295  primitive_desc() = default;
9296 
9308  primitive_desc(const desc &adesc, const engine &aengine,
9309  const primitive_attr &attr = primitive_attr(),
9310  bool allow_empty = false)
9311  : dnnl::primitive_desc(
9312  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9313 
9321  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9322  dnnl::prop_kind::forward_training,
9323  dnnl::prop_kind::forward_inference) {}
9324 
9326  memory::desc src_desc() const { return base::src_desc(0); }
9327 
9329  memory::desc dst_desc() const { return base::dst_desc(0); }
9330  };
9331 
9333  shuffle_forward() = default;
9334 
9339 };
9340 
9342 struct shuffle_backward : public primitive {
9345  struct desc {
9346  dnnl_shuffle_desc_t data;
9347 
9355  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
9357  &diff_data_desc.data, axis, group_size),
9358  "could not create a descriptor for a shuffle backward "
9359  "propagation primitive");
9360  }
9361  };
9362 
9366  primitive_desc() = default;
9367 
9382  primitive_desc(const desc &adesc, const engine &aengine,
9383  const shuffle_forward::primitive_desc &hint_fwd_pd,
9384  const primitive_attr &attr = primitive_attr(),
9385  bool allow_empty = false)
9386  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9387  hint_fwd_pd.get(), allow_empty) {}
9388 
9396  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9397  dnnl::prop_kind::backward_data) {}
9398 
9401 
9404  };
9405 
9407  shuffle_backward() = default;
9408 
9413 };
9414 
9416 
9424 
9426 struct binary : public primitive {
9428  struct desc {
9431 
9433  desc() = default;
9434 
9442  desc(algorithm aalgorithm, const memory::desc &src0,
9443  const memory::desc &src1, const memory::desc &dst) {
9446  &src0.data, &src1.data, &dst.data),
9447  "could not create a descriptor for a binary operation "
9448  "primitive");
9449  }
9450  };
9451 
9455  primitive_desc() = default;
9456 
9466  primitive_desc(const desc &adesc, const engine &aengine,
9467  bool allow_empty = false)
9468  : dnnl::primitive_desc(
9469  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9470 
9481  primitive_desc(const desc &adesc, const primitive_attr &attr,
9482  const engine &aengine, bool allow_empty = false)
9483  : dnnl::primitive_desc(
9484  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9485 
9492 
9494  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
9495 
9497  memory::desc src0_desc() const { return base::src_desc(0); }
9498 
9500  memory::desc src1_desc() const { return base::src_desc(1); }
9501 
9503  memory::desc dst_desc() const { return base::dst_desc(0); }
9504  };
9505 
9507  binary() = default;
9508 
9512  binary(const primitive_desc &pd) : primitive(pd) {}
9513 };
9514 
9516 
9526 
9528 struct matmul : public primitive {
9530  struct desc {
9531  dnnl_matmul_desc_t data;
9532 
9538  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9539  const memory::desc &dst_desc) {
9541  dnnl_matmul_desc_init(&data, &src_desc.data,
9542  &weights_desc.data, nullptr, &dst_desc.data),
9543  "could not create a descriptor for a matmul primitive");
9544  }
9545 
9552  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9553  const memory::desc &bias_desc, const memory::desc &dst_desc) {
9554  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
9555  &weights_desc.data, &bias_desc.data,
9556  &dst_desc.data),
9557  "could not create a descriptor for a matmul primitive");
9558  }
9559  };
9560 
9564  primitive_desc() = default;
9565 
9574  primitive_desc(const desc &adesc, const engine &aengine,
9575  bool allow_empty = false)
9576  : dnnl::primitive_desc(
9577  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9578 
9588  primitive_desc(const desc &adesc, const primitive_attr &attr,
9589  const engine &aengine, bool allow_empty = false)
9590  : dnnl::primitive_desc(
9591  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9592 
9599 
9601  memory::desc src_desc() const { return query_md(query::src_md, 0); }
9602 
9605  return query_md(query::weights_md, 0);
9606  }
9607 
9610  return query_md(query::weights_md, 1);
9611  }
9612 
9614  memory::desc dst_desc() const { return query_md(query::dst_md, 0); }
9615  };
9616 
9618  matmul() = default;
9619 
9622  matmul(const primitive_desc &pd) : primitive(pd) {}
9623 };
9624 
9626 
9636 
9640  struct desc {
9642 
9658  desc(prop_kind aprop_kind, algorithm aalgorithm,
9659  const memory::desc &src_desc, const memory::desc &dst_desc) {
9661  dnnl::convert_to_c(aprop_kind),
9662  convert_to_c(aalgorithm), nullptr,
9663  &src_desc.data, &dst_desc.data),
9664  "could not create a resampling forward descriptor");
9665  }
9666 
9678  desc(prop_kind aprop_kind, algorithm aalgorithm,
9679  const std::vector<float> &factors,
9680  const memory::desc &src_desc) {
9681  memory::validate_dims(factors, src_desc.data.ndims - 2);
9683  dnnl::convert_to_c(aprop_kind),
9684  convert_to_c(aalgorithm), &factors[0],
9685  &src_desc.data, nullptr),
9686  "could not create a resampling forward descriptor");
9687  }
9688 
9705  desc(prop_kind aprop_kind, algorithm aalgorithm,
9706  const std::vector<float> &factors, const memory::desc &src_desc,
9707  const memory::desc &dst_desc) {
9708  if (!factors.empty())
9709  memory::validate_dims(factors, src_desc.data.ndims - 2);
9711  dnnl::convert_to_c(aprop_kind),
9712  convert_to_c(aalgorithm), factors.data(),
9713  &src_desc.data, &dst_desc.data),
9714  "could not create a resampling forward descriptor");
9715  }
9716  };
9717 
9721  primitive_desc() = default;
9722 
9733  primitive_desc(const desc &adesc, const engine &aengine,
9734  bool allow_empty = false)
9735  : dnnl::primitive_desc(
9736  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9737 
9749  primitive_desc(const desc &adesc, const primitive_attr &attr,
9750  const engine &aengine, bool allow_empty = false)
9751  : dnnl::primitive_desc(
9752  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9753 
9761  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9762  dnnl::prop_kind::forward_training,
9763  dnnl::prop_kind::forward_inference) {}
9764 
9766  memory::desc src_desc() const { return base::src_desc(0); }
9767 
9769  memory::desc dst_desc() const { return base::dst_desc(0); }
9770  };
9771 
9773  resampling_forward() = default;
9774 
9779 };
9780 
9784  struct desc {
9786 
9795  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
9796  const memory::desc &diff_dst_desc) {
9798  convert_to_c(aalgorithm), nullptr,
9799  &diff_src_desc.data, &diff_dst_desc.data),
9800  "could not create a resampling backward data descriptor");
9801  }
9802 
9812  desc(algorithm aalgorithm, const std::vector<float> &factors,
9813  const memory::desc &diff_src_desc,
9814  const memory::desc &diff_dst_desc) {
9815  if (!factors.empty())
9816  memory::validate_dims(factors, diff_src_desc.data.ndims - 2);
9818  convert_to_c(aalgorithm), factors.data(),
9819  &diff_src_desc.data, &diff_dst_desc.data),
9820  "could not create a resampling backward data descriptor");
9821  }
9822  };
9823 
9827  primitive_desc() = default;
9828 
9842  primitive_desc(const desc &adesc, const engine &aengine,
9843  const resampling_forward::primitive_desc &hint_fwd_pd,
9844  bool allow_empty = false)
9845  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
9846  hint_fwd_pd.get(), allow_empty) {}
9847 
9862  primitive_desc(const desc &adesc, const primitive_attr &attr,
9863  const engine &aengine,
9864  const resampling_forward::primitive_desc &hint_fwd_pd,
9865  bool allow_empty = false)
9866  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9867  hint_fwd_pd.get(), allow_empty) {}
9868 
9876  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9877  dnnl::prop_kind::backward_data) {}
9878 
9881 
9884  };
9885 
9887  resampling_backward() = default;
9888 
9893 };
9894 
9896 
9898 
9904 
9907 
9909 enum class status {
9911  success = dnnl_success,
9913  out_of_memory = dnnl_out_of_memory,
9915  invalid_arguments = dnnl_invalid_arguments,
9917  unimplemented = dnnl_unimplemented,
9919  iterator_ends = dnnl_iterator_ends,
9921  runtime_error = dnnl_runtime_error,
9924 };
9925 
9927 inline status set_verbose(int level) {
9928  return static_cast<status>(dnnl_set_verbose(level));
9929 }
9930 
9932 inline const version_t *version() {
9933  return dnnl_version();
9934 }
9935 
9937 inline status set_jit_dump(int enable) {
9938  return static_cast<status>(dnnl_set_jit_dump(enable));
9939 }
9940 
9942 inline status set_jit_profiling_flags(unsigned flags) {
9943  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
9944 }
9945 
9947 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
9948  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
9949 }
9950 
9952 enum class cpu_isa {
9954  all = dnnl_cpu_isa_all,
9956  sse41 = dnnl_cpu_isa_sse41,
9958  avx = dnnl_cpu_isa_avx,
9960  avx2 = dnnl_cpu_isa_avx2,
9962  avx512_mic = dnnl_cpu_isa_avx512_mic,
9964  avx512_mic_4ops = dnnl_cpu_isa_avx512_mic_4ops,
9966  avx512_core = dnnl_cpu_isa_avx512_core,
9968  avx512_core_vnni = dnnl_cpu_isa_avx512_core_vnni,
9970  avx512_core_bf16 = dnnl_cpu_isa_avx512_core_bf16,
9973 };
9974 
9977  return static_cast<status>(
9978  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
9979 }
9980 
9983  return static_cast<cpu_isa>(dnnl_get_effective_cpu_isa());
9984 }
9985 
9987 
9993 
9997  int result = 0;
9999  "could not get primitive cache capacity");
10000  return result;
10001 }
10002 
10004 inline void set_primitive_cache_capacity(int capacity) {
10006  "could not set primitive cache capacity");
10007 }
10008 
10010 
10017 
10019 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10020  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10021  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
10022  return static_cast<status>(dnnl_sgemm(
10023  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
10024 }
10025 
10027 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10028  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10029  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10030  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10031  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
10032  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10033 }
10034 
10036 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10037  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10038  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10039  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10040  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
10041  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10042 }
10043 
10044 #if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL
10045 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10047  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10048  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc,
10049  dnnl::threadpool_iface *tp) {
10050  return static_cast<status>(dnnl_sgemm_tp(
10051  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, tp));
10052 }
10054 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10055  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10056  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10057  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10058  dnnl::threadpool_iface *tp) {
10059  return static_cast<status>(dnnl_gemm_u8s8s32_tp(transa, transb, offsetc, M,
10060  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10061 }
10062 
10064 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10065  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10066  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10067  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10068  dnnl::threadpool_iface *tp) {
10069  return static_cast<status>(dnnl_gemm_s8s8s32_tp(transa, transb, offsetc, M,
10070  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10071 }
10072 #endif
10073 
10075 
10076 // implementation section
10077 
10080  dnnl_primitive_t result;
10082  "could not create a primitive");
10083  reset(result);
10084 }
10085 
10086 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
10087 
10088 inline void primitive::execute(const stream &astream,
10089  const std::unordered_map<int, memory> &args) const {
10090  std::vector<dnnl_exec_arg_t> c_args;
10091  c_args.reserve(args.size());
10092  for (const auto &a : args)
10093  c_args.push_back({a.first, a.second.get(true)});
10094 
10095  error::wrap_c_api(dnnl_primitive_execute(get(), astream.get(),
10096  (int)c_args.size(), c_args.data()),
10097  "could not execute a primitive");
10098 }
10099 
10101 
10102 #undef DNNL_DEFINE_BITMASK_OPS
10103 
10104 } // namespace dnnl
10105 
10107 
10108 #endif
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6909
dnnl_query_time_estimate_f64
@ dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:2116
dnnl_query_reorder_dst_engine
@ dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:2128
dnnl::memory::set_data_handle
void set_data_handle(void *handle) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2152
dnnl_memory_set_ocl_mem_object
dnnl_status_t DNNL_API dnnl_memory_set_ocl_mem_object(dnnl_memory_t memory, cl_mem mem_object)
Sets OpenCL memory object associated with a memory object.
dnnl::handle::handle
handle(handle< T, traits > &&)=default
Move constructor.
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_backward::primitive_desc::diff_src_layer_desc
memory::desc diff_src_layer_desc() const
Returns diff source layer memory descriptor.
Definition: dnnl.hpp:7658
dnnl::primitive::primitive
primitive(const primitive_desc &pd)
Constructs a primitive from a primitive descriptor.
dnnl::gemm_s8s8s32
status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A, dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo, float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co)
Performs integer matrix-matrix multiply on 8-bit signed matrix A, 8-bit signed matrix B,...
Definition: dnnl.hpp:10036
dnnl_primitive_desc_iterator_next
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_next(dnnl_primitive_desc_iterator_t iterator)
Advances the primitive descriptor iterator to point to the next available implementation.
dnnl::resampling_backward
Resampling backward propagation primitive.
Definition: dnnl.hpp:9782
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4783
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_aBcdef4b
@ dnnl_aBcdef4b
6D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:363
dnnl::binary::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:9494
dnnl_scratchpad_mode_library
@ dnnl_scratchpad_mode_library
The library manages the scratchpad allocation according to the policy specified by the DNNL_ENABLE_CO...
Definition: dnnl_types.h:1822
dnnl::convolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3888
dnnl::primitive_attr::set_rnn_data_qparams
void set_rnn_data_qparams(float scale, float shift)
Sets quantization scale and shift parameters for RNN data tensors.
Definition: dnnl.hpp:2852
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6571
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_backward::desc::desc
desc(prop_kind aprop_kind, algorithm activation, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, rnn_flags flags=rnn_flags::undef, float alpha=0.0f, float beta=0.0f)
Constructs a descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7533
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7705
dnnl_stream_attr_t
struct dnnl_stream_attr * dnnl_stream_attr_t
An execution stream attributes handle.
Definition: dnnl_types.h:2199
dnnl::primitive::kind::softmax
@ softmax
A softmax primitive.
dnnl::engine::engine
engine()=default
Constructs an empty engine.
dnnl_set_jit_profiling_flags
dnnl_status_t DNNL_API dnnl_set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
dnnl::rnn_primitive_desc_base::diff_dst_iter_c_desc
memory::desc diff_dst_iter_c_desc() const
Returns diff destination recurrent cell state memory descriptor.
Definition: dnnl.hpp:7267
dnnl_inner_product_forward_desc_init
dnnl_status_t DNNL_API dnnl_inner_product_forward_desc_init(dnnl_inner_product_desc_t *ip_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc)
Initializes descriptor for inner product forward propagation.
dnnl::rnn_primitive_desc_base::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7147
dnnl_convolution_forward_desc_init
dnnl_status_t DNNL_API dnnl_convolution_forward_desc_init(dnnl_convolution_desc_t *conv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a convolution forward propagation primitive.
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::softmax_backward::softmax_backward
softmax_backward(const primitive_desc &pd)
Constructs a softmax backward propagation primitive.
Definition: dnnl.hpp:5914
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5899
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward()=default
Default constructor. Produces an empty object.
dnnl::gru_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8647
dnnl_s32
@ dnnl_s32
32-bit signed integer.
Definition: dnnl_types.h:72
dnnl::status::success
@ success
The operation was successful.
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a deconvolution forward propagation primitive from a C API prim...
Definition: dnnl.hpp:4593
dnnl_eltwise_round
@ dnnl_eltwise_round
Eltwise: round.
Definition: dnnl_types.h:902
dnnl::lrn_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5142
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9453
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:685
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_eltwise_relu_use_dst_for_bwd
@ dnnl_eltwise_relu_use_dst_for_bwd
Eltwise: ReLU (dst for backward)
Definition: dnnl_types.h:904
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data()=default
Default constructor. Produces an empty object.
dnnl::primitive::execute
void execute(const stream &astream, const std::unordered_map< int, memory > &args) const
Executes computations specified by the primitive in a specified stream.
dnnl::cpu_isa::all
@ all
Any ISA (excepting those listed as initial support)
dnnl::gru_forward::desc
Descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8526
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:2016
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:3221
dnnl_query_pooling_d
@ dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:2140
dnnl::shuffle_backward
Shuffle backward propagation primitive.
Definition: dnnl.hpp:9342
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6741
dnnl::vanilla_rnn_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7642
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive from a C API primitive ...
Definition: dnnl.hpp:8990
dnnl_ABcde2b8a4b
@ dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:303
dnnl::lstm_backward::primitive_desc::diff_dst_iter_c_desc
memory::desc diff_dst_iter_c_desc() const
Returns diff destination recurrent cell state memory descriptor.
Definition: dnnl.hpp:8509
dnnl::shuffle_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::layer_normalization_backward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6711
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7650
dnnl::gru_backward::primitive_desc::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:8873
dnnl::error::what
const char * what() const noexcept override
Returns the explanatory string.
Definition: dnnl.hpp:103
dnnl::gru_backward::primitive_desc::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:8858
dnnl_pooling_backward_desc_init
dnnl_status_t DNNL_API dnnl_pooling_backward_desc_init(dnnl_pooling_desc_t *pool_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t kernel, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for pooling backward propagation primitive.
dnnl::engine::kind::any
@ any
An unspecified engine.
dnnl::post_ops::get_params_dw_k3s2p1
void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type, memory::data_type &bias_data_type, memory::data_type &dst_data_type, int &mask, std::vector< float > &scales) const
Returns the parameters of an depthwise post-op with stride 2.
Definition: dnnl.hpp:2545
dnnl::primitive::get_primitive_desc
const_dnnl_primitive_desc_t get_primitive_desc() const
Returns the C API primitive descriptor of the underlying C API primitive.
Definition: dnnl.hpp:369
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8949
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:4076
dnnl::stream
An execution stream.
Definition: dnnl.hpp:1043
dnnl::memory::desc::desc
desc(const dnnl_memory_desc_t &data)
Constructs a memory descriptor from a C API data structure.
Definition: dnnl.hpp:1870
dnnl::post_ops::get_params_dw_k3s1p1
void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type, memory::data_type &bias_data_type, memory::data_type &dst_data_type, int &mask, std::vector< float > &scales) const
Returns the parameters of an depthwise post-op with stride 1.
Definition: dnnl.hpp:2460
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4566
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution forward propagation primitive without bias.
Definition: dnnl.hpp:4435
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4280
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const softmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5861
dnnl_aBCde2b4c2b
@ dnnl_aBCde2b4c2b
5D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:351
dnnl::inner_product_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc)
Constructs a descriptor for an inner product forward propagation primitive with bias.
Definition: dnnl.hpp:6758
dnnl_query_memory_consumption_s64
@ dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:2117
dnnl_s8
@ dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:74
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:436
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5366
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:2294
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a matmul primitive from a C API primitive descriptor that must ...
Definition: dnnl.hpp:9597
dnnl_dilated_deconvolution_forward_desc_init
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_forward_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated deconvolution forward propagation primitive.
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9466
dnnl_format_tag_t
dnnl_format_tag_t
Memory format tag specification.
Definition: dnnl_types.h:164
dnnl_f16
@ dnnl_f16
16-bit/half-precision floating point.
Definition: dnnl_types.h:66
dnnl_inner_product
@ dnnl_inner_product
An inner product primitive.
Definition: dnnl_types.h:830
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_unimplemented
@ dnnl_unimplemented
The operation failed because requested functionality is not implemented.
Definition: dnnl_types.h:47
dnnl_memory
An opaque structure to describe a memory.
dnnl_decab
@ dnnl_decab
permuted 5D tensor
Definition: dnnl_types.h:210
dnnl::softmax_backward
Softmax backward propagation primitive.
Definition: dnnl.hpp:5818
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_primitive_desc_iterator
An opaque structure to describe a primitive descriptor iterator.
dnnl_batch_normalization
@ dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:826
dnnl::vanilla_rnn_backward
Vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7476
dnnl::rnn_primitive_desc_base::rnn_primitive_desc_base
rnn_primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
Constructs an RNN primitive descriptor base from a C API primitive descriptor while checking that it ...
Definition: dnnl.hpp:7121
dnnl_query_logsoftmax_d
@ dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:2148
dnnl::gemm_u8s8s32
status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A, dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo, float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co)
Performs integer matrix-matrix multiply on 8-bit unsigned matrix A, 8-bit signed matrix B,...
Definition: dnnl.hpp:10027
dnnl::vanilla_rnn_backward::desc
Descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7478
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5241
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9040
DNNL_ARG_DST_ITER_C
#define DNNL_ARG_DST_ITER_C
A special mnemonic for LSTM output recurrent cell state vector.
Definition: dnnl_types.h:1928
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::matmul::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9601
dnnl::lstm_forward::primitive_desc
Primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7911
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:5256
dnnl_abcdefghji
@ dnnl_abcdefghji
permuted 10D tensor
Definition: dnnl_types.h:217
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution forward propagation primitive without bias.
Definition: dnnl.hpp:3814
DNNL_ARG_WEIGHTS_ITER
#define DNNL_ARG_WEIGHTS_ITER
A special mnemonic for RNN weights applied to the recurrent input.
Definition: dnnl_types.h:1946
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const eltwise_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5661
dnnl_lstm_forward_desc_init
dnnl_status_t DNNL_API dnnl_lstm_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, unsigned flags)
Initializes a descriptor for LSTM forward propagation primitive.
dnnl::engine::engine
engine(const handle< dnnl_primitive_desc_t > &pd)
Constructs an engine based on a primitive from the primitive descriptor pd by querying its engine.
Definition: dnnl.hpp:901
dnnl::inner_product_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc)
Constructs a descriptor for an inner product forward propagation primitive without bias.
Definition: dnnl.hpp:6782
dnnl_get_effective_cpu_isa
dnnl_cpu_isa_t DNNL_API dnnl_get_effective_cpu_isa(void)
Gets the maximal ISA the library can dispatch to on the CPU.
dnnl_status_t
dnnl_status_t
Status values returned by the library functions.
Definition: dnnl_types.h:39
dnnl::rnn_primitive_desc_base::diff_src_iter_desc
memory::desc diff_src_iter_desc() const
Returns diff source iteration memory descriptor.
Definition: dnnl.hpp:7207
dnnl_query_reorder_src_engine
@ dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:2127
dnnl::reorder::primitive_desc::get_src_engine
engine get_src_engine() const
Returns the engine on which the source memory is allocated.
Definition: dnnl.hpp:3297
dnnl::memory::memory
memory(const desc &md, const engine &aengine)
Constructs a memory object.
Definition: dnnl.hpp:2083
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8637
DNNL_ARG_WEIGHTS_PROJECTION
#define DNNL_ARG_WEIGHTS_PROJECTION
A special mnemonic for RNN weights applied to the projection weights.
Definition: dnnl_types.h:1958
dnnl::engine
An execution engine.
Definition: dnnl.hpp:840
dnnl::batch_normalization_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a batch normalization descriptor for forward propagation.
Definition: dnnl.hpp:6167
dnnl::sum::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for sum primitive from a C API primitive descriptor which must have...
Definition: dnnl.hpp:3528
dnnl::pooling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5483
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an eltwise backward propagation primitive from a C API primitiv...
Definition: dnnl.hpp:5694
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:6860
dnnl::logsoftmax_backward::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::primitive_attr::get_zero_points
void get_zero_points(int arg, int &mask, std::vector< int32_t > &zero_points) const
Returns zero points correspondence mask and values.
Definition: dnnl.hpp:2751
dnnl_memory_get_ocl_mem_object
dnnl_status_t DNNL_API dnnl_memory_get_ocl_mem_object(const_dnnl_memory_t memory, cl_mem *mem_object)
Returns an OpenCL memory object associated with a memory object.
dnnl_softmax
@ dnnl_softmax
A softmax primitive.
Definition: dnnl_types.h:820
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a deconvolution backward propagation primitive from a C API pri...
Definition: dnnl.hpp:4763
dnnl_normalization_flags_none
@ dnnl_normalization_flags_none
Use no normalization flags.
Definition: dnnl_types.h:965
dnnl::lrn_forward
Local response normalization (LRN) forward propagation primitive.
Definition: dnnl.hpp:5063
dnnl::inner_product_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:7075
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5617
dnnl_post_ops_get_params_dw_k3s2p1
dnnl_status_t DNNL_API dnnl_post_ops_get_params_dw_k3s2p1(const_dnnl_post_ops_t post_ops, int index, dnnl_data_type_t *weights_data_type, dnnl_data_type_t *bias_data_type, dnnl_data_type_t *dst_data_type, dnnl_dim_t *count, int *mask, const float **scales)
Returns the parameters of an depthwise post-op with stride 2.
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a resampling backward propagation primitive from a C API primit...
Definition: dnnl.hpp:9875
dnnl_query_rnn_d
@ dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:2145
DNNL_ARG_TO
#define DNNL_ARG_TO
A special mnemonic for reorder destination argument.
Definition: dnnl_types.h:1914
DNNL_MAX_NDIMS
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:1016
dnnl_scratchpad_mode_user
@ dnnl_scratchpad_mode_user
The user manages the scratchpad allocation by querying and providing the scratchpad memory to primiti...
Definition: dnnl_types.h:1827
dnnl::lstm_backward::primitive_desc::diff_weights_layer_desc
memory::desc diff_weights_layer_desc() const
Returns diff weights layer memory descriptor.
Definition: dnnl.hpp:8474
dnnl::primitive::kind
kind
Kinds of primitives supported by the library.
Definition: dnnl.hpp:278
dnnl::gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8629
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:2286
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:9947
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5427
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8817
dnnl_defcab
@ dnnl_defcab
permuted 6D tensor
Definition: dnnl_types.h:211
dnnl_abcdefghijlk
@ dnnl_abcdefghijlk
permuted 12D tensor
Definition: dnnl_types.h:219
dnnl_abcdefghijk
@ dnnl_abcdefghijk
plain 11D tensor
Definition: dnnl_types.h:187
dnnl_aBcde16b
@ dnnl_aBcde16b
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:305
dnnl::layer_normalization_backward::layer_normalization_backward
layer_normalization_backward(const primitive_desc &pd)
Constructs a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6725
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1804
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7997
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8675
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8963
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc(const memory &src, const memory &dst, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for reorder primitive.
Definition: dnnl.hpp:3272
dnnl_engine
An opaque structure to describe an engine.
dnnl::layer_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6697
dnnl::eltwise_forward::eltwise_forward
eltwise_forward(const primitive_desc &pd)
Constructs an eltwise forward propagation primitive.
Definition: dnnl.hpp:5611
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7461
dnnl_version
const dnnl_version_t DNNL_API * dnnl_version()
Returns library version information.
dnnl::resampling_forward::desc
Descriptor for resampling forward propagation.
Definition: dnnl.hpp:9640
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5705
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1103
dnnl_eltwise_relu
@ dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:863
dnnl_acb
@ dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:194
dnnl_matmul_desc_t
A descriptor of a matrix multiplication operation.
Definition: dnnl_types.h:1699
dnnl::primitive::kind::shuffle
@ shuffle
A shuffle primitive.
dnnl::gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8642
dnnl::concat::concat
concat()=default
Default constructor. Produces an empty object.
dnnl_memory_desc_get_size
size_t DNNL_API dnnl_memory_desc_get_size(const dnnl_memory_desc_t *memory_desc)
Returns the size of a memory descriptor.
dnnl::rnn_primitive_desc_base::diff_weights_peephole_desc
memory::desc diff_weights_peephole_desc() const
Returns diff weights peephole memory descriptor.
Definition: dnnl.hpp:7231
dnnl_eltwise_abs
@ dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:871
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a softmax backward propagation primitive from a C API primitive...
Definition: dnnl.hpp:5894
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4057
dnnl::post_ops::append_sum
void append_sum(float scale=1.f, memory::data_type data_type=memory::data_type::undef)
Appends an accumulation (sum) post-op.
Definition: dnnl.hpp:2336
dnnl::normalization_flags::none
@ none
Use no normalization flags.
dnnl_normalization_flags_t
dnnl_normalization_flags_t
Flags for normalization primitives.
Definition: dnnl_types.h:956
dnnl::lstm_backward::primitive_desc::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:8504
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:9200
dnnl_eltwise_sqrt_use_dst_for_bwd
@ dnnl_eltwise_sqrt_use_dst_for_bwd
Eltwise: square root (dst for backward)
Definition: dnnl_types.h:910
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9733
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:2991
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5615
dnnl::lstm_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_src_iter_c_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_weights_peephole_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, const memory::desc &diff_dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs an LSTM (with or without peephole) descriptor for backward propagation using prop_kind,...
Definition: dnnl.hpp:8212
dnnl_shuffle
@ dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:808
dnnl_query_shuffle_d
@ dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:2137
dnnl::memory::desc::permute_axes
desc permute_axes(const std::vector< int > &permutation, bool allow_empty=false) const
Constructs a memory descriptor by permuting axes in an existing one.
Definition: dnnl.hpp:1986
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:9528
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:9880
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8423
dnnl::rnn_primitive_desc_base::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7159
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:1238
dnnl::convolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4060
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4019
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3882
dnnl::rnn_primitive_desc_base::diff_weights_layer_desc
memory::desc diff_weights_layer_desc() const
Returns diff weights layer memory descriptor.
Definition: dnnl.hpp:7219
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6365
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:802
dnnl::eltwise_forward
Elementwise unary operation forward propagation primitive.
Definition: dnnl.hpp:5522
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5486
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4039
dnnl_memory_desc_permute_axes
dnnl_status_t DNNL_API dnnl_memory_desc_permute_axes(dnnl_memory_desc_t *out_memory_desc, const dnnl_memory_desc_t *in_memory_desc, const int *permutation)
Initializes a memory descriptor by permuting axes in an existing one.
dnnl::deconvolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:5029
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1569
dnnl_pooling_max
@ dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:916
dnnl::primitive::kind::lrn
@ lrn
An LRN primitive.
dnnl_engine_get_kind
dnnl_status_t DNNL_API dnnl_engine_get_kind(dnnl_engine_t engine, dnnl_engine_kind_t *kind)
Returns the kind of an engine.
dnnl_memory_desc_reshape
dnnl_status_t DNNL_API dnnl_memory_desc_reshape(dnnl_memory_desc_t *out_memory_desc, const dnnl_memory_desc_t *in_memory_desc, int ndims, const dnnl_dims_t dims)
Initializes a memory descriptor by reshaping an existing one.
dnnl_stream_flags_t
dnnl_stream_flags_t
Stream flags.
Definition: dnnl_types.h:2176
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:2107
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive from a C API primiti...
Definition: dnnl.hpp:5996
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a resampling forward propagation primitive from a C API primiti...
Definition: dnnl.hpp:9760
dnnl::post_ops::append_dw_k3s2p1
void append_dw_k3s2p1(memory::data_type weights_data_type, memory::data_type bias_data_type, memory::data_type dst_data_type, int mask, const std::vector< float > &scales)
Appends a depthwise post-op convolution with stride 2.
Definition: dnnl.hpp:2519
dnnl_logsoftmax_forward_desc_init
dnnl_status_t DNNL_API dnnl_logsoftmax_forward_desc_init(dnnl_logsoftmax_desc_t *logsoftmax_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int logsoftmax_axis)
Initializes a descriptor for logsoftmax forward propagation primitive.
dnnl_bf16
@ dnnl_bf16
non-standard 16-bit (bfloat16 w/ 7 bit mantissa) floating point.
Definition: dnnl_types.h:68
dnnl::memory::desc::submemory_desc
desc submemory_desc(const dims &adims, const dims &offsets, bool allow_empty=false) const
Constructs a memory descriptor for a region inside an area described by this memory descriptor.
Definition: dnnl.hpp:1883
dnnl::stream_attr::set_threadpool
void set_threadpool(threadpool_iface *threadpool)
Sets the threadpool attribute.
Definition: dnnl.hpp:1023
dnnl::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:631
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1591
dnnl_bcdea
@ dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:205
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1575
dnnl::softmax_forward::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::lstm_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7961
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:9952
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5985
dnnl_sum
@ dnnl_sum
A sum primitive.
Definition: dnnl_types.h:812
dnnl::engine::get_count
static size_t get_count(kind akind)
Returns the number of engines of a certain kind.
Definition: dnnl.hpp:864
dnnl::memory::set_data_handle
void set_data_handle(void *handle, const stream &astream) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2138
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a convolution weights gradient primitive from a C API primitive...
Definition: dnnl.hpp:4312
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:9530
dnnl::inner_product_backward_weights::inner_product_backward_weights
inner_product_backward_weights(const primitive_desc &pd)
Constructs an inner product weights gradient primitive.
Definition: dnnl.hpp:7094
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8658
dnnl::shuffle_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a shuffle forward propagation primitive from a C API primitive ...
Definition: dnnl.hpp:9320
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5094
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a shuffle backward propagation primitive from a C API primitive...
Definition: dnnl.hpp:9395
dnnl_backward_weights
@ dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:795
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc(int idx) const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2973
dnnl_a
@ dnnl_a
plain 1D tensor
Definition: dnnl_types.h:177
dnnl::primitive_desc::next_impl
bool next_impl()
Advances the primitive iterator to the next implementation.
Definition: dnnl.hpp:3598
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:9243
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6531
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1535
dnnl::memory::set_ocl_mem_object
void set_ocl_mem_object(cl_mem mem_object)
Sets the OpenCL memory object mem_object associated with the memory.
Definition: dnnl.hpp:2216
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7992
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:7017
dnnl_post_ops_append_dw_k3s2p1
dnnl_status_t DNNL_API dnnl_post_ops_append_dw_k3s2p1(dnnl_post_ops_t post_ops, dnnl_data_type_t weights_data_type, dnnl_data_type_t bias_data_type, dnnl_data_type_t dst_data_type, dnnl_dim_t count, int mask, const float *scales)
Appends a depthwise post-op convolution with stride 2.
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a layer normalization forward propagation primitive from a C AP...
Definition: dnnl.hpp:6521
dnnl_gpu
@ dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1757
dnnl::primitive::primitive
primitive()=default
Default constructor. Constructs an empty object.
dnnl_memory_unmap_data
dnnl_status_t DNNL_API dnnl_memory_unmap_data(const_dnnl_memory_t memory, void *mapped_ptr)
Unmaps a memory object and writes back any changes made to the previously mapped memory buffer.
dnnl::pooling_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5369
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5928
dnnl::gru_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8722
dnnl::lstm_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &weights_projection_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_src_iter_c_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_weights_peephole_desc, const memory::desc &diff_weights_projection_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, const memory::desc &diff_dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs an LSTM (with or without peephole and with or without projection) descriptor for backward ...
Definition: dnnl.hpp:8100
dnnl_layer_normalization_backward_desc_init
dnnl_status_t DNNL_API dnnl_layer_normalization_backward_desc_init(dnnl_layer_normalization_desc_t *lnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, const dnnl_memory_desc_t *stat_desc, float epsilon, unsigned flags)
Initializes a descriptor for a layer normalization backward propagation primitive.
dnnl::gru_backward::primitive_desc::diff_src_layer_desc
memory::desc diff_src_layer_desc() const
Returns diff source layer memory descriptor.
Definition: dnnl.hpp:8843
dnnl::sum::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3535
dnnl::resampling_backward::desc::desc
desc(algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for resampling backward propagation primitive.
Definition: dnnl.hpp:9812
dnnl::rnn_primitive_desc_base::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7247
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &src_desc, const memory::desc &dst_desc)
Constructs a descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9705
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5524
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:2002
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a vanilla RNN backward propagation primitive from a C API primi...
Definition: dnnl.hpp:7619
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:8020
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6432
dnnl::deconvolution_backward_weights::deconvolution_backward_weights
deconvolution_backward_weights()=default
Default constructor. Produces an empty object.
dnnl::eltwise_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5602
dnnl_query_diff_weights_md
@ dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:2157
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const resampling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9842
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:8669
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a layer normalization backward propagation primitive from a C A...
Definition: dnnl.hpp:6681
dnnl_query_prop_kind
@ dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:2130
dnnl_abced
@ dnnl_abced
permuted 5D tensor
Definition: dnnl_types.h:212
dnnl_eltwise_logistic
@ dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:881
dnnl::lbr_gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:9009
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8418
dnnl::pooling_forward::pooling_forward
pooling_forward(const primitive_desc &pd)
Constructs a pooling forward propagation primitive.
Definition: dnnl.hpp:5378
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:818
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:8524
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:845
dnnl_aBc16b
@ dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:228
dnnl::lbr_gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:9233
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6377
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7440
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a GRU forward propagation primitive from a C API primitive desc...
Definition: dnnl.hpp:8623
dnnl::lstm_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &weights_projection_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for an LSTM (with or without peephole and with or without projection) forward...
Definition: dnnl.hpp:7756
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8405
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6245
dnnl::inner_product_backward_data::inner_product_backward_data
inner_product_backward_data(const primitive_desc &pd)
Constructs an inner product backward propagation primitive.
Definition: dnnl.hpp:6962
dnnl_convolution_auto
@ dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:857
dnnl::binary::binary
binary(const primitive_desc &pd)
Constructs an elementwise binary operation primitive.
Definition: dnnl.hpp:9512
dnnl_cdba
@ dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:207
dnnl_eltwise_sqrt
@ dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:873
dnnl_cpu_isa_avx512_core
@ dnnl_cpu_isa_avx512_core
Intel AVX-512 subset for Intel Xeon Scalable processor family and Intel Core processor family.
Definition: dnnl_types.h:2281
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8996
dnnl::lstm_backward::lstm_backward
lstm_backward()=default
Default constructor. Produces an empty object.
dnnl::handle::operator==
bool operator==(const handle< T, traits > &other) const
Equality operator.
Definition: dnnl.hpp:217
dnnl::stream::stream
stream()=default
Constructs an empty stream.
dnnl_eltwise_bounded_relu
@ dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:877
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward(const primitive_desc &pd)
Constructs an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9254
dnnl::memory::validate_dims
static void validate_dims(const std::vector< T > &v, int min_size=0)
Helper function that validates that an std::vector of dimensions can be safely converted to the C API...
Definition: dnnl.hpp:1198
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution forward propagation primitive without bias.
Definition: dnnl.hpp:3716
dnnl::binary::desc::desc
desc(algorithm aalgorithm, const memory::desc &src0, const memory::desc &src1, const memory::desc &dst)
Constructs a descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9442
dnnl::set_max_cpu_isa
status set_max_cpu_isa(cpu_isa isa)
Sets the maximal ISA the library can dispatch to on the CPU.
Definition: dnnl.hpp:9976
dnnl_rnn_desc_t::primitive_kind
dnnl_primitive_kind_t primitive_kind
The kind of primitive.
Definition: dnnl_types.h:1594
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6107
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6210
dnnl::softmax_backward::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::lstm_backward::primitive_desc
Primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8352
dnnl::primitive::kind::pooling
@ pooling
A pooling primitive.
dnnl::inner_product_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6953
dnnl_lstm_backward_desc_init
dnnl_status_t DNNL_API dnnl_lstm_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_src_iter_c_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, const dnnl_memory_desc_t *diff_dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM backward propagation primitive.
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive_desc_base::get_primitive_attr
primitive_attr get_primitive_attr() const
Returns the primitive attributes.
Definition: dnnl.hpp:3083
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8827
dnnl::logsoftmax_forward::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for concat primitive from a C API primitive descriptor which must h...
Definition: dnnl.hpp:3431
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5107
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const lbr_gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9141
dnnl_forward_inference
@ dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:785
dnnl::deconvolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4650
dnnl_query_impl_info_str
@ dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:2125
dnnl_query_dst_md
@ dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:2158
dnnl_query_resampling_d
@ dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:2150
dnnl::rnn_primitive_desc_base::diff_src_layer_desc
memory::desc diff_src_layer_desc() const
Returns diff source layer memory descriptor.
Definition: dnnl.hpp:7199
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:2615
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:402
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5480
dnnl_query_inner_product_d
@ dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:2144
dnnl::vanilla_rnn_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7437
DNNL_ARG_DIFF_WEIGHTS_LAYER
#define DNNL_ARG_DIFF_WEIGHTS_LAYER
A special mnemonic for diff of RNN weights applied to the layer input.
Definition: dnnl_types.h:2026
dnnl_rnn_flags_undef
@ dnnl_rnn_flags_undef
Undefined RNN flags.
Definition: dnnl_types.h:1571
dnnl_nCdhw16c
@ dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:546
dnnl_query_convolution_d
@ dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:2135
dnnl::gru_backward::primitive_desc::diff_dst_layer_desc
memory::desc diff_dst_layer_desc() const
Returns diff destination layer memory descriptor.
Definition: dnnl.hpp:8868
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9719
dnnl::gru_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8561
dnnl_cpu_isa_avx512_core_amx
@ dnnl_cpu_isa_avx512_core_amx
Intel AVX-512, Intel DL Boost and bfloat16 support and Intel AMX with 8-bit integer and bfloat16 supp...
Definition: dnnl_types.h:2296
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6241
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5139
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive_desc_base::scratchpad_engine
engine scratchpad_engine() const
Returns the engine on which the scratchpad memory is located.
Definition: dnnl.hpp:3071
DNNL_ARG_DIFF_WEIGHTS_PEEPHOLE
#define DNNL_ARG_DIFF_WEIGHTS_PEEPHOLE
A special mnemonic for diff of RNN weights applied to the peephole weights.
Definition: dnnl_types.h:2038
dnnl_aBCdef2c8b4c
@ dnnl_aBCdef2c8b4c
6D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:358
dnnl_lstm_backward_desc_init_v2
dnnl_status_t DNNL_API dnnl_lstm_backward_desc_init_v2(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_src_iter_c_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_weights_peephole_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, const dnnl_memory_desc_t *diff_dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole) backward propagation primitive.
dnnl::lstm_backward::primitive_desc::diff_weights_projection_desc
memory::desc diff_weights_projection_desc() const
Returns diff weights projection memory descriptor.
Definition: dnnl.hpp:8489
dnnl::sum::sum
sum()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_backward::primitive_desc::diff_src_iter_desc
memory::desc diff_src_iter_desc() const
Returns diff source iteration memory descriptor.
Definition: dnnl.hpp:7663
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7653
dnnl::lrn_forward::lrn_forward
lrn_forward(const primitive_desc &pd)
Constructs an LRN forward propagation primitive.
Definition: dnnl.hpp:5154
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_bcda
@ dnnl_bcda
permuted 4D tensor
Definition: dnnl_types.h:204
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const batch_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6345
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7450
dnnl_stream_create_v2
dnnl_status_t DNNL_API dnnl_stream_create_v2(dnnl_stream_t *stream, dnnl_engine_t engine, unsigned flags, const_dnnl_stream_attr_t attr)
Creates an execution stream.
dnnl::sum::primitive_desc
Primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3462
dnnl::lstm_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7885
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward()=default
Default constructor. Produces an empty object.
dnnl_eltwise_gelu_tanh
@ dnnl_eltwise_gelu_tanh
Eltwise: gelu.
Definition: dnnl_types.h:888
dnnl_engine_create_ocl
dnnl_status_t DNNL_API dnnl_engine_create_ocl(dnnl_engine_t *engine, dnnl_engine_kind_t kind, cl_device_id device, cl_context context)
Creates an engine associated with an OpenCL device and an OpenCL context.
dnnl_bidirectional_concat
@ dnnl_bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1582
dnnl::reorder::reorder
reorder(const memory &src, const memory &dst, const primitive_attr &attr=primitive_attr())
Constructs a reorder primitive that would reorder data between memory objects having the same memory ...
Definition: dnnl.hpp:3328
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3026
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1396
dnnl::layer_normalization_forward
Layer normalization forward propagation primitive.
Definition: dnnl.hpp:6430
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4317
dnnl::deconvolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5026
dnnl::primitive_desc_base::primitive_desc_base
primitive_desc_base()=default
Default constructor. Produces an empty object.
dnnl::primitive_attr::set_zero_points
void set_zero_points(int arg, int mask, const std::vector< int32_t > &zero_points)
Sets zero points for primitive operations for a given memory argument.
Definition: dnnl.hpp:2786
dnnl::primitive::kind::rnn
@ rnn
An RNN primitive.
DNNL_ARG_DIFF_DST_ITER_C
#define DNNL_ARG_DIFF_DST_ITER_C
A special mnemonic for gradient (diff) of RNN input recurrent cell state vector.
Definition: dnnl_types.h:2014
dnnl::stream_attr
A container for stream attributes.
Definition: dnnl.hpp:998
dnnl::layer_normalization_backward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization backward propagation primitive.
Definition: dnnl.hpp:6617
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc(const engine &src_engine, const memory::desc &src_md, const engine &dst_engine, const memory::desc &dst_md, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for reorder primitive.
Definition: dnnl.hpp:3246
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:912
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7645
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3865
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution forward propagation primitive with bias.
Definition: dnnl.hpp:3765
dnnl_aBcd32b
@ dnnl_aBcd32b
4D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:260
dnnl_data_type_t
dnnl_data_type_t
Data type specification.
Definition: dnnl_types.h:62
dnnl_ba
@ dnnl_ba
permuted 2D tensor
Definition: dnnl_types.h:199
dnnl::inner_product_backward_weights::desc::desc
desc(const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for an inner product descriptor weights update primitive with bias.
Definition: dnnl.hpp:6982
dnnl_lrn_within_channel
@ dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:926
dnnl_memory_destroy
dnnl_status_t DNNL_API dnnl_memory_destroy(dnnl_memory_t memory)
Destroys a memory object.
dnnl::resampling_backward::primitive_desc
Primitive descriptor for resampling backward propagation primitive.
Definition: dnnl.hpp:9825
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3050
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:2814
dnnl_primitive_attr_create
dnnl_status_t DNNL_API dnnl_primitive_attr_create(dnnl_primitive_attr_t *attr)
Creates an empty (default) primitive attributes with all the parameters set to their default values.
dnnl::eltwise_backward::eltwise_backward
eltwise_backward()=default
Default constructor. Produces an empty object.
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a GRU backward propagation primitive from a C API primitive des...
Definition: dnnl.hpp:8804
dnnl_lstm_backward_desc_init_v3
dnnl_status_t DNNL_API dnnl_lstm_backward_desc_init_v3(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *weights_projection_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_src_iter_c_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_weights_peephole_desc, const dnnl_memory_desc_t *diff_weights_projection_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, const dnnl_memory_desc_t *diff_dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole and with or with out recurrent project...
dnnl_binary_mul
@ dnnl_binary_mul
Binary mul.
Definition: dnnl_types.h:944
dnnl::post_ops::append_dw_k3s1p1
void append_dw_k3s1p1(memory::data_type weights_data_type, memory::data_type bias_data_type, memory::data_type dst_data_type, int mask, const std::vector< float > &scales)
Appends a depthwise post-op convolution with stride 1.
Definition: dnnl.hpp:2434
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5552
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:3095
dnnl::rnn_direction::unidirectional_left2right
@ unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
dnnl_primitive_attr_get_zero_points
dnnl_status_t DNNL_API dnnl_primitive_attr_get_zero_points(const_dnnl_primitive_attr_t attr, int arg, dnnl_dim_t *count, int *mask, const int32_t **zero_points)
Returns count, correspondence zero point mask, and a pointer to a constant int32_t array of zero_poin...
dnnl_format_tag_undef
@ dnnl_format_tag_undef
Undefined memory format tag.
Definition: dnnl_types.h:166
dnnl_binary_min
@ dnnl_binary_min
Binary min.
Definition: dnnl_types.h:948
dnnl_post_ops_get_params_sum_v2
dnnl_status_t DNNL_API dnnl_post_ops_get_params_sum_v2(const_dnnl_post_ops_t post_ops, int index, float *scale, dnnl_data_type_t *data_type)
Returns the parameters of an accumulation (sum) post-op with a data type parameter.
dnnl::primitive::kind::resampling
@ resampling
A resampling primitive.
dnnl_primitive_attr_set_output_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_set_output_scales(dnnl_primitive_attr_t attr, dnnl_dim_t count, int mask, const float *scales)
Sets output scaling factors correspondence mask and values.
dnnl_primitive_desc_iterator_create
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_create(dnnl_primitive_desc_iterator_t *iterator, const_dnnl_op_desc_t op_desc, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine, const_dnnl_primitive_desc_t hint_forward_primitive_desc)
Creates a primitive descriptor iterator.
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &src_desc)
Constructs a descriptor for a resampling forward propagation primitive using source memory descriptor...
Definition: dnnl.hpp:9678
dnnl::shuffle_forward::shuffle_forward
shuffle_forward()=default
Default constructor. Produces an empty object.
dnnl_softmax_forward_desc_init
dnnl_status_t DNNL_API dnnl_softmax_forward_desc_init(dnnl_softmax_desc_t *softmax_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int softmax_axis)
Initializes a descriptor for softmax forward propagation primitive.
dnnl_primitive_desc_clone
dnnl_status_t DNNL_API dnnl_primitive_desc_clone(dnnl_primitive_desc_t *primitive_desc, const_dnnl_primitive_desc_t existing_primitive_desc)
Clones a primitive descriptor.
dnnl_format_kind_rnn_packed
@ dnnl_format_kind_rnn_packed
Packed weights format used in RNN.
Definition: dnnl_types.h:93
dnnl_use_scaleshift
@ dnnl_use_scaleshift
Use scale and shift parameters.
Definition: dnnl_types.h:991
dnnl_eltwise_log
@ dnnl_eltwise_log
Eltwise: natural logarithm.
Definition: dnnl_types.h:894
dnnl::lbr_gru_backward::primitive_desc
Primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9124
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5065
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5755
dnnl_query_layer_normalization_d
@ dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:2143
dnnl::vanilla_rnn_forward::desc::desc
desc(prop_kind aprop_kind, algorithm activation, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, rnn_flags flags=rnn_flags::undef, float alpha=0.0f, float beta=0.0f)
Constructs a descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7360
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5244
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an LRN forward propagation primitive from a C API primitive des...
Definition: dnnl.hpp:5133
dnnl::deconvolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution backward propagation primitive.
Definition: dnnl.hpp:4692
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6825
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3311
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::get_primitive_cache_capacity
int get_primitive_cache_capacity()
Returns the number of primitives that can be held in the primitive cache at the same time.
Definition: dnnl.hpp:9996
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3308
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:2282
dnnl_ABcd8b8a
@ dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:287
dnnl::engine::get_ocl_device
cl_device_id get_ocl_device() const
Returns the OpenCL device associated with the engine.
Definition: dnnl.hpp:931
dnnl_resampling_linear
@ dnnl_resampling_linear
Linear Resampling Method.
Definition: dnnl_types.h:952
dnnl::inner_product_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6947
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3032
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8863
dnnl::lstm_forward::lstm_forward
lstm_forward()=default
Default constructor. Produces an empty object.
dnnl::primitive_desc_base::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:3056
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6480
dnnl_forward_training
@ dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:781
dnnl::query
query
Primitive descriptor query specification.
Definition: dnnl.hpp:718
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8655
dnnl_primitive_desc_query
dnnl_status_t DNNL_API dnnl_primitive_desc_query(const_dnnl_primitive_desc_t primitive_desc, dnnl_query_t what, int index, void *result)
Queries a primitive descriptor for various pieces of information.
dnnl_bac
@ dnnl_bac
permuted 3D tensor
Definition: dnnl_types.h:200
dnnl_eltwise_square
@ dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:869
dnnl_fuse_norm_relu
@ dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:1004
dnnl_bacde
@ dnnl_bacde
permuted 5D tensor
Definition: dnnl_types.h:202
DNNL_ARG_DIFF_WEIGHTS_ITER
#define DNNL_ARG_DIFF_WEIGHTS_ITER
A special mnemonic for diff of RNN weights applied to the recurrent input.
Definition: dnnl_types.h:2032
dnnl_primitive_execute
dnnl_status_t DNNL_API dnnl_primitive_execute(const_dnnl_primitive_t primitive, dnnl_stream_t stream, int nargs, const dnnl_exec_arg_t *args)
Executes a primitive.
dnnl_cpu_isa_avx512_mic_4ops
@ dnnl_cpu_isa_avx512_mic_4ops
Intel AVX-512 subset for Intel Xeon Phi processors 7235, 7285, 7295 Series.
Definition: dnnl_types.h:2277
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:9004
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6122
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:4787
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9022
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6842
dnnl::softmax_backward::desc::desc
desc(const memory::desc &diff_data_desc, const memory::desc &data_desc, int softmax_axis)
Constructs a descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5833
dnnl_stream_destroy
dnnl_status_t DNNL_API dnnl_stream_destroy(dnnl_stream_t stream)
Destroys an execution stream.
DNNL_ARG_DIFF_BIAS
#define DNNL_ARG_DIFF_BIAS
Gradient (diff) of the bias tensor argument.
Definition: dnnl_types.h:2047
dnnl_primitive_attr_destroy
dnnl_status_t DNNL_API dnnl_primitive_attr_destroy(dnnl_primitive_attr_t attr)
Destroys primitive attributes.
dnnl_post_ops_append_sum
dnnl_status_t DNNL_API dnnl_post_ops_append_sum(dnnl_post_ops_t post_ops, float scale)
Appends an accumulation (sum) to post-ops.
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8368
DNNL_ARG_WEIGHTS_PEEPHOLE
#define DNNL_ARG_WEIGHTS_PEEPHOLE
A special mnemonic for RNN weights applied to the peephole weights.
Definition: dnnl_types.h:1952
dnnl::rnn_primitive_desc_base::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7135
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:3367
dnnl_gru_forward_desc_init
dnnl_status_t DNNL_API dnnl_gru_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, unsigned flags)
Initializes a descriptor for GRU forward propagation primitive.
dnnl_gemm_s8s8s32
dnnl_status_t DNNL_API dnnl_gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A, dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo, float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co)
Performs integer matrix-matrix multiply on 8-bit signed matrix A, 8-bit signed matrix B,...
dnnl_format_kind_wino
@ dnnl_format_kind_wino
Weights format used in 8bit Winograd convolution.
Definition: dnnl_types.h:91
dnnl::logsoftmax_backward::desc
Descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6024
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:855
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3635
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6110
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6279
dnnl_ABcde4b16a4b
@ dnnl_ABcde4b16a4b
5D tensor blocked by 1st dimension with block size 16
Definition: dnnl_types.h:301
dnnl_nChw8c
@ dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:564
dnnl::batch_normalization_forward
Batch normalization forward propagation primitive.
Definition: dnnl.hpp:6148
dnnl_memory_desc_init_submemory
dnnl_status_t DNNL_API dnnl_memory_desc_init_submemory(dnnl_memory_desc_t *memory_desc, const dnnl_memory_desc_t *parent_memory_desc, const dnnl_dims_t dims, const dnnl_dims_t offsets)
Initializes a memory descriptor for a region inside an area described by an existing memory descripto...
dnnl_engine_kind_t
dnnl_engine_kind_t
Kinds of engines.
Definition: dnnl_types.h:1751
dnnl_binary
@ dnnl_binary
A binary primitive.
Definition: dnnl_types.h:836
dnnl_cdeba
@ dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:209
dnnl::vanilla_rnn_backward::primitive_desc::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:7673
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6708
dnnl_eltwise_tanh
@ dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:865
dnnl::error::error
error(dnnl_status_t status, const char *message)
Constructs an instance of an exception class.
Definition: dnnl.hpp:99
dnnl::gru_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8830
dnnl_aBc4b
@ dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:234
dnnl::pooling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5363
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_stream_attr_create
dnnl_status_t DNNL_API dnnl_stream_attr_create(dnnl_stream_attr_t *attr, dnnl_engine_kind_t kind)
Creates execution stream attributes for a stream that runs on an engine of a particular kind.
dnnl_abcde
@ dnnl_abcde
plain 5D tensor
Definition: dnnl_types.h:181
dnnl_nCw8c
@ dnnl_nCw8c
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:576
dnnl::layer_normalization_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization forward propagation primitive.
Definition: dnnl.hpp:6467
dnnl_post_ops_append_eltwise
dnnl_status_t DNNL_API dnnl_post_ops_append_eltwise(dnnl_post_ops_t post_ops, float scale, dnnl_alg_kind_t alg_kind, float alpha, float beta)
Appends an elementwise post-op.
dnnl::inner_product_backward_weights::desc
Descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:6968
dnnl_memory_desc_t::dims
dnnl_dims_t dims
Dimensions in the following order:
Definition: dnnl_types.h:1171
dnnl_stream_default_order
@ dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:2179
dnnl_primitive_attr_get_scratchpad_mode
dnnl_status_t DNNL_API dnnl_primitive_attr_get_scratchpad_mode(const_dnnl_primitive_attr_t attr, dnnl_scratchpad_mode_t *mode)
Returns the primitive attributes scratchpad mode.
dnnl_concat_primitive_desc_create
dnnl_status_t DNNL_API dnnl_concat_primitive_desc_create(dnnl_primitive_desc_t *concat_primitive_desc, const dnnl_memory_desc_t *dst_desc, int n, int concat_dimension, const dnnl_memory_desc_t *src_descs, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine)
Creates a primitive descriptor for an out-of-place concatenation primitive.
dnnl_post_ops_destroy
dnnl_status_t DNNL_API dnnl_post_ops_destroy(dnnl_post_ops_t post_ops)
Destroys post-ops.
dnnl_eltwise_backward_desc_init
dnnl_status_t DNNL_API dnnl_eltwise_backward_desc_init(dnnl_eltwise_desc_t *eltwise_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, float alpha, float beta)
Initializes a descriptor for eltwise backward propagation primitive.
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::softmax_forward
Softmax forward propagation primitive.
Definition: dnnl.hpp:5728
dnnl_pooling
@ dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:822
dnnl::batch_normalization_backward
Batch normalization backward propagation primitive.
Definition: dnnl.hpp:6277
dnnl_acdb
@ dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:197
dnnl_query_lrn_d
@ dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:2141
dnnl_convolution_backward_data_desc_init
dnnl_status_t DNNL_API dnnl_convolution_backward_data_desc_init(dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a convolution backward propagation primitive.
dnnl_backward
@ dnnl_backward
Backward propagation (with respect to all parameters).
Definition: dnnl_types.h:791
dnnl::batch_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6228
dnnl::inner_product_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6950
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1366
dnnl::algorithm::undef
@ undef
Undefined algorithm.
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6510
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lbr_gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9161
dnnl_cpu_isa_avx512_core_bf16
@ dnnl_cpu_isa_avx512_core_bf16
Intel AVX-512, Intel DL Boost and bfloat16 support for Intel Xeon Scalable processor family and Intel...
Definition: dnnl_types.h:2291
dnnl::pooling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &kernel, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for pooling forward propagation primitive.
Definition: dnnl.hpp:5299
dnnl_memory_get_data_handle
dnnl_status_t DNNL_API dnnl_memory_get_data_handle(const_dnnl_memory_t memory, void **handle)
Returns memory object's data handle.
dnnl::vanilla_rnn_forward::vanilla_rnn_forward
vanilla_rnn_forward(const primitive_desc &pd)
Constructs a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7472
dnnl_iterator_ends
@ dnnl_iterator_ends
Primitive iterator passed over last primitive descriptor.
Definition: dnnl_types.h:49
dnnl::stream::flags::default_order
@ default_order
Default order execution.
dnnl_abcdefghi
@ dnnl_abcdefghi
plain 9D tensor
Definition: dnnl_types.h:185
dnnl::pooling_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &kernel, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for pooling backward propagation primitive.
Definition: dnnl.hpp:5408
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1204
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8791
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4730
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an LRN backward propagation primitive from a C API primitive de...
Definition: dnnl.hpp:5236
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lrn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5223
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8890
dnnl_primitive_attr_set_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_set_scales(dnnl_primitive_attr_t attr, int arg, dnnl_dim_t count, int mask, const float *scales)
Sets primitive attributes scaling factors for primitive operations for a given memory argument.
dnnl::engine::get_ocl_context
cl_context get_ocl_context() const
Returns the OpenCL context associated with the engine.
Definition: dnnl.hpp:922
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7399
dnnl_sgemm
dnnl_status_t DNNL_API dnnl_sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda, const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc)
Performs single-precision matrix-matrix multiply.
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8387
dnnl::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4264
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6371
dnnl::lstm_forward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7979
dnnl::lbr_gru_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9090
dnnl_stream_wait
dnnl_status_t DNNL_API dnnl_stream_wait(dnnl_stream_t stream)
Waits for all primitives in the execution stream to finish computations.
dnnl_memory_set_data_handle_v2
dnnl_status_t DNNL_API dnnl_memory_set_data_handle_v2(dnnl_memory_t memory, void *handle, dnnl_stream_t stream)
Sets the underlying memory buffer.
dnnl::rnn_primitive_desc_base::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:7225
dnnl_primitive_desc
An opaque structure to describe a primitive descriptor.
dnnl::logsoftmax_backward::desc::desc
desc(const memory::desc &diff_data_desc, const memory::desc &data_desc, int logsoftmax_axis)
Constructs a descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6037
dnnl_abcdefghijkl
@ dnnl_abcdefghijkl
plain 12D tensor
Definition: dnnl_types.h:188
DNNL_ARG_SRC_ITER_C
#define DNNL_ARG_SRC_ITER_C
A special mnemonic for RNN input recurrent cell state vector.
Definition: dnnl_types.h:1905
dnnl::pooling_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5318
dnnl_sum_primitive_desc_create
dnnl_status_t DNNL_API dnnl_sum_primitive_desc_create(dnnl_primitive_desc_t *sum_primitive_desc, const dnnl_memory_desc_t *dst_desc, int n, const float *scales, const dnnl_memory_desc_t *src_descs, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine)
Creates a primitive descriptor for an (out-of-place) sum primitive.
dnnl::engine::query
static engine query(const primitive_desc &pd)
Returns the engine of a primitive descriptor.
Definition: dnnl.hpp:945
dnnl_nCdhw8c
@ dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:552
dnnl_pooling_avg
@ dnnl_pooling_avg
Average pooling (alias for dnnl_pooling_avg_exclude_padding)
Definition: dnnl_types.h:922
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a softmax forward propagation primitive from a C API primitive ...
Definition: dnnl.hpp:5796
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const layer_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6668
dnnl_vanilla_rnn
@ dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:928
DNNL_ARG_DIFF_SRC_ITER
#define DNNL_ARG_DIFF_SRC_ITER
A special mnemonic for gradient (diff) of RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1987
dnnl_primitive_desc_get_attr
dnnl_status_t DNNL_API dnnl_primitive_desc_get_attr(const_dnnl_primitive_desc_t primitive_desc, const_dnnl_primitive_attr_t *attr)
Returns a constant reference to the attributes of a primitive descriptor.
dnnl_unidirectional
@ dnnl_unidirectional
Alias for dnnl_unidirectional_left2right.
Definition: dnnl_types.h:1587
dnnl::primitive::kind::inner_product
@ inner_product
An inner product primitive.
DNNL_ARG_DIFF_DST_ITER
#define DNNL_ARG_DIFF_DST_ITER
A special mnemonic for gradient (diff) of RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2008
dnnl_gru_backward_desc_init
dnnl_status_t DNNL_API dnnl_gru_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, unsigned flags)
Initializes a descriptor for GRU backward propagation primitive.
dnnl::lstm_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8005
dnnl_abdc
@ dnnl_abdc
permuted 4D tensor
Definition: dnnl_types.h:192
dnnl_eltwise_pow
@ dnnl_eltwise_pow
Eltwise: pow.
Definition: dnnl_types.h:898
dnnl::set_primitive_cache_capacity
void set_primitive_cache_capacity(int capacity)
Sets a number of primitives that can be held in the primitive cache at a time.
Definition: dnnl.hpp:10004
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8000
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4552
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9588
dnnl::lstm_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8454
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6700
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9638
dnnl::resampling_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for a resampling backward propagation primitive using source and destination ...
Definition: dnnl.hpp:9795
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2087
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9329
dnnl::rnn_primitive_desc_base::diff_dst_layer_desc
memory::desc diff_dst_layer_desc() const
Returns diff destination layer memory descriptor.
Definition: dnnl.hpp:7253
dnnl_aBcd4b
@ dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:262
dnnl::convert_to_c
dnnl_engine_kind_t convert_to_c(engine::kind akind)
Converts engine kind enum value from C++ API to C API type.
Definition: dnnl.hpp:968
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:6966
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6540
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:9892
dnnl::primitive::kind::layer_normalization
@ layer_normalization
A layer normalization primitive.
dnnl_lstm_forward_desc_init_v2
dnnl_status_t DNNL_API dnnl_lstm_forward_desc_init_v2(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole) forward propagation primitive.
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::rnn_primitive_desc_base::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source recurrent cell state memory descriptor.
Definition: dnnl.hpp:7141
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1278
dnnl_query_matmul_d
@ dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:2149
dnnl::memory::unmap_data
void unmap_data(void *mapped_ptr) const
Unmaps a memory object and writes back any changes made to the previously mapped memory buffer.
Definition: dnnl.hpp:2195
DNNL_ARG_DIFF_DST_LAYER
#define DNNL_ARG_DIFF_DST_LAYER
A special mnemonic for gradient (diff) of RNN output vector.
Definition: dnnl_types.h:2002
dnnl::gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8634
DNNL_ARG_SRC_LAYER
#define DNNL_ARG_SRC_LAYER
A special mnemonic for RNN input vector.
Definition: dnnl_types.h:1890
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:1794
dnnl::stream_attr::stream_attr
stream_attr(engine::kind akind)
Constructs stream attributes for a stream that runs on an engine of a particular kind.
Definition: dnnl.hpp:1008
dnnl_query_binary_d
@ dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:2147
dnnl_lbr_gru
@ dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:940
dnnl_lbr_gru_backward_desc_init
dnnl_status_t DNNL_API dnnl_lbr_gru_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, unsigned flags)
Initializes a descriptor for LBR GRU backward propagation primitive.
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_forward
@ dnnl_forward
Forward data propagation (alias for dnnl_forward_training).
Definition: dnnl_types.h:789
dnnl::resampling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9769
dnnl_f32
@ dnnl_f32
32-bit/single-precision floating point.
Definition: dnnl_types.h:70
dnnl_acbdef
@ dnnl_acbdef
permuted 6D tensor
Definition: dnnl_types.h:196
dnnl::lrn_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &data_desc, memory::dim local_size, float alpha, float beta, float k=1.f)
Constructs a descriptor for a LRN forward propagation primitive.
Definition: dnnl.hpp:5081
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4299
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:588
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:6864
dnnl_use_global_stats
@ dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:978
dnnl::query::undef
@ undef
no query
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution forward propagation primitive with bias.
Definition: dnnl.hpp:3670
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9622
dnnl_lrn_across_channels
@ dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:924
dnnl::batch_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6385
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a batch normalization forward propagation primitive from a C AP...
Definition: dnnl.hpp:6221
dnnl_concat
@ dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:810
dnnl::inner_product_forward
Inner product forward propagation primitive.
Definition: dnnl.hpp:6739
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4771
dnnl_query_diff_dst_md
@ dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:2159
dnnl_format_kind_undef
@ dnnl_format_kind_undef
Undefined memory format kind, used for empty memory descriptors.
Definition: dnnl_types.h:82
dnnl::logsoftmax_backward
Logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6022
dnnl_aBcdef16b
@ dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:353
dnnl_layer_normalization
@ dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:828
dnnl::gru_backward::primitive_desc
Primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8756
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4599
dnnl_set_max_cpu_isa
dnnl_status_t DNNL_API dnnl_set_max_cpu_isa(dnnl_cpu_isa_t isa)
Sets the maximal ISA the library can dispatch to on the CPU.
dnnl::lbr_gru_backward::primitive_desc::diff_dst_layer_desc
memory::desc diff_dst_layer_desc() const
Returns diff destination layer memory descriptor.
Definition: dnnl.hpp:9238
dnnl_memory_desc_t::data_type
dnnl_data_type_t data_type
Data type of the tensor elements.
Definition: dnnl_types.h:1174
dnnl_convolution_backward_weights_desc_init
dnnl_status_t DNNL_API dnnl_convolution_backward_weights_desc_init(dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a convolution weights gradient primitive.
dnnl::inner_product_backward_weights::desc::desc
desc(const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for an inner product descriptor weights update primitive without bias.
Definition: dnnl.hpp:7004
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const pooling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5443
dnnl::vanilla_rnn_backward::primitive_desc::diff_weights_layer_desc
memory::desc diff_weights_layer_desc() const
Returns diff weights layer memory descriptor.
Definition: dnnl.hpp:7668
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a LBR GRU backward propagation primitive from a C API primitive...
Definition: dnnl.hpp:9174
DNNL_ARG_BIAS
#define DNNL_ARG_BIAS
Bias tensor argument.
Definition: dnnl_types.h:1961
dnnl_abcdefgh
@ dnnl_abcdefgh
plain 8D tensor
Definition: dnnl_types.h:184
dnnl_primitive
An opaque structure to describe a primitive.
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a deconvolution weights gradient primitive from a C API primiti...
Definition: dnnl.hpp:5021
dnnl::deconvolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4774
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an LSTM forward propagation primitive from a C API primitive de...
Definition: dnnl.hpp:7950
dnnl::convolution_forward::convolution_forward
convolution_forward()=default
Default constructor. Produces an empty object.
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6494
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5145
dnnl::stream::stream
stream(const engine &aengine, flags aflags=flags::default_flags, const stream_attr &attr=stream_attr())
Constructs a stream for the specified engine and with behavior controlled by the specified flags.
Definition: dnnl.hpp:1069
dnnl_abcdefghij
@ dnnl_abcdefghij
plain 10D tensor
Definition: dnnl_types.h:186
dnnl_cpu_isa_all
@ dnnl_cpu_isa_all
Any ISA (excepting those listed as initial support)
Definition: dnnl_types.h:2260
dnnl_reorder_primitive_desc_create
dnnl_status_t DNNL_API dnnl_reorder_primitive_desc_create(dnnl_primitive_desc_t *reorder_primitive_desc, const dnnl_memory_desc_t *src_desc, dnnl_engine_t src_engine, const dnnl_memory_desc_t *dst_desc, dnnl_engine_t dst_engine, const_dnnl_primitive_attr_t attr)
Creates a primitive descriptor for a reorder primitive.
dnnl::lstm_forward::primitive_desc::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:7984
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data()=default
Default constructor. Produces an empty object.
dnnl_query_op_d
@ dnnl_query_op_d
op descriptor
Definition: dnnl_types.h:2134
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7624
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const shuffle_forward::primitive_desc &hint_fwd_pd, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9382
dnnl_softmax_backward_desc_init
dnnl_status_t DNNL_API dnnl_softmax_backward_desc_init(dnnl_softmax_desc_t *softmax_desc, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, int softmax_axis)
Initializes a descriptor for softmax backward propagation primitive.
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive_attr::set_scales
void set_scales(int arg, int mask, const std::vector< float > &scales)
Sets scaling factors for primitive operations for a given memory argument.
Definition: dnnl.hpp:2734
dnnl::convert_to_c
dnnl_primitive_kind_t convert_to_c(primitive::kind akind)
Converts primitive kind enum value from C++ API to C API type.
Definition: dnnl.hpp:365
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3835
dnnl_out_of_memory
@ dnnl_out_of_memory
The operation failed due to an out-of-memory condition.
Definition: dnnl_types.h:43
dnnl::rnn_primitive_desc_base::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7153
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:1048
dnnl_memory_get_memory_desc
dnnl_status_t DNNL_API dnnl_memory_get_memory_desc(const_dnnl_memory_t memory, const dnnl_memory_desc_t **memory_desc)
Returns the memory descriptor for a memory object.
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const layer_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6648
dnnl_vanilla_rnn_backward_desc_init
dnnl_status_t DNNL_API dnnl_vanilla_rnn_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, const dnnl_alg_kind_t activation, const dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, unsigned flags, float alpha, float beta)
Initializes a descriptor for vanilla RNN backward propagation primitive.
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward()=default
Default constructor. Produces an empty object.
dnnl_deconvolution_backward_weights_desc_init
dnnl_status_t DNNL_API dnnl_deconvolution_backward_weights_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a deconvolution weights gradient primitive.
dnnl::gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8838
dnnl::vanilla_rnn_forward::vanilla_rnn_forward
vanilla_rnn_forward()=default
Default constructor. Produces an empty object.
dnnl::eltwise_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5599
dnnl_resampling_backward_desc_init
dnnl_status_t DNNL_API dnnl_resampling_backward_desc_init(dnnl_resampling_desc_t *resampling_desc, dnnl_alg_kind_t alg_kind, const float *factors, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *diff_dst_desc)
Initializes a descriptor for resampling backward propagation primitive.
dnnl_abcdegf
@ dnnl_abcdegf
permuted 7D tensor
Definition: dnnl_types.h:214
dnnl_abcd
@ dnnl_abcd
plain 4D tensor
Definition: dnnl_types.h:180
dnnl_post_ops_append_dw_k3s1p1
dnnl_status_t DNNL_API dnnl_post_ops_append_dw_k3s1p1(dnnl_post_ops_t post_ops, dnnl_data_type_t weights_data_type, dnnl_data_type_t bias_data_type, dnnl_data_type_t dst_data_type, dnnl_dim_t count, int mask, const float *scales)
Appends a depthwise post-op convolution with stride 1.
dnnl::softmax_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, int softmax_axis)
Constructs a descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5744
dnnl_primitive_get_primitive_desc
dnnl_status_t DNNL_API dnnl_primitive_get_primitive_desc(const_dnnl_primitive_t primitive, const_dnnl_primitive_desc_t *primitive_desc)
Retrieves a constant reference to the primitive descriptor of a given primitive.
dnnl::vanilla_rnn_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7629
dnnl::memory::desc::desc
desc(const dims &adims, data_type adata_type, const dims &strides, bool allow_empty=false)
Constructs a memory descriptor by strides.
Definition: dnnl.hpp:1853
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6577
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8822
dnnl_u8
@ dnnl_u8
8-bit unsigned integer.
Definition: dnnl_types.h:76
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const logsoftmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6085
dnnl_query_workspace_md
@ dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:2160
dnnl::lstm_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7956
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9614
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5699
dnnl_format_tag_last
@ dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:424
dnnl::handle::handle
handle()=default
Constructs an empty handle object.
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::resampling_forward::resampling_forward
resampling_forward(const primitive_desc &pd)
Constructs a resampling forward propagation primitive.
Definition: dnnl.hpp:9778
dnnl_query_deconvolution_d
@ dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:2136
DNNL_ARG_DST_ITER
#define DNNL_ARG_DST_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1922
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7939
dnnl_logsoftmax
@ dnnl_logsoftmax
A logsoftmax primitive.
Definition: dnnl_types.h:838
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a convolution forward propagation primitive from a C API primit...
Definition: dnnl.hpp:3876
dnnl::lbr_gru_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8926
dnnl_format_tag_any
@ dnnl_format_tag_any
Undefined memory format tag.
Definition: dnnl_types.h:169
dnnl::engine::kind::gpu
@ gpu
GPU engine.
DNNL_ARG_DIFF_WEIGHTS_PROJECTION
#define DNNL_ARG_DIFF_WEIGHTS_PROJECTION
A special mnemonic for diff of RNN weights applied to the projection weights.
Definition: dnnl_types.h:2044
dnnl_deconvolution_direct
@ dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:859
dnnl::rnn_primitive_desc_base::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns destination recurrent cell state memory descriptor.
Definition: dnnl.hpp:7193
dnnl::handle::handle
handle(T t, bool weak=false)
Constructs a handle wrapper object from a C API handle.
Definition: dnnl.hpp:176
dnnl_memory_desc_equal
int DNNL_API dnnl_memory_desc_equal(const dnnl_memory_desc_t *lhs, const dnnl_memory_desc_t *rhs)
Compares two memory descriptors.
dnnl_reorder
@ dnnl_reorder
A reorder primitive.
Definition: dnnl_types.h:806
dnnl::matmul::primitive_desc
Primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9562
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6180
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9609
dnnl_deconvolution_backward_data_desc_init
dnnl_status_t DNNL_API dnnl_deconvolution_backward_data_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a deconvolution backward propagation primitive.
dnnl_lrn_desc_t
A descriptor of a Local Response Normalization (LRN) operation.
Definition: dnnl_types.h:1434
dnnl_stream_default_flags
@ dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:2185
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution weights update primitive.
Definition: dnnl.hpp:4988
DNNL_ARG_WEIGHTS_LAYER
#define DNNL_ARG_WEIGHTS_LAYER
A special mnemonic for RNN weights applied to the layer input.
Definition: dnnl_types.h:1940
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:1291
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const logsoftmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6065
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8413
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution weights gradient primitive with bias.
Definition: dnnl.hpp:4196
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6308
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6009
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:3369
dnnl::gru_backward::gru_backward
gru_backward()=default
Default constructor. Produces an empty object.
dnnl_backward_data
@ dnnl_backward_data
Backward data propagation.
Definition: dnnl_types.h:793
dnnl::softmax_backward::softmax_backward
softmax_backward()=default
Default constructor. Produces an empty object.
dnnl_acdeb
@ dnnl_acdeb
permuted 5D tensor
Definition: dnnl_types.h:198
dnnl_version_t
Structure containing version information as per Semantic Versioning
Definition: dnnl_types.h:2228
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1465
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3044
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3038
dnnl_eltwise_exp_use_dst_for_bwd
@ dnnl_eltwise_exp_use_dst_for_bwd
Eltwise: exp (dst for backward)
Definition: dnnl_types.h:914
dnnl::layer_normalization_backward
Layer normalization backward propagation primitive.
Definition: dnnl.hpp:6575
dnnl::scratchpad_mode::library
@ library
The library manages the scratchpad allocation according to the policy specified by the DNNL_ENABLE_CO...
dnnl::resampling_forward::resampling_forward
resampling_forward()=default
Default constructor. Produces an empty object.
dnnl::gru_forward::primitive_desc
Primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8584
dnnl_set_verbose
dnnl_status_t DNNL_API dnnl_set_verbose(int level)
Configures verbose output to stdout.
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a logsoftmax backward propagation primitive from a C API primit...
Definition: dnnl.hpp:6098
dnnl::vanilla_rnn_backward::primitive_desc::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:7688
dnnl::softmax_forward::softmax_forward
softmax_forward()=default
Default constructor. Produces an empty object.
dnnl_post_ops_append_sum_v2
dnnl_status_t DNNL_API dnnl_post_ops_append_sum_v2(dnnl_post_ops_t post_ops, float scale, dnnl_data_type_t data_type)
Appends an accumulation v2 (sum) to post-ops.
dnnl_eltwise_desc_t
A descriptor of a element-wise operation.
Definition: dnnl_types.h:1313
dnnl_eltwise_forward_desc_init
dnnl_status_t DNNL_API dnnl_eltwise_forward_desc_init(dnnl_eltwise_desc_t *eltwise_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *data_desc, float alpha, float beta)
Initializes a descriptor for eltwise forward propagation primitive.
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc(int idx) const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3000
dnnl_aBcd16b
@ dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:254
dnnl_resampling_nearest
@ dnnl_resampling_nearest
Nearest Neighbor Resampling Method.
Definition: dnnl_types.h:950
dnnl::layer_normalization_backward::layer_normalization_backward
layer_normalization_backward()=default
Default constructor. Produces an empty object.
dnnl::rnn_primitive_desc_base::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7187
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const batch_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6325
dnnl::layer_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6534
dnnl_rnn
@ dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:832
dnnl::vanilla_rnn_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7458
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4320
dnnl::handle::operator=
handle< T, traits > & operator=(handle< T, traits > &&)=default
Move assignment operator.
dnnl::memory::data_type::undef
@ undef
Undefined data type (used for empty memory descriptors).
dnnl::convolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4325
dnnl_aBc32b
@ dnnl_aBc32b
3D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:232
dnnl::lstm_backward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8428
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:9942
dnnl::layer_normalization_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization forward propagation primitive.
Definition: dnnl.hpp:6446
dnnl::memory::desc::reshape
desc reshape(const dims &adims, bool allow_empty=false) const
Constructs a memory descriptor by reshaping an existing one.
Definition: dnnl.hpp:1939
dnnl_query_num_of_outputs_s32
@ dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:2114
dnnl::binary::primitive_desc::src1_desc
memory::desc src1_desc() const
Returns the memory descriptor for source #1.
Definition: dnnl.hpp:9500
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:5270
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel Streaming SIMD Extensions 4.1 (Intel SSE4.1)
Definition: dnnl_types.h:2263
dnnl_abcdfe
@ dnnl_abcdfe
permuted 6D tensor
Definition: dnnl_types.h:213
dnnl_aBCd2b4c2b
@ dnnl_aBCd2b4c2b
4D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:299
dnnl_engine_get_ocl_device
dnnl_status_t DNNL_API dnnl_engine_get_ocl_device(dnnl_engine_t engine, cl_device_id *device)
Returns the OpenCL device associated with an engine.
dnnl::sgemm
status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda, const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc)
Performs single-precision matrix-matrix multiply.
Definition: dnnl.hpp:10019
dnnl::primitive_desc_base::query_s64
memory::dim query_s64(query what) const
Returns a memory::dim value (same as int64_t).
Definition: dnnl.hpp:2923
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:9909
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9042
dnnl_memory_get_engine
dnnl_status_t DNNL_API dnnl_memory_get_engine(const_dnnl_memory_t memory, dnnl_engine_t *engine)
Returns the engine of a memory object.
dnnl::layer_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6691
dnnl_abdec
@ dnnl_abdec
permuted 5D tensor
Definition: dnnl_types.h:193
dnnl_cpu_isa_avx2
@ dnnl_cpu_isa_avx2
Intel Advanced Vector Extensions 2 (Intel AVX2)
Definition: dnnl_types.h:2269
dnnl_cpu_isa_avx512_core_vnni
@ dnnl_cpu_isa_avx512_core_vnni
Intel AVX-512 and Intel Deep Learning Boost (Intel DL Boost) support for Intel Xeon Scalable processo...
Definition: dnnl_types.h:2286
dnnl_post_ops_get_params_dw_k3s1p1
dnnl_status_t DNNL_API dnnl_post_ops_get_params_dw_k3s1p1(const_dnnl_post_ops_t post_ops, int index, dnnl_data_type_t *weights_data_type, dnnl_data_type_t *bias_data_type, dnnl_data_type_t *dst_data_type, dnnl_dim_t *count, int *mask, const float **scales)
Returns the parameters of an depthwise post-op with stride 1.
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(int concat_dimension, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for an out-of-place concatenation primitive.
Definition: dnnl.hpp:3412
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:3907
dnnl_memory_desc_t::ndims
int ndims
Number of dimensions.
Definition: dnnl_types.h:1156
dnnl_aBc8b
@ dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:244
dnnl::rnn_primitive_desc_base::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7179
dnnl::handle::get
T get(bool allow_empty=false) const
Returns the underlying C API handle.
Definition: dnnl.hpp:192
dnnl::primitive_desc_base::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3020
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_layer_normalization_desc_t
A descriptor of a Layer Normalization operation.
Definition: dnnl_types.h:1498
dnnl::get_effective_cpu_isa
cpu_isa get_effective_cpu_isa()
Gets the maximal ISA the library can dispatch to on the CPU.
Definition: dnnl.hpp:9982
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:3223
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::shuffle_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:9400
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:9426
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5160
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution weights gradient primitive without bias.
Definition: dnnl.hpp:4860
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4608
dnnl_stream_create_ocl
dnnl_status_t DNNL_API dnnl_stream_create_ocl(dnnl_stream_t *stream, dnnl_engine_t engine, cl_command_queue queue)
Creates an execution stream for a given engine associated with an OpenCL command queue.
dnnl::inner_product_backward_data::desc
Descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6866
dnnl_not_required
@ dnnl_not_required
Queried element is not required for given primitive.
Definition: dnnl_types.h:53
dnnl_eltwise_clip
@ dnnl_eltwise_clip
Eltwise: clip.
Definition: dnnl_types.h:896
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::stream_attr::stream_attr
stream_attr()=default
Constructs default (empty) stream attributes.
dnnl_engine_get_count
size_t DNNL_API dnnl_engine_get_count(dnnl_engine_kind_t kind)
Returns the number of engines of a particular kind.
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9205
dnnl_engine_create
dnnl_status_t DNNL_API dnnl_engine_create(dnnl_engine_t *engine, dnnl_engine_kind_t kind, size_t index)
Creates an engine.
dnnl_eltwise_logistic_use_dst_for_bwd
@ dnnl_eltwise_logistic_use_dst_for_bwd
Eltwise: logistic (dst for backward)
Definition: dnnl_types.h:912
dnnl::error
oneDNN exception class.
Definition: dnnl.hpp:91
dnnl::layer_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6537
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &dst_desc)
Constructs a descriptor for a resampling forward propagation primitive using source and destination m...
Definition: dnnl.hpp:9658
dnnl::sum::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_abcdefg
@ dnnl_abcdefg
plain 7D tensor
Definition: dnnl_types.h:183
dnnl_pooling_avg_include_padding
@ dnnl_pooling_avg_include_padding
Average pooling include padding.
Definition: dnnl_types.h:918
dnnl::layer_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6543
dnnl::gru_backward::primitive_desc::diff_weights_layer_desc
memory::desc diff_weights_layer_desc() const
Returns diff weights layer memory descriptor.
Definition: dnnl.hpp:8853
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:2008
dnnl_set_jit_profiling_jitdumpdir
dnnl_status_t DNNL_API dnnl_set_jit_profiling_jitdumpdir(const char *dir)
Sets JIT dump output path.
dnnl::matmul::desc::desc
desc(const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc)
Constructs a descriptor for a matmul primitive.
Definition: dnnl.hpp:9552
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1186
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4750
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive from a C API primit...
Definition: dnnl.hpp:7426
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(const memory::desc &dst, int concat_dimension, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for an out-of-place concatenation primitive.
Definition: dnnl.hpp:3385
dnnl::inner_product_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:7080
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8446
dnnl_primitive_desc_iterator_destroy
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_destroy(dnnl_primitive_desc_iterator_t iterator)
Destroys a primitive descriptor iterator.
dnnl::deconvolution_backward_weights::primitive_desc
Primitive descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4971
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5346
dnnl_deconvolution
@ dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:816
dnnl_inner_product_backward_data_desc_init
dnnl_status_t DNNL_API dnnl_inner_product_backward_data_desc_init(dnnl_inner_product_desc_t *ip_desc, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc)
Initializes descriptor for inner product backward propagation.
dnnl::primitive_attr::get_output_scales
void get_output_scales(int &mask, std::vector< float > &scales) const
Returns output scaling factors correspondence mask and values.
Definition: dnnl.hpp:2630
dnnl_aBcde4b
@ dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:314
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5122
dnnl_memory_map_data
dnnl_status_t DNNL_API dnnl_memory_map_data(const_dnnl_memory_t memory, void **mapped_ptr)
Maps a memory object and returns a host-side pointer to a memory buffer with a copy of its contents.
dnnl::layer_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6688
dnnl_dilated_deconvolution_backward_weights_desc_init
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_backward_weights_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated deconvolution weights gradient primitive.
dnnl::lstm_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8494
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:5382
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4768
dnnl_stream_out_of_order
@ dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:2183
dnnl::inner_product_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6845
dnnl::primitive_desc
A base class for descriptors of all primitives that have an operation descriptor and that support ite...
Definition: dnnl.hpp:3553
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:8520
dnnl_batch_normalization_backward_desc_init
dnnl_status_t DNNL_API dnnl_batch_normalization_backward_desc_init(dnnl_batch_normalization_desc_t *bnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, float epsilon, unsigned flags)
Initializes a descriptor for a batch normalization backward propagation primitive.
dnnl_lbr_gru_forward_desc_init
dnnl_status_t DNNL_API dnnl_lbr_gru_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, unsigned flags)
Initializes a descriptor for LBR GRU forward propagation primitive.
dnnl::binary::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9503
dnnl::handle::reset
void reset(T t, bool weak=false)
Resets the handle wrapper objects to wrap a new C API handle.
Definition: dnnl.hpp:183
dnnl::softmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5805
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product weights update primitive.
Definition: dnnl.hpp:7034
dnnl::lbr_gru_backward::primitive_desc::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:9228
dnnl::rnn_primitive_desc_base::diff_weights_projection_desc
memory::desc diff_weights_projection_desc() const
Returns diff weights projection memory descriptor.
Definition: dnnl.hpp:7238
dnnl_convolution
@ dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:814
dnnl::vanilla_rnn_backward::primitive_desc::diff_dst_layer_desc
memory::desc diff_dst_layer_desc() const
Returns diff destination layer memory descriptor.
Definition: dnnl.hpp:7683
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:1047
dnnl::rnn_primitive_desc_base::diff_src_iter_c_desc
memory::desc diff_src_iter_c_desc() const
Returns diff source recurrent cell state memory descriptor.
Definition: dnnl.hpp:7213
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::batch_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6393
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an LSTM backward propagation primitive from a C API primitive d...
Definition: dnnl.hpp:8400
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a pooling backward propagation primitive from a C API primitive...
Definition: dnnl.hpp:5475
dnnl_stream_get_ocl_command_queue
dnnl_status_t DNNL_API dnnl_stream_get_ocl_command_queue(dnnl_stream_t stream, cl_command_queue *queue)
Returns the OpenCL command queue associated with an execution stream.
dnnl::shuffle_backward::desc::desc
desc(const memory::desc &diff_data_desc, int axis, int group_size)
Constructs a descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9355
dnnl_inner_product_backward_weights_desc_init
dnnl_status_t DNNL_API dnnl_inner_product_backward_weights_desc_init(dnnl_inner_product_desc_t *ip_desc, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc)
Initializes descriptor for inner product weights gradient primitive.
dnnl::lrn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5247
dnnl::binary::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::resampling_backward::resampling_backward
resampling_backward()=default
Default constructor. Produces an empty object.
dnnl::eltwise_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5702
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6703
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution weights gradient primitive with bias.
Definition: dnnl.hpp:4904
dnnl_primitive_attr
An opaque structure for primitive descriptor attributes.
dnnl_set_primitive_cache_capacity
dnnl_status_t DNNL_API dnnl_set_primitive_cache_capacity(int capacity)
Sets a number of primitives that can be held in the primitive cache at a time.
dnnl::inner_product_backward_weights::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns the diff bias memory descriptor.
Definition: dnnl.hpp:7083
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution forward propagation primitive with bias.
Definition: dnnl.hpp:4483
dnnl_lrn
@ dnnl_lrn
An LRN primitive.
Definition: dnnl_types.h:824
dnnl::vanilla_rnn_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7678
dnnl_primitive_attr_get_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_get_scales(dnnl_primitive_attr_t attr, int arg, dnnl_dim_t *count, int *mask, const float **scales)
Returns primitive attributes scaling factors correspondence mask and values for a given memory argume...
dnnl_query_src_md
@ dnnl_query_src_md
source memory desc
Definition: dnnl_types.h:2154
dnnl_primitive_attr_set_rnn_data_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_data_qparams(dnnl_primitive_attr_t attr, const float scale, const float shift)
Set quantization scale and shift parameters for RNN data tensors.
dnnl::rnn_primitive_desc_base::rnn_primitive_desc_base
rnn_primitive_desc_base()=default
Default constructor. Produces an empty object.
dnnl::convolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for dilated convolution backward propagation primitive.
Definition: dnnl.hpp:3981
dnnl::primitive::kind::convolution
@ convolution
A convolution primitive.
dnnl_primitive_attr_get_post_ops
dnnl_status_t DNNL_API dnnl_primitive_attr_get_post_ops(const_dnnl_primitive_attr_t attr, const_dnnl_post_ops_t *post_ops)
Returns primitive attributes post-ops.
dnnl::post_ops::get_params_sum
void get_params_sum(int index, float &scale, memory::data_type &data_type) const
Returns the parameters of an accumulation (sum) post-op.
Definition: dnnl.hpp:2361
dnnl::lbr_gru_backward::primitive_desc::diff_weights_layer_desc
memory::desc diff_weights_layer_desc() const
Returns diff weights layer memory descriptor.
Definition: dnnl.hpp:9223
dnnl::gru_backward::primitive_desc::diff_src_iter_desc
memory::desc diff_src_iter_desc() const
Returns diff source iteration memory descriptor.
Definition: dnnl.hpp:8848
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6113
dnnl::primitive_attr::primitive_attr
primitive_attr(dnnl_primitive_attr_t attr)
Creates primitive attributes from a C API dnnl_primitive_attr_t handle.
Definition: dnnl.hpp:2600
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5495
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9270
dnnl::reorder::execute
void execute(const stream &astream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:3340
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9326
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3438
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1805
dnnl::primitive_attr
Primitive attributes.
Definition: dnnl.hpp:2584
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:5814
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9208
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product weights update primitive.
Definition: dnnl.hpp:7054
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6848
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9184
dnnl_stream_attr_destroy
dnnl_status_t DNNL_API dnnl_stream_attr_destroy(dnnl_stream_attr_t attr)
Destroys execution stream attributes.
dnnl_data_type_undef
@ dnnl_data_type_undef
Undefined data type, used for empty memory descriptors.
Definition: dnnl_types.h:64
dnnl::shuffle_backward::shuffle_backward
shuffle_backward(const primitive_desc &pd)
Constructs a shuffle backward propagation primitive.
Definition: dnnl.hpp:9412
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6892
dnnl_get_primitive_cache_capacity
dnnl_status_t DNNL_API dnnl_get_primitive_cache_capacity(int *capacity)
Returns the number of primitives that can be held in the primitive cache at the same time.
dnnl_query_engine
@ dnnl_query_engine
execution engine
Definition: dnnl_types.h:2110
dnnl_dilated_deconvolution_backward_data_desc_init
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_backward_data_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated deconvolution backward propagation primitive.
DNNL_ARG_DIFF_SRC_LAYER
#define DNNL_ARG_DIFF_SRC_LAYER
A special mnemonic for gradient (diff) of RNN input vector.
Definition: dnnl_types.h:1981
dnnl_query_softmax_d
@ dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:2139
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1721
dnnl_invalid_arguments
@ dnnl_invalid_arguments
The operation failed because of incorrect function arguments.
Definition: dnnl_types.h:45
dnnl::lbr_gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9025
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3910
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_eltwise_elu_use_dst_for_bwd
@ dnnl_eltwise_elu_use_dst_for_bwd
Eltwise: exponential linear unit (elu) (dst for backward)
Definition: dnnl_types.h:908
dnnl::shuffle_backward::desc
Descriptor for a shuffle primitive backward propagation primitive.
Definition: dnnl.hpp:9345
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5802
dnnl_cpu
@ dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1755
dnnl::memory
Memory object.
Definition: dnnl.hpp:1184
dnnl_engine_get_ocl_context
dnnl_status_t DNNL_API dnnl_engine_get_ocl_context(dnnl_engine_t engine, cl_context *context)
Returns the OpenCL context associated with an engine.
dnnl_post_ops
An opaque structure for a chain of post operations.
dnnl::rnn_primitive_desc_base::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:7261
dnnl::primitive_attr::get_scales
void get_scales(int arg, int &mask, std::vector< float > &scales) const
Returns scaling factors correspondence mask and values for a given memory argument.
Definition: dnnl.hpp:2704
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution weights gradient primitive with bias.
Definition: dnnl.hpp:4818
dnnl_query_undef
@ dnnl_query_undef
no query
Definition: dnnl_types.h:2108
dnnl::rnn_flags::undef
@ undef
Undefined RNN flags.
dnnl::eltwise_forward::eltwise_forward
eltwise_forward()=default
Default constructor. Produces an empty object.
dnnl_eltwise_swish
@ dnnl_eltwise_swish
Eltwise: swish.
Definition: dnnl_types.h:892
dnnl::error::wrap_c_api
static void wrap_c_api(dnnl_status_t status, const char *message)
A convenience function for wrapping calls to C API functions.
Definition: dnnl.hpp:110
dnnl::eltwise_backward::eltwise_backward
eltwise_backward(const primitive_desc &pd)
Constructs an eltwise backward propagation primitive.
Definition: dnnl.hpp:5714
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9481
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8612
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3009
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8441
dnnl::prop_kind::undef
@ undef
Undefined propagation kind.
dnnl::inner_product_forward::inner_product_forward
inner_product_forward()=default
Default constructor. Produces an empty object.
dnnl::batch_normalization_backward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6388
dnnl_dilated_convolution_backward_weights_desc_init
dnnl_status_t DNNL_API dnnl_dilated_convolution_backward_weights_desc_init(dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated convolution weights gradient primitive.
dnnl_abcdefhg
@ dnnl_abcdefhg
permuted 8D tensor
Definition: dnnl_types.h:215
dnnl::primitive::primitive
primitive(const_dnnl_primitive_desc_t c_pd)
Constructs a primitive from a C API primitive descriptor.
dnnl::set_verbose
status set_verbose(int level)
Configures verbose output to stdout.
Definition: dnnl.hpp:9927
DNNL_ARG_DIFF_SRC_ITER_C
#define DNNL_ARG_DIFF_SRC_ITER_C
A special mnemonic for gradient (diff) of RNN input recurrent cell state vector.
Definition: dnnl_types.h:1993
dnnl::batch_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6231
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6795
dnnl::handle
oneDNN C API handle wrapper class.
Definition: dnnl.hpp:143
dnnl::lrn_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &data_desc, const memory::desc &diff_data_desc, memory::dim local_size, float alpha, float beta, float k=1.f)
Constructs a descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5175
dnnl::pooling_backward::pooling_backward
pooling_backward()=default
Default constructor. Produces an empty object.
dnnl::shuffle_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9308
dnnl::lstm_backward::primitive_desc::diff_weights_peephole_desc
memory::desc diff_weights_peephole_desc() const
Returns diff weights peephole memory descriptor.
Definition: dnnl.hpp:8484
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:2964
dnnl::threadpool_iface
Abstract threadpool interface.
Definition: dnnl_threadpool_iface.hpp:27
dnnl_primitive_destroy
dnnl_status_t DNNL_API dnnl_primitive_destroy(dnnl_primitive_t primitive)
Destroys a primitive.
dnnl::sum::primitive_desc::primitive_desc
primitive_desc(const memory::desc &dst, const std::vector< float > &scales, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3476
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7969
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an inner product weights update primitive from a C API primitiv...
Definition: dnnl.hpp:7067
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6150
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a binary primitive from a C API primitive descriptor that must ...
Definition: dnnl.hpp:9490
dnnl_memory_create
dnnl_status_t DNNL_API dnnl_memory_create(dnnl_memory_t *memory, const dnnl_memory_desc_t *memory_desc, dnnl_engine_t engine, void *handle)
Creates a memory object.
dnnl_eltwise_gelu_erf
@ dnnl_eltwise_gelu_erf
Eltwise: erf-based gelu.
Definition: dnnl_types.h:900
dnnl_pooling_forward_desc_init
dnnl_status_t DNNL_API dnnl_pooling_forward_desc_init(dnnl_pooling_desc_t *pool_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t kernel, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for pooling forward propagation primitive.
dnnl_logsoftmax_backward_desc_init
dnnl_status_t DNNL_API dnnl_logsoftmax_backward_desc_init(dnnl_logsoftmax_desc_t *logsoftmax_desc, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, int logsoftmax_axis)
Initializes a descriptor for logsoftmax backward propagation primitive.
dnnl::vanilla_rnn_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7632
dnnl::inner_product_backward_data::inner_product_backward_data
inner_product_backward_data()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:9187
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution weights gradient primitive without bias.
Definition: dnnl.hpp:4950
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7127
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:4072
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const resampling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9862
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6374
dnnl_shuffle_forward_desc_init
dnnl_status_t DNNL_API dnnl_shuffle_forward_desc_init(dnnl_shuffle_desc_t *shuffle_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int axis, dnnl_dim_t group_size)
Initializes a descriptor for shuffle forward propagation primitive.
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4582
dnnl::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8888
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9883
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6402
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:1154
dnnl_backward_bias
@ dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:797
dnnl::vanilla_rnn_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7445
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7964
dnnl::memory::memory
memory(const desc &md, const engine &aengine, void *handle)
Constructs a memory object.
Definition: dnnl.hpp:2069
dnnl_matmul
@ dnnl_matmul
A matrix multiplication primitive.
Definition: dnnl_types.h:840
dnnl::rnn_primitive_desc_base::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:7165
dnnl::primitive_attr::set_output_scales
void set_output_scales(int mask, const std::vector< float > &scales)
Sets output scaling factors correspondence mask and values.
Definition: dnnl.hpp:2686
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:4342
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const softmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5881
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6018
dnnl::handle::operator!=
bool operator!=(const handle &other) const
Inequality operator.
Definition: dnnl.hpp:227
dnnl::convolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:3894
dnnl::logsoftmax_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, int logsoftmax_axis)
Constructs a descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5944
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2258
DNNL_ARG_SRC_ITER
#define DNNL_ARG_SRC_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1899
dnnl::inner_product_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:6851
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:2035
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5384
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9293
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution weights gradient primitive without bias.
Definition: dnnl.hpp:4151
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution weights gradient primitive with bias.
Definition: dnnl.hpp:4108
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward()=default
Default constructor. Produces an empty object.
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6929
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4605
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7317
dnnl_lrn_forward_desc_init
dnnl_status_t DNNL_API dnnl_lrn_forward_desc_init(dnnl_lrn_desc_t *lrn_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *data_desc, dnnl_dim_t local_size, float alpha, float beta, float k)
Initializes a descriptor for LRN forward propagation primitive.
dnnl::binary::desc::data
dnnl_binary_desc_t data
Underlying C operation descriptor.
Definition: dnnl.hpp:9430
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8597
dnnl_nChw4c
@ dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:561
dnnl::query::scratchpad_engine
@ scratchpad_engine
scratchpad engine
dnnl::lstm_backward::primitive_desc::diff_src_layer_desc
memory::desc diff_src_layer_desc() const
Returns diff source layer memory descriptor.
Definition: dnnl.hpp:8459
dnnl::lbr_gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:9197
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7072
dnnl_engine_destroy
dnnl_status_t DNNL_API dnnl_engine_destroy(dnnl_engine_t engine)
Destroys an engine.
dnnl.h
C API.
dnnl::primitive_desc_base::reset_with_clone
void reset_with_clone(const_dnnl_primitive_desc_t pd)
Resets the value of the handle to a clone of a C API primitive descriptor.
Definition: dnnl.hpp:3107
dnnl_bacd
@ dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:201
dnnl_format_kind_any
@ dnnl_format_kind_any
Unspecified format kind.
Definition: dnnl_types.h:85
dnnl_post_ops_len
int DNNL_API dnnl_post_ops_len(const_dnnl_post_ops_t post_ops)
Returns the length of post-ops.
dnnl::layer_normalization_backward::primitive_desc
Primitive descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6631
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:3065
dnnl_batch_normalization_forward_desc_init
dnnl_status_t DNNL_API dnnl_batch_normalization_forward_desc_init(dnnl_batch_normalization_desc_t *bnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, float epsilon, unsigned flags)
Initializes a descriptor for a batch normalization forward propagation primitive.
dnnl_nChw16c
@ dnnl_nChw16c
4D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcd16b
Definition: dnnl_types.h:558
dnnl::shuffle_backward::primitive_desc
Primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9364
dnnl_shuffle_backward_desc_init
dnnl_status_t DNNL_API dnnl_shuffle_backward_desc_init(dnnl_shuffle_desc_t *shuffle_desc, const dnnl_memory_desc_t *diff_data_desc, int axis, dnnl_dim_t group_size)
Initializes a descriptor for shuffle backward propagation primitive.
dnnl::deconvolution_backward_data::primitive_desc
Primitive descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4713
dnnl::post_ops::get_params_sum
void get_params_sum(int index, float &scale) const
Returns the parameters of an accumulation (sum) post-op.
Definition: dnnl.hpp:2351
dnnl_query_eltwise_d
@ dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:2138
dnnl::handle::operator=
handle< T, traits > & operator=(const handle< T, traits > &)=default
Assignment operator.
dnnl::convolution_backward_weights::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns the diff bias memory descriptor.
Definition: dnnl.hpp:4331
dnnl::engine::engine
engine(kind akind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:873
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9428
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4789
dnnl_binary_max
@ dnnl_binary_max
Binary max.
Definition: dnnl_types.h:946
dnnl::concat::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3435
dnnl_cba
@ dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:206
dnnl::rnn_primitive_desc_base::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7173
dnnl_lrn_backward_desc_init
dnnl_status_t DNNL_API dnnl_lrn_backward_desc_init(dnnl_lrn_desc_t *lrn_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, dnnl_dim_t local_size, float alpha, float beta, float k)
Initializes a descriptor for LRN backward propagation primitive.
dnnl::handle_traits
A class that provides the destructor for a oneDNN C API handle.
Definition: dnnl.hpp:127
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc(int idx) const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2982
dnnl::lbr_gru_backward::primitive_desc::diff_src_layer_desc
memory::desc diff_src_layer_desc() const
Returns diff source layer memory descriptor.
Definition: dnnl.hpp:9213
dnnl_query_num_of_inputs_s32
@ dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:2113
dnnl::memory::dims
std::vector< dim > dims
Vector of dimensions.
Definition: dnnl.hpp:1189
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5844
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4621
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6237
dnnl_acbde
@ dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:195
dnnl::lstm_backward::primitive_desc::diff_dst_layer_desc
memory::desc diff_dst_layer_desc() const
Returns diff destination layer memory descriptor.
Definition: dnnl.hpp:8499
dnnl_post_ops_get_params_sum
dnnl_status_t DNNL_API dnnl_post_ops_get_params_sum(const_dnnl_post_ops_t post_ops, int index, float *scale)
Returns the parameters of an accumulation (sum) post-op.
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5785
dnnl_primitive_attr_set_scratchpad_mode
dnnl_status_t DNNL_API dnnl_primitive_attr_set_scratchpad_mode(dnnl_primitive_attr_t attr, dnnl_scratchpad_mode_t mode)
Sets primitive attributes scratchpad mode.
dnnl::primitive_attr::get_post_ops
const post_ops get_post_ops() const
Returns post-ops previously set via set_post_ops().
Definition: dnnl.hpp:2797
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7432
dnnl_dcab
@ dnnl_dcab
permuted 4D tensor
Definition: dnnl_types.h:208
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6809
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8650
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:1801
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3885
dnnl::primitive
Base class for all computational primitives.
Definition: dnnl.hpp:276
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7924
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:850
dnnl_deconvolution_winograd
@ dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:861
const_dnnl_op_desc_t
const void * const_dnnl_op_desc_t
A pointer to any of the operation descriptors (constant variant).
Definition: dnnl_types.h:1226
dnnl_cpu_isa_avx512_mic
@ dnnl_cpu_isa_avx512_mic
Intel Advanced Vector Extensions 512 (Intel AVX-512) subset for Intel Xeon Phi processors x200 Series...
Definition: dnnl_types.h:2273
dnnl::layer_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6694
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5331
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward()=default
Default constructor. Produces an empty object.
dnnl_memory_desc_init_by_strides
dnnl_status_t DNNL_API dnnl_memory_desc_init_by_strides(dnnl_memory_desc_t *memory_desc, int ndims, const dnnl_dims_t dims, dnnl_data_type_t data_type, const dnnl_dims_t strides)
Initializes a memory descriptor using dimensions and strides.
dnnl_success
@ dnnl_success
The operation was successful.
Definition: dnnl_types.h:41
dnnl::memory::get_engine
engine get_engine() const
Returns the associated engine.
Definition: dnnl.hpp:2095
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1222
dnnl_eltwise_exp
@ dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:883
dnnl_abcdef
@ dnnl_abcdef
plain 6D tensor
Definition: dnnl_types.h:182
dnnl::convolution_forward::convolution_forward
convolution_forward(const primitive_desc &pd)
Constructs a convolution forward propagation primitive.
Definition: dnnl.hpp:3903
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:2027
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:9268
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward(const primitive_desc &pd)
Constructs an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9036
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9749
dnnl_primitive_attr_set_zero_points
dnnl_status_t DNNL_API dnnl_primitive_attr_set_zero_points(dnnl_primitive_attr_t attr, int arg, dnnl_dim_t count, int mask, const int32_t *zero_points)
Sets primitive attributes zero points for primitive operations for a given memory argument.
dnnl::matmul::matmul
matmul()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward()=default
Default constructor. Produces an empty object.
dnnl_aBCdef2b4c2b
@ dnnl_aBCdef2b4c2b
6D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:361
dnnl_lstm_forward_desc_init_v3
dnnl_status_t DNNL_API dnnl_lstm_forward_desc_init_v3(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *weights_projection_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole and with or without recurrent projecti...
dnnl_primitive_create
dnnl_status_t DNNL_API dnnl_primitive_create(dnnl_primitive_t *primitive, const_dnnl_primitive_desc_t primitive_desc)
Creates a primitive.
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::convolution_forward::desc
Descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3637
dnnl::matmul::desc::desc
desc(const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc)
Constructs a descriptor for a matmul primitive.
Definition: dnnl.hpp:9538
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:2021
dnnl_bidirectional_sum
@ dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1585
dnnl::lstm_forward::lstm_forward
lstm_forward(const primitive_desc &pd)
Constructs an LSTM forward propagation primitive.
Definition: dnnl.hpp:8016
dnnl::lstm_backward::primitive_desc::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:8479
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7989
dnnl_eltwise_linear
@ dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:875
dnnl_nCw16c
@ dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:570
dnnl
oneDNN namespace
Definition: dnnl.hpp:81
dnnl_vanilla_gru
@ dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:932
dnnl::primitive::kind::logsoftmax
@ logsoftmax
A logsoftmax primitive.
dnnl::lbr_gru_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:9014
dnnl_abc
@ dnnl_abc
plain 3D tensor
Definition: dnnl_types.h:179
dnnl_stream
An opaque structure to describe an execution stream.
dnnl::matmul::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:9604
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4078
dnnl::query::impl_info_str
@ impl_info_str
implementation name
dnnl::deconvolution_backward_data::desc
Descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4623
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:9017
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5582
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1673
dnnl::pooling_forward::pooling_forward
pooling_forward()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:9192
dnnl::reorder::primitive_desc::get_dst_engine
engine get_dst_engine() const
Returns the engine on which the destination memory is allocated.
Definition: dnnl.hpp:3303
dnnl::primitive::kind::batch_normalization
@ batch_normalization
A batch normalization primitive.
dnnl_primitive_attr_clone
dnnl_status_t DNNL_API dnnl_primitive_attr_clone(dnnl_primitive_attr_t *attr, const_dnnl_primitive_attr_t existing_attr)
Clones primitive attributes.
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const vanilla_rnn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7586
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const pooling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5462
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::memory::get_data_handle
void * get_data_handle() const
Returns the underlying memory buffer.
Definition: dnnl.hpp:2105
dnnl_convolution_direct
@ dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:853
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3849
dnnl_post_ops_get_kind
dnnl_primitive_kind_t DNNL_API dnnl_post_ops_get_kind(const_dnnl_post_ops_t post_ops, int index)
Returns the kind of a post-op entry.
dnnl::sum::sum
sum(const primitive_desc &pd)
Constructs a sum primitive.
Definition: dnnl.hpp:3543
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:3446
dnnl_query_diff_src_md
@ dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:2155
dnnl_abcdefgih
@ dnnl_abcdefgih
permuted 9D tensor
Definition: dnnl_types.h:216
dnnl::post_ops::get_params_eltwise
void get_params_eltwise(int index, float &scale, algorithm &aalgorithm, float &alpha, float &beta) const
Returns parameters of an elementwise post-up.
Definition: dnnl.hpp:2397
dnnl::vanilla_rnn_forward
Vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7315
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9179
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8979
dnnl::stream::get_ocl_command_queue
cl_command_queue get_ocl_command_queue() const
Returns the underlying OpenCL queue object.
Definition: dnnl.hpp:1093
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7699
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9403
dnnl::eltwise_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &data_desc, float alpha=0, float beta=0)
Constructs a descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5539
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4617
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:9932
dnnl_forward_scoring
@ dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:787
dnnl::binary::binary
binary()=default
Default constructor. Produces an empty object.
dnnl_aBcde8b
@ dnnl_aBcde8b
5D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:329
dnnl::reorder::reorder
reorder(const primitive_desc &pd)
Constructs a reorder primitive.
Definition: dnnl.hpp:3319
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an inner product forward propagation primitive from a C API pri...
Definition: dnnl.hpp:6836
dnnl::memory::desc::desc
desc(const dims &adims, data_type adata_type, format_tag aformat_tag, bool allow_empty=false)
Constructs a memory descriptor.
Definition: dnnl.hpp:1825
dnnl::inner_product_backward_data::desc::desc
desc(const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6879
dnnl_deconvolution_forward_desc_init
dnnl_status_t DNNL_API dnnl_deconvolution_forward_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a deconvolution forward propagation primitive.
dnnl::post_ops::kind
primitive::kind kind(int index) const
Returns the primitive kind of post-op at entry with a certain index.
Definition: dnnl.hpp:2299
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9001
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:471
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4002
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8449
dnnl_prop_kind_undef
@ dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:778
dnnl_resampling_forward_desc_init
dnnl_status_t DNNL_API dnnl_resampling_forward_desc_init(dnnl_resampling_desc_t *resampling_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const float *factors, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *dst_desc)
Initializes a descriptor for a resampling forward propagation primitive.
dnnl::layer_normalization_backward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization backward propagation primitive.
Definition: dnnl.hpp:6593
dnnl::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6368
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive::get_kind
kind get_kind() const
Returns the kind of the primitive.
Definition: dnnl.hpp:376
dnnl_matmul_desc_init
dnnl_status_t DNNL_API dnnl_matmul_desc_init(dnnl_matmul_desc_t *matmul_desc, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc)
Initializes a matrix multiplication descriptor.
dnnl::deconvolution_backward_weights::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns the diff bias memory descriptor.
Definition: dnnl.hpp:5037
dnnl_blocked
@ dnnl_blocked
A tensor in a generic format described by the stride and blocking values in each dimension.
Definition: dnnl_types.h:89
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5769
dnnl_rnn_desc_t::prop_kind
dnnl_prop_kind_t prop_kind
The kind of propagation.
Definition: dnnl_types.h:1597
dnnl::lstm_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for an LSTM (with or without peephole) forward propagation primitive.
Definition: dnnl.hpp:7824
dnnl::lbr_gru_backward::primitive_desc::diff_src_iter_desc
memory::desc diff_src_iter_desc() const
Returns diff source iteration memory descriptor.
Definition: dnnl.hpp:9218
dnnl_memory_desc_init_by_tag
dnnl_status_t DNNL_API dnnl_memory_desc_init_by_tag(dnnl_memory_desc_t *memory_desc, int ndims, const dnnl_dims_t dims, dnnl_data_type_t data_type, dnnl_format_tag_t tag)
Initializes a memory descriptor using dimensions and memory format tag.
dnnl_query_primitive_kind
@ dnnl_query_primitive_kind
primitive kind
Definition: dnnl_types.h:2111
dnnl_unidirectional_left2right
@ dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1577
dnnl_primitive_desc_iterator_fetch
dnnl_primitive_desc_t DNNL_API dnnl_primitive_desc_iterator_fetch(const_dnnl_primitive_desc_iterator_t iterator)
Fetches the current primitive descriptor from a primitive descriptor iterator.
dnnl::pooling_forward::desc
Descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5272
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for reorder primitive from a C API primitive descriptor which must ...
Definition: dnnl.hpp:3292
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5644
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5930
dnnl_eltwise_elu
@ dnnl_eltwise_elu
Eltwise: exponential linear unit (elu)
Definition: dnnl_types.h:867
dnnl::binary::primitive_desc::src0_desc
memory::desc src0_desc() const
Returns the memory descriptor for source #0.
Definition: dnnl.hpp:9497
dnnl::stream::flags::in_order
@ in_order
In-order execution.
dnnl::memory::map_data
T * map_data() const
Maps a memory object and returns a host-side pointer to a memory buffer with a copy of its contents.
Definition: dnnl.hpp:2179
dnnl::convolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4063
dnnl::stream_attr::get_threadpool
threadpool_iface * get_threadpool()
Returns the threadpool attribute.
Definition: dnnl.hpp:1033
dnnl::binary::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward(const primitive_desc &pd)
Constructs a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6273
dnnl::lstm_backward::primitive_desc::diff_src_iter_desc
memory::desc diff_src_iter_desc() const
Returns diff source iteration memory descriptor.
Definition: dnnl.hpp:8464
dnnl::concat::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::shuffle_forward::shuffle_forward
shuffle_forward(const primitive_desc &pd)
Constructs a shuffle forward propagation primitive.
Definition: dnnl.hpp:9338
dnnl_dilated_convolution_backward_data_desc_init
dnnl_status_t DNNL_API dnnl_dilated_convolution_backward_data_desc_init(dnnl_convolution_desc_t *conv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated convolution backward propagation primitive.
dnnl::sum::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3532
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const vanilla_rnn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7606
dnnl_layer_normalization_forward_desc_init
dnnl_status_t DNNL_API dnnl_layer_normalization_forward_desc_init(dnnl_layer_normalization_desc_t *lnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, const dnnl_memory_desc_t *stat_desc, float epsilon, unsigned flags)
Initializes a descriptor for layer normalization forward propagation primitive.
dnnl_nCw4c
@ dnnl_nCw4c
3D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBc4b
Definition: dnnl_types.h:573
dnnl::primitive_attr::get_scratchpad_mode
scratchpad_mode get_scratchpad_mode() const
Returns the scratchpad mode.
Definition: dnnl.hpp:2604
dnnl_primitive_attr_set_rnn_weights_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_weights_qparams(dnnl_primitive_attr_t attr, dnnl_dim_t count, int mask, const float *scales)
Sets quantization scaling factors for RNN weights tensors.
dnnl_aBcde32b
@ dnnl_aBcde32b
5D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:312
dnnl_primitive_attr_set_post_ops
dnnl_status_t DNNL_API dnnl_primitive_attr_set_post_ops(dnnl_primitive_attr_t attr, const_dnnl_post_ops_t post_ops)
Sets primitive attributes post-ops.
dnnl::memory::desc::desc
desc()
Constructs a zero (empty) memory descriptor.
Definition: dnnl.hpp:1808
dnnl::stream::flags::out_of_order
@ out_of_order
Out-of-order execution.
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights()=default
Default constructor. Produces an empty object.
dnnl_primitive_desc_destroy
dnnl_status_t DNNL_API dnnl_primitive_desc_destroy(dnnl_primitive_desc_t primitive_desc)
Destroys a primitive descriptor.
dnnl::post_ops::append_eltwise
void append_eltwise(float scale, algorithm aalgorithm, float alpha, float beta)
Appends an elementwise post-op.
Definition: dnnl.hpp:2383
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7415
dnnl_vanilla_lstm
@ dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:930
dnnl_any_engine
@ dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1753
dnnl::lrn_backward::lrn_backward
lrn_backward()=default
Default constructor. Produces an empty object.
dnnl::rnn_primitive_desc_base
Base class for primitive descriptors for RNN primitives.
Definition: dnnl.hpp:7108
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:2588
dnnl_nCdhw4c
@ dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:549
dnnl::lrn_backward::primitive_desc
Primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5188
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:842
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7703
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an inner product backward propagation primitive from a C API pr...
Definition: dnnl.hpp:6942
dnnl_cpu_isa_avx
@ dnnl_cpu_isa_avx
Intel Advanced Vector Extensions (Intel AVX)
Definition: dnnl_types.h:2266
dnnl_bca
@ dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:203
dnnl::primitive_desc_base::get_engine
engine get_engine() const
Returns the engine of the primitive descriptor.
Definition: dnnl.hpp:2907
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:775
dnnl::gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8809
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:2911
dnnl_query_scratchpad_md
@ dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:2161
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution forward propagation primitive with bias.
Definition: dnnl.hpp:4390
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7974
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6234
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:2944
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5566
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6380
dnnl::batch_normalization_backward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a batch normalization descriptor for backward propagation.
Definition: dnnl.hpp:6294
dnnl_dilated_convolution_forward_desc_init
dnnl_status_t DNNL_API dnnl_dilated_convolution_forward_desc_init(dnnl_convolution_desc_t *conv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated convolution forward propagation primitive.
dnnl_eltwise_gelu
@ dnnl_eltwise_gelu
Eltwise: tanh-based gelu (alias for dnnl_eltwise_gelu_tanh)
Definition: dnnl_types.h:890
dnnl::deconvolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4602
dnnl_primitive_attr_get_output_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_get_output_scales(const_dnnl_primitive_attr_t attr, dnnl_dim_t *count, int *mask, const float **scales)
Returns primitive attributes output scaling factors correspondence mask and values.
dnnl_query_weights_md
@ dnnl_query_weights_md
weights memory descriptor desc
Definition: dnnl_types.h:2156
dnnl::layer_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6716
dnnl::query::engine
@ engine
execution engine
dnnl::sum::primitive_desc::primitive_desc
primitive_desc(const std::vector< float > &scales, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3506
dnnl::stream::flags::default_flags
@ default_flags
Default stream configuration.
dnnl::deconvolution_backward_weights::deconvolution_backward_weights
deconvolution_backward_weights(const primitive_desc &pd)
Constructs a deconvolution weights gradient primitive.
Definition: dnnl.hpp:5048
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9574
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const lrn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5204
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:2899
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5820
dnnl::reorder::reorder
reorder()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution forward propagation primitive without bias.
Definition: dnnl.hpp:4531
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6194
dnnl_primitive_desc_query_md
const dnnl_memory_desc_t DNNL_API * dnnl_primitive_desc_query_md(const_dnnl_primitive_desc_t primitive_desc, dnnl_query_t what, int index)
Queries primitive descriptor for a memory descriptor.
dnnl_gemm_u8s8s32
dnnl_status_t DNNL_API dnnl_gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A, dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo, float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co)
Performs integer matrix-matrix multiply on 8-bit unsigned matrix A, 8-bit signed matrix B,...
dnnl_query_batch_normalization_d
@ dnnl_query_batch_normalization_d
batch normalization descriptor
Definition: dnnl_types.h:2142
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8772
dnnl_post_ops_create
dnnl_status_t DNNL_API dnnl_post_ops_create(dnnl_post_ops_t *post_ops)
Creates empty post-ops sequence.
dnnl_eltwise_tanh_use_dst_for_bwd
@ dnnl_eltwise_tanh_use_dst_for_bwd
Eltwise: hyperbolic tangent non-linearity (tanh) (dst for backward)
Definition: dnnl_types.h:906
dnnl::resampling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9766
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a convolution backward propagation primitive from a C API primi...
Definition: dnnl.hpp:4052
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8022
dnnl::inner_product_backward_weights::inner_product_backward_weights
inner_product_backward_weights()=default
Default constructor. Produces an empty object.
dnnl::set_jit_dump
status set_jit_dump(int enable)
Configures dumping of JIT-generated code.
Definition: dnnl.hpp:9937
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8835
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5905
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7453
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:4356
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:5158
dnnl::primitive::kind::eltwise
@ eltwise
An element-wise primitive.
dnnl::lstm_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_src_iter_c_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, const memory::desc &diff_dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs an LSTM descriptor for backward propagation using prop_kind, direction,...
Definition: dnnl.hpp:8311
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6006
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::gru_forward::gru_forward
gru_forward()=default
Default constructor. Produces an empty object.
dnnl_rnn_desc_t::cell_kind
dnnl_alg_kind_t cell_kind
RNN cell kind.
Definition: dnnl_types.h:1600
dnnl::softmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5902
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5730
dnnl::shuffle_backward::shuffle_backward
shuffle_backward()=default
Default constructor. Produces an empty object.
dnnl_undefined_primitive
@ dnnl_undefined_primitive
Undefined primitive.
Definition: dnnl_types.h:804
dnnl::shuffle_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis, int group_size)
Constructs a descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9282
dnnl::lstm_backward::primitive_desc::diff_src_iter_c_desc
memory::desc diff_src_iter_c_desc() const
Returns diff source recurrent cell state memory descriptor.
Definition: dnnl.hpp:8469
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for an RNN backward propagation primitive.
Definition: dnnl.hpp:7569
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:3460
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5955
dnnl_vanilla_rnn_forward_desc_init
dnnl_status_t DNNL_API dnnl_vanilla_rnn_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, const dnnl_alg_kind_t activation, const dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, unsigned flags, float alpha, float beta)
Initializes a descriptor for vanilla RNN forward propagation primitive.
dnnl::primitive::kind::deconvolution
@ deconvolution
A deconvolution primitive.
dnnl::lstm_backward::primitive_desc::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:8433
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward()=default
Default constructor. Produces an empty object.
dnnl_eltwise_soft_relu
@ dnnl_eltwise_soft_relu
Eltwise: soft_relu.
Definition: dnnl_types.h:879
dnnl::handle::handle
handle(const handle< T, traits > &)=default
Copy constructor.
dnnl_abcdefghikj
@ dnnl_abcdefghikj
permuted 11D tensor
Definition: dnnl_types.h:218
dnnl::gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8814
dnnl::eltwise_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_data_desc, const memory::desc &data_desc, float alpha=0, float beta=0)
Constructs a descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5631
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7385
dnnl::lrn_forward::lrn_forward
lrn_forward()=default
Default constructor. Produces an empty object.
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a pooling forward propagation primitive from a C API primitive ...
Definition: dnnl.hpp:5357
DNNL_ARG_FROM
#define DNNL_ARG_FROM
A special mnemonic for reorder source argument.
Definition: dnnl_types.h:1893
dnnl_unidirectional_right2left
@ dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1579
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5969
dnnl_aBcd8b
@ dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:281
dnnl::gru_backward::gru_backward
gru_backward(const primitive_desc &pd)
Constructs a GRU backward propagation primitive.
Definition: dnnl.hpp:8884
dnnl::deconvolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5034
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6528
dnnl_ab
@ dnnl_ab
plain 2D tensor
Definition: dnnl_types.h:178
dnnl::logsoftmax_backward::primitive_desc
Primitive descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6048
dnnl_query_scratchpad_engine
@ dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:2122
dnnl::convolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3938
dnnl::primitive_attr::set_rnn_weights_qparams
void set_rnn_weights_qparams(int mask, const std::vector< float > &scales)
Sets quantization scaling factors for RNN weights tensors.
Definition: dnnl.hpp:2885
dnnl_runtime_error
@ dnnl_runtime_error
Primitive or engine failed on execution.
Definition: dnnl_types.h:51
dnnl_post_ops_get_params_eltwise
dnnl_status_t DNNL_API dnnl_post_ops_get_params_eltwise(const_dnnl_post_ops_t post_ops, int index, float *scale, dnnl_alg_kind_t *alg_kind, float *alpha, float *beta)
Returns the parameters of an elementwise post-up.
DNNL_ARG_DST_LAYER
#define DNNL_ARG_DST_LAYER
A special mnemonic for RNN output vector. An alias for DNNL_ARG_DST_0.
Definition: dnnl_types.h:1916
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution weights gradient primitive without bias.
Definition: dnnl.hpp:4243
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9784
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution weights update primitive.
Definition: dnnl.hpp:5008
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:8673
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const eltwise_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5681
dnnl_query_exec_arg_md
@ dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:2162
dnnl::lstm_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8438
dnnl::memory::memory
memory()=default
Default constructor.
dnnl::lstm_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8410
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4358
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a batch normalization backward propagation primitive from a C A...
Definition: dnnl.hpp:6358
dnnl::query::primitive_kind
@ primitive_kind
primitive kind
dnnl_pooling_avg_exclude_padding
@ dnnl_pooling_avg_exclude_padding
Average pooling exclude padding.
Definition: dnnl_types.h:920
dnnl_binary_add
@ dnnl_binary_add
Binary add.
Definition: dnnl_types.h:942
dnnl_set_jit_dump
dnnl_status_t DNNL_API dnnl_set_jit_dump(int enable)
Configures dumping of JIT-generated code.
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for an eltwise forward propagation primitive from a C API primitive...
Definition: dnnl.hpp:5593
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7637
dnnl_binary_desc_init
dnnl_status_t DNNL_API dnnl_binary_desc_init(dnnl_binary_desc_t *binary_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src0_desc, const dnnl_memory_desc_t *src1_desc, const dnnl_memory_desc_t *dst_desc)
Initializes a descriptor for a binary primitive.