oneAPI Deep Neural Network Library (oneDNN)
Performance library for Deep Learning
1.8.0
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,
322  prelu = dnnl_prelu,
323  };
324 
325  using handle::handle;
326 
328  primitive() = default;
329 
334 
339 
345 
349  inline kind get_kind() const;
350 
363  void execute(const stream &astream,
364  const std::unordered_map<int, memory> &args) const;
365 };
366 
372  return static_cast<dnnl_primitive_kind_t>(akind);
373 }
374 
378  "could not get a primitive descriptor from a primitive");
379  return pd;
380 }
381 
384  // TODO (Roma): the code below is only needed because get_primitive_desc
385  // returns a C type.
388  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
389  "could not get a primitive kind from a primitive descriptor");
390  return static_cast<dnnl::primitive::kind>(kind);
391 }
392 
394 
406 
408 enum class scratchpad_mode {
431 };
432 
438  return static_cast<dnnl_scratchpad_mode_t>(mode);
439 }
440 
442 enum class prop_kind {
447  forward_training = dnnl_forward_training,
451  forward_inference = dnnl_forward_inference,
454  forward_scoring = dnnl_forward_scoring,
457  forward = dnnl_forward,
459  backward = dnnl_backward,
461  backward_data = dnnl_backward_data,
463  backward_weights = dnnl_backward_weights,
466 };
467 
473  return static_cast<dnnl_prop_kind_t>(akind);
474 }
475 
477 enum class algorithm {
479  undef = dnnl_alg_kind_undef,
482  convolution_auto = dnnl_convolution_auto,
484  convolution_direct = dnnl_convolution_direct,
486  convolution_winograd = dnnl_convolution_winograd,
488  deconvolution_direct = dnnl_deconvolution_direct,
490  deconvolution_winograd = dnnl_deconvolution_winograd,
492  eltwise_relu = dnnl_eltwise_relu,
494  eltwise_tanh = dnnl_eltwise_tanh,
496  eltwise_elu = dnnl_eltwise_elu,
498  eltwise_square = dnnl_eltwise_square,
500  eltwise_abs = dnnl_eltwise_abs,
502  eltwise_sqrt = dnnl_eltwise_sqrt,
504  eltwise_swish = dnnl_eltwise_swish,
506  eltwise_linear = dnnl_eltwise_linear,
508  eltwise_bounded_relu = dnnl_eltwise_bounded_relu,
510  eltwise_soft_relu = dnnl_eltwise_soft_relu,
512  eltwise_logsigmoid = dnnl_eltwise_logsigmoid,
514  eltwise_logistic = dnnl_eltwise_logistic,
516  eltwise_exp = dnnl_eltwise_exp,
519  eltwise_gelu = dnnl_eltwise_gelu,
521  eltwise_gelu_tanh = dnnl_eltwise_gelu_tanh,
523  eltwise_gelu_erf = dnnl_eltwise_gelu_erf,
525  eltwise_log = dnnl_eltwise_log,
527  eltwise_clip = dnnl_eltwise_clip,
529  eltwise_clip_v2 = dnnl_eltwise_clip_v2,
531  eltwise_pow = dnnl_eltwise_pow,
533  eltwise_round = dnnl_eltwise_round,
535  eltwise_relu_use_dst_for_bwd = dnnl_eltwise_relu_use_dst_for_bwd,
537  eltwise_tanh_use_dst_for_bwd = dnnl_eltwise_tanh_use_dst_for_bwd,
539  eltwise_elu_use_dst_for_bwd = dnnl_eltwise_elu_use_dst_for_bwd,
541  eltwise_sqrt_use_dst_for_bwd = dnnl_eltwise_sqrt_use_dst_for_bwd,
543  eltwise_logistic_use_dst_for_bwd = dnnl_eltwise_logistic_use_dst_for_bwd,
545  eltwise_exp_use_dst_for_bwd = dnnl_eltwise_exp_use_dst_for_bwd,
547  eltwise_clip_v2_use_dst_for_bwd = dnnl_eltwise_clip_v2_use_dst_for_bwd,
549  lrn_across_channels = dnnl_lrn_across_channels,
551  lrn_within_channel = dnnl_lrn_within_channel,
553  pooling_max = dnnl_pooling_max,
556  pooling_avg = dnnl_pooling_avg,
558  pooling_avg_include_padding = dnnl_pooling_avg_include_padding,
560  pooling_avg_exclude_padding = dnnl_pooling_avg_exclude_padding,
562  vanilla_rnn = dnnl_vanilla_rnn,
564  vanilla_lstm = dnnl_vanilla_lstm,
566  vanilla_gru = dnnl_vanilla_gru,
572  lbr_gru = dnnl_lbr_gru,
574  binary_add = dnnl_binary_add,
576  binary_mul = dnnl_binary_mul,
578  binary_max = dnnl_binary_max,
580  binary_min = dnnl_binary_min,
582  binary_div = dnnl_binary_div,
584  binary_sub = dnnl_binary_sub,
586  resampling_nearest = dnnl_resampling_nearest,
588  resampling_linear = dnnl_resampling_linear,
590  reduction_max = dnnl_reduction_max,
592  reduction_min = dnnl_reduction_min,
594  reduction_sum = dnnl_reduction_sum,
596  reduction_mul = dnnl_reduction_mul,
598  reduction_mean = dnnl_reduction_mean,
600  reduction_norm_lp_max = dnnl_reduction_norm_lp_max,
602  reduction_norm_lp_sum = dnnl_reduction_norm_lp_sum,
604  reduction_norm_lp_power_p_max = dnnl_reduction_norm_lp_power_p_max,
607 };
608 
613  return static_cast<dnnl_alg_kind_t>(aalgorithm);
614 }
615 
617 
620 
622 enum class normalization_flags : unsigned {
628 
636  use_global_stats = dnnl_use_global_stats,
637 
643  use_scale_shift = dnnl_use_scaleshift,
644 
650 };
651 
656  return static_cast<dnnl_normalization_flags_t>(flags);
657 }
658 
660 
663 
665 enum class rnn_flags : unsigned {
668 };
669 
674  return static_cast<dnnl_rnn_flags_t>(flags);
675 }
676 
677 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
678  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
679  return static_cast<enum_name>( \
680  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
681  } \
682 \
683  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
684  return static_cast<enum_name>( \
685  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
686  } \
687 \
688  inline enum_name operator^(enum_name lhs, enum_name rhs) { \
689  return static_cast<enum_name>( \
690  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
691  } \
692 \
693  inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
694  lhs = static_cast<enum_name>( \
695  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
696  return lhs; \
697  } \
698 \
699  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
700  lhs = static_cast<enum_name>( \
701  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
702  return lhs; \
703  } \
704 \
705  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
706  lhs = static_cast<enum_name>( \
707  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
708  return lhs; \
709  } \
710 \
711  inline enum_name operator~(enum_name rhs) { \
712  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
713  }
714 
715 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
716 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
717 
718 enum class rnn_direction {
721  unidirectional_left2right = dnnl_unidirectional_left2right,
723  unidirectional_right2left = dnnl_unidirectional_right2left,
726  bidirectional_concat = dnnl_bidirectional_concat,
729  bidirectional_sum = dnnl_bidirectional_sum,
732 };
733 
738  return static_cast<dnnl_rnn_direction_t>(dir);
739 }
740 
742 
745 
752 enum class query {
755 
760 
762  num_of_inputs_s32 = dnnl_query_num_of_inputs_s32,
764  num_of_outputs_s32 = dnnl_query_num_of_outputs_s32,
765 
767  time_estimate_f64 = dnnl_query_time_estimate_f64,
771  memory_consumption_s64 = dnnl_query_memory_consumption_s64,
772 
777 
779  reorder_src_engine = dnnl_query_reorder_src_engine,
781  reorder_dst_engine = dnnl_query_reorder_dst_engine,
782 
785 
788 
790  op_d = dnnl_query_op_d,
792  convolution_d = dnnl_query_convolution_d,
794  deconvolution_d = dnnl_query_deconvolution_d,
796  shuffle_d = dnnl_query_shuffle_d,
798  eltwise_d = dnnl_query_eltwise_d,
800  softmax_d = dnnl_query_softmax_d,
802  pooling_d = dnnl_query_pooling_d,
804  lrn_d = dnnl_query_lrn_d,
806  batch_normalization_d = dnnl_query_batch_normalization_d,
808  layer_normalization_d = dnnl_query_layer_normalization_d,
810  inner_product_d = dnnl_query_inner_product_d,
812  rnn_d = dnnl_query_rnn_d,
814  binary_d = dnnl_query_binary_d,
816  logsoftmax_d = dnnl_query_logsoftmax_d,
818  matmul_d = dnnl_query_matmul_d,
820  resampling_d = dnnl_query_resampling_d,
822  reduction_d = dnnl_query_reduction_d,
823 
825  src_md = dnnl_query_src_md,
827  diff_src_md = dnnl_query_diff_src_md,
829  weights_md = dnnl_query_weights_md,
831  diff_weights_md = dnnl_query_diff_weights_md,
833  dst_md = dnnl_query_dst_md,
835  diff_dst_md = dnnl_query_diff_dst_md,
837  workspace_md = dnnl_query_workspace_md,
839  scratchpad_md = dnnl_query_scratchpad_md,
842 };
843 
848  return static_cast<dnnl_query_t>(aquery);
849 }
850 
852 
854 
865 
867 template <>
868 struct handle_traits<dnnl_engine_t> {
869  static dnnl_status_t destructor(dnnl_engine_t p) {
870  return dnnl_engine_destroy(p);
871  }
872 };
874 
876 struct engine : public handle<dnnl_engine_t> {
877  friend struct primitive;
878  friend struct reorder;
879 
881  enum class kind {
885  cpu = dnnl_cpu,
887  gpu = dnnl_gpu,
888  };
889 
890  using handle::handle;
891 
894  engine() = default;
895 
900  static size_t get_count(kind akind) {
901  return dnnl_engine_get_count(convert_to_c(akind));
902  }
903 
909  engine(kind akind, size_t index) {
912  dnnl_engine_create(&engine, convert_to_c(akind), index),
913  "could not create an engine");
914  reset(engine);
915  }
916 
917 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
918  engine(kind akind, cl_device_id device, cl_context context) {
925  dnnl_engine_t c_engine;
926  error::wrap_c_api(dnnl_engine_create_ocl(&c_engine, convert_to_c(akind),
927  device, context),
928  "could not create an engine");
929  reset(c_engine);
930  }
931 #endif
932 
938  dnnl_engine_t c_engine;
941  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
942  "could not get an engine from a primitive_desc");
943  reset(c_engine, true);
944  }
945 
948  kind get_kind() const {
951  "could not get kind of an engine");
952  return static_cast<engine::kind>(kind);
953  }
954 
955 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
956  cl_context get_ocl_context() const {
959  cl_context context = nullptr;
961  "could not get an OpenCL context from an engine");
962  return context;
963  }
964 
967  cl_device_id get_ocl_device() const {
968  cl_device_id device = nullptr;
970  "could not get an OpenCL device from an engine");
971  return device;
972  }
973 #endif
974 
980  template <typename primitive_desc>
981  static engine query(const primitive_desc &pd) {
982  return query(pd, dnnl::query::engine);
983  }
984 
985 private:
986  static dnnl_engine_kind_t convert_to_c(kind akind) {
987  return static_cast<dnnl_engine_kind_t>(akind);
988  }
989 
990  template <typename primitive_desc>
991  static engine query(const primitive_desc &pd, dnnl::query what) {
992  dnnl_engine_t c_engine;
994  dnnl::convert_to_c(what), 0, &c_engine),
995  "could not get an engine from a primitive_desc");
996  return engine(c_engine, true);
997  }
998 };
999 
1005  return static_cast<dnnl_engine_kind_t>(akind);
1006 }
1007 
1009 
1017 
1019 template <>
1020 struct handle_traits<dnnl_stream_t> {
1021  static dnnl_status_t destructor(dnnl_stream_t p) {
1022  return dnnl_stream_destroy(p);
1023  }
1024 };
1025 template <>
1026 struct handle_traits<dnnl_stream_attr_t> {
1027  static dnnl_status_t destructor(dnnl_stream_attr_t p) {
1028  return dnnl_stream_attr_destroy(p);
1029  }
1030 };
1032 
1034 struct stream_attr : public handle<dnnl_stream_attr_t> {
1035  using handle::handle;
1036 
1038  stream_attr() = default;
1039 
1045  dnnl_stream_attr_t attr;
1047  "could not create stream attributes");
1048  reset(attr);
1049  }
1050 
1051 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
1052  void set_threadpool(threadpool_iface *threadpool) {
1060  error::wrap_c_api(dnnl_stream_attr_set_threadpool(get(), threadpool),
1061  "could not set stream threadpool attribute");
1062  }
1063 
1070  threadpool_iface *tp;
1071  error::wrap_c_api(dnnl_stream_attr_get_threadpool(get(), (void **)&tp),
1072  "could not set stream threadpool attribute");
1073  return tp;
1074  }
1075 #endif
1076 };
1077 
1079 struct stream : public handle<dnnl_stream_t> {
1080  using handle::handle;
1081 
1083  enum class flags : unsigned {
1093  };
1094 
1097  stream() = default;
1098 
1105  stream(const engine &aengine, flags aflags = flags::default_flags,
1106  const stream_attr &attr = stream_attr()) {
1109  static_cast<dnnl_stream_flags_t>(aflags),
1110  attr.get(true)),
1111  "could not create a stream");
1112  reset(stream);
1113  }
1114 
1115 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1116  stream(const engine &aengine, cl_command_queue queue) {
1122  error::wrap_c_api(dnnl_stream_create_ocl(&stream, aengine.get(), queue),
1123  "could not create a stream");
1124  reset(stream);
1125  }
1126 #endif
1127 
1129  engine get_engine() const {
1130  dnnl_engine_t c_engine;
1132  "could not get an engine from a stream object");
1133  return engine(c_engine, true);
1134  }
1135 
1136 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1137  cl_command_queue get_ocl_command_queue() const {
1140  cl_command_queue queue = nullptr;
1142  "could not get an OpenCL command queue from a stream");
1143  return queue;
1144  }
1145 #endif
1146 
1151  dnnl_stream_wait(get()), "could not wait on a stream");
1152  return *this;
1153  }
1154 };
1155 
1156 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1157 
1158 
1223 
1230 struct memory : public handle<dnnl_memory_t> {
1232  typedef dnnl_dim_t dim;
1235  typedef std::vector<dim> dims;
1236 
1243  template <typename T>
1244  static void validate_dims(const std::vector<T> &v, int min_size = 0) {
1245  validate_container_size(
1246  v, "dimensions are invalid", min_size, DNNL_MAX_NDIMS);
1247  }
1248 
1250  enum class data_type {
1254  f16 = dnnl_f16,
1257  bf16 = dnnl_bf16,
1259  f32 = dnnl_f32,
1261  s32 = dnnl_s32,
1263  s8 = dnnl_s8,
1265  u8 = dnnl_u8,
1266  };
1267 
1269  enum class format_kind {
1274  any = dnnl_format_kind_any,
1278  blocked = dnnl_blocked,
1280  wino = dnnl_format_kind_wino,
1282  packed = dnnl_format_kind_rnn_packed,
1283  };
1284 
1325  enum class format_tag {
1330  any = dnnl_format_tag_any,
1331 
1333  a = dnnl_a,
1334 
1336  ab = dnnl_ab,
1338  ba = dnnl_ba,
1339 
1341  abc = dnnl_abc,
1343  acb = dnnl_acb,
1345  bac = dnnl_bac,
1347  bca = dnnl_bca,
1349  cba = dnnl_cba,
1350 
1352  abcd = dnnl_abcd,
1354  abdc = dnnl_abdc,
1356  acdb = dnnl_acdb,
1358  bacd = dnnl_bacd,
1360  bcda = dnnl_bcda,
1362  cdba = dnnl_cdba,
1364  dcab = dnnl_dcab,
1365 
1367  abcde = dnnl_abcde,
1369  abdec = dnnl_abdec,
1371  acbde = dnnl_acbde,
1373  acdeb = dnnl_acdeb,
1375  bacde = dnnl_bacde,
1377  bcdea = dnnl_bcdea,
1379  cdeba = dnnl_cdeba,
1381  decab = dnnl_decab,
1383  abced = dnnl_abced,
1384 
1386  abcdef = dnnl_abcdef,
1388  abdfce = dnnl_abdfce,
1390  acbdef = dnnl_acbdef,
1392  defcab = dnnl_defcab,
1394  abcdfe = dnnl_abcdfe,
1395 
1397  abcdefg = dnnl_abcdefg,
1399  abcdegf = dnnl_abcdegf,
1400 
1402  abcdefgh = dnnl_abcdefgh,
1404  abcdefhg = dnnl_abcdefhg,
1405 
1407  abcdefghi = dnnl_abcdefghi,
1409  abcdefgih = dnnl_abcdefgih,
1410 
1412  abcdefghij = dnnl_abcdefghij,
1414  abcdefghji = dnnl_abcdefghji,
1415 
1417  abcdefghijk = dnnl_abcdefghijk,
1419  abcdefghikj = dnnl_abcdefghikj,
1420 
1422  abcdefghijkl = dnnl_abcdefghijkl,
1424  abcdefghijlk = dnnl_abcdefghijlk,
1425 
1427  x = a,
1429  nc = ab,
1431  cn = ba,
1433  tn = ab,
1435  nt = ba,
1437  ncw = abc,
1439  nwc = acb,
1441  nchw = abcd,
1443  nhwc = acdb,
1445  chwn = bcda,
1447  ncdhw = abcde,
1449  ndhwc = acdeb,
1450 
1452  oi = ab,
1454  io = ba,
1456  oiw = abc,
1458  owi = acb,
1460  wio = cba,
1462  iwo = bca,
1464  oihw = abcd,
1466  hwio = cdba,
1468  ohwi = acdb,
1470  ihwo = bcda,
1472  iohw = bacd,
1474  oidhw = abcde,
1476  dhwio = cdeba,
1478  odhwi = acdeb,
1480  iodhw = bacde,
1482  idhwo = bcdea,
1483 
1485  goiw = abcd,
1487  wigo = dcab,
1489  goihw = abcde,
1491  hwigo = decab,
1493  giohw = acbde,
1495  goidhw = abcdef,
1497  giodhw = acbdef,
1499  dhwigo = defcab,
1500 
1502  tnc = abc,
1504  ntc = bac,
1507  ldnc = abcd,
1514  ldigo = abcde,
1521  ldgoi = abdec,
1524  ldio = abcd,
1527  ldoi = abdc,
1534  ldgo = abcd,
1535 
1536  // Opaque blocked formats
1537 
1538  AB16b16a = dnnl_AB16b16a,
1539  AB16b32a = dnnl_AB16b32a,
1540  AB16b64a = dnnl_AB16b64a,
1541  AB8b16a2b = dnnl_AB8b16a2b,
1542  AB8b32a2b = dnnl_AB8b32a2b,
1543  AB8b64a2b = dnnl_AB8b64a2b,
1544  AB4b16a4b = dnnl_AB4b16a4b,
1545  AB4b32a4b = dnnl_AB4b32a4b,
1546  AB4b64a4b = dnnl_AB4b64a4b,
1547  AB16b16a4b = dnnl_AB16b16a4b,
1548  Abc16a = dnnl_Abc16a,
1549  ABc16a16b = dnnl_ABc16a16b,
1550  ABc4a4b = dnnl_ABc4a4b,
1551  aBc16b = dnnl_aBc16b,
1552  aBc32b = dnnl_aBc32b,
1553  ABc16b16a = dnnl_ABc16b16a,
1554  ABc16b32a = dnnl_ABc16b32a,
1555  ABc16b64a = dnnl_ABc16b64a,
1556  Abc4a = dnnl_Abc4a,
1557  aBc4b = dnnl_aBc4b,
1558  ABc4b16a4b = dnnl_ABc4b16a4b,
1559  ABc4b32a4b = dnnl_ABc4b32a4b,
1560  ABc4b64a4b = dnnl_ABc4b64a4b,
1561  ABc2b8a4b = dnnl_ABc2b8a4b,
1562  ABc16b16a4b = dnnl_ABc16b16a4b,
1563  ABc16b16a2b = dnnl_ABc16b16a2b,
1564  ABc4b4a = dnnl_ABc4b4a,
1565  ABc8a16b2a = dnnl_ABc8a16b2a,
1566  ABc8a8b = dnnl_ABc8a8b,
1567  ABc8a4b = dnnl_ABc8a4b,
1568  aBc8b = dnnl_aBc8b,
1569  ABc8b16a2b = dnnl_ABc8b16a2b,
1570  ABc8b32a2b = dnnl_ABc8b32a2b,
1571  ABc8b64a2b = dnnl_ABc8b64a2b,
1572  ABc8b8a = dnnl_ABc8b8a,
1573  Abcd8a = dnnl_Abcd8a,
1574  Abcd16a = dnnl_Abcd16a,
1575  Abcd32a = dnnl_Abcd32a,
1576  ABcd16a16b = dnnl_ABcd16a16b,
1577  aBcd16b = dnnl_aBcd16b,
1578  aBcd32b = dnnl_aBcd32b,
1579  ABcd16b16a = dnnl_ABcd16b16a,
1580  ABcd16b32a = dnnl_ABcd16b32a,
1581  ABcd16b64a = dnnl_ABcd16b64a,
1582  aBCd16b16c = dnnl_aBCd16b16c,
1583  aBCd16c16b = dnnl_aBCd16c16b,
1584  Abcd4a = dnnl_Abcd4a,
1585  aBcd4b = dnnl_aBcd4b,
1586  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1587  ABcd4b32a4b = dnnl_ABcd4b32a4b,
1588  ABcd4b64a4b = dnnl_ABcd4b64a4b,
1589  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1590  ABcd4b4a = dnnl_ABcd4b4a,
1591  ABcd4a4b = dnnl_ABcd4a4b,
1592  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1593  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1594  ABcd16b16a4b = dnnl_ABcd16b16a4b,
1595  ABcd16b16a2b = dnnl_ABcd16b16a2b,
1596  aBCd16c16b4c = dnnl_aBCd16c16b4c,
1597  aBCd16c16b2c = dnnl_aBCd16c16b2c,
1598  aBCd4c4b = dnnl_aBCd4c4b,
1599  aBCd4b4c = dnnl_aBCd4b4c,
1600  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1601  ABcd8a8b = dnnl_ABcd8a8b,
1602  ABcd8a4b = dnnl_ABcd8a4b,
1604  aBcd8b = dnnl_aBcd8b,
1605  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1606  ABcd8b32a2b = dnnl_ABcd8b32a2b,
1607  ABcd8b64a2b = dnnl_ABcd8b64a2b,
1608  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1610  ABcd8b8a = dnnl_ABcd8b8a,
1611  aBCd8b8c = dnnl_aBCd8b8c,
1612  aBCd8b4c = dnnl_aBCd8b4c,
1613  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1614  aBCd8c8b = dnnl_aBCd8c8b,
1615  Abcde16a = dnnl_Abcde16a,
1616  Abcde32a = dnnl_Abcde32a,
1617  ABcde16a16b = dnnl_ABcde16a16b,
1618  aBcde16b = dnnl_aBcde16b,
1619  aBcde32b = dnnl_aBcde32b,
1620  ABcde16b16a = dnnl_ABcde16b16a,
1621  ABcde16b32a = dnnl_ABcde16b32a,
1622  ABcde16b64a = dnnl_ABcde16b64a,
1623  aBCde16b16c = dnnl_aBCde16b16c,
1624  aBCde16c16b = dnnl_aBCde16c16b,
1625  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1626  Abcde4a = dnnl_Abcde4a,
1627  aBcde4b = dnnl_aBcde4b,
1628  ABcde4b4a = dnnl_ABcde4b4a,
1629  ABcde4a4b = dnnl_ABcde4a4b,
1630  aBCde4b4c = dnnl_aBCde4b4c,
1631  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1632  aBCde16c16b4c = dnnl_aBCde16c16b4c,
1633  aBCde16c16b2c = dnnl_aBCde16c16b2c,
1634  aBCde4c4b = dnnl_aBCde4c4b,
1635  Abcde8a = dnnl_Abcde8a,
1636  ABcde8a8b = dnnl_ABcde8a8b,
1637  ABcde8a4b = dnnl_ABcde8a4b,
1638  aBcde8b = dnnl_aBcde8b,
1639  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1640  ABcde8b32a2b = dnnl_ABcde8b32a2b,
1641  ABcde8b64a2b = dnnl_ABcde8b64a2b,
1642  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1643  ABcde4b32a4b = dnnl_ABcde4b32a4b,
1644  ABcde4b64a4b = dnnl_ABcde4b64a4b,
1645  ABcde16b16a4b = dnnl_ABcde16b16a4b,
1646  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1647  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1648  ABcde8b8a = dnnl_ABcde8b8a,
1649  aBCde8b8c = dnnl_aBCde8b8c,
1650  aBCde8b4c = dnnl_aBCde8b4c,
1651  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1652  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1653  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1654  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1655  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1656  aBCde8c8b = dnnl_aBCde8c8b,
1657  aBcdef16b = dnnl_aBcdef16b,
1658  aBCdef16b16c = dnnl_aBCdef16b16c,
1659  aBCdef16c16b = dnnl_aBCdef16c16b,
1660  aBcdef4b = dnnl_aBcdef4b,
1661  aBCdef2c8b4c = dnnl_aBCdef2c8b4c,
1662  aBCdef4c4b = dnnl_aBCdef4c4b,
1663  aBCdef4b4c = dnnl_aBCdef4b4c,
1664  aBCdef8b8c = dnnl_aBCdef8b8c,
1665  aBCdef8b4c = dnnl_aBCdef8b4c,
1666  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1667  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1668  aBCdef8c8b = dnnl_aBCdef8c8b,
1669  aBdc16b = dnnl_aBdc16b,
1670  aBdc4b = dnnl_aBdc4b,
1671  aBdc8b = dnnl_aBdc8b,
1672  aBdec16b = dnnl_aBdec16b,
1673  aBdec4b = dnnl_aBdec4b,
1674  aBdec8b = dnnl_aBdec8b,
1675  aBdefc16b = dnnl_aBdefc16b,
1676  aCBdef16c16b = dnnl_aCBdef16c16b,
1677  aCBdef16b16c = dnnl_aCBdef16b16c,
1678  aBdefc4b = dnnl_aBdefc4b,
1679  aBdefc8b = dnnl_aBdefc8b,
1680  Acb16a = dnnl_Acb16a,
1681  Acb4a = dnnl_Acb4a,
1682  Acb8a = dnnl_Acb8a,
1683  aCBd16b16c = dnnl_aCBd16b16c,
1684  aCBd16c16b = dnnl_aCBd16c16b,
1685  aCBde16b16c = dnnl_aCBde16b16c,
1686  aCBde16c16b = dnnl_aCBde16c16b,
1687  Acdb16a = dnnl_Acdb16a,
1688  Acdb4a = dnnl_Acdb4a,
1689  Acdb8a = dnnl_Acdb8a,
1690  Acdeb16a = dnnl_Acdeb16a,
1691  Acdeb4a = dnnl_Acdeb4a,
1692  Acdeb8a = dnnl_Acdeb8a,
1693  BAc16a16b = dnnl_BAc16a16b,
1694  BAc16b16a = dnnl_BAc16b16a,
1695  BAcd16a16b = dnnl_BAcd16a16b,
1696  BAcd16b16a = dnnl_BAcd16b16a,
1697  ABcd32a32b = dnnl_ABcd32a32b,
1698  BAcde16b16a = dnnl_BAcde16b16a,
1699  BAcde16a16b = dnnl_BAcde16a16b,
1700  aBdec32b = dnnl_aBdec32b,
1701  Abcdef16a = dnnl_Abcdef16a,
1702  Abcdef32a = dnnl_Abcdef32a,
1703  Acdb32a = dnnl_Acdb32a,
1704  aBCd2b4c2b = dnnl_aBCd2b4c2b,
1705  aBCde2b4c2b = dnnl_aBCde2b4c2b,
1706  aBCdef2b4c2b = dnnl_aBCdef2b4c2b,
1707  aBCd2c4b2c = dnnl_aBCd2c4b2c,
1708  aBCde2c4b2c = dnnl_aBCde2c4b2c,
1709  aBCdef2c4b2c = dnnl_aBCdef2c4b2c,
1710  aBCd4b8c2b = dnnl_aBCd4b8c2b,
1711  aBCde4b8c2b = dnnl_aBCde4b8c2b,
1712  aBCdef4b8c2b = dnnl_aBCdef4b8c2b,
1713  aBCd4c8b2c = dnnl_aBCd4c8b2c,
1714  aBCde4c8b2c = dnnl_aBCde4c8b2c,
1715  aBCdef4c8b2c = dnnl_aBCdef4c8b2c,
1716  AB32a32b8a4b = dnnl_AB32a32b8a4b,
1717  AB32a32b8a2b = dnnl_AB32a32b8a2b,
1718  AB8a4b = dnnl_AB8a4b,
1719  AB8a2b = dnnl_AB8a2b,
1720  abDc32d = dnnl_abDc32d,
1721  abDC32d4c = dnnl_abDC32d4c,
1722  abdEc32e = dnnl_abdEc32e,
1723  abdEC32e2c = dnnl_abdEC32e2c,
1724  abdEC32e4c = dnnl_abdEC32e4c,
1725 
1726  format_tag_last = dnnl_format_tag_last,
1727 
1728  nCdhw16c = dnnl_nCdhw16c,
1729  nCdhw4c = dnnl_nCdhw4c,
1730  nCdhw8c = dnnl_nCdhw8c,
1731  nChw16c = dnnl_nChw16c,
1732  nChw4c = dnnl_nChw4c,
1733  nChw8c = dnnl_nChw8c,
1734  nCw16c = dnnl_nCw16c,
1735  nCw4c = dnnl_nCw4c,
1736  nCw8c = dnnl_nCw8c,
1737  NCw16n16c = dnnl_NCw16n16c,
1738  NChw16n16c = dnnl_NChw16n16c,
1739  NCdhw16n16c = dnnl_NCdhw16n16c,
1740  NCdhw32n32c = dnnl_NCdhw32n32c,
1741  NChw32n32c = dnnl_NChw32n32c,
1742  IOhw16i16o = dnnl_IOhw16i16o,
1743  OI16i16o = dnnl_OI16i16o,
1744  OI16i32o = dnnl_OI16i32o,
1745  OI16i64o = dnnl_OI16i64o,
1746  OI8i16o2i = dnnl_OI8i16o2i,
1747  OI8i32o2i = dnnl_OI8i32o2i,
1748  OI8i64o2i = dnnl_OI8i64o2i,
1749  OI4i16o4i = dnnl_OI4i16o4i,
1750  OI4i32o4i = dnnl_OI4i32o4i,
1751  OI4i64o4i = dnnl_OI4i64o4i,
1752  OI16i16o4i = dnnl_OI16i16o4i,
1753  Ohwi32o = dnnl_Ohwi32o,
1754  IOdhw16i16o = dnnl_IOdhw16i16o,
1755  gIOhw16i16o = dnnl_gIOhw16i16o,
1756  gOhwi32o = dnnl_gOhwi32o,
1757  Goidhw16g = dnnl_Goidhw16g,
1758  IOw16o16i = dnnl_IOw16o16i,
1759  OIw16i16o = dnnl_OIw16i16o,
1760  OIw16i32o = dnnl_OIw16i32o,
1761  OIw16i64o = dnnl_OIw16i64o,
1762  IOw16i16o = dnnl_IOw16i16o,
1763  gIOw16i16o = dnnl_gIOw16i16o,
1764  OIw16o16i = dnnl_OIw16o16i,
1765  Oiw16o = dnnl_Oiw16o,
1766  OIw4i16o4i = dnnl_OIw4i16o4i,
1767  OIw4i32o4i = dnnl_OIw4i32o4i,
1768  OIw4i64o4i = dnnl_OIw4i64o4i,
1769  OIw16i16o4i = dnnl_OIw16i16o4i,
1770  OIw2i8o4i = dnnl_OIw2i8o4i,
1771  OIw4i4o = dnnl_OIw4i4o,
1772  OIw4o4i = dnnl_OIw4o4i,
1773  Oiw4o = dnnl_Oiw4o,
1774  OIw8i16o2i = dnnl_OIw8i16o2i,
1775  OIw8i32o2i = dnnl_OIw8i32o2i,
1776  OIw8i64o2i = dnnl_OIw8i64o2i,
1777  OIw8i8o = dnnl_OIw8i8o,
1778  OIw8o16i2o = dnnl_OIw8o16i2o,
1779  OIw8o8i = dnnl_OIw8o8i,
1780  OIw8o4i = dnnl_OIw8o4i,
1781  Owi16o = dnnl_Owi16o,
1782  OwI16o2i = dnnl_OwI16o2i,
1783  Owi4o = dnnl_Owi4o,
1784  Owi8o = dnnl_Owi8o,
1785  IOhw16o16i = dnnl_IOhw16o16i,
1786  Ohwi16o = dnnl_Ohwi16o,
1787  OhwI16o2i = dnnl_OhwI16o2i,
1788  Ohwi4o = dnnl_Ohwi4o,
1789  Ohwi8o = dnnl_Ohwi8o,
1790  OIhw16i16o = dnnl_OIhw16i16o,
1791  OIhw16i32o = dnnl_OIhw16i32o,
1792  OIhw16i64o = dnnl_OIhw16i64o,
1793  OIhw16o16i = dnnl_OIhw16o16i,
1794  Oihw16o = dnnl_Oihw16o,
1795  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1796  OIhw4i32o4i = dnnl_OIhw4i32o4i,
1797  OIhw4i64o4i = dnnl_OIhw4i64o4i,
1798  OIhw4i4o = dnnl_OIhw4i4o,
1799  OIhw4o4i = dnnl_OIhw4o4i,
1800  Oihw4o = dnnl_Oihw4o,
1801  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1802  OIhw8i32o2i = dnnl_OIhw8i32o2i,
1803  OIhw8i64o2i = dnnl_OIhw8i64o2i,
1804  OIhw8i8o = dnnl_OIhw8i8o,
1805  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1806  OIhw8o8i = dnnl_OIhw8o8i,
1807  OIhw8o4i = dnnl_OIhw8o4i,
1808  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1809  IOdhw16o16i = dnnl_IOdhw16o16i,
1810  Odhwi16o = dnnl_Odhwi16o,
1811  OdhwI16o2i = dnnl_OdhwI16o2i,
1812  Odhwi4o = dnnl_Odhwi4o,
1813  Odhwi8o = dnnl_Odhwi8o,
1814  OIdhw16i16o = dnnl_OIdhw16i16o,
1815  OIdhw16i32o = dnnl_OIdhw16i32o,
1816  OIdhw16i64o = dnnl_OIdhw16i64o,
1817  OIdhw16o16i = dnnl_OIdhw16o16i,
1818  Oidhw16o = dnnl_Oidhw16o,
1819  OIdhw4i4o = dnnl_OIdhw4i4o,
1820  OIdhw4o4i = dnnl_OIdhw4o4i,
1821  Oidhw4o = dnnl_Oidhw4o,
1822  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1823  OIdhw8i32o2i = dnnl_OIdhw8i32o2i,
1824  OIdhw8i64o2i = dnnl_OIdhw8i64o2i,
1825  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1826  OIdhw16i16o4i = dnnl_OIdhw16i16o4i,
1827  OIdhw4i32o4i = dnnl_OIdhw4i32o4i,
1828  OIdhw4i64o4i = dnnl_OIdhw4i64o4i,
1829  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1830  OIdhw8i8o = dnnl_OIdhw8i8o,
1831  OIdhw8o8i = dnnl_OIdhw8o8i,
1832  OIdhw8o4i = dnnl_OIdhw8o4i,
1833  gIOw16o16i = dnnl_gIOw16o16i,
1834  gOIw16i16o = dnnl_gOIw16i16o,
1835  gOIw16o16i = dnnl_gOIw16o16i,
1836  gOiw16o = dnnl_gOiw16o,
1837  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1838  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1839  gOIw4i4o = dnnl_gOIw4i4o,
1840  gOIw4o4i = dnnl_gOIw4o4i,
1841  gOiw4o = dnnl_gOiw4o,
1842  gOIw8i16o2i = dnnl_gOIw8i16o2i,
1843  gOIw8i8o = dnnl_gOIw8i8o,
1844  gOIw8o16i2o = dnnl_gOIw8o16i2o,
1845  gOIw8o8i = dnnl_gOIw8o8i,
1846  gOIw8o4i = dnnl_gOIw8o4i,
1847  gOwi16o = dnnl_gOwi16o,
1848  gOwI16o2i = dnnl_gOwI16o2i,
1849  gOwi4o = dnnl_gOwi4o,
1850  gOwi8o = dnnl_gOwi8o,
1851  Goiw8g = dnnl_Goiw8g,
1852  Goiw16g = dnnl_Goiw16g,
1853  gIOhw16o16i = dnnl_gIOhw16o16i,
1854  gOhwi16o = dnnl_gOhwi16o,
1855  gOhwI16o2i = dnnl_gOhwI16o2i,
1856  gOhwi4o = dnnl_gOhwi4o,
1857  gOhwi8o = dnnl_gOhwi8o,
1858  Goihw16g = dnnl_Goihw16g,
1859  gOIhw16i16o = dnnl_gOIhw16i16o,
1860  gOIhw16o16i = dnnl_gOIhw16o16i,
1861  gOihw16o = dnnl_gOihw16o,
1862  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1863  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1864  gOIhw4i4o = dnnl_gOIhw4i4o,
1865  gOIhw4o4i = dnnl_gOIhw4o4i,
1866  gOihw4o = dnnl_gOihw4o,
1867  Goihw8g = dnnl_Goihw8g,
1868  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1869  gOIhw8i8o = dnnl_gOIhw8i8o,
1870  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1871  OIw4o8i8o4i = dnnl_OIw4o8i8o4i,
1872  OIdhw4o8i8o4i = dnnl_OIdhw4o8i8o4i,
1873  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1874  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1875  gOIw4o8i8o4i = dnnl_gOIw4o8i8o4i,
1876  gOIdhw4o8i8o4i = dnnl_gOIdhw4o8i8o4i,
1877  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1878  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1879  OIhw16i16o4i = dnnl_OIhw16i16o4i,
1880  OIhw16i16o2i = dnnl_OIhw16i16o2i,
1881  gOIhw16i16o4i = dnnl_gOIhw16i16o4i,
1882  gOIhw16i16o2i = dnnl_gOIhw16i16o2i,
1883  gOIhw8o8i = dnnl_gOIhw8o8i,
1884  gOIhw8o4i = dnnl_gOIhw8o4i,
1885  gIOdhw16i16o = dnnl_gIOdhw16i16o,
1886  gIOdhw16o16i = dnnl_gIOdhw16o16i,
1887  gOdhwi16o = dnnl_gOdhwi16o,
1888  gOdhwI16o2i = dnnl_gOdhwI16o2i,
1889  gOdhwi4o = dnnl_gOdhwi4o,
1890  gOdhwi8o = dnnl_gOdhwi8o,
1891  gOIdhw16i16o = dnnl_gOIdhw16i16o,
1892  gOIdhw16o16i = dnnl_gOIdhw16o16i,
1893  gOidhw16o = dnnl_gOidhw16o,
1894  gOIdhw4i4o = dnnl_gOIdhw4i4o,
1895  gOIdhw4o4i = dnnl_gOIdhw4o4i,
1896  gOidhw4o = dnnl_gOidhw4o,
1897  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1898  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
1899  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
1900  gOIdhw8i8o = dnnl_gOIdhw8i8o,
1901  gOIdhw8o8i = dnnl_gOIdhw8o8i,
1902  gOIdhw8o4i = dnnl_gOIdhw8o4i,
1903  gOIw2i4o2i = dnnl_gOIw2i4o2i,
1904  gOIhw2i4o2i = dnnl_gOIhw2i4o2i,
1905  gOIdhw2i4o2i = dnnl_gOIdhw2i4o2i,
1906  gOIw2o4i2o = dnnl_gOIw2o4i2o,
1907  gOIhw2o4i2o = dnnl_gOIhw2o4i2o,
1908  gOIdhw2o4i2o = dnnl_gOIdhw2o4i2o,
1909  gOIw4i8o2i = dnnl_gOIw4i8o2i,
1910  gOIhw4i8o2i = dnnl_gOIhw4i8o2i,
1911  gOIdhw4i8o2i = dnnl_gOIdhw4i8o2i,
1912  gOIw4o8i2o = dnnl_gOIw4o8i2o,
1913  gOIhw4o8i2o = dnnl_gOIhw4o8i2o,
1914  gOIdhw4o8i2o = dnnl_gOIdhw4o8i2o,
1915  ldOi32o = abDc32d,
1916  ldOI32o4i = abDC32d4c,
1917  ldgOi32o = abdEc32e,
1918  ldgOI32o2i = abdEC32e2c,
1919  ldgOI32o4i = abdEC32e4c,
1920  };
1921 
1923  struct desc {
1924  friend struct memory;
1927 
1930  desc() : data() {}
1931 
1947  desc(const dims &adims, data_type adata_type, format_tag aformat_tag,
1948  bool allow_empty = false)
1949  : data() {
1950  validate_dims(adims);
1952  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1953  convert_to_c(aformat_tag));
1954  if (!allow_empty)
1956  "could not construct a memory descriptor using a "
1957  "format tag");
1958  }
1959 
1975  desc(const dims &adims, data_type adata_type, const dims &strides,
1976  bool allow_empty = false)
1977  : data() {
1978  validate_dims(adims);
1979  if (!strides.empty()) validate_dims(strides, (int)adims.size());
1981  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1982  strides.empty() ? nullptr : &strides[0]);
1983  if (!allow_empty)
1985  "could not construct a memory descriptor using "
1986  "strides");
1987  }
1988 
1992  desc(const dnnl_memory_desc_t &data) : data(data) {}
1993 
1996  //
2005  desc submemory_desc(const dims &adims, const dims &offsets,
2006  bool allow_empty = false) const {
2007  validate_dims(adims, data.ndims);
2008  validate_dims(offsets, data.ndims);
2011  &sub_md, &data, adims.data(), offsets.data());
2012  if (!allow_empty)
2013  error::wrap_c_api(status, "could not construct a sub-memory");
2014  return desc(sub_md);
2015  }
2016 
2061  desc reshape(const dims &adims, bool allow_empty = false) const {
2062  if (data.ndims) validate_dims(adims, 1);
2065  &out_md, &data, (int)adims.size(), adims.data());
2066  if (!allow_empty)
2068  status, "could not reshape a memory descriptor");
2069  return desc(out_md);
2070  }
2071 
2109  desc permute_axes(const std::vector<int> &permutation,
2110  bool allow_empty = false) const {
2111  validate_dims(permutation, data.ndims);
2114  &out_md, &data, permutation.data());
2115  if (!allow_empty)
2117  "could not permute axes of a memory descriptor");
2118  return desc(out_md);
2119  }
2120 
2125  memory::dims dims() const {
2126  return memory::dims(data.dims, data.dims + data.ndims);
2127  }
2128 
2132  return static_cast<memory::data_type>(data.data_type);
2133  }
2134 
2139  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
2140 
2144  bool is_zero() const { return data.ndims == 0; }
2145 
2150  bool operator==(const desc &other) const {
2151  return dnnl_memory_desc_equal(&data, &other.data) != 0;
2152  }
2153 
2158  bool operator!=(const desc &other) const { return !operator==(other); }
2159 
2163  explicit operator bool() const { return data.ndims != 0; }
2164  };
2165 
2170  memory() = default;
2171 
2191  memory(const desc &md, const engine &aengine, void *handle) {
2192  dnnl_memory_t result;
2194  dnnl_memory_create(&result, &md.data, aengine.get(), handle),
2195  "could not create a memory object");
2196  reset(result);
2197  }
2198 
2205  memory(const desc &md, const engine &aengine)
2206  : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
2207 
2209  desc get_desc() const {
2210  const dnnl_memory_desc_t *cdesc;
2212  "could not get a memory descriptor from a memory object");
2213  return desc(*cdesc);
2214  }
2215 
2217  engine get_engine() const {
2218  dnnl_engine_t c_engine;
2219  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2220  "could not get an engine from a memory object");
2221  return engine(c_engine, true);
2222  }
2223 
2227  void *get_data_handle() const {
2228  void *handle;
2230  "could not get a native handle from a memory object");
2231  return handle;
2232  }
2233 
2262  void set_data_handle(void *handle, const stream &astream) const {
2264  get(), handle, astream.get(true)),
2265  "could not set native handle of a memory object");
2266  }
2267 
2278  void set_data_handle(void *handle) const {
2280  dnnl_memory_set_data_handle_v2(get(), handle, nullptr),
2281  "could not set native handle of a memory object");
2282  }
2283 
2305  template <typename T = void>
2306  T *map_data() const {
2307  void *mapped_ptr;
2308  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2309  "could not map memory object data");
2310  return static_cast<T *>(mapped_ptr);
2311  }
2312 
2323  void unmap_data(void *mapped_ptr) const {
2324  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2325  "could not unmap memory object data");
2326  }
2327 
2328 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
2329  cl_mem get_ocl_mem_object() const {
2331  cl_mem mem_object;
2333  "could not get OpenCL buffer object from a memory object");
2334  return mem_object;
2335  }
2336 
2344  void set_ocl_mem_object(cl_mem mem_object) {
2346  "could not set OpenCL buffer object from a memory object");
2347  }
2348 #endif
2349 
2350  static dnnl_data_type_t convert_to_c(data_type adata_type) {
2351  return static_cast<dnnl_data_type_t>(adata_type);
2352  }
2353  static dnnl_format_tag_t convert_to_c(format_tag format) {
2354  return static_cast<dnnl_format_tag_t>(format);
2355  }
2356 };
2357 
2358 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2359  return a == memory::convert_to_c(b);
2360 }
2361 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2362  return !(a == b);
2363 }
2364 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2365  return b == a;
2366 }
2367 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2368  return !(a == b);
2369 }
2370 
2371 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2372  return a == memory::convert_to_c(b);
2373 }
2374 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2375  return !(a == b);
2376 }
2377 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2378  return b == a;
2379 }
2380 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2381  return !(a == b);
2382 }
2383 
2385 
2393 
2395 template <>
2396 struct handle_traits<dnnl_post_ops_t> {
2397  static dnnl_status_t destructor(dnnl_post_ops_t p) {
2398  return dnnl_post_ops_destroy(p);
2399  }
2400 };
2402 
2410 struct post_ops : public handle<dnnl_post_ops_t> {
2412 
2415  dnnl_post_ops_t result;
2417  dnnl_post_ops_create(&result), "could not create post-ops");
2418  reset(result);
2419  }
2420 
2422  int len() const { return dnnl_post_ops_len(get()); }
2423 
2427  primitive::kind kind(int index) const {
2429  "post-ops index is out of range");
2430  return static_cast<primitive::kind>(
2431  dnnl_post_ops_get_kind(get(), index));
2432  }
2433 
2462  void append_sum(float scale = 1.f,
2464  if (data_type == memory::data_type::undef)
2466  "could not append a sum post-op");
2467  else
2469  memory::convert_to_c(data_type)),
2470  "could not append a sum post-op");
2471  }
2472 
2477  void get_params_sum(int index, float &scale) const {
2479  "could not get parameters of a sum post-op");
2480  }
2481 
2488  int index, float &scale, memory::data_type &data_type) const {
2489  dnnl_data_type_t c_data_type;
2491  get(), index, &scale, &c_data_type),
2492  "could not get parameters of a sum post-op");
2493  data_type = static_cast<memory::data_type>(c_data_type);
2494  }
2495 
2510  float scale, algorithm aalgorithm, float alpha, float beta) {
2512  convert_to_c(aalgorithm), alpha, beta),
2513  "could not append an elementwise post-op");
2514  }
2515 
2523  void get_params_eltwise(int index, float &scale, algorithm &aalgorithm,
2524  float &alpha, float &beta) const {
2525  dnnl_alg_kind_t c_alg;
2527  get(), index, &scale, &c_alg, &alpha, &beta),
2528  "could not get parameters of an elementwise post-op");
2529  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2530  }
2531 
2560  void append_dw_k3s1p1(memory::data_type weights_data_type,
2561  memory::data_type bias_data_type, memory::data_type dst_data_type,
2562  int mask, const std::vector<float> &scales) {
2563 
2565  memory::convert_to_c(weights_data_type),
2566  memory::convert_to_c(bias_data_type),
2567  memory::convert_to_c(dst_data_type),
2568  scales.size(), mask, &scales[0]),
2569  "could not append depthwise post-op");
2570  }
2571 
2586  void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type,
2587  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2588  int &mask, std::vector<float> &scales) const {
2589 
2590  dnnl_data_type_t c_weights_data_type;
2591  dnnl_data_type_t c_bias_data_type;
2592  dnnl_data_type_t c_dst_data_type;
2593  dnnl_dim_t count;
2594  int c_mask;
2595  const float *c_scales;
2597  &c_weights_data_type, &c_bias_data_type,
2598  &c_dst_data_type, &count, &c_mask, &c_scales),
2599  "could not get parameters of depthwise post-op");
2600 
2601  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2602  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2603  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2604  scales.resize(count);
2605 
2606  mask = c_mask;
2607  for (dnnl_dim_t c = 0; c < count; ++c)
2608  scales[c] = c_scales[c];
2609  return;
2610  }
2611 
2645  void append_dw_k3s2p1(memory::data_type weights_data_type,
2646  memory::data_type bias_data_type, memory::data_type dst_data_type,
2647  int mask, const std::vector<float> &scales) {
2648 
2650  memory::convert_to_c(weights_data_type),
2651  memory::convert_to_c(bias_data_type),
2652  memory::convert_to_c(dst_data_type),
2653  scales.size(), mask, &scales[0]),
2654  "could not append depthwise post-op");
2655  }
2656 
2671  void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type,
2672  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2673  int &mask, std::vector<float> &scales) const {
2674 
2675  dnnl_data_type_t c_weights_data_type;
2676  dnnl_data_type_t c_bias_data_type;
2677  dnnl_data_type_t c_dst_data_type;
2678  dnnl_dim_t count;
2679  int c_mask;
2680  const float *c_scales;
2682  &c_weights_data_type, &c_bias_data_type,
2683  &c_dst_data_type, &count, &c_mask, &c_scales),
2684  "could not get parameters of depthwise post-op");
2685 
2686  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2687  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2688  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2689  scales.resize(count);
2690 
2691  mask = c_mask;
2692  for (dnnl_dim_t c = 0; c < count; ++c)
2693  scales[c] = c_scales[c];
2694  return;
2695  }
2696 
2711  void append_binary(algorithm aalgorithm, const memory::desc &src1_desc) {
2713  convert_to_c(aalgorithm), &src1_desc.data),
2714  "could not append a binary post-op");
2715  }
2716 
2723  int index, algorithm &aalgorithm, memory::desc &src1_desc) const {
2724  dnnl_alg_kind_t c_alg;
2725  const dnnl_memory_desc_t *data;
2727  dnnl_post_ops_get_params_binary(get(), index, &c_alg, &data),
2728  "could not get parameters of a binary post-op");
2729  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2730  src1_desc.data = *data;
2731  }
2732 };
2733 
2735 template <>
2736 struct handle_traits<dnnl_primitive_attr_t> {
2737  static dnnl_status_t destructor(dnnl_primitive_attr_t p) {
2738  return dnnl_primitive_attr_destroy(p);
2739  }
2740 };
2742 
2746 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
2748 
2751  dnnl_primitive_attr_t result;
2753  "could not create primitive attribute");
2754  reset(result);
2755  }
2756 
2763  : handle<dnnl_primitive_attr_t>(attr) {}
2764 
2767  dnnl_scratchpad_mode_t result;
2770  "could not get scratchpad mode primitive attribute");
2771  return scratchpad_mode(result);
2772  }
2773 
2779  get(), dnnl::convert_to_c(mode)),
2780  "could not set scratchpad mode primitive attribute");
2781  }
2782 
2792  void get_output_scales(int &mask, std::vector<float> &scales) const {
2793  dnnl_dim_t count;
2794  int c_mask;
2795  const float *c_scales;
2797  get(), &count, &c_mask, &c_scales),
2798  "could not get output scales primitive attribute");
2799  scales.resize(count);
2800 
2801  mask = c_mask;
2802  for (dnnl_dim_t c = 0; c < count; ++c)
2803  scales[c] = c_scales[c];
2804  }
2805 
2848  void set_output_scales(int mask, const std::vector<float> &scales) {
2851  get(), (dnnl_dim_t)scales.size(), mask, scales.data()),
2852  "could not set output scales primitive attribute");
2853  }
2854 
2866  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
2867  dnnl_dim_t count;
2868  int c_mask;
2869  const float *c_scales;
2871  get(), arg, &count, &c_mask, &c_scales),
2872  "could not get scales primitive attributes");
2873  scales.resize(count);
2874 
2875  mask = c_mask;
2876  for (dnnl_dim_t c = 0; c < count; ++c)
2877  scales[c] = c_scales[c];
2878  }
2879 
2896  void set_scales(int arg, int mask, const std::vector<float> &scales) {
2899  (dnnl_dim_t)scales.size(), mask, scales.data()),
2900  "could not set scales primitive attribute");
2901  }
2902 
2914  int arg, int &mask, std::vector<int32_t> &zero_points) const {
2915  dnnl_dim_t count;
2916  int c_mask;
2917  const int32_t *c_zero_points;
2919  get(), arg, &count, &c_mask, &c_zero_points),
2920  "could not get zero points primitive attribute");
2921  zero_points.resize(count);
2922 
2923  mask = c_mask;
2924  for (dnnl_dim_t c = 0; c < count; ++c)
2925  zero_points[c] = c_zero_points[c];
2926  }
2927 
2949  int arg, int mask, const std::vector<int32_t> &zero_points) {
2951  (dnnl_dim_t)zero_points.size(), mask,
2952  zero_points.data()),
2953  "could not set zero points primitive attribute");
2954  }
2955 
2959  const post_ops get_post_ops() const {
2960  post_ops result;
2961  const_dnnl_post_ops_t c_result;
2963  "could not get post-ops primitive attribute");
2964  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
2965  return result;
2966  }
2967 
2976  void set_post_ops(const post_ops ops) {
2978  "could not set post-ops primitive attribute");
2979  }
2980 
3014  void set_rnn_data_qparams(float scale, float shift) {
3017  "could not set RNN data quantization parameters primitive "
3018  "attribute");
3019  }
3020 
3030  void get_rnn_data_qparams(float &scale, float &shift) {
3031  float c_scale, c_shift;
3033  get(), &c_scale, &c_shift),
3034  "could not set RNN data quantization parameters primitive "
3035  "attribute");
3036  scale = c_scale;
3037  shift = c_shift;
3038  }
3039 
3066  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
3068  (int)scales.size(), mask, scales.data()),
3069  "could not set RNN weights quantization parameters primitive "
3070  "attribute");
3071  }
3072 
3092  void get_rnn_weights_qparams(int &mask, std::vector<float> &scales) {
3093  dnnl_dim_t count;
3094  int c_mask;
3095  const float *c_scales;
3097  get(), &count, &c_mask, &c_scales),
3098  "could not get primitive RNN weights quantization "
3099  "parameters attributes");
3100  scales.resize(count);
3101 
3102  mask = c_mask;
3103  for (dnnl_dim_t c = 0; c < count; c++)
3104  scales[c] = c_scales[c];
3105  }
3106 
3108  // The low-precision configuration of the RNN primitives expect input
3109  // weights to use the signed 8-bit integer data type. The scaling factors
3110  // are used to quantize floating-point data to signed integer and must be
3134  int mask, const std::vector<float> &scales) {
3137  get(), (int)scales.size(), mask, scales.data()),
3138  "could not set primitive RNN weights projection quantization "
3139  "parameters attributes");
3140  }
3141 
3162  int &mask, std::vector<float> &scales) {
3163  dnnl_dim_t count;
3164  int c_mask;
3165  const float *c_scales;
3168  get(), &count, &c_mask, &c_scales),
3169  "could not get primitive RNN weights projection quantization "
3170  "parameters attributes");
3171  scales.resize(count);
3172 
3173  mask = c_mask;
3174  for (dnnl_dim_t c = 0; c < count; c++)
3175  scales[c] = c_scales[c];
3176  }
3177 };
3178 
3180 
3183 
3185 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
3187 
3189  primitive_desc_base() = default;
3190 
3193  engine get_engine() const { return engine::query(*this); }
3194 
3197  const char *impl_info_str() const {
3198  const char *res;
3200  get(), dnnl_query_impl_info_str, 0, &res),
3201  "could not retrieve implementation info string from a "
3202  "primitive descriptor");
3203  return res;
3204  }
3205 
3210  memory::dim res;
3212  get(), dnnl::convert_to_c(what), 0, &res);
3213  return status == dnnl_success ? res : 0;
3214  }
3215 
3230  memory::desc query_md(query what, int idx = 0) const {
3231  std::vector<query> valid_q {query::src_md, query::diff_src_md,
3232  query::weights_md, query::diff_weights_md, query::dst_md,
3233  query::diff_dst_md, query::workspace_md, query::scratchpad_md,
3235  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
3236  [=](query q) { return what == q; }))
3237  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3238  "memory descriptor query is invalid");
3239 
3241  get(), dnnl::convert_to_c(what), idx);
3242  return cdesc ? memory::desc(*cdesc) : memory::desc();
3243  }
3244 
3250  memory::desc src_desc(int idx) const {
3251  return query_md(query::src_md, idx);
3252  }
3253 
3259  memory::desc dst_desc(int idx) const {
3260  return query_md(query::dst_md, idx);
3261  }
3262 
3268  memory::desc weights_desc(int idx) const {
3269  return query_md(query::weights_md, idx);
3270  }
3271 
3277  memory::desc diff_src_desc(int idx) const {
3278  return query_md(query::diff_src_md, idx);
3279  }
3280 
3286  memory::desc diff_dst_desc(int idx) const {
3287  return query_md(query::diff_dst_md, idx);
3288  }
3289 
3296  return query_md(query::diff_weights_md, idx);
3297  }
3298 
3299  // Separate versions without the index argument for documentation
3300  // purposes.
3301 
3306  memory::desc src_desc() const { return src_desc(0); }
3307 
3312  memory::desc dst_desc() const { return dst_desc(0); }
3313 
3318  memory::desc weights_desc() const { return weights_desc(0); }
3319 
3325 
3331 
3337 
3343  return query_md(query::workspace_md, 0);
3344  }
3345 
3352  return query_md(query::scratchpad_md, 0);
3353  }
3354 
3358  dnnl_engine_t c_engine;
3361  0, &c_engine),
3362  "could not retrieve scratchpad engine from a primitive "
3363  "descriptor");
3364  return engine(c_engine, true);
3365  }
3366 
3370  const_dnnl_primitive_attr_t const_c_attr;
3372  "could not get attributes from a primitive descriptor");
3373  dnnl_primitive_attr_t c_attr;
3374  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
3375  "could not clone primitive attributes");
3376  return primitive_attr(c_attr);
3377  }
3378 
3382  dnnl_primitive_kind_t kind;
3384  dnnl_query_primitive_kind, 0, (void *)&kind),
3385  "could not get primitive kind from a primitive descriptor");
3386  return static_cast<dnnl::primitive::kind>(kind);
3387  }
3388 
3389 protected:
3394  dnnl_primitive_desc_t new_pd;
3396  "could not clone a primitive descriptor");
3397  reset(new_pd);
3398  }
3399 
3415  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
3416 
3429  dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
3430  : primitive_desc_base(pd, prim_kind, aprop_kind, aprop_kind) {}
3431 
3446  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
3447  dnnl::prop_kind prop_kind2) {
3448  // It is OK to pass an empty primitive descriptor
3449  if (pd == nullptr) return;
3450 
3451  dnnl_status_t rc;
3452 
3453  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
3454  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
3455  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
3456 
3457  // Check that primitive kind matches
3458  dnnl_primitive_kind_t pd_kind;
3460  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
3462  rc, "could not get primitive kind from a primitive descriptor");
3463  if (pd_kind != c_prim_kind)
3464  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3465  "primitive descriptor operation kind mismatch");
3466 
3467  // Check that propagation kind matches
3468  dnnl_prop_kind_t pd_prop_kind;
3470  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
3471 
3472  // Something went wrong
3473  if (rc != dnnl_success && rc != dnnl_unimplemented)
3474  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3475  "could not get propagation kind from the primitive "
3476  "descriptor");
3477 
3478  // Everything is fine
3479  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
3480  || (rc == dnnl_success
3481  && (pd_prop_kind == c_prop_kind1
3482  || pd_prop_kind == c_prop_kind2))) {
3483  reset_with_clone(pd);
3484  return;
3485  }
3486 
3487  // We could get the propagation kind but there is a mismatch
3488  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3489  "primitive descriptor propagation kind mismatch");
3490  }
3491 
3492  using base = primitive_desc_base;
3493 };
3494 
3496 
3505 
3507 struct reorder : public primitive {
3511 
3513  primitive_desc() = default;
3514 
3532  primitive_desc(const engine &src_engine, const memory::desc &src_md,
3533  const engine &dst_engine, const memory::desc &dst_md,
3534  const primitive_attr &attr = primitive_attr(),
3535  bool allow_empty = false) {
3536  dnnl_primitive_desc_t result;
3538  &src_md.data, src_engine.get(), &dst_md.data,
3539  dst_engine.get(), attr.get());
3540  if (!allow_empty)
3542  "could not create a primitive descriptor for a reorder "
3543  "primitive");
3545  }
3546 
3558  primitive_desc(const memory &src, const memory &dst,
3559  const primitive_attr &attr = primitive_attr(),
3560  bool allow_empty = false) {
3561  dnnl_primitive_desc_t result;
3562  auto src_md = src.get_desc();
3563  auto dst_md = dst.get_desc();
3565  &src_md.data, src.get_engine().get(), &dst_md.data,
3566  dst.get_engine().get(), attr.get());
3567  if (!allow_empty)
3569  "could not create a primitive descriptor for a reorder "
3570  "primitive");
3572  }
3573 
3580 
3584  return engine::query(*this, dnnl::query::reorder_src_engine);
3585  }
3586 
3590  return engine::query(*this, dnnl::query::reorder_dst_engine);
3591  }
3592 
3594  memory::desc src_desc() const { return base::src_desc(0); }
3595 
3597  memory::desc dst_desc() const { return base::dst_desc(0); }
3598  };
3599 
3601  reorder() = default;
3602 
3605  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
3606 
3614  reorder(const memory &src, const memory &dst,
3615  const primitive_attr &attr = primitive_attr())
3616  : primitive(primitive_desc(src, dst, attr).get()) {}
3617 
3618  using primitive::execute;
3619 
3626  void execute(const stream &astream, memory &src, memory &dst) const {
3627  primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
3628  }
3629 };
3630 
3632 
3640 
3642 inline std::vector<dnnl_memory_desc_t> convert_to_c(
3643  const std::vector<memory::desc> &mems) {
3644  std::vector<dnnl_memory_desc_t> c_mems;
3645  c_mems.reserve(mems.size());
3646  for (const auto &s : mems)
3647  c_mems.push_back(s.data);
3648  return c_mems;
3649 }
3651 
3653 struct concat : public primitive {
3657 
3659  primitive_desc() = default;
3660 
3671  primitive_desc(const memory::desc &dst, int concat_dimension,
3672  const std::vector<memory::desc> &srcs, const engine &aengine,
3673  const primitive_attr &attr = primitive_attr()) {
3674  auto c_srcs = convert_to_c(srcs);
3675 
3676  dnnl_primitive_desc_t result;
3679  (int)c_srcs.size(), concat_dimension, c_srcs.data(),
3680  attr.get(), aengine.get()),
3681  "could not create a primitive descriptor for a concat "
3682  "primitive");
3683  reset(result);
3684  }
3685 
3698  primitive_desc(int concat_dimension,
3699  const std::vector<memory::desc> &srcs, const engine &aengine,
3700  const primitive_attr &attr = primitive_attr()) {
3701  auto c_api_srcs = convert_to_c(srcs);
3702 
3703  dnnl_primitive_desc_t result;
3705  dnnl_concat_primitive_desc_create(&result, nullptr,
3706  (int)c_api_srcs.size(), concat_dimension,
3707  c_api_srcs.data(), attr.get(), aengine.get()),
3708  "could not create a primitive descriptor for a concat "
3709  "primitive");
3710  reset(result);
3711  }
3712 
3719 
3721  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3722 
3724  memory::desc dst_desc() const { return base::dst_desc(0); }
3725  };
3726 
3728  concat() = default;
3729 
3732  concat(const primitive_desc &pd) : primitive(pd.get()) {}
3733 };
3734 
3736 
3744 
3746 struct sum : public primitive {
3750 
3752  primitive_desc() = default;
3753 
3763  const std::vector<float> &scales,
3764  const std::vector<memory::desc> &srcs, const engine &aengine,
3765  const primitive_attr &attr = primitive_attr()) {
3766  validate_container_size(scales,
3767  "counts of scales and sources are not equal",
3768  (int)srcs.size(), (int)srcs.size());
3769 
3770  auto c_api_srcs = convert_to_c(srcs);
3771 
3772  dnnl_primitive_desc_t result;
3774  dnnl_sum_primitive_desc_create(&result, &dst.data,
3775  (int)c_api_srcs.size(), scales.data(),
3776  c_api_srcs.data(), attr.get(), aengine.get()),
3777  "could not create a primitive descriptor for a sum "
3778  "primitive");
3779  reset(result);
3780  }
3781 
3792  primitive_desc(const std::vector<float> &scales,
3793  const std::vector<memory::desc> &srcs, const engine &aengine,
3794  const primitive_attr &attr = primitive_attr()) {
3795  validate_container_size(scales,
3796  "counts of scales and sources are not equal",
3797  (int)srcs.size(), (int)srcs.size());
3798 
3799  auto c_api_srcs = convert_to_c(srcs);
3800  dnnl_primitive_desc_t result;
3802  dnnl_sum_primitive_desc_create(&result, nullptr,
3803  (int)c_api_srcs.size(), scales.data(),
3804  c_api_srcs.data(), attr.get(), aengine.get()),
3805  "could not create a primitive descriptor for a sum "
3806  "primitive");
3807  reset(result);
3808  }
3809 
3816 
3818  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3819 
3821  memory::desc dst_desc() const { return base::dst_desc(0); }
3822  };
3823 
3825  sum() = default;
3826 
3829  sum(const primitive_desc &pd) : primitive(pd.get()) {}
3830 };
3831 
3833 
3836 
3841 
3842  primitive_desc() = default;
3843 
3867  const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd,
3868  bool allow_empty = false)
3869  : allow_empty_(allow_empty) {
3870  dnnl_primitive_desc_iterator_t iterator = nullptr;
3872  desc, attr ? attr->get() : nullptr, aengine.get(), hint_fwd_pd);
3873  if (!allow_empty)
3875  status, "could not create a primitive descriptor iterator");
3876  pd_iterator.reset(iterator);
3877  fetch_impl();
3878  }
3879 
3884  bool next_impl() {
3886  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3887  if (status == dnnl_iterator_ends) return false;
3889  status, "could not advance a primitive descriptor iterator");
3890  fetch_impl();
3891  return true;
3892  }
3893 
3894 private:
3895  bool allow_empty_ = false;
3897  void fetch_impl() {
3899  pd_iterator.get(allow_empty_));
3900  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3902  "could not fetch a primitive descriptor from a primitive "
3903  "descriptor iterator");
3904  reset(pd);
3905  }
3906 };
3907 
3909 
3919 
3923  struct desc {
3925 
3956  desc(prop_kind aprop_kind, algorithm aalgorithm,
3957  const memory::desc &src_desc, const memory::desc &weights_desc,
3958  const memory::desc &bias_desc, const memory::desc &dst_desc,
3959  const memory::dims &strides, const memory::dims &padding_l,
3960  const memory::dims &padding_r) {
3961  memory::validate_dims(strides, src_desc.data.ndims - 2);
3962  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3963  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3966  dnnl::convert_to_c(aprop_kind),
3967  convert_to_c(aalgorithm), &src_desc.data,
3968  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3969  &strides[0], &padding_l[0], &padding_r[0]),
3970  "could not create a descriptor for a convolution forward "
3971  "propagation primitive");
3972  }
3973 
4002  desc(prop_kind aprop_kind, algorithm aalgorithm,
4003  const memory::desc &src_desc, const memory::desc &weights_desc,
4004  const memory::desc &dst_desc, const memory::dims &strides,
4005  const memory::dims &padding_l, const memory::dims &padding_r) {
4006  memory::validate_dims(strides, src_desc.data.ndims - 2);
4007  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4008  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4011  dnnl::convert_to_c(aprop_kind),
4012  convert_to_c(aalgorithm), &src_desc.data,
4013  &weights_desc.data, nullptr, &dst_desc.data,
4014  &strides[0], &padding_l[0], &padding_r[0]),
4015  "could not create a descriptor for a convolution forward "
4016  "propagation primitive");
4017  }
4018 
4051  desc(prop_kind aprop_kind, algorithm aalgorithm,
4052  const memory::desc &src_desc, const memory::desc &weights_desc,
4053  const memory::desc &bias_desc, const memory::desc &dst_desc,
4054  const memory::dims &strides, const memory::dims &dilates,
4055  const memory::dims &padding_l, const memory::dims &padding_r) {
4056  memory::validate_dims(strides, src_desc.data.ndims - 2);
4057  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4058  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4059  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4061  dnnl::convert_to_c(aprop_kind),
4062  convert_to_c(aalgorithm), &src_desc.data,
4063  &weights_desc.data, &bias_desc.data,
4064  &dst_desc.data, &strides[0], &dilates[0],
4065  &padding_l[0], &padding_r[0]),
4066  "could not create a descriptor for a dilated convolution "
4067  "forward propagation primitive");
4068  }
4069 
4100  desc(prop_kind aprop_kind, algorithm aalgorithm,
4101  const memory::desc &src_desc, const memory::desc &weights_desc,
4102  const memory::desc &dst_desc, const memory::dims &strides,
4103  const memory::dims &dilates, const memory::dims &padding_l,
4104  const memory::dims &padding_r) {
4105  memory::validate_dims(strides, src_desc.data.ndims - 2);
4106  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4107  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4108  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4110  dnnl::convert_to_c(aprop_kind),
4111  convert_to_c(aalgorithm), &src_desc.data,
4112  &weights_desc.data, nullptr,
4113  &dst_desc.data, &strides[0], &dilates[0],
4114  &padding_l[0], &padding_r[0]),
4115  "could not create a descriptor for a dilated convolution "
4116  "forward propagation primitive");
4117  }
4118  };
4119 
4123  primitive_desc() = default;
4124 
4135  primitive_desc(const desc &adesc, const engine &aengine,
4136  bool allow_empty = false)
4137  : dnnl::primitive_desc(
4138  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4139 
4151  primitive_desc(const desc &adesc, const primitive_attr &attr,
4152  const engine &aengine, bool allow_empty = false)
4153  : dnnl::primitive_desc(
4154  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4155 
4163  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4164  dnnl::prop_kind::forward_training,
4165  dnnl::prop_kind::forward_inference) {}
4166 
4168  memory::desc src_desc() const { return base::src_desc(0); }
4169 
4172 
4174  memory::desc dst_desc() const { return base::dst_desc(0); }
4175 
4181  };
4182 
4184  convolution_forward() = default;
4185 
4190 };
4191 
4194 
4196  struct desc {
4198 
4224  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4225  const memory::desc &weights_desc,
4226  const memory::desc &diff_dst_desc, const memory::dims &strides,
4227  const memory::dims &padding_l, const memory::dims &padding_r) {
4228  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4229  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4230  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4233  convert_to_c(aalgorithm), &diff_src_desc.data,
4234  &weights_desc.data, &diff_dst_desc.data,
4235  &strides[0], &padding_l[0], &padding_r[0]),
4236  "could not create a descriptor for a convolution backward "
4237  "propagation primitive");
4238  }
4239 
4267  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4268  const memory::desc &weights_desc,
4269  const memory::desc &diff_dst_desc, const memory::dims &strides,
4270  const memory::dims &dilates, const memory::dims &padding_l,
4271  const memory::dims &padding_r) {
4272  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4273  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4274  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4275  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4278  convert_to_c(aalgorithm), &diff_src_desc.data,
4279  &weights_desc.data, &diff_dst_desc.data,
4280  &strides[0], &dilates[0], &padding_l[0],
4281  &padding_r[0]),
4282  "could not create a descriptor for a dilated convolution "
4283  "backward propagation primitive");
4284  }
4285  };
4286 
4290  primitive_desc() = default;
4291 
4305  primitive_desc(const desc &adesc, const engine &aengine,
4306  const convolution_forward::primitive_desc &hint_fwd_pd,
4307  bool allow_empty = false)
4308  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4309  hint_fwd_pd.get(), allow_empty) {}
4310 
4325  primitive_desc(const desc &adesc, const primitive_attr &attr,
4326  const engine &aengine,
4327  const convolution_forward::primitive_desc &hint_fwd_pd,
4328  bool allow_empty = false)
4329  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4330  hint_fwd_pd.get(), allow_empty) {}
4331 
4339  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4340  dnnl::prop_kind::backward_data) {}
4341 
4344 
4347 
4350  };
4351 
4354 
4359 };
4360 
4364  struct desc {
4366 
4394  desc(algorithm aalgorithm, const memory::desc &src_desc,
4395  const memory::desc &diff_weights_desc,
4396  const memory::desc &diff_bias_desc,
4397  const memory::desc &diff_dst_desc, const memory::dims &strides,
4398  const memory::dims &padding_l, const memory::dims &padding_r) {
4399  memory::validate_dims(strides, src_desc.data.ndims - 2);
4400  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4401  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4404  convert_to_c(aalgorithm), &src_desc.data,
4405  &diff_weights_desc.data, &diff_bias_desc.data,
4406  &diff_dst_desc.data, &strides[0], &padding_l[0],
4407  &padding_r[0]),
4408  "could not create a descriptor for a convolution weights "
4409  "update primitive");
4410  }
4411 
4437  desc(algorithm aalgorithm, const memory::desc &src_desc,
4438  const memory::desc &diff_weights_desc,
4439  const memory::desc &diff_dst_desc, const memory::dims &strides,
4440  const memory::dims &padding_l, const memory::dims &padding_r) {
4441  memory::validate_dims(strides, src_desc.data.ndims - 2);
4442  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4443  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4445  convert_to_c(aalgorithm), &src_desc.data,
4446  &diff_weights_desc.data, nullptr,
4447  &diff_dst_desc.data, &strides[0],
4448  &padding_l[0], &padding_r[0]),
4449  "could not create a descriptor for a convolution weights "
4450  "update primitive");
4451  }
4452 
4482  desc(algorithm aalgorithm, const memory::desc &src_desc,
4483  const memory::desc &diff_weights_desc,
4484  const memory::desc &diff_bias_desc,
4485  const memory::desc &diff_dst_desc, const memory::dims &strides,
4486  const memory::dims &dilates, const memory::dims &padding_l,
4487  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);
4494  convert_to_c(aalgorithm), &src_desc.data,
4495  &diff_weights_desc.data, &diff_bias_desc.data,
4496  &diff_dst_desc.data, &strides[0], &dilates[0],
4497  &padding_l[0], &padding_r[0]),
4498  "could not create a descriptor for a dilated convolution "
4499  "weights gradient primitive");
4500  }
4501 
4529  desc(algorithm aalgorithm, const memory::desc &src_desc,
4530  const memory::desc &diff_weights_desc,
4531  const memory::desc &diff_dst_desc, const memory::dims &strides,
4532  const memory::dims &dilates, const memory::dims &padding_l,
4533  const memory::dims &padding_r) {
4534  memory::validate_dims(strides, src_desc.data.ndims - 2);
4535  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4536  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4537  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4540  convert_to_c(aalgorithm), &src_desc.data,
4541  &diff_weights_desc.data, nullptr,
4542  &diff_dst_desc.data, &strides[0], &dilates[0],
4543  &padding_l[0], &padding_r[0]),
4544  "could not create a descriptor for a dilated convolution "
4545  "weights gradient primitive");
4546  }
4547  };
4548 
4552  primitive_desc() = default;
4553 
4566  primitive_desc(const desc &adesc, const engine &aengine,
4567  const convolution_forward::primitive_desc &hint_fwd_pd,
4568  bool allow_empty = false)
4569  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4570  hint_fwd_pd.get(), allow_empty) {}
4571 
4585  primitive_desc(const desc &adesc, const primitive_attr &attr,
4586  const engine &aengine,
4587  const convolution_forward::primitive_desc &hint_fwd_pd,
4588  bool allow_empty = false)
4589  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4590  hint_fwd_pd.get(), allow_empty) {}
4591 
4599  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4600  dnnl::prop_kind::backward_weights) {}
4601 
4603  memory::desc src_desc() const { return base::src_desc(0); }
4604 
4607  return base::diff_weights_desc(0);
4608  }
4609 
4612 
4618  return base::diff_weights_desc(1);
4619  }
4620  };
4621 
4624 
4629 };
4630 
4632 //
4640 
4644  struct desc {
4646 
4676  desc(prop_kind aprop_kind, algorithm aalgorithm,
4677  const memory::desc &src_desc, const memory::desc &weights_desc,
4678  const memory::desc &bias_desc, const memory::desc &dst_desc,
4679  const memory::dims &strides, const memory::dims &padding_l,
4680  const memory::dims &padding_r) {
4681  memory::validate_dims(strides, src_desc.data.ndims - 2);
4682  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4683  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4686  dnnl::convert_to_c(aprop_kind),
4687  convert_to_c(aalgorithm), &src_desc.data,
4688  &weights_desc.data, &bias_desc.data, &dst_desc.data,
4689  &strides[0], &padding_l[0], &padding_r[0]),
4690  "could not create a descriptor for a deconvolution forward "
4691  "propagation primitive");
4692  }
4693 
4721  desc(prop_kind aprop_kind, algorithm aalgorithm,
4722  const memory::desc &src_desc, const memory::desc &weights_desc,
4723  const memory::desc &dst_desc, const memory::dims &strides,
4724  const memory::dims &padding_l, const memory::dims &padding_r) {
4725  memory::validate_dims(strides, src_desc.data.ndims - 2);
4726  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4727  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4730  dnnl::convert_to_c(aprop_kind),
4731  convert_to_c(aalgorithm), &src_desc.data,
4732  &weights_desc.data, nullptr, &dst_desc.data,
4733  &strides[0], &padding_l[0], &padding_r[0]),
4734  "could not create a descriptor for a deconvolution forward "
4735  "propagation primitive");
4736  }
4737 
4769  desc(prop_kind aprop_kind, algorithm aalgorithm,
4770  const memory::desc &src_desc, const memory::desc &weights_desc,
4771  const memory::desc &bias_desc, const memory::desc &dst_desc,
4772  const memory::dims &strides, const memory::dims &dilates,
4773  const memory::dims &padding_l, const memory::dims &padding_r) {
4774  memory::validate_dims(strides, src_desc.data.ndims - 2);
4775  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4776  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4777  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4779  &data, dnnl::convert_to_c(aprop_kind),
4780  convert_to_c(aalgorithm), &src_desc.data,
4781  &weights_desc.data, &bias_desc.data,
4782  &dst_desc.data, &strides[0], &dilates[0],
4783  &padding_l[0], &padding_r[0]),
4784  "could not create a descriptor for a dilated deconvolution "
4785  "forward propagation primitive");
4786  }
4787 
4817  desc(prop_kind aprop_kind, algorithm aalgorithm,
4818  const memory::desc &src_desc, const memory::desc &weights_desc,
4819  const memory::desc &dst_desc, const memory::dims &strides,
4820  const memory::dims &dilates, const memory::dims &padding_l,
4821  const memory::dims &padding_r) {
4822  memory::validate_dims(strides, src_desc.data.ndims - 2);
4823  memory::validate_dims(dilates, 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);
4827  &data, dnnl::convert_to_c(aprop_kind),
4828  convert_to_c(aalgorithm), &src_desc.data,
4829  &weights_desc.data, nullptr,
4830  &dst_desc.data, &strides[0], &dilates[0],
4831  &padding_l[0], &padding_r[0]),
4832  "could not create a descriptor for a dilated deconvolution "
4833  "forward propagation primitive");
4834  }
4835  };
4836 
4840  primitive_desc() = default;
4841 
4852  primitive_desc(const desc &adesc, const engine &aengine,
4853  bool allow_empty = false)
4854  : dnnl::primitive_desc(
4855  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4856 
4868  primitive_desc(const desc &adesc, const primitive_attr &attr,
4869  const engine &aengine, bool allow_empty = false)
4870  : dnnl::primitive_desc(
4871  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4872 
4880  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4881  dnnl::prop_kind::forward_training,
4882  dnnl::prop_kind::forward_inference) {}
4883 
4885  memory::desc src_desc() const { return base::src_desc(0); }
4886 
4889 
4891  memory::desc dst_desc() const { return base::dst_desc(0); }
4892 
4895  };
4896 
4899 
4904 };
4905 
4909  struct desc {
4911 
4936  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4937  const memory::desc &weights_desc,
4938  const memory::desc &diff_dst_desc, const memory::dims &strides,
4939  const memory::dims &padding_l, const memory::dims &padding_r) {
4940  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4941  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4942  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4945  convert_to_c(aalgorithm), &diff_src_desc.data,
4946  &weights_desc.data, &diff_dst_desc.data,
4947  &strides[0], &padding_l[0], &padding_r[0]),
4948  "could not create a descriptor for a deconvolution "
4949  "backward propagation primitive");
4950  }
4951 
4978  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4979  const memory::desc &weights_desc,
4980  const memory::desc &diff_dst_desc, const memory::dims &strides,
4981  const memory::dims &dilates, const memory::dims &padding_l,
4982  const memory::dims &padding_r) {
4983  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4984  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4985  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4986  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4989  convert_to_c(aalgorithm), &diff_src_desc.data,
4990  &weights_desc.data, &diff_dst_desc.data,
4991  &strides[0], &dilates[0], &padding_l[0],
4992  &padding_r[0]),
4993  "could not create a descriptor for a dilated deconvolution "
4994  "backward propagation primitive");
4995  }
4996  };
4997 
5001  primitive_desc() = default;
5002 
5016  primitive_desc(const desc &adesc, const engine &aengine,
5017  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5018  bool allow_empty = false)
5019  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5020  hint_fwd_pd.get(), allow_empty) {}
5021 
5036  primitive_desc(const desc &adesc, const primitive_attr &attr,
5037  const engine &aengine,
5038  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5039  bool allow_empty = false)
5040  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5041  hint_fwd_pd.get(), allow_empty) {}
5042 
5050  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
5051  dnnl::prop_kind::backward_data) {}
5052 
5055 
5058 
5061  };
5062 
5065 
5070 };
5071 
5075  struct desc {
5077 
5104  desc(algorithm aalgorithm, const memory::desc &src_desc,
5105  const memory::desc &diff_weights_desc,
5106  const memory::desc &diff_bias_desc,
5107  const memory::desc &diff_dst_desc, const memory::dims &strides,
5108  const memory::dims &padding_l, const memory::dims &padding_r) {
5109  memory::validate_dims(strides, src_desc.data.ndims - 2);
5110  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5111  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5114  convert_to_c(aalgorithm), &src_desc.data,
5115  &diff_weights_desc.data, &diff_bias_desc.data,
5116  &diff_dst_desc.data, &strides[0], &padding_l[0],
5117  &padding_r[0]),
5118  "could not create a descriptor for a deconvolution weights "
5119  "update primitive");
5120  }
5121 
5146  desc(algorithm aalgorithm, const memory::desc &src_desc,
5147  const memory::desc &diff_weights_desc,
5148  const memory::desc &diff_dst_desc, const memory::dims &strides,
5149  const memory::dims &padding_l, const memory::dims &padding_r) {
5150  memory::validate_dims(strides, src_desc.data.ndims - 2);
5151  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5152  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5154  &data, convert_to_c(aalgorithm),
5155  &src_desc.data, &diff_weights_desc.data,
5156  nullptr, &diff_dst_desc.data, &strides[0],
5157  &padding_l[0], &padding_r[0]),
5158  "could not create a descriptor for a deconvolution weights "
5159  "update primitive");
5160  }
5161 
5190  desc(algorithm aalgorithm, const memory::desc &src_desc,
5191  const memory::desc &diff_weights_desc,
5192  const memory::desc &diff_bias_desc,
5193  const memory::desc &diff_dst_desc, const memory::dims &strides,
5194  const memory::dims &dilates, const memory::dims &padding_l,
5195  const memory::dims &padding_r) {
5196  memory::validate_dims(strides, src_desc.data.ndims - 2);
5197  memory::validate_dims(dilates, src_desc.data.ndims - 2);
5198  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5199  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5202  convert_to_c(aalgorithm), &src_desc.data,
5203  &diff_weights_desc.data, &diff_bias_desc.data,
5204  &diff_dst_desc.data, &strides[0], &dilates[0],
5205  &padding_l[0], &padding_r[0]),
5206  "could not create a descriptor for a dilated deconvolution "
5207  "weights gradient primitive");
5208  }
5209 
5236  desc(algorithm aalgorithm, const memory::desc &src_desc,
5237  const memory::desc &diff_weights_desc,
5238  const memory::desc &diff_dst_desc, const memory::dims &strides,
5239  const memory::dims &dilates, const memory::dims &padding_l,
5240  const memory::dims &padding_r) {
5241  memory::validate_dims(strides, src_desc.data.ndims - 2);
5242  memory::validate_dims(dilates, src_desc.data.ndims - 2);
5243  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5244  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5247  convert_to_c(aalgorithm), &src_desc.data,
5248  &diff_weights_desc.data, nullptr,
5249  &diff_dst_desc.data, &strides[0], &dilates[0],
5250  &padding_l[0], &padding_r[0]),
5251  "could not create a descriptor for a dilated deconvolution "
5252  "weights gradient primitive");
5253  }
5254  };
5255 
5259  primitive_desc() = default;
5260 
5274  primitive_desc(const desc &adesc, const engine &aengine,
5275  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5276  bool allow_empty = false)
5277  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5278  hint_fwd_pd.get(), allow_empty) {}
5279 
5294  primitive_desc(const desc &adesc, const primitive_attr &attr,
5295  const engine &aengine,
5296  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5297  bool allow_empty = false)
5298  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5299  hint_fwd_pd.get(), allow_empty) {}
5300 
5308  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
5309  dnnl::prop_kind::backward_weights) {}
5310 
5312  memory::desc src_desc() const { return base::src_desc(0); }
5313 
5316  return base::diff_weights_desc(0);
5317  }
5318 
5321 
5324  return base::diff_weights_desc(1);
5325  }
5326  };
5327 
5330 
5335 };
5336 
5338 
5347 
5349 struct lrn_forward : public primitive {
5351  struct desc {
5352  dnnl_lrn_desc_t data;
5353 
5367  desc(prop_kind aprop_kind, algorithm aalgorithm,
5368  const memory::desc &data_desc, memory::dim local_size,
5369  float alpha, float beta, float k = 1.f) {
5371  dnnl::convert_to_c(aprop_kind),
5372  convert_to_c(aalgorithm), &data_desc.data,
5373  local_size, alpha, beta, k),
5374  "could not create a descriptor for a lrn forward "
5375  "propagation primitive");
5376  }
5377  };
5378 
5382  primitive_desc() = default;
5383 
5393  primitive_desc(const desc &adesc, const engine &aengine,
5394  bool allow_empty = false)
5395  : dnnl::primitive_desc(
5396  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5397 
5408  primitive_desc(const desc &adesc, const primitive_attr &attr,
5409  const engine &aengine, bool allow_empty = false)
5410  : dnnl::primitive_desc(
5411  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5412 
5420  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5421  dnnl::prop_kind::forward_training,
5422  dnnl::prop_kind::forward_inference) {}
5423 
5425  memory::desc src_desc() const { return base::src_desc(0); }
5426 
5428  memory::desc dst_desc() const { return base::dst_desc(0); }
5429 
5432  };
5433 
5435  lrn_forward() = default;
5436 
5441 };
5442 
5444 struct lrn_backward : public primitive {
5446  struct desc {
5447  dnnl_lrn_desc_t data;
5448 
5461  desc(algorithm aalgorithm, const memory::desc &data_desc,
5462  const memory::desc &diff_data_desc, memory::dim local_size,
5463  float alpha, float beta, float k = 1.f) {
5465  dnnl_lrn_backward_desc_init(&data, convert_to_c(aalgorithm),
5466  &diff_data_desc.data, &data_desc.data, local_size,
5467  alpha, beta, k),
5468  "could not create a descriptor for a lrn backward "
5469  "propagation primitive");
5470  }
5471  };
5472 
5476  primitive_desc() = default;
5477 
5490  primitive_desc(const desc &adesc, const engine &aengine,
5491  const lrn_forward::primitive_desc &hint_fwd_pd,
5492  bool allow_empty = false)
5493  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5494  hint_fwd_pd.get(), allow_empty) {}
5495 
5509  primitive_desc(const desc &adesc, const primitive_attr &attr,
5510  const engine &aengine,
5511  const lrn_forward::primitive_desc &hint_fwd_pd,
5512  bool allow_empty = false)
5513  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5514  hint_fwd_pd.get(), allow_empty) {}
5515 
5523  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5524  dnnl::prop_kind::backward_data) {}
5525 
5528 
5531 
5534  };
5535 
5537  lrn_backward() = default;
5538 
5543 };
5544 
5546 
5554 
5556 struct pooling_forward : public primitive {
5558  struct desc {
5559  dnnl_pooling_desc_t data;
5560 
5585  desc(prop_kind aprop_kind, algorithm aalgorithm,
5586  const memory::desc &src_desc, const memory::desc &dst_desc,
5587  const memory::dims &strides, const memory::dims &kernel,
5588  const memory::dims &padding_l, const memory::dims &padding_r) {
5589  memory::validate_dims(strides, src_desc.data.ndims - 2);
5590  memory::validate_dims(kernel, src_desc.data.ndims - 2);
5591  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5592  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5594  dnnl::convert_to_c(aprop_kind),
5595  convert_to_c(aalgorithm), &src_desc.data,
5596  &dst_desc.data, &strides[0], &kernel[0],
5597  &padding_l[0], &padding_r[0]),
5598  "could not create a descriptor for a pooling forward "
5599  "propagation primitive");
5600  }
5601  };
5602 
5606  primitive_desc() = default;
5607 
5617  primitive_desc(const desc &adesc, const engine &aengine,
5618  bool allow_empty = false)
5619  : dnnl::primitive_desc(
5620  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5621 
5632  primitive_desc(const desc &adesc, const primitive_attr &attr,
5633  const engine &aengine, bool allow_empty = false)
5634  : dnnl::primitive_desc(
5635  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5636 
5644  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5645  dnnl::prop_kind::forward_training,
5646  dnnl::prop_kind::forward_inference) {}
5647 
5649  memory::desc src_desc() const { return base::src_desc(0); }
5650 
5652  memory::desc dst_desc() const { return base::dst_desc(0); }
5653 
5656  };
5657 
5659  pooling_forward() = default;
5660 
5665 };
5666 
5668 struct pooling_backward : public primitive {
5670  struct desc {
5671  dnnl_pooling_desc_t data;
5672 
5694  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
5695  const memory::desc &diff_dst_desc, const memory::dims &strides,
5696  const memory::dims &kernel, const memory::dims &padding_l,
5697  const memory::dims &padding_r) {
5698  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
5699  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
5700  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
5701  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
5704  convert_to_c(aalgorithm), &diff_src_desc.data,
5705  &diff_dst_desc.data, &strides[0], &kernel[0],
5706  &padding_l[0], &padding_r[0]),
5707  "could not create a descriptor for a pooling backward "
5708  "propagation primitive");
5709  }
5710  };
5711 
5715  primitive_desc() = default;
5716 
5729  primitive_desc(const desc &adesc, const engine &aengine,
5730  const pooling_forward::primitive_desc &hint_fwd_pd,
5731  bool allow_empty = false)
5732  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5733  hint_fwd_pd.get(), allow_empty) {}
5734 
5748  primitive_desc(const desc &adesc, const primitive_attr &attr,
5749  const engine &aengine,
5750  const pooling_forward::primitive_desc &hint_fwd_pd,
5751  bool allow_empty = false)
5752  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5753  hint_fwd_pd.get(), allow_empty) {}
5754 
5762  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5763  dnnl::prop_kind::backward_data) {}
5764 
5767 
5770 
5773  };
5774 
5776  pooling_backward() = default;
5777 
5782 };
5783 
5785 
5806 
5808 struct eltwise_forward : public primitive {
5810  struct desc {
5811  dnnl_eltwise_desc_t data;
5812 
5825  desc(prop_kind aprop_kind, algorithm aalgorithm,
5826  const memory::desc &data_desc, float alpha = 0,
5827  float beta = 0) {
5829  dnnl::convert_to_c(aprop_kind),
5830  dnnl::convert_to_c(aalgorithm),
5831  &data_desc.data, alpha, beta),
5832  "could not create a descriptor for an eltwise forward "
5833  "propagation primitive");
5834  }
5835  };
5836 
5840  primitive_desc() = default;
5841 
5852  primitive_desc(const desc &adesc, const engine &aengine,
5853  bool allow_empty = false)
5854  : dnnl::primitive_desc(
5855  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5856 
5868  primitive_desc(const desc &adesc, const primitive_attr &attr,
5869  const engine &aengine, bool allow_empty = false)
5870  : dnnl::primitive_desc(
5871  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5872 
5880  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5881  dnnl::prop_kind::forward_training,
5882  dnnl::prop_kind::forward_inference) {}
5883 
5885  memory::desc src_desc() const { return base::src_desc(0); }
5886 
5888  memory::desc dst_desc() const { return base::dst_desc(0); }
5889  };
5890 
5892  eltwise_forward() = default;
5893 
5898 };
5899 
5901 struct eltwise_backward : public primitive {
5903  struct desc {
5904  dnnl_eltwise_desc_t data;
5905 
5917  desc(algorithm aalgorithm, const memory::desc &diff_data_desc,
5918  const memory::desc &data_desc, float alpha = 0,
5919  float beta = 0) {
5922  dnnl::convert_to_c(aalgorithm),
5923  &diff_data_desc.data, &data_desc.data, alpha, beta),
5924  "could not create a descriptor for an eltwise backward "
5925  "propagation primitive");
5926  }
5927  };
5928 
5932  primitive_desc() = default;
5933 
5947  primitive_desc(const desc &adesc, const engine &aengine,
5948  const eltwise_forward::primitive_desc &hint_fwd_pd,
5949  bool allow_empty = false)
5950  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5951  hint_fwd_pd.get(), allow_empty) {}
5952 
5967  primitive_desc(const desc &adesc, const primitive_attr &attr,
5968  const engine &aengine,
5969  const eltwise_forward::primitive_desc &hint_fwd_pd,
5970  bool allow_empty = false)
5971  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5972  hint_fwd_pd.get(), allow_empty) {}
5973 
5981  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5982  dnnl::prop_kind::backward_data) {}
5983 
5985  memory::desc src_desc() const { return base::src_desc(0); }
5986 
5989 
5992  };
5993 
5995  eltwise_backward() = default;
5996 
6001 };
6002 
6004 
6012 
6014 struct softmax_forward : public primitive {
6016  struct desc {
6017  dnnl_softmax_desc_t data;
6018 
6020  desc() = default;
6021 
6030  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6031  int softmax_axis) {
6033  dnnl::convert_to_c(aprop_kind),
6034  &data_desc.data, softmax_axis),
6035  "could not create a descriptor for a softmax forward "
6036  "propagation primitive");
6037  }
6038  };
6039 
6043  primitive_desc() = default;
6044 
6055  primitive_desc(const desc &adesc, const engine &aengine,
6056  bool allow_empty = false)
6057  : dnnl::primitive_desc(
6058  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6059 
6071  primitive_desc(const desc &adesc, const primitive_attr &attr,
6072  const engine &aengine, bool allow_empty = false)
6073  : dnnl::primitive_desc(
6074  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6075 
6083  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
6084  dnnl::prop_kind::forward_training,
6085  dnnl::prop_kind::forward_inference) {}
6086 
6088  memory::desc src_desc() const { return base::src_desc(0); }
6089 
6091  memory::desc dst_desc() const { return base::dst_desc(0); }
6092  };
6093 
6095  softmax_forward() = default;
6096 
6101 };
6102 
6104 struct softmax_backward : public primitive {
6106  struct desc {
6107  dnnl_softmax_desc_t data;
6108 
6110  desc() = default;
6111 
6119  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
6120  int softmax_axis) {
6122  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
6123  &data_desc.data, softmax_axis),
6124  "could not create a descriptor for a softmax backward "
6125  "propagation primitive");
6126  }
6127  };
6128 
6132  primitive_desc() = default;
6133 
6147  primitive_desc(const desc &adesc, const engine &aengine,
6148  const softmax_forward::primitive_desc &hint_fwd_pd,
6149  bool allow_empty = false)
6150  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6151  hint_fwd_pd.get(), allow_empty) {}
6152 
6167  primitive_desc(const desc &adesc, const primitive_attr &attr,
6168  const engine &aengine,
6169  const softmax_forward::primitive_desc &hint_fwd_pd,
6170  bool allow_empty = false)
6171  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6172  hint_fwd_pd.get(), allow_empty) {}
6173 
6181  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
6182  dnnl::prop_kind::backward_data) {}
6183 
6185  memory::desc dst_desc() const { return base::dst_desc(0); }
6186 
6189 
6192  };
6193 
6195  softmax_backward() = default;
6196 
6201 };
6202 
6204 
6212 
6216  struct desc {
6218 
6220  desc() = default;
6221 
6230  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6231  int logsoftmax_axis) {
6233  dnnl::convert_to_c(aprop_kind),
6234  &data_desc.data, logsoftmax_axis),
6235  "could not create a descriptor for a logsoftmax forward "
6236  "propagation primitive");
6237  }
6238  };
6239 
6243  primitive_desc() = default;
6244 
6255  primitive_desc(const desc &adesc, const engine &aengine,
6256  bool allow_empty = false)
6257  : dnnl::primitive_desc(
6258  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6259 
6271  primitive_desc(const desc &adesc, const primitive_attr &attr,
6272  const engine &aengine, bool allow_empty = false)
6273  : dnnl::primitive_desc(
6274  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6275 
6283  : dnnl::primitive_desc(pd,
6284  // Logsoftmax and softmax share the implementation and
6285  // currently report the same primitive kind. Hence this
6286  // must be softmax and not logsoftmax.
6287  dnnl::primitive::kind::softmax,
6288  dnnl::prop_kind::forward_training,
6289  dnnl::prop_kind::forward_inference) {}
6290 
6292  memory::desc src_desc() const { return base::src_desc(0); }
6293 
6295  memory::desc dst_desc() const { return base::dst_desc(0); }
6296  };
6297 
6299  logsoftmax_forward() = default;
6300 
6305 };
6306 
6310  struct desc {
6312 
6314  desc() = default;
6315 
6323  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
6324  int logsoftmax_axis) {
6326  &diff_data_desc.data, &data_desc.data,
6327  logsoftmax_axis),
6328  "could not create a descriptor for a logsoftmax backward "
6329  "propagation primitive");
6330  }
6331  };
6332 
6336  primitive_desc() = default;
6337 
6351  primitive_desc(const desc &adesc, const engine &aengine,
6352  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6353  bool allow_empty = false)
6354  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6355  hint_fwd_pd.get(), allow_empty) {}
6356 
6371  primitive_desc(const desc &adesc, const primitive_attr &attr,
6372  const engine &aengine,
6373  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6374  bool allow_empty = false)
6375  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6376  hint_fwd_pd.get(), allow_empty) {}
6377 
6385  : dnnl::primitive_desc(pd,
6386  // Logsoftmax and softmax share the implementation and
6387  // currently report the same primitive kind. Hence this
6388  // must be softmax and not logsoftmax.
6389  dnnl::primitive::kind::softmax,
6390  dnnl::prop_kind::backward_data) {}
6391 
6393  memory::desc dst_desc() const { return base::dst_desc(0); }
6394 
6397 
6400  };
6401 
6403  logsoftmax_backward() = default;
6404 
6409 };
6410 
6412 
6432 
6436  struct desc {
6438 
6453  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6454  normalization_flags flags) {
6457  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6458  epsilon, convert_to_c(flags)),
6459  "could not create a descriptor for a batch normalization "
6460  "forward propagation primitive");
6461  }
6462  };
6463 
6468  primitive_desc() = default;
6469 
6480  primitive_desc(const desc &adesc, const engine &aengine,
6481  bool allow_empty = false)
6482  : dnnl::primitive_desc(
6483  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6484 
6496  primitive_desc(const desc &adesc, const primitive_attr &attr,
6497  const engine &aengine, bool allow_empty = false)
6498  : dnnl::primitive_desc(
6499  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6500 
6508  : dnnl::primitive_desc(pd,
6509  dnnl::primitive::kind::batch_normalization,
6510  dnnl::prop_kind::forward_training,
6511  dnnl::prop_kind::forward_inference) {}
6512 
6514  memory::desc src_desc() const { return base::src_desc(0); }
6515 
6517  memory::desc dst_desc() const { return base::dst_desc(0); }
6518 
6521 
6524 
6527  memory::desc mean_desc() const { return stat_desc(mean); }
6528 
6531  memory::desc variance_desc() const { return stat_desc(var); }
6532 
6533  private:
6534  enum {
6535  mean = 1,
6536  var = 2,
6537  };
6538  memory::desc stat_desc(int kind) const {
6542  dnnl::convert_to_c(query::batch_normalization_d), 0,
6543  &p),
6544  "could not retrieve a descriptor from a primitive "
6545  "descriptor for batch normalization forward propagation "
6546  "primitive");
6547  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6548  : query::dst_md,
6549  kind);
6550  }
6551  };
6552 
6555 
6560 };
6561 
6565  struct desc {
6567 
6580  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6581  const memory::desc &data_desc, float epsilon,
6582  normalization_flags flags) {
6584  dnnl::convert_to_c(aprop_kind),
6585  &diff_data_desc.data, &data_desc.data,
6586  epsilon, convert_to_c(flags)),
6587  "could not create a descriptor for a batch normalization "
6588  "backward propagation primitive");
6589  }
6590  };
6591 
6596  primitive_desc() = default;
6597 
6611  primitive_desc(const desc &adesc, const engine &aengine,
6613  bool allow_empty = false)
6614  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6615  hint_fwd_pd.get(), allow_empty) {}
6616 
6631  primitive_desc(const desc &adesc, const primitive_attr &attr,
6632  const engine &aengine,
6634  bool allow_empty = false)
6635  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6636  hint_fwd_pd.get(), allow_empty) {}
6637 
6645  : dnnl::primitive_desc(pd,
6646  dnnl::primitive::kind::batch_normalization,
6647  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6648  }
6649 
6651  memory::desc src_desc() const { return base::src_desc(0); }
6652 
6655 
6657  memory::desc dst_desc() const { return base::dst_desc(0); }
6658 
6661 
6664 
6667  return base::diff_weights_desc(0);
6668  }
6669 
6671  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6672 
6675  return query_md(query::src_md, 2);
6676  }
6677 
6680  };
6681 
6684 
6689 };
6690 
6692 
6714 
6718  struct desc {
6720 
6732  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6733  const memory::desc &stat_desc, float epsilon,
6734  normalization_flags flags) {
6737  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6738  &stat_desc.data, epsilon, convert_to_c(flags)),
6739  "could not create a descriptor for a layer normalization "
6740  "forward propagation primitive");
6741  }
6742 
6753  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6754  normalization_flags flags) {
6757  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6758  nullptr, epsilon, convert_to_c(flags)),
6759  "could not create a descriptor for a layer normalization "
6760  "forward propagation primitive");
6761  }
6762  };
6763 
6768  primitive_desc() = default;
6769 
6780  primitive_desc(const desc &adesc, const engine &aengine,
6781  bool allow_empty = false)
6782  : dnnl::primitive_desc(
6783  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6784 
6796  primitive_desc(const desc &adesc, const primitive_attr &attr,
6797  const engine &aengine, bool allow_empty = false)
6798  : dnnl::primitive_desc(
6799  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6800 
6808  : dnnl::primitive_desc(pd,
6809  dnnl::primitive::kind::layer_normalization,
6810  dnnl::prop_kind::forward_training,
6811  dnnl::prop_kind::forward_inference) {}
6812 
6814  memory::desc src_desc() const { return base::src_desc(0); }
6815 
6817  memory::desc dst_desc() const { return base::dst_desc(0); }
6818 
6821 
6824 
6826  memory::desc mean_desc() const { return stat_desc(mean); }
6827 
6829  memory::desc variance_desc() const { return stat_desc(var); }
6830 
6831  private:
6832  enum {
6833  mean = 1,
6834  var = 2,
6835  };
6836  memory::desc stat_desc(int kind) const {
6840  dnnl::convert_to_c(query::layer_normalization_d), 0,
6841  &p),
6842  "could not retrieve a descriptor from a primitive "
6843  "descriptor for layer normalization forward propagation "
6844  "primitive");
6845  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6846  : query::dst_md,
6847  kind);
6848  }
6849  };
6850 
6853 
6858 };
6859 
6863  struct desc {
6865 
6879  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6880  const memory::desc &data_desc, const memory::desc &stat_desc,
6881  float epsilon, normalization_flags flags) {
6884  dnnl::convert_to_c(aprop_kind),
6885  &diff_data_desc.data, &data_desc.data,
6886  &stat_desc.data, epsilon, convert_to_c(flags)),
6887  "could not create a descriptor for a batch normalization "
6888  "backward propagation primitive");
6889  }
6890 
6903  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6904  const memory::desc &data_desc, float epsilon,
6905  normalization_flags flags) {
6907  dnnl::convert_to_c(aprop_kind),
6908  &diff_data_desc.data, &data_desc.data,
6909  nullptr, epsilon, convert_to_c(flags)),
6910  "could not create a descriptor for a batch normalization "
6911  "backward propagation primitive");
6912  }
6913  };
6914 
6919  primitive_desc() = default;
6920 
6934  primitive_desc(const desc &adesc, const engine &aengine,
6936  bool allow_empty = false)
6937  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6938  hint_fwd_pd.get(), allow_empty) {}
6939 
6954  primitive_desc(const desc &adesc, const primitive_attr &attr,
6955  const engine &aengine,
6957  bool allow_empty = false)
6958  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6959  hint_fwd_pd.get(), allow_empty) {}
6960 
6968  : dnnl::primitive_desc(pd,
6969  dnnl::primitive::kind::layer_normalization,
6970  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6971  }
6972 
6974  memory::desc src_desc() const { return base::src_desc(0); }
6975 
6978 
6980  memory::desc dst_desc() const { return base::dst_desc(0); }
6981 
6984 
6987 
6990  return base::diff_weights_desc(0);
6991  }
6992 
6994  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6995 
6998  return query_md(query::src_md, 2);
6999  }
7000 
7003  };
7004 
7007 
7012 };
7013 
7015 
7023 
7027  struct desc {
7029 
7044  desc(prop_kind aprop_kind, const memory::desc &src_desc,
7045  const memory::desc &weights_desc, const memory::desc &bias_desc,
7046  const memory::desc &dst_desc) {
7048  dnnl::convert_to_c(aprop_kind),
7049  &src_desc.data, &weights_desc.data,
7050  &bias_desc.data, &dst_desc.data),
7051  "could not create a descriptor for an inner product "
7052  "forward propagation primitive");
7053  }
7054 
7068  desc(prop_kind aprop_kind, const memory::desc &src_desc,
7069  const memory::desc &weights_desc,
7070  const memory::desc &dst_desc) {
7073  dnnl::convert_to_c(aprop_kind), &src_desc.data,
7074  &weights_desc.data, nullptr, &dst_desc.data),
7075  "could not create a descriptor for an inner product "
7076  "forward propagation primitive");
7077  }
7078  };
7079 
7083  primitive_desc() = default;
7084 
7095  primitive_desc(const desc &adesc, const engine &aengine,
7096  bool allow_empty = false)
7097  : dnnl::primitive_desc(
7098  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7099 
7111  primitive_desc(const desc &adesc, const primitive_attr &attr,
7112  const engine &aengine, bool allow_empty = false)
7113  : dnnl::primitive_desc(
7114  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7115 
7123  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7124  dnnl::prop_kind::forward_training,
7125  dnnl::prop_kind::forward_inference) {}
7126 
7128  memory::desc src_desc() const { return base::src_desc(0); }
7129 
7132 
7134  memory::desc dst_desc() const { return base::dst_desc(0); }
7135 
7138  };
7139 
7142 
7147 };
7148 
7152  struct desc {
7154 
7165  desc(const memory::desc &diff_src_desc,
7166  const memory::desc &weights_desc,
7167  const memory::desc &diff_dst_desc) {
7169  &diff_src_desc.data, &weights_desc.data,
7170  &diff_dst_desc.data),
7171  "could not create a descriptor for an inner product "
7172  "backward propagation primitive");
7173  }
7174  };
7175 
7180  primitive_desc() = default;
7181 
7195  primitive_desc(const desc &adesc, const engine &aengine,
7196  const inner_product_forward::primitive_desc &hint_fwd_pd,
7197  bool allow_empty = false)
7198  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7199  hint_fwd_pd.get(), allow_empty) {}
7200 
7215  primitive_desc(const desc &adesc, const primitive_attr &attr,
7216  const engine &aengine,
7217  const inner_product_forward::primitive_desc &hint_fwd_pd,
7218  bool allow_empty = false)
7219  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7220  hint_fwd_pd.get(), allow_empty) {}
7221 
7229  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7230  dnnl::prop_kind::backward_data) {}
7231 
7234 
7237 
7240  };
7241 
7244 
7249 };
7250 
7254  struct desc {
7256 
7268  desc(const memory::desc &src_desc,
7269  const memory::desc &diff_weights_desc,
7270  const memory::desc &diff_bias_desc,
7271  const memory::desc &diff_dst_desc) {
7274  &src_desc.data, &diff_weights_desc.data,
7275  &diff_bias_desc.data, &diff_dst_desc.data),
7276  "could not create a descriptor for an inner product "
7277  "weights gradient primitive");
7278  }
7279 
7290  desc(const memory::desc &src_desc,
7291  const memory::desc &diff_weights_desc,
7292  const memory::desc &diff_dst_desc) {
7295  &src_desc.data, &diff_weights_desc.data, nullptr,
7296  &diff_dst_desc.data),
7297  "could not create a descriptor for an inner product "
7298  "weights gradient primitive");
7299  }
7300  };
7301 
7305  primitive_desc() = default;
7306 
7320  primitive_desc(const desc &adesc, const engine &aengine,
7321  const inner_product_forward::primitive_desc &hint_fwd_pd,
7322  bool allow_empty = false)
7323  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7324  hint_fwd_pd.get(), allow_empty) {}
7325 
7340  primitive_desc(const desc &adesc, const primitive_attr &attr,
7341  const engine &aengine,
7342  const inner_product_forward::primitive_desc &hint_fwd_pd,
7343  bool allow_empty = false)
7344  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7345  hint_fwd_pd.get(), allow_empty) {}
7346 
7354  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7355  dnnl::prop_kind::backward_weights) {}
7356 
7358  memory::desc src_desc() const { return base::src_desc(0); }
7359 
7362  return base::diff_weights_desc(0);
7363  }
7364 
7367 
7370  return base::diff_weights_desc(1);
7371  }
7372  };
7373 
7376 
7381 };
7382 
7384 
7392 
7395  using primitive_desc::primitive_desc;
7396 
7399 
7408  dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
7409  : rnn_primitive_desc_base(pd, aprop_kind, aprop_kind, cell_kind) {}
7410 
7415  }
7416 
7423  }
7424 
7429  }
7430 
7435  }
7436 
7441  }
7442 
7447  }
7448 
7453  }
7454 
7461  }
7462 
7467  }
7468 
7475  }
7476 
7481  }
7482 
7487  }
7488 
7495  }
7496 
7501  }
7502 
7507  }
7508 
7513  }
7514 
7518  return base::query_md(
7520  }
7521 
7525  return base::query_md(
7527  }
7528 
7535  }
7536 
7541  }
7542 
7549  }
7550 
7555  }
7556 
7557 protected:
7558  using rnn_base = rnn_primitive_desc_base;
7559 
7560  // (Deliberately not using doxygen comments)
7561  //
7562  // Constructs an RNN primitive descriptor base from a C API primitive
7563  // descriptor while checking that it actually describes the expected
7564  // primitive by comparing propagation and primitive kinds. Caller can
7565  // pass two options propagation kinds. This is typically used to check
7566  // that propagation kind is inference or training forward propagation.
7567  //
7568  // @param pd C API primitive descriptor.
7569  // @param prop_kind1 Expected propagation kind.
7570  // @param prop_kind2 Expected propagation kind.
7571  // @param cell_kind Expected cell kind.
7573  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
7574  dnnl::algorithm cell_kind) {
7575  dnnl_rnn_desc_t *rnn_d;
7576  dnnl_status_t rc;
7577  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
7578  error::wrap_c_api(rc,
7579  "could not retrieve a descriptor from a primitive descriptor "
7580  "for an RNN primitive");
7581 
7582  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
7583  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
7584  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
7585 
7586  bool ok = rnn_d->primitive_kind == dnnl_rnn
7587  && (rnn_d->prop_kind == c_prop_kind1
7588  || rnn_d->prop_kind == c_prop_kind2)
7589  && rnn_d->cell_kind == c_cell_kind;
7590 
7591  if (!ok)
7592  DNNL_THROW_ERROR(dnnl_invalid_arguments,
7593  "mismatch between expected and provided descriptors for an "
7594  "RNN primitive");
7595 
7596  reset_with_clone(pd);
7597  }
7598 };
7599 
7603  struct desc {
7604  dnnl_rnn_desc_t data;
7605 
7646  desc(prop_kind aprop_kind, algorithm activation,
7647  rnn_direction direction, const memory::desc &src_layer_desc,
7648  const memory::desc &src_iter_desc,
7649  const memory::desc &weights_layer_desc,
7650  const memory::desc &weights_iter_desc,
7651  const memory::desc &bias_desc,
7652  const memory::desc &dst_layer_desc,
7653  const memory::desc &dst_iter_desc,
7654  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7655  float beta = 0.0f) {
7658  dnnl::convert_to_c(aprop_kind),
7659  dnnl::convert_to_c(activation),
7660  dnnl::convert_to_c(direction), &src_layer_desc.data,
7661  &src_iter_desc.data, &weights_layer_desc.data,
7662  &weights_iter_desc.data, &bias_desc.data,
7663  &dst_layer_desc.data, &dst_iter_desc.data,
7664  dnnl::convert_to_c(flags), alpha, beta),
7665  "could not create a descriptor for a vanilla RNN forward "
7666  "propagation primitive");
7667  }
7668  };
7669 
7673  primitive_desc() = default;
7674 
7685  primitive_desc(const desc &adesc, const engine &aengine,
7686  bool allow_empty = false)
7688  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7689 
7701  primitive_desc(const desc &adesc, const primitive_attr &attr,
7702  const engine &aengine, bool allow_empty = false)
7704  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7705 
7713  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
7714  dnnl::prop_kind::forward_inference,
7715  dnnl::algorithm::vanilla_rnn) {}
7716 
7719  return rnn_base::src_layer_desc();
7720  }
7721 
7724 
7728  }
7729 
7732  return rnn_base::weights_iter_desc();
7733  }
7734 
7737 
7740  return rnn_base::dst_layer_desc();
7741  }
7742 
7745 
7748  return rnn_base::workspace_desc();
7749  }
7750  };
7751 
7753  vanilla_rnn_forward() = default;
7754 
7759 };
7760 
7764  struct desc {
7765  dnnl_rnn_desc_t data;
7766 
7819  desc(prop_kind aprop_kind, algorithm activation,
7820  rnn_direction direction, const memory::desc &src_layer_desc,
7821  const memory::desc &src_iter_desc,
7822  const memory::desc &weights_layer_desc,
7823  const memory::desc &weights_iter_desc,
7824  const memory::desc &bias_desc,
7825  const memory::desc &dst_layer_desc,
7826  const memory::desc &dst_iter_desc,
7827  const memory::desc &diff_src_layer_desc,
7828  const memory::desc &diff_src_iter_desc,
7829  const memory::desc &diff_weights_layer_desc,
7830  const memory::desc &diff_weights_iter_desc,
7831  const memory::desc &diff_bias_desc,
7832  const memory::desc &diff_dst_layer_desc,
7833  const memory::desc &diff_dst_iter_desc,
7834  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7835  float beta = 0.0f) {
7838  dnnl::convert_to_c(aprop_kind),
7839  dnnl::convert_to_c(activation),
7840  dnnl::convert_to_c(direction), &src_layer_desc.data,
7841  &src_iter_desc.data, &weights_layer_desc.data,
7842  &weights_iter_desc.data, &bias_desc.data,
7843  &dst_layer_desc.data, &dst_iter_desc.data,
7844  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7845  &diff_weights_layer_desc.data,
7846  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7847  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7848  dnnl::convert_to_c(flags), alpha, beta),
7849  "could not create a descriptor for a vanilla RNN backward "
7850  "propagation primitive");
7851  }
7852  };
7853 
7857  primitive_desc() = default;
7858 
7872  primitive_desc(const desc &adesc, const engine &aengine,
7873  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7874  bool allow_empty = false)
7875  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
7876  hint_fwd_pd.get(), allow_empty) {}
7877 
7892  primitive_desc(const desc &adesc, const primitive_attr &attr,
7893  const engine &aengine,
7894  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7895  bool allow_empty = false)
7896  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
7897  hint_fwd_pd.get(), allow_empty) {}
7898 
7906  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
7907  dnnl::algorithm::vanilla_rnn) {}
7908 
7911  return rnn_base::src_layer_desc();
7912  }
7913 
7916 
7920  }
7921 
7924  return rnn_base::weights_iter_desc();
7925  }
7926 
7929 
7932  return rnn_base::dst_layer_desc();
7933  }
7934 
7937 
7940  return rnn_base::workspace_desc();
7941  }
7942 
7946  }
7947 
7951  }
7952 
7956  }
7957 
7961  }
7962 
7965  return rnn_base::diff_bias_desc();
7966  }
7967 
7971  }
7972 
7976  }
7977  };
7978 
7981 
7986 };
7987 
7989 struct lstm_forward : public primitive {
7991  struct desc {
7992  dnnl_rnn_desc_t data;
7993 
8042  desc(prop_kind aprop_kind, rnn_direction direction,
8043  const memory::desc &src_layer_desc,
8044  const memory::desc &src_iter_desc,
8045  const memory::desc &src_iter_c_desc,
8046  const memory::desc &weights_layer_desc,
8047  const memory::desc &weights_iter_desc,
8048  const memory::desc &weights_peephole_desc,
8049  const memory::desc &weights_projection_desc,
8050  const memory::desc &bias_desc,
8051  const memory::desc &dst_layer_desc,
8052  const memory::desc &dst_iter_desc,
8053  const memory::desc &dst_iter_c_desc,
8054  rnn_flags flags = rnn_flags::undef) {
8057  dnnl::convert_to_c(aprop_kind),
8058  dnnl::convert_to_c(direction), &src_layer_desc.data,
8059  &src_iter_desc.data, &src_iter_c_desc.data,
8060  &weights_layer_desc.data, &weights_iter_desc.data,
8061  &weights_peephole_desc.data,
8062  &weights_projection_desc.data, &bias_desc.data,
8063  &dst_layer_desc.data, &dst_iter_desc.data,
8064  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
8065  "could not create a descriptor for an LSTM forward "
8066  "propagation primitive");
8067  }
8068 
8110  desc(prop_kind aprop_kind, rnn_direction direction,
8111  const memory::desc &src_layer_desc,
8112  const memory::desc &src_iter_desc,
8113  const memory::desc &src_iter_c_desc,
8114  const memory::desc &weights_layer_desc,
8115  const memory::desc &weights_iter_desc,
8116  const memory::desc &weights_peephole_desc,
8117  const memory::desc &bias_desc,
8118  const memory::desc &dst_layer_desc,
8119  const memory::desc &dst_iter_desc,
8120  const memory::desc &dst_iter_c_desc,
8121  rnn_flags flags = rnn_flags::undef) {
8124  dnnl::convert_to_c(aprop_kind),
8125  dnnl::convert_to_c(direction), &src_layer_desc.data,
8126  &src_iter_desc.data, &src_iter_c_desc.data,
8127  &weights_layer_desc.data, &weights_iter_desc.data,
8128  &weights_peephole_desc.data, &bias_desc.data,
8129  &dst_layer_desc.data, &dst_iter_desc.data,
8130  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
8131  "could not create a descriptor for an LSTM forward "
8132  "propagation primitive");
8133  }
8134 
8171  desc(prop_kind aprop_kind, rnn_direction direction,
8172  const memory::desc &src_layer_desc,
8173  const memory::desc &src_iter_desc,
8174  const memory::desc &src_iter_c_desc,
8175  const memory::desc &weights_layer_desc,
8176  const memory::desc &weights_iter_desc,
8177  const memory::desc &bias_desc,
8178  const memory::desc &dst_layer_desc,
8179  const memory::desc &dst_iter_desc,
8180  const memory::desc &dst_iter_c_desc,
8181  rnn_flags flags = rnn_flags::undef) {
8184  dnnl::convert_to_c(aprop_kind),
8185  dnnl::convert_to_c(direction), &src_layer_desc.data,
8186  &src_iter_desc.data, &src_iter_c_desc.data,
8187  &weights_layer_desc.data, &weights_iter_desc.data,
8188  &bias_desc.data, &dst_layer_desc.data,
8189  &dst_iter_desc.data, &dst_iter_c_desc.data,
8190  dnnl::convert_to_c(flags)),
8191  "could not create a descriptor for an LSTM forward "
8192  "propagation primitive");
8193  }
8194  };
8195 
8199  primitive_desc() = default;
8200 
8210  primitive_desc(const desc &adesc, const engine &aengine,
8211  bool allow_empty = false)
8213  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8214 
8225  primitive_desc(const desc &adesc, const primitive_attr &attr,
8226  const engine &aengine, bool allow_empty = false)
8228  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8229 
8237  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8238  dnnl::prop_kind::forward_inference,
8239  dnnl::algorithm::vanilla_lstm) {}
8240 
8243  return rnn_base::src_layer_desc();
8244  }
8245 
8248 
8251  return rnn_base::src_iter_c_desc();
8252  }
8253 
8257  }
8258 
8261  return rnn_base::weights_iter_desc();
8262  }
8263 
8267  }
8268 
8272  }
8273 
8276 
8279  return rnn_base::dst_layer_desc();
8280  }
8281 
8284 
8287  return rnn_base::dst_iter_c_desc();
8288  }
8289 
8292  return rnn_base::workspace_desc();
8293  }
8294  };
8295 
8297  lstm_forward() = default;
8298 
8303 };
8304 
8306 struct lstm_backward : public primitive {
8308  struct desc {
8309  dnnl_rnn_desc_t data;
8310 
8386  desc(prop_kind aprop_kind, rnn_direction direction,
8387  const memory::desc &src_layer_desc,
8388  const memory::desc &src_iter_desc,
8389  const memory::desc &src_iter_c_desc,
8390  const memory::desc &weights_layer_desc,
8391  const memory::desc &weights_iter_desc,
8392  const memory::desc &weights_peephole_desc,
8393  const memory::desc &weights_projection_desc,
8394  const memory::desc &bias_desc,
8395  const memory::desc &dst_layer_desc,
8396  const memory::desc &dst_iter_desc,
8397  const memory::desc &dst_iter_c_desc,
8398  const memory::desc &diff_src_layer_desc,
8399  const memory::desc &diff_src_iter_desc,
8400  const memory::desc &diff_src_iter_c_desc,
8401  const memory::desc &diff_weights_layer_desc,
8402  const memory::desc &diff_weights_iter_desc,
8403  const memory::desc &diff_weights_peephole_desc,
8404  const memory::desc &diff_weights_projection_desc,
8405  const memory::desc &diff_bias_desc,
8406  const memory::desc &diff_dst_layer_desc,
8407  const memory::desc &diff_dst_iter_desc,
8408  const memory::desc &diff_dst_iter_c_desc,
8409  rnn_flags flags = rnn_flags::undef) {
8412  dnnl::convert_to_c(aprop_kind),
8413  dnnl::convert_to_c(direction), &src_layer_desc.data,
8414  &src_iter_desc.data, &src_iter_c_desc.data,
8415  &weights_layer_desc.data, &weights_iter_desc.data,
8416  &weights_peephole_desc.data,
8417  &weights_projection_desc.data, &bias_desc.data,
8418  &dst_layer_desc.data, &dst_iter_desc.data,
8419  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8420  &diff_src_iter_desc.data,
8421  &diff_src_iter_c_desc.data,
8422  &diff_weights_layer_desc.data,
8423  &diff_weights_iter_desc.data,
8424  &diff_weights_peephole_desc.data,
8425  &diff_weights_projection_desc.data,
8426  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8427  &diff_dst_iter_desc.data,
8428  &diff_dst_iter_c_desc.data,
8429  dnnl::convert_to_c(flags)),
8430  "could not create a descriptor for an LSTM backward "
8431  "propagation primitive");
8432  }
8433 
8498  desc(prop_kind aprop_kind, rnn_direction direction,
8499  const memory::desc &src_layer_desc,
8500  const memory::desc &src_iter_desc,
8501  const memory::desc &src_iter_c_desc,
8502  const memory::desc &weights_layer_desc,
8503  const memory::desc &weights_iter_desc,
8504  const memory::desc &weights_peephole_desc,
8505  const memory::desc &bias_desc,
8506  const memory::desc &dst_layer_desc,
8507  const memory::desc &dst_iter_desc,
8508  const memory::desc &dst_iter_c_desc,
8509  const memory::desc &diff_src_layer_desc,
8510  const memory::desc &diff_src_iter_desc,
8511  const memory::desc &diff_src_iter_c_desc,
8512  const memory::desc &diff_weights_layer_desc,
8513  const memory::desc &diff_weights_iter_desc,
8514  const memory::desc &diff_weights_peephole_desc,
8515  const memory::desc &diff_bias_desc,
8516  const memory::desc &diff_dst_layer_desc,
8517  const memory::desc &diff_dst_iter_desc,
8518  const memory::desc &diff_dst_iter_c_desc,
8519  rnn_flags flags = rnn_flags::undef) {
8522  dnnl::convert_to_c(aprop_kind),
8523  dnnl::convert_to_c(direction), &src_layer_desc.data,
8524  &src_iter_desc.data, &src_iter_c_desc.data,
8525  &weights_layer_desc.data, &weights_iter_desc.data,
8526  &weights_peephole_desc.data, &bias_desc.data,
8527  &dst_layer_desc.data, &dst_iter_desc.data,
8528  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8529  &diff_src_iter_desc.data,
8530  &diff_src_iter_c_desc.data,
8531  &diff_weights_layer_desc.data,
8532  &diff_weights_iter_desc.data,
8533  &diff_weights_peephole_desc.data,
8534  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8535  &diff_dst_iter_desc.data,
8536  &diff_dst_iter_c_desc.data,
8537  dnnl::convert_to_c(flags)),
8538  "could not create a descriptor for an LSTM backward "
8539  "propagation primitive");
8540  }
8541 
8597  desc(prop_kind aprop_kind, rnn_direction direction,
8598  const memory::desc &src_layer_desc,
8599  const memory::desc &src_iter_desc,
8600  const memory::desc &src_iter_c_desc,
8601  const memory::desc &weights_layer_desc,
8602  const memory::desc &weights_iter_desc,
8603  const memory::desc &bias_desc,
8604  const memory::desc &dst_layer_desc,
8605  const memory::desc &dst_iter_desc,
8606  const memory::desc &dst_iter_c_desc,
8607  const memory::desc &diff_src_layer_desc,
8608  const memory::desc &diff_src_iter_desc,
8609  const memory::desc &diff_src_iter_c_desc,
8610  const memory::desc &diff_weights_layer_desc,
8611  const memory::desc &diff_weights_iter_desc,
8612  const memory::desc &diff_bias_desc,
8613  const memory::desc &diff_dst_layer_desc,
8614  const memory::desc &diff_dst_iter_desc,
8615  const memory::desc &diff_dst_iter_c_desc,
8616  rnn_flags flags = rnn_flags::undef) {
8619  dnnl::convert_to_c(aprop_kind),
8620  dnnl::convert_to_c(direction), &src_layer_desc.data,
8621  &src_iter_desc.data, &src_iter_c_desc.data,
8622  &weights_layer_desc.data, &weights_iter_desc.data,
8623  &bias_desc.data, &dst_layer_desc.data,
8624  &dst_iter_desc.data, &dst_iter_c_desc.data,
8625  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8626  &diff_src_iter_c_desc.data,
8627  &diff_weights_layer_desc.data,
8628  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8629  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8630  &diff_dst_iter_c_desc.data,
8631  dnnl::convert_to_c(flags)),
8632  "could not create a descriptor for an LSTM backward "
8633  "propagation primitive");
8634  }
8635  };
8636 
8640  primitive_desc() = default;
8641 
8654  primitive_desc(const desc &adesc, const engine &aengine,
8655  const lstm_forward::primitive_desc &hint_fwd_pd,
8656  bool allow_empty = false)
8657  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8658  hint_fwd_pd.get(), allow_empty) {}
8659 
8673  primitive_desc(const desc &adesc, const primitive_attr &attr,
8674  const engine &aengine,
8675  const lstm_forward::primitive_desc &hint_fwd_pd,
8676  bool allow_empty = false)
8677  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8678  hint_fwd_pd.get(), allow_empty) {}
8679 
8687  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8688  dnnl::algorithm::vanilla_lstm) {}
8689 
8692  return rnn_base::src_layer_desc();
8693  }
8694 
8697 
8700  return rnn_base::src_iter_c_desc();
8701  }
8702 
8706  }
8707 
8710  return rnn_base::weights_iter_desc();
8711  }
8712 
8716  }
8717 
8721  }
8722 
8725 
8728  return rnn_base::dst_layer_desc();
8729  }
8730 
8733 
8736  return rnn_base::dst_iter_c_desc();
8737  }
8738 
8741  return rnn_base::workspace_desc();
8742  }
8743 
8747  }
8748 
8752  }
8753 
8757  }
8758 
8762  }
8763 
8767  }
8768 
8772  }
8773 
8777  }
8778 
8781  return rnn_base::diff_bias_desc();
8782  }
8783 
8787  }
8788 
8792  }
8793 
8797  }
8798  };
8799 
8801  lstm_backward() = default;
8802 
8807 };
8808 
8810 struct gru_forward : public primitive {
8812  struct desc {
8813  dnnl_rnn_desc_t data;
8814 
8847  desc(prop_kind aprop_kind, rnn_direction direction,
8848  const memory::desc &src_layer_desc,
8849  const memory::desc &src_iter_desc,
8850  const memory::desc &weights_layer_desc,
8851  const memory::desc &weights_iter_desc,
8852  const memory::desc &bias_desc,
8853  const memory::desc &dst_layer_desc,
8854  const memory::desc &dst_iter_desc,
8855  rnn_flags flags = rnn_flags::undef) {
8858  dnnl::convert_to_c(aprop_kind),
8859  dnnl::convert_to_c(direction), &src_layer_desc.data,
8860  &src_iter_desc.data, &weights_layer_desc.data,
8861  &weights_iter_desc.data, &bias_desc.data,
8862  &dst_layer_desc.data, &dst_iter_desc.data,
8863  dnnl::convert_to_c(flags)),
8864  "could not create a descriptor for a GRU forward "
8865  "propagation primitive");
8866  }
8867  };
8868 
8872  primitive_desc() = default;
8873 
8883  primitive_desc(const desc &adesc, const engine &aengine,
8884  bool allow_empty = false)
8886  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8887 
8898  primitive_desc(const desc &adesc, const primitive_attr &attr,
8899  const engine &aengine, bool allow_empty = false)
8901  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8902 
8910  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8911  dnnl::prop_kind::forward_inference,
8912  dnnl::algorithm::vanilla_gru) {}
8913 
8916  return rnn_base::src_layer_desc();
8917  }
8918 
8921 
8925  }
8926 
8929  return rnn_base::weights_iter_desc();
8930  }
8931 
8934 
8937  return rnn_base::dst_layer_desc();
8938  }
8939 
8942 
8945  return rnn_base::workspace_desc();
8946  }
8947  };
8948 
8950  gru_forward() = default;
8951 
8956 };
8957 
8959 struct gru_backward : public primitive {
8961  struct desc {
8962  dnnl_rnn_desc_t data;
8963 
9008  desc(prop_kind aprop_kind, rnn_direction direction,
9009  const memory::desc &src_layer_desc,
9010  const memory::desc &src_iter_desc,
9011  const memory::desc &weights_layer_desc,
9012  const memory::desc &weights_iter_desc,
9013  const memory::desc &bias_desc,
9014  const memory::desc &dst_layer_desc,
9015  const memory::desc &dst_iter_desc,
9016  const memory::desc &diff_src_layer_desc,
9017  const memory::desc &diff_src_iter_desc,
9018  const memory::desc &diff_weights_layer_desc,
9019  const memory::desc &diff_weights_iter_desc,
9020  const memory::desc &diff_bias_desc,
9021  const memory::desc &diff_dst_layer_desc,
9022  const memory::desc &diff_dst_iter_desc,
9023  rnn_flags flags = rnn_flags::undef) {
9026  dnnl::convert_to_c(aprop_kind),
9027  dnnl::convert_to_c(direction), &src_layer_desc.data,
9028  &src_iter_desc.data, &weights_layer_desc.data,
9029  &weights_iter_desc.data, &bias_desc.data,
9030  &dst_layer_desc.data, &dst_iter_desc.data,
9031  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9032  &diff_weights_layer_desc.data,
9033  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9034  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9035  dnnl::convert_to_c(flags)),
9036  "could not create a descriptor for a GRU backward "
9037  "propagation primitive");
9038  }
9039  };
9040 
9044  primitive_desc() = default;
9045 
9058  primitive_desc(const desc &adesc, const engine &aengine,
9059  const gru_forward::primitive_desc &hint_fwd_pd,
9060  bool allow_empty = false)
9061  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9062  hint_fwd_pd.get(), allow_empty) {}
9063 
9077  primitive_desc(const desc &adesc, const primitive_attr &attr,
9078  const engine &aengine,
9079  const gru_forward::primitive_desc &hint_fwd_pd,
9080  bool allow_empty = false)
9081  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9082  hint_fwd_pd.get(), allow_empty) {}
9083 
9091  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
9092  dnnl::algorithm::vanilla_gru) {}
9093 
9096  return rnn_base::src_layer_desc();
9097  }
9098 
9101 
9105  }
9106 
9109  return rnn_base::weights_iter_desc();
9110  }
9111 
9114 
9117  return rnn_base::dst_layer_desc();
9118  }
9119 
9122 
9125  return rnn_base::workspace_desc();
9126  }
9127 
9131  }
9132 
9136  }
9137 
9141  }
9142 
9146  }
9147 
9150  return rnn_base::diff_bias_desc();
9151  }
9152 
9156  }
9157 
9161  }
9162  };
9163 
9165  gru_backward() = default;
9166 
9171 };
9172 
9174 struct lbr_gru_forward : public primitive {
9176  struct desc {
9177  dnnl_rnn_desc_t data;
9178 
9212  desc(prop_kind aprop_kind, rnn_direction direction,
9213  const memory::desc &src_layer_desc,
9214  const memory::desc &src_iter_desc,
9215  const memory::desc &weights_layer_desc,
9216  const memory::desc &weights_iter_desc,
9217  const memory::desc &bias_desc,
9218  const memory::desc &dst_layer_desc,
9219  const memory::desc &dst_iter_desc,
9220  rnn_flags flags = rnn_flags::undef) {
9223  dnnl::convert_to_c(aprop_kind),
9224  dnnl::convert_to_c(direction), &src_layer_desc.data,
9225  &src_iter_desc.data, &weights_layer_desc.data,
9226  &weights_iter_desc.data, &bias_desc.data,
9227  &dst_layer_desc.data, &dst_iter_desc.data,
9228  dnnl::convert_to_c(flags)),
9229  "could not create a descriptor for an LBR GRU forward "
9230  "propagation primitive");
9231  }
9232  };
9233 
9237  primitive_desc() = default;
9238 
9249  primitive_desc(const desc &adesc, const engine &aengine,
9250  bool allow_empty = false)
9252  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9253 
9265  primitive_desc(const desc &adesc, const primitive_attr &attr,
9266  const engine &aengine, bool allow_empty = false)
9268  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9269 
9277  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
9278  dnnl::prop_kind::forward_inference,
9279  dnnl::algorithm::lbr_gru) {}
9280 
9283  return rnn_base::src_layer_desc();
9284  }
9285 
9288 
9292  }
9293 
9296  return rnn_base::weights_iter_desc();
9297  }
9298 
9301 
9304  return rnn_base::dst_layer_desc();
9305  }
9306 
9309 
9312  return rnn_base::workspace_desc();
9313  }
9314  };
9315 
9317  lbr_gru_forward() = default;
9318 
9323 };
9324 
9326 struct lbr_gru_backward : public primitive {
9328  struct desc {
9329  dnnl_rnn_desc_t data;
9330 
9376  desc(prop_kind aprop_kind, rnn_direction direction,
9377  const memory::desc &src_layer_desc,
9378  const memory::desc &src_iter_desc,
9379  const memory::desc &weights_layer_desc,
9380  const memory::desc &weights_iter_desc,
9381  const memory::desc &bias_desc,
9382  const memory::desc &dst_layer_desc,
9383  const memory::desc &dst_iter_desc,
9384  const memory::desc &diff_src_layer_desc,
9385  const memory::desc &diff_src_iter_desc,
9386  const memory::desc &diff_weights_layer_desc,
9387  const memory::desc &diff_weights_iter_desc,
9388  const memory::desc &diff_bias_desc,
9389  const memory::desc &diff_dst_layer_desc,
9390  const memory::desc &diff_dst_iter_desc,
9391  rnn_flags flags = rnn_flags::undef) {
9394  dnnl::convert_to_c(aprop_kind),
9395  dnnl::convert_to_c(direction), &src_layer_desc.data,
9396  &src_iter_desc.data, &weights_layer_desc.data,
9397  &weights_iter_desc.data, &bias_desc.data,
9398  &dst_layer_desc.data, &dst_iter_desc.data,
9399  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9400  &diff_weights_layer_desc.data,
9401  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9402  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9403  dnnl::convert_to_c(flags)),
9404  "could not create a descriptor for an LBR GRU backward "
9405  "propagation primitive");
9406  }
9407  };
9408 
9412  primitive_desc() = default;
9413 
9427  primitive_desc(const desc &adesc, const engine &aengine,
9428  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9429  bool allow_empty = false)
9430  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9431  hint_fwd_pd.get(), allow_empty) {}
9432 
9447  primitive_desc(const desc &adesc, const primitive_attr &attr,
9448  const engine &aengine,
9449  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9450  bool allow_empty = false)
9451  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9452  hint_fwd_pd.get(), allow_empty) {}
9453 
9462  pd, dnnl::prop_kind::backward, dnnl::algorithm::lbr_gru) {}
9463 
9466  return rnn_base::src_layer_desc();
9467  }
9468 
9471 
9475  }
9476 
9479  return rnn_base::weights_iter_desc();
9480  }
9481 
9484 
9487  return rnn_base::dst_layer_desc();
9488  }
9489 
9492 
9495  return rnn_base::workspace_desc();
9496  }
9497 
9501  }
9502 
9506  }
9507 
9511  }
9512 
9516  }
9517 
9520  return rnn_base::diff_bias_desc();
9521  }
9522 
9526  }
9527 
9531  }
9532  };
9533 
9535  lbr_gru_backward() = default;
9536 
9541 };
9542 
9544 
9552 
9554 struct shuffle_forward : public primitive {
9556  struct desc {
9557  dnnl_shuffle_desc_t data;
9558 
9568  desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis,
9569  int group_size) {
9571  dnnl::convert_to_c(aprop_kind),
9572  &data_desc.data, axis, group_size),
9573  "could not create a descriptor for a shuffle forward "
9574  "propagation primitive");
9575  }
9576  };
9577 
9581  primitive_desc() = default;
9582 
9594  primitive_desc(const desc &adesc, const engine &aengine,
9595  const primitive_attr &attr = primitive_attr(),
9596  bool allow_empty = false)
9597  : dnnl::primitive_desc(
9598  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9599 
9607  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9608  dnnl::prop_kind::forward_training,
9609  dnnl::prop_kind::forward_inference) {}
9610 
9612  memory::desc src_desc() const { return base::src_desc(0); }
9613 
9615  memory::desc dst_desc() const { return base::dst_desc(0); }
9616  };
9617 
9619  shuffle_forward() = default;
9620 
9625 };
9626 
9628 struct shuffle_backward : public primitive {
9631  struct desc {
9632  dnnl_shuffle_desc_t data;
9633 
9641  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
9643  &diff_data_desc.data, axis, group_size),
9644  "could not create a descriptor for a shuffle backward "
9645  "propagation primitive");
9646  }
9647  };
9648 
9652  primitive_desc() = default;
9653 
9668  primitive_desc(const desc &adesc, const engine &aengine,
9669  const shuffle_forward::primitive_desc &hint_fwd_pd,
9670  const primitive_attr &attr = primitive_attr(),
9671  bool allow_empty = false)
9672  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9673  hint_fwd_pd.get(), allow_empty) {}
9674 
9682  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9683  dnnl::prop_kind::backward_data) {}
9684 
9687 
9690  };
9691 
9693  shuffle_backward() = default;
9694 
9699 };
9700 
9702 
9710 
9712 struct binary : public primitive {
9714  struct desc {
9717 
9719  desc() = default;
9720 
9728  desc(algorithm aalgorithm, const memory::desc &src0,
9729  const memory::desc &src1, const memory::desc &dst) {
9732  &src0.data, &src1.data, &dst.data),
9733  "could not create a descriptor for a binary operation "
9734  "primitive");
9735  }
9736  };
9737 
9741  primitive_desc() = default;
9742 
9752  primitive_desc(const desc &adesc, const engine &aengine,
9753  bool allow_empty = false)
9754  : dnnl::primitive_desc(
9755  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9756 
9767  primitive_desc(const desc &adesc, const primitive_attr &attr,
9768  const engine &aengine, bool allow_empty = false)
9769  : dnnl::primitive_desc(
9770  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9771 
9778 
9780  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
9781 
9783  memory::desc src0_desc() const { return base::src_desc(0); }
9784 
9786  memory::desc src1_desc() const { return base::src_desc(1); }
9787 
9789  memory::desc dst_desc() const { return base::dst_desc(0); }
9790  };
9791 
9793  binary() = default;
9794 
9798  binary(const primitive_desc &pd) : primitive(pd) {}
9799 };
9800 
9802 
9812 
9814 struct matmul : public primitive {
9816  struct desc {
9817  dnnl_matmul_desc_t data;
9818 
9824  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9825  const memory::desc &dst_desc) {
9827  dnnl_matmul_desc_init(&data, &src_desc.data,
9828  &weights_desc.data, nullptr, &dst_desc.data),
9829  "could not create a descriptor for a matmul primitive");
9830  }
9831 
9838  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9839  const memory::desc &bias_desc, const memory::desc &dst_desc) {
9840  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
9841  &weights_desc.data, &bias_desc.data,
9842  &dst_desc.data),
9843  "could not create a descriptor for a matmul primitive");
9844  }
9845  };
9846 
9850  primitive_desc() = default;
9851 
9860  primitive_desc(const desc &adesc, const engine &aengine,
9861  bool allow_empty = false)
9862  : dnnl::primitive_desc(
9863  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9864 
9874  primitive_desc(const desc &adesc, const primitive_attr &attr,
9875  const engine &aengine, bool allow_empty = false)
9876  : dnnl::primitive_desc(
9877  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9878 
9885 
9887  memory::desc src_desc() const { return query_md(query::src_md, 0); }
9888 
9891  return query_md(query::weights_md, 0);
9892  }
9893 
9896  return query_md(query::weights_md, 1);
9897  }
9898 
9900  memory::desc dst_desc() const { return query_md(query::dst_md, 0); }
9901  };
9902 
9904  matmul() = default;
9905 
9908  matmul(const primitive_desc &pd) : primitive(pd) {}
9909 };
9910 
9912 
9922 
9926  struct desc {
9928 
9944  desc(prop_kind aprop_kind, algorithm aalgorithm,
9945  const memory::desc &src_desc, const memory::desc &dst_desc) {
9947  dnnl::convert_to_c(aprop_kind),
9948  convert_to_c(aalgorithm), nullptr,
9949  &src_desc.data, &dst_desc.data),
9950  "could not create a resampling forward descriptor");
9951  }
9952 
9964  desc(prop_kind aprop_kind, algorithm aalgorithm,
9965  const std::vector<float> &factors,
9966  const memory::desc &src_desc) {
9967  memory::validate_dims(factors, src_desc.data.ndims - 2);
9969  dnnl::convert_to_c(aprop_kind),
9970  convert_to_c(aalgorithm), &factors[0],
9971  &src_desc.data, nullptr),
9972  "could not create a resampling forward descriptor");
9973  }
9974 
9991  desc(prop_kind aprop_kind, algorithm aalgorithm,
9992  const std::vector<float> &factors, const memory::desc &src_desc,
9993  const memory::desc &dst_desc) {
9994  if (!factors.empty())
9995  memory::validate_dims(factors, src_desc.data.ndims - 2);
9997  dnnl::convert_to_c(aprop_kind),
9998  convert_to_c(aalgorithm), factors.data(),
9999  &src_desc.data, &dst_desc.data),
10000  "could not create a resampling forward descriptor");
10001  }
10002  };
10003 
10007  primitive_desc() = default;
10008 
10019  primitive_desc(const desc &adesc, const engine &aengine,
10020  bool allow_empty = false)
10021  : dnnl::primitive_desc(
10022  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10023 
10035  primitive_desc(const desc &adesc, const primitive_attr &attr,
10036  const engine &aengine, bool allow_empty = false)
10037  : dnnl::primitive_desc(
10038  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10039 
10047  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
10048  dnnl::prop_kind::forward_training,
10049  dnnl::prop_kind::forward_inference) {}
10050 
10052  memory::desc src_desc() const { return base::src_desc(0); }
10053 
10055  memory::desc dst_desc() const { return base::dst_desc(0); }
10056  };
10057 
10059  resampling_forward() = default;
10060 
10065 };
10066 
10070  struct desc {
10072 
10081  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
10082  const memory::desc &diff_dst_desc) {
10084  convert_to_c(aalgorithm), nullptr,
10085  &diff_src_desc.data, &diff_dst_desc.data),
10086  "could not create a resampling backward data descriptor");
10087  }
10088 
10098  desc(algorithm aalgorithm, const std::vector<float> &factors,
10099  const memory::desc &diff_src_desc,
10100  const memory::desc &diff_dst_desc) {
10101  if (!factors.empty())
10102  memory::validate_dims(factors, diff_src_desc.data.ndims - 2);
10104  convert_to_c(aalgorithm), factors.data(),
10105  &diff_src_desc.data, &diff_dst_desc.data),
10106  "could not create a resampling backward data descriptor");
10107  }
10108  };
10109 
10113  primitive_desc() = default;
10114 
10128  primitive_desc(const desc &adesc, const engine &aengine,
10129  const resampling_forward::primitive_desc &hint_fwd_pd,
10130  bool allow_empty = false)
10131  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
10132  hint_fwd_pd.get(), allow_empty) {}
10133 
10148  primitive_desc(const desc &adesc, const primitive_attr &attr,
10149  const engine &aengine,
10150  const resampling_forward::primitive_desc &hint_fwd_pd,
10151  bool allow_empty = false)
10152  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
10153  hint_fwd_pd.get(), allow_empty) {}
10154 
10162  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
10163  dnnl::prop_kind::backward_data) {}
10164 
10167 
10170  };
10171 
10173  resampling_backward() = default;
10174 
10179 };
10180 
10182 
10192 
10196  struct desc {
10198 
10225  desc(prop_kind aprop_kind, algorithm aalgorithm,
10226  const memory::desc &src_desc, const memory::desc &dst_desc,
10227  const memory::dims &strides, const memory::dims &kernel,
10228  const memory::dims &dilation, const memory::dims &padding_l,
10229  const memory::dims &padding_r) {
10230  memory::validate_dims(strides, src_desc.data.ndims - 2);
10231  memory::validate_dims(kernel, src_desc.data.ndims - 2);
10232  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
10233  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
10234  memory::validate_dims(dilation, src_desc.data.ndims - 2);
10237  dnnl::convert_to_c(aprop_kind),
10238  convert_to_c(aalgorithm), &src_desc.data,
10239  &dst_desc.data, &strides[0], &kernel[0],
10240  &dilation[0], &padding_l[0], &padding_r[0]),
10241  "could not create a descriptor for a pooling forward "
10242  "propagation primitive");
10243  }
10244  };
10245 
10249  primitive_desc() = default;
10250 
10261  primitive_desc(const desc &adesc, const engine &aengine,
10262  bool allow_empty = false)
10263  : dnnl::primitive_desc(
10264  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10265 
10277  primitive_desc(const desc &adesc, const primitive_attr &attr,
10278  const engine &aengine, bool allow_empty = false)
10279  : dnnl::primitive_desc(
10280  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10281 
10290  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling_v2,
10291  dnnl::prop_kind::forward_training,
10292  dnnl::prop_kind::forward_inference) {}
10293 
10295  memory::desc src_desc() const { return base::src_desc(0); }
10296 
10298  memory::desc dst_desc() const { return base::dst_desc(0); }
10299 
10302  };
10303 
10305  pooling_v2_forward() = default;
10306 
10312 };
10313 
10317  struct desc {
10319 
10343  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
10344  const memory::desc &diff_dst_desc, const memory::dims &strides,
10345  const memory::dims &kernel, const memory::dims &dilation,
10346  const memory::dims &padding_l, const memory::dims &padding_r) {
10347  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
10348  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
10349  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
10350  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
10351  memory::validate_dims(dilation, diff_src_desc.data.ndims - 2);
10354  convert_to_c(aalgorithm), &diff_src_desc.data,
10355  &diff_dst_desc.data, &strides[0], &kernel[0],
10356  &dilation[0], &padding_l[0], &padding_r[0]),
10357  "could not create a descriptor for a pooling backward "
10358  "propagation primitive");
10359  }
10360  };
10361 
10366  primitive_desc() = default;
10367 
10381  primitive_desc(const desc &adesc, const engine &aengine,
10382  const pooling_v2_forward::primitive_desc &hint_fwd_pd,
10383  bool allow_empty = false)
10384  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
10385  hint_fwd_pd.get(), allow_empty) {}
10386 
10401  primitive_desc(const desc &adesc, const primitive_attr &attr,
10402  const engine &aengine,
10403  const pooling_v2_forward::primitive_desc &hint_fwd_pd,
10404  bool allow_empty = false)
10405  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
10406  hint_fwd_pd.get(), allow_empty) {}
10407 
10416  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling_v2,
10417  dnnl::prop_kind::backward_data) {}
10418 
10421 
10424 
10427  };
10428 
10430  pooling_v2_backward() = default;
10431 
10437 };
10438 
10440 
10449 
10451 struct prelu_forward : public primitive {
10453  struct desc {
10454  dnnl_prelu_desc_t data;
10455 
10464  desc(prop_kind aprop_kind, const memory::desc &data_desc,
10465  const memory::desc &weight_desc) {
10467  dnnl::convert_to_c(aprop_kind),
10468  &data_desc.data, &weight_desc.data),
10469  "could not create a descriptor for a prelu forward "
10470  "propagation primitive");
10471  }
10472  };
10473 
10477  primitive_desc() = default;
10478 
10489  primitive_desc(const desc &adesc, const engine &aengine,
10490  bool allow_empty = false)
10491  : dnnl::primitive_desc(
10492  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10493 
10505  primitive_desc(const desc &adesc, const primitive_attr &attr,
10506  const engine &aengine, bool allow_empty = false)
10507  : dnnl::primitive_desc(
10508  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10509 
10517  : dnnl::primitive_desc(pd, dnnl::primitive::kind::prelu,
10518  dnnl::prop_kind::forward_training,
10519  dnnl::prop_kind::forward_inference) {}
10520 
10522  memory::desc src_desc() const { return base::src_desc(0); }
10523 
10525  memory::desc dst_desc() const { return base::dst_desc(0); }
10526  };
10527 
10529  prelu_forward() = default;
10530 
10535 };
10536 
10538 struct prelu_backward : public primitive {
10540  struct desc {
10541  dnnl_prelu_desc_t data;
10542 
10551  desc(const memory::desc &data_desc, const memory::desc &weight_desc,
10552  const memory::desc &diff_data_desc,
10553  const memory::desc &diff_weights_desc) {
10555  dnnl_prelu_backward_desc_init(&data, &data_desc.data,
10556  &weight_desc.data, &diff_data_desc.data,
10557  &diff_weights_desc.data),
10558  "could not create a descriptor for a prelu backward "
10559  "propagation primitive");
10560  }
10561  };
10562 
10566  primitive_desc() = default;
10567 
10581  primitive_desc(const desc &adesc, const engine &aengine,
10582  const prelu_forward::primitive_desc &hint_fwd_pd,
10583  bool allow_empty = false)
10584  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
10585  hint_fwd_pd.get(), allow_empty) {}
10586 
10601  primitive_desc(const desc &adesc, const primitive_attr &attr,
10602  const engine &aengine,
10603  const prelu_forward::primitive_desc &hint_fwd_pd,
10604  bool allow_empty = false)
10605  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
10606  hint_fwd_pd.get(), allow_empty) {}
10607 
10615  : dnnl::primitive_desc(pd, dnnl::primitive::kind::prelu,
10616  dnnl::prop_kind::backward_data) {}
10617 
10619  memory::desc src_desc() const { return base::src_desc(0); }
10620 
10623 
10626  };
10627 
10629  prelu_backward() = default;
10630 
10635 };
10636 
10638 
10647 
10649 struct reduction : public primitive {
10651  struct desc {
10652  dnnl_reduction_desc_t data;
10653 
10655  desc() = default;
10656 
10674  desc(algorithm aalgorithm, const memory::desc &src_desc,
10675  const memory::desc &dst_desc, float p, float eps) {
10677  dnnl_reduction_desc_init(&data, convert_to_c(aalgorithm),
10678  &src_desc.data, &dst_desc.data, p, eps),
10679  "could not create a reduction descriptor");
10680  }
10681  };
10682 
10686  primitive_desc() = default;
10687 
10696  primitive_desc(const desc &adesc, const engine &aengine,
10697  bool allow_empty = false)
10698  : dnnl::primitive_desc(
10699  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10700 
10710  primitive_desc(const desc &adesc, const primitive_attr &attr,
10711  const engine &aengine, bool allow_empty = false)
10712  : dnnl::primitive_desc(
10713  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10714 
10721 
10723  memory::desc src_desc() const { return base::src_desc(0); }
10724 
10726  memory::desc dst_desc() const { return base::dst_desc(0); }
10727  };
10728 
10730  reduction() = default;
10731 
10734  reduction(const primitive_desc &pd) : primitive(pd) {}
10735 };
10736 
10738 
10740 
10746 
10749 
10751 enum class status {
10753  success = dnnl_success,
10755  out_of_memory = dnnl_out_of_memory,
10757  invalid_arguments = dnnl_invalid_arguments,
10759  unimplemented = dnnl_unimplemented,
10761  iterator_ends = dnnl_iterator_ends,
10763  runtime_error = dnnl_runtime_error,
10766 };
10767 
10769 inline status set_verbose(int level) {
10770  return static_cast<status>(dnnl_set_verbose(level));
10771 }
10772 
10774 inline const version_t *version() {
10775  return dnnl_version();
10776 }
10777 
10779 inline status set_jit_dump(int enable) {
10780  return static_cast<status>(dnnl_set_jit_dump(enable));
10781 }
10782 
10784 inline status set_jit_profiling_flags(unsigned flags) {
10785  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
10786 }
10787 
10789 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
10790  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
10791 }
10792 
10794 enum class cpu_isa {
10796  all = dnnl_cpu_isa_all,
10798  sse41 = dnnl_cpu_isa_sse41,
10800  avx = dnnl_cpu_isa_avx,
10802  avx2 = dnnl_cpu_isa_avx2,
10804  avx512_mic = dnnl_cpu_isa_avx512_mic,
10806  avx512_mic_4ops = dnnl_cpu_isa_avx512_mic_4ops,
10808  avx512_core = dnnl_cpu_isa_avx512_core,
10810  avx512_core_vnni = dnnl_cpu_isa_avx512_core_vnni,
10812  avx512_core_bf16 = dnnl_cpu_isa_avx512_core_bf16,
10814  avx512_core_amx = dnnl_cpu_isa_avx512_core_amx,
10817 };
10818 
10821  return static_cast<status>(
10822  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
10823 }
10824 
10827  return static_cast<cpu_isa>(dnnl_get_effective_cpu_isa());
10828 }
10829 
10831 
10837 
10841  int result = 0;
10843  "could not get primitive cache capacity");
10844  return result;
10845 }
10846 
10848 inline void set_primitive_cache_capacity(int capacity) {
10850  "could not set primitive cache capacity");
10851 }
10852 
10854 
10861 
10863 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10864  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10865  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
10866  return static_cast<status>(dnnl_sgemm(
10867  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
10868 }
10869 
10871 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10872  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10873  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10874  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10875  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
10876  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10877 }
10878 
10880 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10881  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10882  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10883  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10884  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
10885  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10886 }
10887 
10888 #if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL
10889 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10891  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10892  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc,
10893  dnnl::threadpool_iface *tp) {
10894  return static_cast<status>(dnnl_sgemm_tp(
10895  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, tp));
10896 }
10898 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10899  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10900  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10901  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10902  dnnl::threadpool_iface *tp) {
10903  return static_cast<status>(dnnl_gemm_u8s8s32_tp(transa, transb, offsetc, M,
10904  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10905 }
10906 
10908 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10909  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10910  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10911  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10912  dnnl::threadpool_iface *tp) {
10913  return static_cast<status>(dnnl_gemm_s8s8s32_tp(transa, transb, offsetc, M,
10914  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10915 }
10916 #endif
10917 
10919 
10920 // implementation section
10921 
10924  dnnl_primitive_t result;
10926  "could not create a primitive");
10927  reset(result);
10928 }
10929 
10930 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
10931 
10932 inline void primitive::execute(const stream &astream,
10933  const std::unordered_map<int, memory> &args) const {
10934  std::vector<dnnl_exec_arg_t> c_args;
10935  c_args.reserve(args.size());
10936  for (const auto &a : args)
10937  c_args.push_back({a.first, a.second.get(true)});
10938 
10939  error::wrap_c_api(dnnl_primitive_execute(get(), astream.get(),
10940  (int)c_args.size(), c_args.data()),
10941  "could not execute a primitive");
10942 }
10943 
10945 
10946 #undef DNNL_DEFINE_BITMASK_OPS
10947 
10948 } // namespace dnnl
10949 
10951 
10952 #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:7195
dnnl_query_time_estimate_f64
@ dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:2355
dnnl_query_reorder_dst_engine
@ dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:2367
dnnl::memory::set_data_handle
void set_data_handle(void *handle) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2278
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:7944
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:10880
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:10068
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:5069
dnnl::prelu_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:10625
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:394
dnnl::pooling_v2_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::binary::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:9780
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:2050
dnnl::convolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4174
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:3014
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6857
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:7819
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7991
dnnl_stream_attr_t
struct dnnl_stream_attr * dnnl_stream_attr_t
An execution stream attributes handle.
Definition: dnnl_types.h:2441
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:7553
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:7433
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:6200
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6185
dnnl::prelu_backward::primitive_desc
Primitive descriptor for prelu backward propagation.
Definition: dnnl.hpp:10564
dnnl::pooling_v2_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:10317
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:8933
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:4879
dnnl::prelu_forward::prelu_forward
prelu_forward(const primitive_desc &pd)
Constructs a prelu forward propagation primitive.
Definition: dnnl.hpp:10534
dnnl_eltwise_round
@ dnnl_eltwise_round
Eltwise: round.
Definition: dnnl_types.h:993
dnnl::lrn_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5428
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9739
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:719
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:997
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:8812
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:2139
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:3507
dnnl_query_pooling_d
@ dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:2379
dnnl::shuffle_backward
Shuffle backward propagation primitive.
Definition: dnnl.hpp:9628
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:7027
dnnl::vanilla_rnn_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7928
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:9276
dnnl_ABcde2b8a4b
@ dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:330
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:8795
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:6997
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7936
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:9159
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:9144
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:2671
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:375
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9235
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:4362
dnnl_reduction_mul
@ dnnl_reduction_mul
Reduction using mul.
Definition: dnnl_types.h:1059
dnnl::stream
An execution stream.
Definition: dnnl.hpp:1079
dnnl::memory::desc::desc
desc(const dnnl_memory_desc_t &data)
Constructs a memory descriptor from a C API data structure.
Definition: dnnl.hpp:1992
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:2586
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:4852
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:4721
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:4566
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:6147
dnnl_aBCde2b4c2b
@ dnnl_aBCde2b4c2b
5D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:382
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:7044
dnnl_query_memory_consumption_s64
@ dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:2356
dnnl_s8
@ dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:74
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:442
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5652
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:2422
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:9883
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:9752
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:913
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:212
dnnl::softmax_backward
Softmax backward propagation primitive.
Definition: dnnl.hpp:6104
dnnl::reduction::primitive_desc
Primitive descriptor for a reduction primitive.
Definition: dnnl.hpp:10684
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::pooling_v2_backward::pooling_v2_backward
pooling_v2_backward(const primitive_desc &pd)
Constructs a pooling v2 (dilated pooling) backward propagation primitive.
Definition: dnnl.hpp:10436
dnnl_batch_normalization
@ dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:909
dnnl::vanilla_rnn_backward
Vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7762
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:7407
dnnl_query_logsoftmax_d
@ dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:2388
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:10871
dnnl::vanilla_rnn_backward::desc
Descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7764
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5527
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9326
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:2156
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:9887
dnnl::lstm_forward::primitive_desc
Primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:8197
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:5542
dnnl_abcdefghji
@ dnnl_abcdefghji
permuted 10D tensor
Definition: dnnl_types.h:219
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:4100
DNNL_ARG_WEIGHTS_ITER
#define DNNL_ARG_WEIGHTS_ITER
A special mnemonic for RNN weights applied to the recurrent input.
Definition: dnnl_types.h:2174
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:5947
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:937
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:7068
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:7493
dnnl_query_reorder_src_engine
@ dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:2366
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:3583
dnnl::memory::memory
memory(const desc &md, const engine &aengine)
Constructs a memory object.
Definition: dnnl.hpp:2205
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8923
DNNL_ARG_WEIGHTS_PROJECTION
#define DNNL_ARG_WEIGHTS_PROJECTION
A special mnemonic for RNN weights applied to the projection weights.
Definition: dnnl_types.h:2186
dnnl::engine
An execution engine.
Definition: dnnl.hpp:876
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:6453
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:3814
dnnl::pooling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5769
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:5980
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:7146
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:2913
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:903
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:5049
dnnl_normalization_flags_none
@ dnnl_normalization_flags_none
Use no normalization flags.
Definition: dnnl_types.h:1082
dnnl::lrn_forward
Local response normalization (LRN) forward propagation primitive.
Definition: dnnl.hpp:5349
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:7361
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5903
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:10161
dnnl_query_rnn_d
@ dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:2385
DNNL_ARG_TO
#define DNNL_ARG_TO
A special mnemonic for reorder destination argument.
Definition: dnnl_types.h:2142
dnnl::pooling_v2_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 &dilation, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for pooling v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:10225
DNNL_MAX_NDIMS
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:1133
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:2055
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:8760
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:8915
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:2414
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:10789
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5713
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:9103
dnnl_defcab
@ dnnl_defcab
permuted 6D tensor
Definition: dnnl_types.h:213
dnnl_abcdefghijlk
@ dnnl_abcdefghijlk
permuted 12D tensor
Definition: dnnl_types.h:221
dnnl_abcdefghijk
@ dnnl_abcdefghijk
plain 11D tensor
Definition: dnnl_types.h:188
dnnl_aBcde16b
@ dnnl_aBcde16b
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:332
dnnl::layer_normalization_backward::layer_normalization_backward
layer_normalization_backward(const primitive_desc &pd)
Constructs a layer normalization backward propagation primitive.
Definition: dnnl.hpp:7011
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1926
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8283
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8961
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:9249
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:3558
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:6983
dnnl::pooling_v2_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::eltwise_forward::eltwise_forward
eltwise_forward(const primitive_desc &pd)
Constructs an eltwise forward propagation primitive.
Definition: dnnl.hpp:5897
dnnl::reduction
Reduction.
Definition: dnnl.hpp:10649
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward()=default
Default constructor. Produces an empty object.
dnnl_post_ops_get_params_binary
dnnl_status_t DNNL_API dnnl_post_ops_get_params_binary(const_dnnl_post_ops_t post_ops, int index, dnnl_alg_kind_t *alg_kind, const dnnl_memory_desc_t **src1_desc)
Returns the parameters of a binary post-op.
dnnl::vanilla_rnn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7747
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:9926
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5991
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1149
dnnl_eltwise_relu
@ dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:952
dnnl_acb
@ dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:196
dnnl_matmul_desc_t
A descriptor of a matrix multiplication operation.
Definition: dnnl_types.h:1893
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:8928
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:7517
dnnl_eltwise_abs
@ dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:960
dnnl::reduction::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
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:6180
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4343
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:2462
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:1073
dnnl::pooling_v2_forward::pooling_v2_forward
pooling_v2_forward()=default
Default constructor. Produces an empty object.
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:8790
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:9486
dnnl_eltwise_sqrt_use_dst_for_bwd
@ dnnl_eltwise_sqrt_use_dst_for_bwd
Eltwise: square root (dst for backward)
Definition: dnnl_types.h:1003
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:10019
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3277
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5901
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:8498
dnnl_shuffle
@ dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:891
dnnl_query_shuffle_d
@ dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:2376
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:2109
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:9814
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:10166
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8709
dnnl::reduction::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::rnn_primitive_desc_base::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7445
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:1366
dnnl::convolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4346
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:4305
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4168
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:7505
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6651
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:885
dnnl::prelu_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const prelu_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a PReLU backward propagation primitive.
Definition: dnnl.hpp:10581
dnnl::eltwise_forward
Elementwise unary operation forward propagation primitive.
Definition: dnnl.hpp:5808
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5772
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:4325
dnnl::prelu_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a PReLU forward propagation primitive.
Definition: dnnl.hpp:10489
dnnl_abdfce
@ dnnl_abdfce
permuted 6D tensor
Definition: dnnl_types.h:195
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:5315
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1763
dnnl_pooling_max
@ dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:1011
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:2418
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:2346
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:6282
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:10046
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:2645
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:2005
dnnl::stream_attr::set_threadpool
void set_threadpool(threadpool_iface *threadpool)
Sets the threadpool attribute.
Definition: dnnl.hpp:1059
dnnl::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:665
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1785
dnnl_bcdea
@ dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:207
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1769
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:8247
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:10794
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:6271
dnnl_sum
@ dnnl_sum
A sum primitive.
Definition: dnnl_types.h:895
dnnl::engine::get_count
static size_t get_count(kind akind)
Returns the number of engines of a certain kind.
Definition: dnnl.hpp:900
dnnl::memory::set_data_handle
void set_data_handle(void *handle, const stream &astream) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2262
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:4598
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:9816
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:7380
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8944
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:9606
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5380
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:9681
dnnl_backward_weights
@ dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:878
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:3259
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:3884
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:9529
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6817
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1729
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:2344
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8278
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:7303
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:6807
dnnl_gpu
@ dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1985
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:5655
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6214
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:9008
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:8386
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:9129
dnnl::sum::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3821
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:10098
dnnl::rnn_primitive_desc_base::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7533
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:9991
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5810
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:2125
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:7905
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:8306
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6718
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:5888
dnnl_query_diff_weights_md
@ dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:2399
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:10128
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:8955
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:6967
dnnl::reduction::desc
Descriptor for reduction.
Definition: dnnl.hpp:10651
dnnl_query_prop_kind
@ dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:2369
dnnl_abced
@ dnnl_abced
permuted 5D tensor
Definition: dnnl_types.h:214
dnnl_eltwise_logistic
@ dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:970
dnnl::lbr_gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:9295
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8704
dnnl::pooling_forward::pooling_forward
pooling_forward(const primitive_desc &pd)
Constructs a pooling forward propagation primitive.
Definition: dnnl.hpp:5664
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:901
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:8810
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:881
dnnl_aBc16b
@ dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:230
dnnl::lbr_gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:9519
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6663
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7726
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:8909
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:8042
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8691
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6531
dnnl::pooling_v2_forward::desc
Descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:10196
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:7248
dnnl_convolution_auto
@ dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:946
dnnl::binary::binary
binary(const primitive_desc &pd)
Constructs an elementwise binary operation primitive.
Definition: dnnl.hpp:9798
dnnl_cdba
@ dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:209
dnnl_eltwise_sqrt
@ dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:962
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:2523
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9282
dnnl_reduction_norm_lp_power_p_max
@ dnnl_reduction_norm_lp_power_p_max
Reduction using lp norm without final pth-root.
Definition: dnnl_types.h:1067
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::reduction::reduction
reduction(const primitive_desc &pd)
Constructs a reduction primitive.
Definition: dnnl.hpp:10734
dnnl::stream::stream
stream()=default
Constructs an empty stream.
dnnl_eltwise_bounded_relu
@ dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:966
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward(const primitive_desc &pd)
Constructs an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9540
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:1244
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:4002
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:9728
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:10820
dnnl_rnn_desc_t::primitive_kind
dnnl_primitive_kind_t primitive_kind
The kind of primitive.
Definition: dnnl_types.h:1788
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6393
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:6496
dnnl_eltwise_clip_v2
@ dnnl_eltwise_clip_v2
Eltwise: clip version 2.
Definition: dnnl_types.h:987
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:8638
dnnl::primitive::kind::pooling
@ pooling
A pooling primitive.
dnnl::pooling_v2_backward::primitive_desc
Primitive descriptor for a pooling v2 (dilated pooling) backward propagation primitive.
Definition: dnnl.hpp:10364
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:7239
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:3369
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:9113
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:3717
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:5393
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:9427
dnnl_forward_inference
@ dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:868
dnnl_pooling_v2_backward_desc_init
dnnl_status_t DNNL_API dnnl_pooling_v2_backward_desc_init(dnnl_pooling_v2_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 dilation, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for pooling v2 (pooling with dilation support) backward propagation primitiv...
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:4936
dnnl_query_impl_info_str
@ dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:2364
dnnl_query_dst_md
@ dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:2400
dnnl_query_resampling_d
@ dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:2390
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:7485
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:2777
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:408
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5766
dnnl_query_inner_product_d
@ dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:2384
dnnl::vanilla_rnn_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7723
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:2254
dnnl_rnn_flags_undef
@ dnnl_rnn_flags_undef
Undefined RNN flags.
Definition: dnnl_types.h:1765
dnnl_nCdhw16c
@ dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:595
dnnl_query_convolution_d
@ dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:2374
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:9154
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:10005
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:8847
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:2538
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6527
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5425
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:3357
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:2266
dnnl_aBCdef2c8b4c
@ dnnl_aBCdef2c8b4c
6D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:389
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:8775
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:7949
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7939
dnnl::lrn_forward::lrn_forward
lrn_forward(const primitive_desc &pd)
Constructs an LRN forward propagation primitive.
Definition: dnnl.hpp:5440
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:206
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:6631
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7736
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:3748
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:8171
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:977
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:1776
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:3614
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3312
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1528
dnnl::layer_normalization_forward
Layer normalization forward propagation primitive.
Definition: dnnl.hpp:6716
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4603
dnnl::deconvolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5312
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:2948
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:2242
dnnl::stream_attr
A container for stream attributes.
Definition: dnnl.hpp:1034
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:6903
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:3532
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:948
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7931
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:4151
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:4051
dnnl_aBcd32b
@ dnnl_aBcd32b
4D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:280
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:201
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:7268
dnnl_lrn_within_channel
@ dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:1021
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:10111
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3336
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:2976
dnnl_reduction_norm_lp_sum
@ dnnl_reduction_norm_lp_sum
Reduction using lp norm.
Definition: dnnl_types.h:1065
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::pooling_v2_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 v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:10277
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:9090
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:1039
dnnl::pooling_v2_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 &dilation, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for pooling v2 (dilated pooling) backward propagation primitive.
Definition: dnnl.hpp:10343
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:2560
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5838
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:3381
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:1043
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::prelu_forward::primitive_desc
Primitive descriptor for a PReLU forward propagation primitive.
Definition: dnnl.hpp:10475
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:9964
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:1108
dnnl_eltwise_log
@ dnnl_eltwise_log
Eltwise: natural logarithm.
Definition: dnnl_types.h:983
dnnl::lbr_gru_backward::primitive_desc
Primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9410
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5351
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:6041
dnnl_query_layer_normalization_d
@ dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:2383
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:7646
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5530
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:5419
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:4978
dnnl::prelu_backward::prelu_backward
prelu_backward()=default
Default constructor. Produces an empty object.
dnnl::pooling_v2_forward
Pooling v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:10194
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:7111
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3597
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:10840
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3594
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:2410
dnnl_ABcd8b8a
@ dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:311
dnnl::engine::get_ocl_device
cl_device_id get_ocl_device() const
Returns the OpenCL device associated with the engine.
Definition: dnnl.hpp:967
dnnl_resampling_linear
@ dnnl_resampling_linear
Linear Resampling Method.
Definition: dnnl_types.h:1051
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:7233
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3318
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:9149
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:3342
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6766
dnnl_forward_training
@ dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:864
dnnl::query
query
Primitive descriptor query specification.
Definition: dnnl.hpp:752
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8941
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::reduction::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a reduction primitive from a C API primitive descriptor that mu...
Definition: dnnl.hpp:10719
dnnl_bac
@ dnnl_bac
permuted 3D tensor
Definition: dnnl_types.h:202
dnnl_eltwise_square
@ dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:958
dnnl_fuse_norm_relu
@ dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:1121
dnnl_bacde
@ dnnl_bacde
permuted 5D tensor
Definition: dnnl_types.h:204
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:2260
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:2519
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:9290
dnnl::prelu_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a prelu backward propagation primitive from a C API primitive d...
Definition: dnnl.hpp:10614
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6408
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:5073
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9308
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7128
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:6119
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:2275
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:8654
DNNL_ARG_WEIGHTS_PEEPHOLE
#define DNNL_ARG_WEIGHTS_PEEPHOLE
A special mnemonic for RNN weights applied to the peephole weights.
Definition: dnnl_types.h:2180
dnnl::rnn_primitive_desc_base::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7421
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:3653
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:6310
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:944
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3921
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6396
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6565
dnnl_ABcde4b16a4b
@ dnnl_ABcde4b16a4b
5D tensor blocked by 1st dimension with block size 16
Definition: dnnl_types.h:325
dnnl_nChw8c
@ dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:613
dnnl::batch_normalization_forward
Batch normalization forward propagation primitive.
Definition: dnnl.hpp:6434
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:1979
dnnl_binary
@ dnnl_binary
A binary primitive.
Definition: dnnl_types.h:919
dnnl_cdeba
@ dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:211
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:7959
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6994
dnnl_eltwise_tanh
@ dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:954
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:9116
dnnl_aBc4b
@ dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:238
dnnl::pooling_v2_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10420
dnnl::pooling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5649
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:182
dnnl_nCw8c
@ dnnl_nCw8c
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:625
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:6753
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:7254
dnnl_memory_desc_t::dims
dnnl_dims_t dims
Dimensions in the following order:
Definition: dnnl_types.h:1294
dnnl_stream_default_order
@ dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:2421
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:6014
dnnl_pooling
@ dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:905
dnnl::batch_normalization_backward
Batch normalization backward propagation primitive.
Definition: dnnl.hpp:6563
dnnl_acdb
@ dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:199
dnnl_query_lrn_d
@ dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:2381
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:874
dnnl::batch_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6514
dnnl_reduction_desc_init
dnnl_status_t DNNL_API dnnl_reduction_desc_init(dnnl_reduction_desc_t *desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *dst_desc, float p, float eps)
Initializes a descriptor for a reduction primitive.
dnnl::inner_product_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:7236
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1498
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:6796
dnnl_eltwise_clip_v2_use_dst_for_bwd
@ dnnl_eltwise_clip_v2_use_dst_for_bwd
Eltwise: clip version 2 (dst for backward)
Definition: dnnl_types.h:1009
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:9447
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:2533
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:5585
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:7758
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:186
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:5694
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1250
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:9077
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:5016
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:5522
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:5509
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9176
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:958
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:7685
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::prelu_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a prelu forward propagation primitive from a C API primitive de...
Definition: dnnl.hpp:10516
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:8673
dnnl::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4550
dnnl::prelu_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10619
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6657
dnnl::lstm_forward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8265
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:9376
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:7511
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:6323
dnnl_abcdefghijkl
@ dnnl_abcdefghijkl
plain 12D tensor
Definition: dnnl_types.h:189
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:2133
dnnl::pooling_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5604
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:981
dnnl_nCdhw8c
@ dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:601
dnnl_pooling_avg
@ dnnl_pooling_avg
Average pooling (alias for dnnl_pooling_avg_exclude_padding)
Definition: dnnl_types.h:1017
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:6082
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:6954
dnnl_vanilla_rnn
@ dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:1023
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:2215
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::reduction::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10723
dnnl_reduction_norm_lp_power_p_sum
@ dnnl_reduction_norm_lp_power_p_sum
Reduction using lp norm without final pth-root.
Definition: dnnl_types.h:1069
dnnl_unidirectional
@ dnnl_unidirectional
Alias for dnnl_unidirectional_left2right.
Definition: dnnl_types.h:1781
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:2236
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::prelu_backward::desc
Descriptor for a PReLU backward propagation primitive.
Definition: dnnl.hpp:10540
dnnl::lstm_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8291
dnnl_abdc
@ dnnl_abdc
permuted 4D tensor
Definition: dnnl_types.h:193
dnnl_eltwise_pow
@ dnnl_eltwise_pow
Eltwise: pow.
Definition: dnnl_types.h:989
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:10848
dnnl_cpu_isa_avx2_vnni
@ dnnl_cpu_isa_avx2_vnni
Intel AVX2 and Intel Deep Learning Boost (Intel DL Boost) support.
Definition: dnnl_types.h:2541
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8286
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4838
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:9874
dnnl_reduction_max
@ dnnl_reduction_max
Reduction using max.
Definition: dnnl_types.h:1053
dnnl::lstm_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8740
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6986
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9924
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:10081
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2209
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9615
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:7539
dnnl::prelu_forward::desc
Descriptor for a PReLU forward propagation primitive.
Definition: dnnl.hpp:10453
dnnl_aBcd4b
@ dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:282
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:1004
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:7252
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6826
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:10178
dnnl::primitive::kind::layer_normalization
@ layer_normalization
A layer normalization primitive.
dnnl_reduction_mean
@ dnnl_reduction_mean
Reduction using mean.
Definition: dnnl_types.h:1061
dnnl::primitive_attr::get_rnn_data_qparams
void get_rnn_data_qparams(float &scale, float &shift)
Returns the quantization scale and shift parameters for RNN data tensors.
Definition: dnnl.hpp:3030
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:7427
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1325
dnnl_query_matmul_d
@ dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:2389
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:2323
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:2230
dnnl::gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8920
DNNL_ARG_SRC_LAYER
#define DNNL_ARG_SRC_LAYER
A special mnemonic for RNN input vector.
Definition: dnnl_types.h:2118
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:2022
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:1044
dnnl_query_binary_d
@ dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:2387
DNNL_MEMORY_ALLOCATE
#define DNNL_MEMORY_ALLOCATE
Special pointer value that indicates that the library needs to allocate an underlying buffer for a me...
Definition: dnnl_types.h:1342
dnnl_lbr_gru
@ dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:1035
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:872
dnnl::resampling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:10055
dnnl_prelu_forward_desc_init
dnnl_status_t DNNL_API dnnl_prelu_forward_desc_init(dnnl_prelu_desc_t *prelu_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, const dnnl_memory_desc_t *weights_desc)
Initializes a descriptor for PReLU (leaky ReLU with trainable alpha parameter) forward propagation pr...
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:198
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:5367
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:4585
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:622
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:7150
dnnl_use_global_stats
@ dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:1095
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:3956
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9908
dnnl_lrn_across_channels
@ dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:1019
dnnl::batch_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6671
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:6507
dnnl_concat
@ dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:893
dnnl::inner_product_forward
Inner product forward propagation primitive.
Definition: dnnl.hpp:7025
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:5057
dnnl_query_diff_dst_md
@ dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:2401
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:6308
dnnl_aBcdef16b
@ dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:384
dnnl_layer_normalization
@ dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:911
dnnl::gru_backward::primitive_desc
Primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:9042
dnnl::pooling_v2_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:10247
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4885
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:9524
dnnl_memory_desc_t::data_type
dnnl_data_type_t data_type
Data type of the tensor elements.
Definition: dnnl_types.h:1297
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:7290
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:5729
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:7954
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:9460
DNNL_ARG_BIAS
#define DNNL_ARG_BIAS
Bias tensor argument.
Definition: dnnl_types.h:2189
dnnl_abcdefgh
@ dnnl_abcdefgh
plain 8D tensor
Definition: dnnl_types.h:185
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:5307
dnnl::deconvolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5060
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:8236
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:6780
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5431
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:1105
dnnl_abcdefghij
@ dnnl_abcdefghij
plain 10D tensor
Definition: dnnl_types.h:187
dnnl_cpu_isa_all
@ dnnl_cpu_isa_all
Any ISA (excepting those listed as initial support)
Definition: dnnl_types.h:2502
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:8270
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:2373
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7910
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:9668
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:2896
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:371
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:4121
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:7439
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:1165
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:6934
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_prelu_backward_desc_init
dnnl_status_t DNNL_API dnnl_prelu_backward_desc_init(dnnl_prelu_desc_t *prelu_desc, const dnnl_memory_desc_t *data_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *diff_weights_desc)
Initializes a descriptor for PReLU (leaky ReLU with trainable alpha parameter) backward propagation p...
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:9124
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:5885
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:216
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:6030
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:7915
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:1975
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6863
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:9108
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:6371
dnnl_query_workspace_md
@ dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:2402
dnnl::lstm_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8242
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9900
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5985
dnnl_format_tag_last
@ dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:466
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:10064
dnnl_query_deconvolution_d
@ dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:2375
dnnl::primitive_attr::get_rnn_weights_qparams
void get_rnn_weights_qparams(int &mask, std::vector< float > &scales)
Returns the quantization scaling factors for RNN projection weights tensors.
Definition: dnnl.hpp:3092
DNNL_ARG_DST_ITER
#define DNNL_ARG_DST_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2150
dnnl::prelu_forward::prelu_forward
prelu_forward()=default
Default constructor. Produces an empty object.
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:8225
dnnl_logsoftmax
@ dnnl_logsoftmax
A logsoftmax primitive.
Definition: dnnl_types.h:921
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:4162
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:9212
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:2272
dnnl_deconvolution_direct
@ dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:948
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:7479
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:889
dnnl::post_ops::append_binary
void append_binary(algorithm aalgorithm, const memory::desc &src1_desc)
Appends a binary post-op.
Definition: dnnl.hpp:2711
dnnl::matmul::primitive_desc
Primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9848
dnnl::pooling_v2_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const pooling_v2_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a pooling v2 (dilated pooling) backward propagation primitive.
Definition: dnnl.hpp:10401
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6466
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9895
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:1628
dnnl_stream_default_flags
@ dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:2427
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:5274
DNNL_ARG_WEIGHTS_LAYER
#define DNNL_ARG_WEIGHTS_LAYER
A special mnemonic for RNN weights applied to the layer input.
Definition: dnnl_types.h:2168
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:1419
dnnl_eltwise_logsigmoid
@ dnnl_eltwise_logsigmoid
Eltwise: logsigmoid.
Definition: dnnl_types.h:995
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:6351
dnnl::pooling_v2_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:10423
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8699
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:4482
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6594
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6295
dnnl_query_reduction_d
@ dnnl_query_reduction_d
reduction descriptor
Definition: dnnl_types.h:2392
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:3655
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:876
dnnl::prelu_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10522
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:200
dnnl_version_t
Structure containing version information as per Semantic Versioning
Definition: dnnl_types.h:2470
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1659
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3330
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3324
dnnl_eltwise_exp_use_dst_for_bwd
@ dnnl_eltwise_exp_use_dst_for_bwd
Eltwise: exp (dst for backward)
Definition: dnnl_types.h:1007
dnnl::layer_normalization_backward
Layer normalization backward propagation primitive.
Definition: dnnl.hpp:6861
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:8870
dnnl_set_verbose
dnnl_status_t DNNL_API dnnl_set_verbose(int level)
Configures verbose output to stdout.
dnnl::pooling_v2_backward
Pooling v2 (dilated pooling) backward propagation primitive.
Definition: dnnl.hpp:10315
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:6384
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:7974
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:1441
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:3286
dnnl_aBcd16b
@ dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:272
dnnl_resampling_nearest
@ dnnl_resampling_nearest
Nearest Neighbor Resampling Method.
Definition: dnnl_types.h:1049
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:7473
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:6611
dnnl::layer_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6820
dnnl_rnn
@ dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:915
dnnl::vanilla_rnn_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7744
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4606
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:4611
dnnl_aBc32b
@ dnnl_aBc32b
3D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:236
dnnl::lstm_backward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8714
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:10784
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:6732
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:2061
dnnl_query_num_of_outputs_s32
@ dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:2353
dnnl::binary::primitive_desc::src1_desc
memory::desc src1_desc() const
Returns the memory descriptor for source #1.
Definition: dnnl.hpp:9786
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:5556
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel Streaming SIMD Extensions 4.1 (Intel SSE4.1)
Definition: dnnl_types.h:2505
dnnl_abcdfe
@ dnnl_abcdfe
permuted 6D tensor
Definition: dnnl_types.h:215
dnnl_aBCd2b4c2b
@ dnnl_aBCd2b4c2b
4D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:323
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:10863
dnnl::prelu_backward
PReLU backward propagation primitive.
Definition: dnnl.hpp:10538
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:3209
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:10751
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9328
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:6977
dnnl_abdec
@ dnnl_abdec
permuted 5D tensor
Definition: dnnl_types.h:194
dnnl_reduction_sum
@ dnnl_reduction_sum
Reduction using sum.
Definition: dnnl_types.h:1057
dnnl_cpu_isa_avx2
@ dnnl_cpu_isa_avx2
Intel Advanced Vector Extensions 2 (Intel AVX2)
Definition: dnnl_types.h:2511
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:2528
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:3698
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:4193
dnnl_memory_desc_t::ndims
int ndims
Number of dimensions.
Definition: dnnl_types.h:1279
dnnl_aBc8b
@ dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:262
dnnl::rnn_primitive_desc_base::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7465
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:3306
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:1692
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:10826
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:3509
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:9686
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:9712
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5446
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:5146
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4894
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:7152
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:985
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:9491
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:1005
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:6823
dnnl::pooling_v2_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10295
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:9944
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:184
dnnl_pooling_avg_include_padding
@ dnnl_pooling_avg_include_padding
Average pooling include padding.
Definition: dnnl_types.h:1013
dnnl::layer_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6829
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:9139
dnnl::prelu_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 PReLU forward propagation primitive.
Definition: dnnl.hpp:10505
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:2131
dnnl::primitive::kind::pooling_v2
@ pooling_v2
A pooling version 2 primitive.
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:9838
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1232
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:5036
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:7712
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:3671
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:7366
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8732
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:5257
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:5632
dnnl_deconvolution
@ dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:899
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:2792
dnnl_aBcde4b
@ dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:343
dnnl::pooling_v2_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:10298
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:5408
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::prelu_backward::desc::desc
desc(const memory::desc &data_desc, const memory::desc &weight_desc, const memory::desc &diff_data_desc, const memory::desc &diff_weights_desc)
Constructs a descriptor for a PReLU backward propagation primitive.
Definition: dnnl.hpp:10551
dnnl::layer_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6974
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:8780
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:5668
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5054
dnnl_stream_out_of_order
@ dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:2425
dnnl::inner_product_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:7131
dnnl::primitive_desc
A base class for descriptors of all primitives that have an operation descriptor and that support ite...
Definition: dnnl.hpp:3839
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:8806
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::pooling_v2_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a pooling v2 (dilated pooling) forward propagation primitive fr...
Definition: dnnl.hpp:10289
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:9789
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:6091
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:7320
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:9514
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:7524
dnnl_convolution
@ dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:897
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:7969
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:1083
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:7499
dnnl::pooling_v2_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:10301
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:6679
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:8686
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:5761
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:9641
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:5533
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:5988
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6989
dnnl::pooling_v2_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:10426
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:5190
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:7369
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:4769
dnnl_stream_get_engine
dnnl_status_t DNNL_API dnnl_stream_get_engine(const_dnnl_stream_t stream, dnnl_engine_t *engine)
Returns the engine of a stream object.
dnnl_lrn
@ dnnl_lrn
An LRN primitive.
Definition: dnnl_types.h:907
dnnl::vanilla_rnn_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7964
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:2396
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::primitive::kind::prelu
@ prelu
A PReLU primitive.
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:4267
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:2487
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:9509
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:9134
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6399
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:2762
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5781
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9556
dnnl::reorder::execute
void execute(const stream &astream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:3626
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9612
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3724
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:2033
dnnl::primitive_attr
Primitive attributes.
Definition: dnnl.hpp:2746
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:6100
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9494
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:7340
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:7134
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9470
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::reduction::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a reduction primitive.
Definition: dnnl.hpp:10696
dnnl::shuffle_backward::shuffle_backward
shuffle_backward(const primitive_desc &pd)
Constructs a shuffle backward propagation primitive.
Definition: dnnl.hpp:9698
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:7178
dnnl::prelu_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
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:2349
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:2209
dnnl_query_softmax_d
@ dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:2378
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1915
dnnl_binary_sub
@ dnnl_binary_sub
Binary sub.
Definition: dnnl_types.h:1047
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:9311
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4196
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:1001
dnnl::prelu_forward
PReLU forward propagation primitive.
Definition: dnnl.hpp:10451
dnnl::shuffle_backward::desc
Descriptor for a shuffle primitive backward propagation primitive.
Definition: dnnl.hpp:9631
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6088
dnnl_cpu
@ dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1983
dnnl::memory
Memory object.
Definition: dnnl.hpp:1230
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::pooling_v2_backward::pooling_v2_backward
pooling_v2_backward()=default
Default constructor. Produces an empty object.
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:7547
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:2866
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:5104
dnnl_query_undef
@ dnnl_query_undef
no query
Definition: dnnl_types.h:2347
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:981
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:6000
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:9767
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:8898
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3295
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8727
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:6674
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:217
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:10769
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:2221
dnnl::batch_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6517
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:7081
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:5461
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:9594
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:8770
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3250
dnnl::threadpool_iface
Abstract threadpool interface.
Definition: dnnl_threadpool_iface.hpp:27
dnnl::reduction::reduction
reduction()=default
Default constructor. Produces an empty object.
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:3762
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8255
dnnl_binary_div
@ dnnl_binary_div
Binary div.
Definition: dnnl_types.h:1045
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:7353
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6436
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:9776
dnnl::prelu_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
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:991
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:7918
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:9473
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:5236
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7413
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:4358
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:10148
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6660
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:4868
dnnl::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9174
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:10169
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6688
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:1277
dnnl_backward_bias
@ dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:880
dnnl::reduction::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 reduction primitive.
Definition: dnnl.hpp:10710
dnnl::vanilla_rnn_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7731
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8250
dnnl::memory::memory
memory(const desc &md, const engine &aengine, void *handle)
Constructs a memory object.
Definition: dnnl.hpp:2191
dnnl_matmul
@ dnnl_matmul
A matrix multiplication primitive.
Definition: dnnl_types.h:923
dnnl::rnn_primitive_desc_base::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:7451
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:2848
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:4628
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:6167
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6304
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:4180
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:6230
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2500
DNNL_ARG_SRC_ITER
#define DNNL_ARG_SRC_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2127
dnnl::inner_product_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:7137
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:2158
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5670
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9579
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:4437
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:4394
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward()=default
Default constructor. Produces an empty object.
dnnl::reduction::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &dst_desc, float p, float eps)
Constructs a descriptor for a reduction primitive using algorithm specific parameters,...
Definition: dnnl.hpp:10674
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:7215
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4891
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7603
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:9716
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:8883
dnnl_nChw4c
@ dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:610
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:8745
dnnl_pooling_v2_forward_desc_init
dnnl_status_t DNNL_API dnnl_pooling_v2_forward_desc_init(dnnl_pooling_v2_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 dilation, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for pooling v2 (pooling with dilation support) forward propagation primitive...
dnnl::lbr_gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:9483
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7358
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:3393
dnnl_bacd
@ dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:203
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:6917
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:3351
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:607
dnnl::shuffle_backward::primitive_desc
Primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9650
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:4999
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:2477
dnnl::primitive_attr::get_rnn_weights_projection_qparams
void get_rnn_weights_projection_qparams(int &mask, std::vector< float > &scales)
Returns the quantization scaling factors for RNN projection weights tensors.
Definition: dnnl.hpp:3161
dnnl_query_eltwise_d
@ dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:2377
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:4617
dnnl::engine::engine
engine(kind akind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:909
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9714
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:5075
dnnl_binary_max
@ dnnl_binary_max
Binary max.
Definition: dnnl_types.h:1041
dnnl::pooling_v2_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a pooling v2 (dilated pooling) backward propagation primitive f...
Definition: dnnl.hpp:10415
dnnl::concat::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3721
dnnl_cba
@ dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:208
dnnl::rnn_primitive_desc_base::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7459
dnnl_reduction_desc_t
A descriptor of reduction operation.
Definition: dnnl_types.h:1943
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:3268
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:9499
dnnl_query_num_of_inputs_s32
@ dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:2352
dnnl::memory::dims
std::vector< dim > dims
Vector of dimensions.
Definition: dnnl.hpp:1235
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:6130
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4907
dnnl_primitive_attr_get_rnn_data_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_get_rnn_data_qparams(const_dnnl_primitive_attr_t attr, float *scale, float *shift)
Returns the quantization scale and shift parameters for RNN data tensors.
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6523
dnnl_acbde
@ dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:197
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:8785
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:6071
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:2959
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7718
dnnl_dcab
@ dnnl_dcab
permuted 4D tensor
Definition: dnnl_types.h:210
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:7095
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8936
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:1923
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4171
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:8210
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:939
dnnl_deconvolution_winograd
@ dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:950
dnnl::prelu_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:10525
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:1354
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:2515
dnnl::layer_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6980
dnnl::stream::get_engine
engine get_engine() const
Returns the associated engine.
Definition: dnnl.hpp:1129
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:5617
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:2217
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1269
dnnl_eltwise_exp
@ dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:972
dnnl_abcdef
@ dnnl_abcdef
plain 6D tensor
Definition: dnnl_types.h:183
dnnl::convolution_forward::convolution_forward
convolution_forward(const primitive_desc &pd)
Constructs a convolution forward propagation primitive.
Definition: dnnl.hpp:4189
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:2150
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:9554
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward(const primitive_desc &pd)
Constructs an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9322
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:10035
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:392
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:3923
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:9824
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:2144
dnnl_bidirectional_sum
@ dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1779
dnnl::lstm_forward::lstm_forward
lstm_forward(const primitive_desc &pd)
Constructs an LSTM forward propagation primitive.
Definition: dnnl.hpp:8302
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:8765
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8275
dnnl_eltwise_linear
@ dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:964
dnnl_nCw16c
@ dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:619
dnnl
oneDNN namespace
Definition: dnnl.hpp:81
dnnl_vanilla_gru
@ dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:1027
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:9300
dnnl_abc
@ dnnl_abc
plain 3D tensor
Definition: dnnl_types.h:179
dnnl_primitive_attr_set_rnn_weights_projection_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_weights_projection_qparams(dnnl_primitive_attr_t attr, dnnl_dim_t count, int mask, const float *scales)
Sets quantization scaling factors for RNN projection weights tensors.
dnnl::primitive_attr::set_rnn_weights_projection_qparams
void set_rnn_weights_projection_qparams(int mask, const std::vector< float > &scales)
Sets quantization scaling factors for RNN projection weights tensors.
Definition: dnnl.hpp:3133
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:9890
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4364
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:4909
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:9303
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:5868
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1867
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:9478
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:3589
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:7872
dnnl_post_ops_append_binary
dnnl_status_t DNNL_API dnnl_post_ops_append_binary(dnnl_post_ops_t post_ops, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src1_desc)
Appends a binary post-op.
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:5748
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:2227
dnnl_convolution_direct
@ dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:942
dnnl_primitive_attr_get_rnn_weights_projection_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_get_rnn_weights_projection_qparams(const_dnnl_primitive_attr_t attr, dnnl_dim_t *count, int *mask, const float **scales)
Returns the quantization scaling factors for RNN projection weights tensors.
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:4135
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_reduction_min
@ dnnl_reduction_min
Reduction using min.
Definition: dnnl_types.h:1055
dnnl::sum::sum
sum(const primitive_desc &pd)
Constructs a sum primitive.
Definition: dnnl.hpp:3829
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:3732
dnnl::prelu_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, const memory::desc &weight_desc)
Constructs a descriptor for a PReLU forward propagation primitive.
Definition: dnnl.hpp:10464
dnnl_query_diff_src_md
@ dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:2397
dnnl_abcdefgih
@ dnnl_abcdefgih
permuted 9D tensor
Definition: dnnl_types.h:218
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-op.
Definition: dnnl.hpp:2523
dnnl::vanilla_rnn_forward
Vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7601
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9465
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:9265
dnnl::stream::get_ocl_command_queue
cl_command_queue get_ocl_command_queue() const
Returns the underlying OpenCL queue object.
Definition: dnnl.hpp:1139
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7985
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9689
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:5825
dnnl::post_ops::get_params_binary
void get_params_binary(int index, algorithm &aalgorithm, memory::desc &src1_desc) const
Returns the parameters of a binary post-op.
Definition: dnnl.hpp:2722
dnnl_pooling_v2_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1566
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4903
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:10774
dnnl_forward_scoring
@ dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:870
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:358
dnnl::reorder::reorder
reorder(const primitive_desc &pd)
Constructs a reorder primitive.
Definition: dnnl.hpp:3605
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:7122
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:1947
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:7165
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:2427
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9287
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:477
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4288
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8735
dnnl_prop_kind_undef
@ dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:861
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:6879
dnnl::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6654
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:382
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:5323
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::reduction::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:10726
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:6055
dnnl::prelu_backward::prelu_backward
prelu_backward(const primitive_desc &pd)
Constructs a prelu backward propagation primitive.
Definition: dnnl.hpp:10634
dnnl_rnn_desc_t::prop_kind
dnnl_prop_kind_t prop_kind
The kind of propagation.
Definition: dnnl_types.h:1791
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:8110
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:9504
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:2350
dnnl_unidirectional_left2right
@ dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1771
dnnl_prelu
@ dnnl_prelu
A PReLU primitive.
Definition: dnnl_types.h:931
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:5558
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:3578
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5930
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6216
dnnl_primitive_attr_get_rnn_weights_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_get_rnn_weights_qparams(const_dnnl_primitive_attr_t attr, dnnl_dim_t *count, int *mask, const float **scales)
Returns the quantization scaling factors for RNN weights tensors.
dnnl_eltwise_elu
@ dnnl_eltwise_elu
Eltwise: exponential linear unit (elu)
Definition: dnnl_types.h:956
dnnl::binary::primitive_desc::src0_desc
memory::desc src0_desc() const
Returns the memory descriptor for source #0.
Definition: dnnl.hpp:9783
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:2306
dnnl::convolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4349
dnnl::stream_attr::get_threadpool
threadpool_iface * get_threadpool()
Returns the threadpool attribute.
Definition: dnnl.hpp:1069
dnnl::binary::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_reduction
@ dnnl_reduction
A reduction primitive.
Definition: dnnl_types.h:929
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward(const primitive_desc &pd)
Constructs a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6559
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:8750
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:9624
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:3818
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:7892
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:622
dnnl::primitive_attr::get_scratchpad_mode
scratchpad_mode get_scratchpad_mode() const
Returns the scratchpad mode.
Definition: dnnl.hpp:2766
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:341
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:1930
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:2509
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:7701
dnnl_vanilla_lstm
@ dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:1025
dnnl_any_engine
@ dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1981
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:7394
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:2750
dnnl_nCdhw4c
@ dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:598
dnnl::lrn_backward::primitive_desc
Primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5474
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:925
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7989
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:7228
dnnl_cpu_isa_avx
@ dnnl_cpu_isa_avx
Intel Advanced Vector Extensions (Intel AVX)
Definition: dnnl_types.h:2508
dnnl_bca
@ dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:205
dnnl::primitive_desc_base::get_engine
engine get_engine() const
Returns the engine of the primitive descriptor.
Definition: dnnl.hpp:3193
dnnl_reduction_norm_lp_max
@ dnnl_reduction_norm_lp_max
Reduction using lp norm.
Definition: dnnl_types.h:1063
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:858
dnnl::gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9095
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:3197
dnnl_query_scratchpad_md
@ dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:2403
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:4676
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8260
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6520
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:3230
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:5852
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6666
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:6580
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:979
dnnl::deconvolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4888
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:2398
dnnl::pooling_v2_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:10261
dnnl::pooling_v2_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const pooling_v2_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a pooling v2 (dilated pooling) backward propagation primitive.
Definition: dnnl.hpp:10381
dnnl::layer_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7002
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:3792
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:5334
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:9860
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:5490
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:3185
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:6106
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::prelu_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:10622
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:4817
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:6480
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:2382
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:9058
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:999
dnnl::resampling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10052
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:4338
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8308
dnnl::inner_product_backward_weights::inner_product_backward_weights
inner_product_backward_weights()=default
Default constructor. Produces an empty object.
dnnl::pooling_v2_forward::pooling_v2_forward
pooling_v2_forward(const primitive_desc &pd)
Constructs a pooling v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:10311
dnnl::set_jit_dump
status set_jit_dump(int enable)
Configures dumping of JIT-generated code.
Definition: dnnl.hpp:10779
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9121
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6191
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7739
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:4642
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:5444
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:8597
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6292
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:1794
dnnl::softmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6188
dnnl::prelu_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const prelu_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a PReLU backward propagation primitive.
Definition: dnnl.hpp:10601
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:6016
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:887
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:9568
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:8755
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for an RNN backward propagation primitive.
Definition: dnnl.hpp:7855
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:3746
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6241
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:8719
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:968
dnnl::handle::handle
handle(const handle< T, traits > &)=default
Copy constructor.
dnnl_abcdefghikj
@ dnnl_abcdefghikj
permuted 11D tensor
Definition: dnnl_types.h:220
dnnl::gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9100
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:5917
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7671
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:5643
DNNL_ARG_FROM
#define DNNL_ARG_FROM
A special mnemonic for reorder source argument.
Definition: dnnl_types.h:2121
dnnl_unidirectional_right2left
@ dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1773
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:6255
dnnl_aBcd8b
@ dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:303
dnnl::gru_backward::gru_backward
gru_backward(const primitive_desc &pd)
Constructs a GRU backward propagation primitive.
Definition: dnnl.hpp:9170
dnnl::deconvolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5320
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6814
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:6334
dnnl_query_scratchpad_engine
@ dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:2361
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:4224
dnnl_pooling_v2
@ dnnl_pooling_v2
A pooling version 2 primitive (pooling with dilation support).
Definition: dnnl_types.h:927
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:3066
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-op.
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:2144
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:4529
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:10070
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:5294
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:8959
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:5967
dnnl_query_exec_arg_md
@ dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:2404
dnnl::lstm_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8724
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:8696
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4644
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:6644
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:1015
dnnl_binary_add
@ dnnl_binary_add
Binary add.
Definition: dnnl_types.h:1037
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:5879
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7923
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.