oneAPI Deep Neural Network Library (oneDNN)
Performance library for Deep Learning
1.7.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,
321  };
322 
323  using handle::handle;
324 
326  primitive() = default;
327 
332 
337 
343 
347  inline kind get_kind() const;
348 
361  void execute(const stream &astream,
362  const std::unordered_map<int, memory> &args) const;
363 };
364 
370  return static_cast<dnnl_primitive_kind_t>(akind);
371 }
372 
376  "could not get a primitive descriptor from a primitive");
377  return pd;
378 }
379 
382  // TODO (Roma): the code below is only needed because get_primitive_desc
383  // returns a C type.
386  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
387  "could not get a primitive kind from a primitive descriptor");
388  return static_cast<dnnl::primitive::kind>(kind);
389 }
390 
392 
404 
406 enum class scratchpad_mode {
429 };
430 
436  return static_cast<dnnl_scratchpad_mode_t>(mode);
437 }
438 
440 enum class prop_kind {
445  forward_training = dnnl_forward_training,
449  forward_inference = dnnl_forward_inference,
452  forward_scoring = dnnl_forward_scoring,
455  forward = dnnl_forward,
457  backward = dnnl_backward,
459  backward_data = dnnl_backward_data,
461  backward_weights = dnnl_backward_weights,
464 };
465 
471  return static_cast<dnnl_prop_kind_t>(akind);
472 }
473 
475 enum class algorithm {
477  undef = dnnl_alg_kind_undef,
480  convolution_auto = dnnl_convolution_auto,
482  convolution_direct = dnnl_convolution_direct,
484  convolution_winograd = dnnl_convolution_winograd,
486  deconvolution_direct = dnnl_deconvolution_direct,
488  deconvolution_winograd = dnnl_deconvolution_winograd,
490  eltwise_relu = dnnl_eltwise_relu,
492  eltwise_tanh = dnnl_eltwise_tanh,
494  eltwise_elu = dnnl_eltwise_elu,
496  eltwise_square = dnnl_eltwise_square,
498  eltwise_abs = dnnl_eltwise_abs,
500  eltwise_sqrt = dnnl_eltwise_sqrt,
502  eltwise_swish = dnnl_eltwise_swish,
504  eltwise_linear = dnnl_eltwise_linear,
506  eltwise_bounded_relu = dnnl_eltwise_bounded_relu,
508  eltwise_soft_relu = dnnl_eltwise_soft_relu,
510  eltwise_logistic = dnnl_eltwise_logistic,
512  eltwise_exp = dnnl_eltwise_exp,
515  eltwise_gelu = dnnl_eltwise_gelu,
517  eltwise_gelu_tanh = dnnl_eltwise_gelu_tanh,
519  eltwise_gelu_erf = dnnl_eltwise_gelu_erf,
521  eltwise_log = dnnl_eltwise_log,
523  eltwise_clip = dnnl_eltwise_clip,
525  eltwise_pow = dnnl_eltwise_pow,
527  eltwise_round = dnnl_eltwise_round,
529  eltwise_relu_use_dst_for_bwd = dnnl_eltwise_relu_use_dst_for_bwd,
531  eltwise_tanh_use_dst_for_bwd = dnnl_eltwise_tanh_use_dst_for_bwd,
533  eltwise_elu_use_dst_for_bwd = dnnl_eltwise_elu_use_dst_for_bwd,
535  eltwise_sqrt_use_dst_for_bwd = dnnl_eltwise_sqrt_use_dst_for_bwd,
537  eltwise_logistic_use_dst_for_bwd = dnnl_eltwise_logistic_use_dst_for_bwd,
539  eltwise_exp_use_dst_for_bwd = dnnl_eltwise_exp_use_dst_for_bwd,
541  lrn_across_channels = dnnl_lrn_across_channels,
543  lrn_within_channel = dnnl_lrn_within_channel,
545  pooling_max = dnnl_pooling_max,
548  pooling_avg = dnnl_pooling_avg,
550  pooling_avg_include_padding = dnnl_pooling_avg_include_padding,
552  pooling_avg_exclude_padding = dnnl_pooling_avg_exclude_padding,
554  vanilla_rnn = dnnl_vanilla_rnn,
556  vanilla_lstm = dnnl_vanilla_lstm,
558  vanilla_gru = dnnl_vanilla_gru,
564  lbr_gru = dnnl_lbr_gru,
566  binary_add = dnnl_binary_add,
568  binary_mul = dnnl_binary_mul,
570  binary_max = dnnl_binary_max,
572  binary_min = dnnl_binary_min,
574  binary_div = dnnl_binary_div,
576  resampling_nearest = dnnl_resampling_nearest,
578  resampling_linear = dnnl_resampling_linear,
580  reduction_max = dnnl_reduction_max,
582  reduction_min = dnnl_reduction_min,
584  reduction_sum = dnnl_reduction_sum,
586  reduction_mul = dnnl_reduction_mul,
588  reduction_mean = dnnl_reduction_mean,
590  reduction_norm_lp_max = dnnl_reduction_norm_lp_max,
592  reduction_norm_lp_sum = dnnl_reduction_norm_lp_sum,
594  reduction_norm_lp_power_p_max = dnnl_reduction_norm_lp_power_p_max,
597 };
598 
603  return static_cast<dnnl_alg_kind_t>(aalgorithm);
604 }
605 
607 
610 
612 enum class normalization_flags : unsigned {
618 
626  use_global_stats = dnnl_use_global_stats,
627 
633  use_scale_shift = dnnl_use_scaleshift,
634 
640 };
641 
646  return static_cast<dnnl_normalization_flags_t>(flags);
647 }
648 
650 
653 
655 enum class rnn_flags : unsigned {
658 };
659 
664  return static_cast<dnnl_rnn_flags_t>(flags);
665 }
666 
667 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
668  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
669  return static_cast<enum_name>( \
670  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
671  } \
672 \
673  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
674  return static_cast<enum_name>( \
675  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
676  } \
677 \
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  lhs = static_cast<enum_name>( \
685  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
686  return lhs; \
687  } \
688 \
689  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
690  lhs = static_cast<enum_name>( \
691  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
692  return lhs; \
693  } \
694 \
695  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
696  lhs = static_cast<enum_name>( \
697  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
698  return lhs; \
699  } \
700 \
701  inline enum_name operator~(enum_name rhs) { \
702  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
703  }
704 
705 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
706 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
707 
708 enum class rnn_direction {
711  unidirectional_left2right = dnnl_unidirectional_left2right,
713  unidirectional_right2left = dnnl_unidirectional_right2left,
716  bidirectional_concat = dnnl_bidirectional_concat,
719  bidirectional_sum = dnnl_bidirectional_sum,
722 };
723 
728  return static_cast<dnnl_rnn_direction_t>(dir);
729 }
730 
732 
735 
742 enum class query {
745 
750 
752  num_of_inputs_s32 = dnnl_query_num_of_inputs_s32,
754  num_of_outputs_s32 = dnnl_query_num_of_outputs_s32,
755 
757  time_estimate_f64 = dnnl_query_time_estimate_f64,
761  memory_consumption_s64 = dnnl_query_memory_consumption_s64,
762 
767 
769  reorder_src_engine = dnnl_query_reorder_src_engine,
771  reorder_dst_engine = dnnl_query_reorder_dst_engine,
772 
775 
778 
780  op_d = dnnl_query_op_d,
782  convolution_d = dnnl_query_convolution_d,
784  deconvolution_d = dnnl_query_deconvolution_d,
786  shuffle_d = dnnl_query_shuffle_d,
788  eltwise_d = dnnl_query_eltwise_d,
790  softmax_d = dnnl_query_softmax_d,
792  pooling_d = dnnl_query_pooling_d,
794  lrn_d = dnnl_query_lrn_d,
796  batch_normalization_d = dnnl_query_batch_normalization_d,
798  layer_normalization_d = dnnl_query_layer_normalization_d,
800  inner_product_d = dnnl_query_inner_product_d,
802  rnn_d = dnnl_query_rnn_d,
804  binary_d = dnnl_query_binary_d,
806  logsoftmax_d = dnnl_query_logsoftmax_d,
808  matmul_d = dnnl_query_matmul_d,
810  resampling_d = dnnl_query_resampling_d,
812  reduction_d = dnnl_query_reduction_d,
813 
815  src_md = dnnl_query_src_md,
817  diff_src_md = dnnl_query_diff_src_md,
819  weights_md = dnnl_query_weights_md,
821  diff_weights_md = dnnl_query_diff_weights_md,
823  dst_md = dnnl_query_dst_md,
825  diff_dst_md = dnnl_query_diff_dst_md,
827  workspace_md = dnnl_query_workspace_md,
829  scratchpad_md = dnnl_query_scratchpad_md,
832 };
833 
838  return static_cast<dnnl_query_t>(aquery);
839 }
840 
842 
844 
855 
857 template <>
858 struct handle_traits<dnnl_engine_t> {
859  static dnnl_status_t destructor(dnnl_engine_t p) {
860  return dnnl_engine_destroy(p);
861  }
862 };
864 
866 struct engine : public handle<dnnl_engine_t> {
867  friend struct primitive;
868  friend struct reorder;
869 
871  enum class kind {
875  cpu = dnnl_cpu,
877  gpu = dnnl_gpu,
878  };
879 
880  using handle::handle;
881 
884  engine() = default;
885 
890  static size_t get_count(kind akind) {
891  return dnnl_engine_get_count(convert_to_c(akind));
892  }
893 
899  engine(kind akind, size_t index) {
902  dnnl_engine_create(&engine, convert_to_c(akind), index),
903  "could not create an engine");
904  reset(engine);
905  }
906 
907 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
908  engine(kind akind, cl_device_id device, cl_context context) {
915  dnnl_engine_t c_engine;
916  error::wrap_c_api(dnnl_engine_create_ocl(&c_engine, convert_to_c(akind),
917  device, context),
918  "could not create an engine");
919  reset(c_engine);
920  }
921 #endif
922 
928  dnnl_engine_t c_engine;
931  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
932  "could not get an engine from a primitive_desc");
933  reset(c_engine, true);
934  }
935 
938  kind get_kind() const {
941  "could not get kind of an engine");
942  return static_cast<engine::kind>(kind);
943  }
944 
945 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
946  cl_context get_ocl_context() const {
949  cl_context context = nullptr;
951  "could not get an OpenCL context from an engine");
952  return context;
953  }
954 
957  cl_device_id get_ocl_device() const {
958  cl_device_id device = nullptr;
960  "could not get an OpenCL device from an engine");
961  return device;
962  }
963 #endif
964 
970  template <typename primitive_desc>
971  static engine query(const primitive_desc &pd) {
972  return query(pd, dnnl::query::engine);
973  }
974 
975 private:
976  static dnnl_engine_kind_t convert_to_c(kind akind) {
977  return static_cast<dnnl_engine_kind_t>(akind);
978  }
979 
980  template <typename primitive_desc>
981  static engine query(const primitive_desc &pd, dnnl::query what) {
982  dnnl_engine_t c_engine;
984  dnnl::convert_to_c(what), 0, &c_engine),
985  "could not get an engine from a primitive_desc");
986  return engine(c_engine, true);
987  }
988 };
989 
995  return static_cast<dnnl_engine_kind_t>(akind);
996 }
997 
999 
1007 
1009 template <>
1010 struct handle_traits<dnnl_stream_t> {
1011  static dnnl_status_t destructor(dnnl_stream_t p) {
1012  return dnnl_stream_destroy(p);
1013  }
1014 };
1015 template <>
1016 struct handle_traits<dnnl_stream_attr_t> {
1017  static dnnl_status_t destructor(dnnl_stream_attr_t p) {
1018  return dnnl_stream_attr_destroy(p);
1019  }
1020 };
1022 
1024 struct stream_attr : public handle<dnnl_stream_attr_t> {
1025  using handle::handle;
1026 
1028  stream_attr() = default;
1029 
1035  dnnl_stream_attr_t attr;
1037  "could not create stream attributes");
1038  reset(attr);
1039  }
1040 
1041 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
1042  void set_threadpool(threadpool_iface *threadpool) {
1050  error::wrap_c_api(dnnl_stream_attr_set_threadpool(get(), threadpool),
1051  "could not set stream threadpool attribute");
1052  }
1053 
1060  threadpool_iface *tp;
1061  error::wrap_c_api(dnnl_stream_attr_get_threadpool(get(), (void **)&tp),
1062  "could not set stream threadpool attribute");
1063  return tp;
1064  }
1065 #endif
1066 };
1067 
1069 struct stream : public handle<dnnl_stream_t> {
1070  using handle::handle;
1071 
1073  enum class flags : unsigned {
1083  };
1084 
1087  stream() = default;
1088 
1095  stream(const engine &aengine, flags aflags = flags::default_flags,
1096  const stream_attr &attr = stream_attr()) {
1099  static_cast<dnnl_stream_flags_t>(aflags),
1100  attr.get(true)),
1101  "could not create a stream");
1102  reset(stream);
1103  }
1104 
1105 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1106  stream(const engine &aengine, cl_command_queue queue) {
1112  error::wrap_c_api(dnnl_stream_create_ocl(&stream, aengine.get(), queue),
1113  "could not create a stream");
1114  reset(stream);
1115  }
1116 #endif
1117 
1119  engine get_engine() const {
1120  dnnl_engine_t c_engine;
1122  "could not get an engine from a stream object");
1123  return engine(c_engine, true);
1124  }
1125 
1126 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1127  cl_command_queue get_ocl_command_queue() const {
1130  cl_command_queue queue = nullptr;
1132  "could not get an OpenCL command queue from a stream");
1133  return queue;
1134  }
1135 #endif
1136 
1141  dnnl_stream_wait(get()), "could not wait on a stream");
1142  return *this;
1143  }
1144 };
1145 
1146 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1147 
1148 
1213 
1220 struct memory : public handle<dnnl_memory_t> {
1222  typedef dnnl_dim_t dim;
1225  typedef std::vector<dim> dims;
1226 
1233  template <typename T>
1234  static void validate_dims(const std::vector<T> &v, int min_size = 0) {
1235  validate_container_size(
1236  v, "dimensions are invalid", min_size, DNNL_MAX_NDIMS);
1237  }
1238 
1240  enum class data_type {
1244  f16 = dnnl_f16,
1247  bf16 = dnnl_bf16,
1249  f32 = dnnl_f32,
1251  s32 = dnnl_s32,
1253  s8 = dnnl_s8,
1255  u8 = dnnl_u8,
1256  };
1257 
1259  enum class format_kind {
1264  any = dnnl_format_kind_any,
1268  blocked = dnnl_blocked,
1270  wino = dnnl_format_kind_wino,
1272  packed = dnnl_format_kind_rnn_packed,
1273  };
1274 
1315  enum class format_tag {
1320  any = dnnl_format_tag_any,
1321 
1323  a = dnnl_a,
1324 
1326  ab = dnnl_ab,
1328  ba = dnnl_ba,
1329 
1331  abc = dnnl_abc,
1333  acb = dnnl_acb,
1335  bac = dnnl_bac,
1337  bca = dnnl_bca,
1339  cba = dnnl_cba,
1340 
1342  abcd = dnnl_abcd,
1344  abdc = dnnl_abdc,
1346  acdb = dnnl_acdb,
1348  bacd = dnnl_bacd,
1350  bcda = dnnl_bcda,
1352  cdba = dnnl_cdba,
1354  dcab = dnnl_dcab,
1355 
1357  abcde = dnnl_abcde,
1359  abdec = dnnl_abdec,
1361  acbde = dnnl_acbde,
1363  acdeb = dnnl_acdeb,
1365  bacde = dnnl_bacde,
1367  bcdea = dnnl_bcdea,
1369  cdeba = dnnl_cdeba,
1371  decab = dnnl_decab,
1373  abced = dnnl_abced,
1374 
1376  abcdef = dnnl_abcdef,
1378  acbdef = dnnl_acbdef,
1380  defcab = dnnl_defcab,
1382  abcdfe = dnnl_abcdfe,
1383 
1385  abcdefg = dnnl_abcdefg,
1387  abcdegf = dnnl_abcdegf,
1388 
1390  abcdefgh = dnnl_abcdefgh,
1392  abcdefhg = dnnl_abcdefhg,
1393 
1395  abcdefghi = dnnl_abcdefghi,
1397  abcdefgih = dnnl_abcdefgih,
1398 
1400  abcdefghij = dnnl_abcdefghij,
1402  abcdefghji = dnnl_abcdefghji,
1403 
1405  abcdefghijk = dnnl_abcdefghijk,
1407  abcdefghikj = dnnl_abcdefghikj,
1408 
1410  abcdefghijkl = dnnl_abcdefghijkl,
1412  abcdefghijlk = dnnl_abcdefghijlk,
1413 
1415  x = a,
1417  nc = ab,
1419  cn = ba,
1421  tn = ab,
1423  nt = ba,
1425  ncw = abc,
1427  nwc = acb,
1429  nchw = abcd,
1431  nhwc = acdb,
1433  chwn = bcda,
1435  ncdhw = abcde,
1437  ndhwc = acdeb,
1438 
1440  oi = ab,
1442  io = ba,
1444  oiw = abc,
1446  owi = acb,
1448  wio = cba,
1450  iwo = bca,
1452  oihw = abcd,
1454  hwio = cdba,
1456  ohwi = acdb,
1458  ihwo = bcda,
1460  iohw = bacd,
1462  oidhw = abcde,
1464  dhwio = cdeba,
1466  odhwi = acdeb,
1468  iodhw = bacde,
1470  idhwo = bcdea,
1471 
1473  goiw = abcd,
1475  wigo = dcab,
1477  goihw = abcde,
1479  hwigo = decab,
1481  giohw = acbde,
1483  goidhw = abcdef,
1485  giodhw = acbdef,
1487  dhwigo = defcab,
1488 
1490  tnc = abc,
1492  ntc = bac,
1495  ldnc = abcd,
1502  ldigo = abcde,
1509  ldgoi = abdec,
1512  ldio = abcd,
1515  ldoi = abdc,
1522  ldgo = abcd,
1523 
1524  // Opaque blocked formats
1525 
1526  Abc16a = dnnl_Abc16a,
1527  ABc16a16b = dnnl_ABc16a16b,
1528  ABc4a4b = dnnl_ABc4a4b,
1529  aBc16b = dnnl_aBc16b,
1530  aBc32b = dnnl_aBc32b,
1531  ABc16b16a = dnnl_ABc16b16a,
1532  Abc4a = dnnl_Abc4a,
1533  aBc4b = dnnl_aBc4b,
1534  ABc4b16a4b = dnnl_ABc4b16a4b,
1535  ABc2b8a4b = dnnl_ABc2b8a4b,
1536  ABc16b16a4b = dnnl_ABc16b16a4b,
1537  ABc16b16a2b = dnnl_ABc16b16a2b,
1538  ABc4b4a = dnnl_ABc4b4a,
1539  ABc8a16b2a = dnnl_ABc8a16b2a,
1540  ABc8a8b = dnnl_ABc8a8b,
1541  ABc8a4b = dnnl_ABc8a4b,
1542  aBc8b = dnnl_aBc8b,
1543  ABc8b16a2b = dnnl_ABc8b16a2b,
1544  ABc8b8a = dnnl_ABc8b8a,
1545  Abcd8a = dnnl_Abcd8a,
1546  Abcd16a = dnnl_Abcd16a,
1547  Abcd32a = dnnl_Abcd32a,
1548  ABcd16a16b = dnnl_ABcd16a16b,
1549  aBcd16b = dnnl_aBcd16b,
1550  aBcd32b = dnnl_aBcd32b,
1551  ABcd16b16a = dnnl_ABcd16b16a,
1552  aBCd16b16c = dnnl_aBCd16b16c,
1553  aBCd16c16b = dnnl_aBCd16c16b,
1554  Abcd4a = dnnl_Abcd4a,
1555  aBcd4b = dnnl_aBcd4b,
1556  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1557  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1558  ABcd4b4a = dnnl_ABcd4b4a,
1559  ABcd4a4b = dnnl_ABcd4a4b,
1560  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1561  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1562  ABcd16b16a4b = dnnl_ABcd16b16a4b,
1563  ABcd16b16a2b = dnnl_ABcd16b16a2b,
1564  aBCd16c16b4c = dnnl_aBCd16c16b4c,
1565  aBCd16c16b2c = dnnl_aBCd16c16b2c,
1566  aBCd4c4b = dnnl_aBCd4c4b,
1567  aBCd4b4c = dnnl_aBCd4b4c,
1568  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1569  ABcd8a8b = dnnl_ABcd8a8b,
1570  ABcd8a4b = dnnl_ABcd8a4b,
1572  aBcd8b = dnnl_aBcd8b,
1573  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1574  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1576  ABcd8b8a = dnnl_ABcd8b8a,
1577  aBCd8b8c = dnnl_aBCd8b8c,
1578  aBCd8b4c = dnnl_aBCd8b4c,
1579  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1580  aBCd8c8b = dnnl_aBCd8c8b,
1581  Abcde16a = dnnl_Abcde16a,
1582  Abcde32a = dnnl_Abcde32a,
1583  ABcde16a16b = dnnl_ABcde16a16b,
1584  aBcde16b = dnnl_aBcde16b,
1585  aBcde32b = dnnl_aBcde32b,
1586  ABcde16b16a = dnnl_ABcde16b16a,
1587  aBCde16b16c = dnnl_aBCde16b16c,
1588  aBCde16c16b = dnnl_aBCde16c16b,
1589  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1590  Abcde4a = dnnl_Abcde4a,
1591  aBcde4b = dnnl_aBcde4b,
1592  ABcde4b4a = dnnl_ABcde4b4a,
1593  ABcde4a4b = dnnl_ABcde4a4b,
1594  aBCde4b4c = dnnl_aBCde4b4c,
1595  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1596  aBCde16c16b4c = dnnl_aBCde16c16b4c,
1597  aBCde16c16b2c = dnnl_aBCde16c16b2c,
1598  aBCde4c4b = dnnl_aBCde4c4b,
1599  Abcde8a = dnnl_Abcde8a,
1600  ABcde8a8b = dnnl_ABcde8a8b,
1601  ABcde8a4b = dnnl_ABcde8a4b,
1602  aBcde8b = dnnl_aBcde8b,
1603  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1604  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1605  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1606  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1607  ABcde8b8a = dnnl_ABcde8b8a,
1608  aBCde8b8c = dnnl_aBCde8b8c,
1609  aBCde8b4c = dnnl_aBCde8b4c,
1610  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1611  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1612  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1613  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1614  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1615  aBCde8c8b = dnnl_aBCde8c8b,
1616  aBcdef16b = dnnl_aBcdef16b,
1617  aBCdef16b16c = dnnl_aBCdef16b16c,
1618  aBCdef16c16b = dnnl_aBCdef16c16b,
1619  aBcdef4b = dnnl_aBcdef4b,
1620  aBCdef2c8b4c = dnnl_aBCdef2c8b4c,
1621  aBCdef4c4b = dnnl_aBCdef4c4b,
1622  aBCdef4b4c = dnnl_aBCdef4b4c,
1623  aBCdef8b8c = dnnl_aBCdef8b8c,
1624  aBCdef8b4c = dnnl_aBCdef8b4c,
1625  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1626  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1627  aBCdef8c8b = dnnl_aBCdef8c8b,
1628  aBdc16b = dnnl_aBdc16b,
1629  aBdc4b = dnnl_aBdc4b,
1630  aBdc8b = dnnl_aBdc8b,
1631  aBdec16b = dnnl_aBdec16b,
1632  aBdec4b = dnnl_aBdec4b,
1633  aBdec8b = dnnl_aBdec8b,
1634  aBdefc16b = dnnl_aBdefc16b,
1635  aCBdef16c16b = dnnl_aCBdef16c16b,
1636  aCBdef16b16c = dnnl_aCBdef16b16c,
1637  aBdefc4b = dnnl_aBdefc4b,
1638  aBdefc8b = dnnl_aBdefc8b,
1639  Acb16a = dnnl_Acb16a,
1640  Acb4a = dnnl_Acb4a,
1641  Acb8a = dnnl_Acb8a,
1642  aCBd16b16c = dnnl_aCBd16b16c,
1643  aCBd16c16b = dnnl_aCBd16c16b,
1644  aCBde16b16c = dnnl_aCBde16b16c,
1645  aCBde16c16b = dnnl_aCBde16c16b,
1646  Acdb16a = dnnl_Acdb16a,
1647  Acdb4a = dnnl_Acdb4a,
1648  Acdb8a = dnnl_Acdb8a,
1649  Acdeb16a = dnnl_Acdeb16a,
1650  Acdeb4a = dnnl_Acdeb4a,
1651  Acdeb8a = dnnl_Acdeb8a,
1652  BAc16a16b = dnnl_BAc16a16b,
1653  BAc16b16a = dnnl_BAc16b16a,
1654  BAcd16a16b = dnnl_BAcd16a16b,
1655  BAcd16b16a = dnnl_BAcd16b16a,
1656  ABcd32a32b = dnnl_ABcd32a32b,
1657  BAcde16b16a = dnnl_BAcde16b16a,
1658  BAcde16a16b = dnnl_BAcde16a16b,
1659  aBdec32b = dnnl_aBdec32b,
1660  Abcdef16a = dnnl_Abcdef16a,
1661  Abcdef32a = dnnl_Abcdef32a,
1662  Acdb32a = dnnl_Acdb32a,
1663  aBCd2b4c2b = dnnl_aBCd2b4c2b,
1664  aBCde2b4c2b = dnnl_aBCde2b4c2b,
1665  aBCdef2b4c2b = dnnl_aBCdef2b4c2b,
1666  aBCd2c4b2c = dnnl_aBCd2c4b2c,
1667  aBCde2c4b2c = dnnl_aBCde2c4b2c,
1668  aBCdef2c4b2c = dnnl_aBCdef2c4b2c,
1669  aBCd4b8c2b = dnnl_aBCd4b8c2b,
1670  aBCde4b8c2b = dnnl_aBCde4b8c2b,
1671  aBCdef4b8c2b = dnnl_aBCdef4b8c2b,
1672  aBCd4c8b2c = dnnl_aBCd4c8b2c,
1673  aBCde4c8b2c = dnnl_aBCde4c8b2c,
1674  aBCdef4c8b2c = dnnl_aBCdef4c8b2c,
1675 
1676  format_tag_last = dnnl_format_tag_last,
1677 
1678  nCdhw16c = dnnl_nCdhw16c,
1679  nCdhw4c = dnnl_nCdhw4c,
1680  nCdhw8c = dnnl_nCdhw8c,
1681  nChw16c = dnnl_nChw16c,
1682  nChw4c = dnnl_nChw4c,
1683  nChw8c = dnnl_nChw8c,
1684  nCw16c = dnnl_nCw16c,
1685  nCw4c = dnnl_nCw4c,
1686  nCw8c = dnnl_nCw8c,
1687  NCw16n16c = dnnl_NCw16n16c,
1688  NChw16n16c = dnnl_NChw16n16c,
1689  NCdhw16n16c = dnnl_NCdhw16n16c,
1690  NCdhw32n32c = dnnl_NCdhw32n32c,
1691  NChw32n32c = dnnl_NChw32n32c,
1692  IOhw16i16o = dnnl_IOhw16i16o,
1693  Ohwi32o = dnnl_Ohwi32o,
1694  IOdhw16i16o = dnnl_IOdhw16i16o,
1695  gIOhw16i16o = dnnl_gIOhw16i16o,
1696  gOhwi32o = dnnl_gOhwi32o,
1697  Goidhw16g = dnnl_Goidhw16g,
1698  IOw16o16i = dnnl_IOw16o16i,
1699  OIw16i16o = dnnl_OIw16i16o,
1700  IOw16i16o = dnnl_IOw16i16o,
1701  gIOw16i16o = dnnl_gIOw16i16o,
1702  OIw16o16i = dnnl_OIw16o16i,
1703  Oiw16o = dnnl_Oiw16o,
1704  OIw4i16o4i = dnnl_OIw4i16o4i,
1705  OIw2i8o4i = dnnl_OIw2i8o4i,
1706  OIw4i4o = dnnl_OIw4i4o,
1707  OIw4o4i = dnnl_OIw4o4i,
1708  Oiw4o = dnnl_Oiw4o,
1709  OIw8i16o2i = dnnl_OIw8i16o2i,
1710  OIw8i8o = dnnl_OIw8i8o,
1711  OIw8o16i2o = dnnl_OIw8o16i2o,
1712  OIw8o8i = dnnl_OIw8o8i,
1713  OIw8o4i = dnnl_OIw8o4i,
1714  Owi16o = dnnl_Owi16o,
1715  OwI16o2i = dnnl_OwI16o2i,
1716  Owi4o = dnnl_Owi4o,
1717  Owi8o = dnnl_Owi8o,
1718  IOhw16o16i = dnnl_IOhw16o16i,
1719  Ohwi16o = dnnl_Ohwi16o,
1720  OhwI16o2i = dnnl_OhwI16o2i,
1721  Ohwi4o = dnnl_Ohwi4o,
1722  Ohwi8o = dnnl_Ohwi8o,
1723  OIhw16i16o = dnnl_OIhw16i16o,
1724  OIhw16o16i = dnnl_OIhw16o16i,
1725  Oihw16o = dnnl_Oihw16o,
1726  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1727  OIhw4i4o = dnnl_OIhw4i4o,
1728  OIhw4o4i = dnnl_OIhw4o4i,
1729  Oihw4o = dnnl_Oihw4o,
1730  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1731  OIhw8i8o = dnnl_OIhw8i8o,
1732  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1733  OIhw8o8i = dnnl_OIhw8o8i,
1734  OIhw8o4i = dnnl_OIhw8o4i,
1735  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1736  IOdhw16o16i = dnnl_IOdhw16o16i,
1737  Odhwi16o = dnnl_Odhwi16o,
1738  OdhwI16o2i = dnnl_OdhwI16o2i,
1739  Odhwi4o = dnnl_Odhwi4o,
1740  Odhwi8o = dnnl_Odhwi8o,
1741  OIdhw16i16o = dnnl_OIdhw16i16o,
1742  OIdhw16o16i = dnnl_OIdhw16o16i,
1743  Oidhw16o = dnnl_Oidhw16o,
1744  OIdhw4i4o = dnnl_OIdhw4i4o,
1745  OIdhw4o4i = dnnl_OIdhw4o4i,
1746  Oidhw4o = dnnl_Oidhw4o,
1747  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1748  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1749  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1750  OIdhw8i8o = dnnl_OIdhw8i8o,
1751  OIdhw8o8i = dnnl_OIdhw8o8i,
1752  OIdhw8o4i = dnnl_OIdhw8o4i,
1753  gIOw16o16i = dnnl_gIOw16o16i,
1754  gOIw16i16o = dnnl_gOIw16i16o,
1755  gOIw16o16i = dnnl_gOIw16o16i,
1756  gOiw16o = dnnl_gOiw16o,
1757  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1758  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1759  gOIw4i4o = dnnl_gOIw4i4o,
1760  gOIw4o4i = dnnl_gOIw4o4i,
1761  gOiw4o = dnnl_gOiw4o,
1762  gOIw8i16o2i = dnnl_gOIw8i16o2i,
1763  gOIw8i8o = dnnl_gOIw8i8o,
1764  gOIw8o16i2o = dnnl_gOIw8o16i2o,
1765  gOIw8o8i = dnnl_gOIw8o8i,
1766  gOIw8o4i = dnnl_gOIw8o4i,
1767  gOwi16o = dnnl_gOwi16o,
1768  gOwI16o2i = dnnl_gOwI16o2i,
1769  gOwi4o = dnnl_gOwi4o,
1770  gOwi8o = dnnl_gOwi8o,
1771  Goiw8g = dnnl_Goiw8g,
1772  Goiw16g = dnnl_Goiw16g,
1773  gIOhw16o16i = dnnl_gIOhw16o16i,
1774  gOhwi16o = dnnl_gOhwi16o,
1775  gOhwI16o2i = dnnl_gOhwI16o2i,
1776  gOhwi4o = dnnl_gOhwi4o,
1777  gOhwi8o = dnnl_gOhwi8o,
1778  Goihw16g = dnnl_Goihw16g,
1779  gOIhw16i16o = dnnl_gOIhw16i16o,
1780  gOIhw16o16i = dnnl_gOIhw16o16i,
1781  gOihw16o = dnnl_gOihw16o,
1782  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1783  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1784  gOIhw4i4o = dnnl_gOIhw4i4o,
1785  gOIhw4o4i = dnnl_gOIhw4o4i,
1786  gOihw4o = dnnl_gOihw4o,
1787  Goihw8g = dnnl_Goihw8g,
1788  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1789  gOIhw8i8o = dnnl_gOIhw8i8o,
1790  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1791  OIw4o8i8o4i = dnnl_OIw4o8i8o4i,
1792  OIdhw4o8i8o4i = dnnl_OIdhw4o8i8o4i,
1793  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1794  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1795  gOIw4o8i8o4i = dnnl_gOIw4o8i8o4i,
1796  gOIdhw4o8i8o4i = dnnl_gOIdhw4o8i8o4i,
1797  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1798  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1799  OIhw16i16o4i = dnnl_OIhw16i16o4i,
1800  OIhw16i16o2i = dnnl_OIhw16i16o2i,
1801  gOIhw16i16o4i = dnnl_gOIhw16i16o4i,
1802  gOIhw16i16o2i = dnnl_gOIhw16i16o2i,
1803  gOIhw8o8i = dnnl_gOIhw8o8i,
1804  gOIhw8o4i = dnnl_gOIhw8o4i,
1805  gIOdhw16i16o = dnnl_gIOdhw16i16o,
1806  gIOdhw16o16i = dnnl_gIOdhw16o16i,
1807  gOdhwi16o = dnnl_gOdhwi16o,
1808  gOdhwI16o2i = dnnl_gOdhwI16o2i,
1809  gOdhwi4o = dnnl_gOdhwi4o,
1810  gOdhwi8o = dnnl_gOdhwi8o,
1811  gOIdhw16i16o = dnnl_gOIdhw16i16o,
1812  gOIdhw16o16i = dnnl_gOIdhw16o16i,
1813  gOidhw16o = dnnl_gOidhw16o,
1814  gOIdhw4i4o = dnnl_gOIdhw4i4o,
1815  gOIdhw4o4i = dnnl_gOIdhw4o4i,
1816  gOidhw4o = dnnl_gOidhw4o,
1817  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1818  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
1819  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
1820  gOIdhw8i8o = dnnl_gOIdhw8i8o,
1821  gOIdhw8o8i = dnnl_gOIdhw8o8i,
1822  gOIdhw8o4i = dnnl_gOIdhw8o4i,
1823  gOIw2i4o2i = dnnl_gOIw2i4o2i,
1824  gOIhw2i4o2i = dnnl_gOIhw2i4o2i,
1825  gOIdhw2i4o2i = dnnl_gOIdhw2i4o2i,
1826  gOIw2o4i2o = dnnl_gOIw2o4i2o,
1827  gOIhw2o4i2o = dnnl_gOIhw2o4i2o,
1828  gOIdhw2o4i2o = dnnl_gOIdhw2o4i2o,
1829  gOIw4i8o2i = dnnl_gOIw4i8o2i,
1830  gOIhw4i8o2i = dnnl_gOIhw4i8o2i,
1831  gOIdhw4i8o2i = dnnl_gOIdhw4i8o2i,
1832  gOIw4o8i2o = dnnl_gOIw4o8i2o,
1833  gOIhw4o8i2o = dnnl_gOIhw4o8i2o,
1834  gOIdhw4o8i2o = dnnl_gOIdhw4o8i2o,
1835  };
1836 
1838  struct desc {
1839  friend struct memory;
1842 
1845  desc() : data() {}
1846 
1862  desc(const dims &adims, data_type adata_type, format_tag aformat_tag,
1863  bool allow_empty = false)
1864  : data() {
1865  validate_dims(adims);
1867  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1868  convert_to_c(aformat_tag));
1869  if (!allow_empty)
1871  "could not construct a memory descriptor using a "
1872  "format tag");
1873  }
1874 
1890  desc(const dims &adims, data_type adata_type, const dims &strides,
1891  bool allow_empty = false)
1892  : data() {
1893  validate_dims(adims);
1894  if (!strides.empty()) validate_dims(strides, (int)adims.size());
1896  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1897  strides.empty() ? nullptr : &strides[0]);
1898  if (!allow_empty)
1900  "could not construct a memory descriptor using "
1901  "strides");
1902  }
1903 
1907  desc(const dnnl_memory_desc_t &data) : data(data) {}
1908 
1911  //
1920  desc submemory_desc(const dims &adims, const dims &offsets,
1921  bool allow_empty = false) const {
1922  validate_dims(adims, data.ndims);
1923  validate_dims(offsets, data.ndims);
1926  &sub_md, &data, adims.data(), offsets.data());
1927  if (!allow_empty)
1928  error::wrap_c_api(status, "could not construct a sub-memory");
1929  return desc(sub_md);
1930  }
1931 
1976  desc reshape(const dims &adims, bool allow_empty = false) const {
1977  if (data.ndims) validate_dims(adims, 1);
1980  &out_md, &data, (int)adims.size(), adims.data());
1981  if (!allow_empty)
1983  status, "could not reshape a memory descriptor");
1984  return desc(out_md);
1985  }
1986 
2024  desc permute_axes(const std::vector<int> &permutation,
2025  bool allow_empty = false) const {
2026  validate_dims(permutation, data.ndims);
2029  &out_md, &data, permutation.data());
2030  if (!allow_empty)
2032  "could not permute axes of a memory descriptor");
2033  return desc(out_md);
2034  }
2035 
2040  memory::dims dims() const {
2041  return memory::dims(data.dims, data.dims + data.ndims);
2042  }
2043 
2047  return static_cast<memory::data_type>(data.data_type);
2048  }
2049 
2054  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
2055 
2059  bool is_zero() const { return data.ndims == 0; }
2060 
2065  bool operator==(const desc &other) const {
2066  return dnnl_memory_desc_equal(&data, &other.data) != 0;
2067  }
2068 
2073  bool operator!=(const desc &other) const { return !operator==(other); }
2074 
2078  explicit operator bool() const { return data.ndims != 0; }
2079  };
2080 
2085  memory() = default;
2086 
2106  memory(const desc &md, const engine &aengine, void *handle) {
2107  dnnl_memory_t result;
2109  dnnl_memory_create(&result, &md.data, aengine.get(), handle),
2110  "could not create a memory object");
2111  reset(result);
2112  }
2113 
2120  memory(const desc &md, const engine &aengine)
2121  : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
2122 
2124  desc get_desc() const {
2125  const dnnl_memory_desc_t *cdesc;
2127  "could not get a memory descriptor from a memory object");
2128  return desc(*cdesc);
2129  }
2130 
2132  engine get_engine() const {
2133  dnnl_engine_t c_engine;
2134  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2135  "could not get an engine from a memory object");
2136  return engine(c_engine, true);
2137  }
2138 
2142  void *get_data_handle() const {
2143  void *handle;
2145  "could not get a native handle from a memory object");
2146  return handle;
2147  }
2148 
2177  void set_data_handle(void *handle, const stream &astream) const {
2179  get(), handle, astream.get(true)),
2180  "could not set native handle of a memory object");
2181  }
2182 
2193  void set_data_handle(void *handle) const {
2195  dnnl_memory_set_data_handle_v2(get(), handle, nullptr),
2196  "could not set native handle of a memory object");
2197  }
2198 
2220  template <typename T = void>
2221  T *map_data() const {
2222  void *mapped_ptr;
2223  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2224  "could not map memory object data");
2225  return static_cast<T *>(mapped_ptr);
2226  }
2227 
2238  void unmap_data(void *mapped_ptr) const {
2239  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2240  "could not unmap memory object data");
2241  }
2242 
2243 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
2244  cl_mem get_ocl_mem_object() const {
2246  cl_mem mem_object;
2248  "could not get OpenCL buffer object from a memory object");
2249  return mem_object;
2250  }
2251 
2259  void set_ocl_mem_object(cl_mem mem_object) {
2261  "could not set OpenCL buffer object from a memory object");
2262  }
2263 #endif
2264 
2265  static dnnl_data_type_t convert_to_c(data_type adata_type) {
2266  return static_cast<dnnl_data_type_t>(adata_type);
2267  }
2268  static dnnl_format_tag_t convert_to_c(format_tag format) {
2269  return static_cast<dnnl_format_tag_t>(format);
2270  }
2271 };
2272 
2273 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2274  return a == memory::convert_to_c(b);
2275 }
2276 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2277  return !(a == b);
2278 }
2279 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2280  return b == a;
2281 }
2282 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2283  return !(a == b);
2284 }
2285 
2286 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2287  return a == memory::convert_to_c(b);
2288 }
2289 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2290  return !(a == b);
2291 }
2292 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2293  return b == a;
2294 }
2295 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2296  return !(a == b);
2297 }
2298 
2300 
2308 
2310 template <>
2311 struct handle_traits<dnnl_post_ops_t> {
2312  static dnnl_status_t destructor(dnnl_post_ops_t p) {
2313  return dnnl_post_ops_destroy(p);
2314  }
2315 };
2317 
2325 struct post_ops : public handle<dnnl_post_ops_t> {
2327 
2330  dnnl_post_ops_t result;
2332  dnnl_post_ops_create(&result), "could not create post-ops");
2333  reset(result);
2334  }
2335 
2337  int len() const { return dnnl_post_ops_len(get()); }
2338 
2342  primitive::kind kind(int index) const {
2344  "post-ops index is out of range");
2345  return static_cast<primitive::kind>(
2346  dnnl_post_ops_get_kind(get(), index));
2347  }
2348 
2377  void append_sum(float scale = 1.f,
2379  if (data_type == memory::data_type::undef)
2381  "could not append a sum post-op");
2382  else
2384  memory::convert_to_c(data_type)),
2385  "could not append a sum post-op");
2386  }
2387 
2392  void get_params_sum(int index, float &scale) const {
2394  "could not get parameters of a sum post-op");
2395  }
2396 
2403  int index, float &scale, memory::data_type &data_type) const {
2404  dnnl_data_type_t c_data_type;
2406  get(), index, &scale, &c_data_type),
2407  "could not get parameters of a sum post-op");
2408  data_type = static_cast<memory::data_type>(c_data_type);
2409  }
2410 
2425  float scale, algorithm aalgorithm, float alpha, float beta) {
2427  convert_to_c(aalgorithm), alpha, beta),
2428  "could not append an elementwise post-op");
2429  }
2430 
2438  void get_params_eltwise(int index, float &scale, algorithm &aalgorithm,
2439  float &alpha, float &beta) const {
2440  dnnl_alg_kind_t c_alg;
2442  get(), index, &scale, &c_alg, &alpha, &beta),
2443  "could not get parameters of an elementwise post-op");
2444  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2445  }
2446 
2475  void append_dw_k3s1p1(memory::data_type weights_data_type,
2476  memory::data_type bias_data_type, memory::data_type dst_data_type,
2477  int mask, const std::vector<float> &scales) {
2478 
2480  memory::convert_to_c(weights_data_type),
2481  memory::convert_to_c(bias_data_type),
2482  memory::convert_to_c(dst_data_type),
2483  scales.size(), mask, &scales[0]),
2484  "could not append depthwise post-op");
2485  }
2486 
2501  void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type,
2502  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2503  int &mask, std::vector<float> &scales) const {
2504 
2505  dnnl_data_type_t c_weights_data_type;
2506  dnnl_data_type_t c_bias_data_type;
2507  dnnl_data_type_t c_dst_data_type;
2508  dnnl_dim_t count;
2509  int c_mask;
2510  const float *c_scales;
2512  &c_weights_data_type, &c_bias_data_type,
2513  &c_dst_data_type, &count, &c_mask, &c_scales),
2514  "could not get parameters of depthwise post-op");
2515 
2516  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2517  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2518  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2519  scales.resize(count);
2520 
2521  mask = c_mask;
2522  for (dnnl_dim_t c = 0; c < count; ++c)
2523  scales[c] = c_scales[c];
2524  return;
2525  }
2526 
2560  void append_dw_k3s2p1(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_k3s2p1(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 
2626  void append_binary(algorithm aalgorithm, const memory::desc &src1_desc) {
2628  convert_to_c(aalgorithm), &src1_desc.data),
2629  "could not append a binary post-op");
2630  }
2631 
2638  int index, algorithm &aalgorithm, memory::desc &src1_desc) const {
2639  dnnl_alg_kind_t c_alg;
2640  const dnnl_memory_desc_t *data;
2642  dnnl_post_ops_get_params_binary(get(), index, &c_alg, &data),
2643  "could not get parameters of a binary post-op");
2644  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2645  src1_desc.data = *data;
2646  }
2647 };
2648 
2650 template <>
2651 struct handle_traits<dnnl_primitive_attr_t> {
2652  static dnnl_status_t destructor(dnnl_primitive_attr_t p) {
2653  return dnnl_primitive_attr_destroy(p);
2654  }
2655 };
2657 
2661 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
2663 
2666  dnnl_primitive_attr_t result;
2668  "could not create primitive attribute");
2669  reset(result);
2670  }
2671 
2678  : handle<dnnl_primitive_attr_t>(attr) {}
2679 
2682  dnnl_scratchpad_mode_t result;
2685  "could not get scratchpad mode primitive attribute");
2686  return scratchpad_mode(result);
2687  }
2688 
2694  get(), dnnl::convert_to_c(mode)),
2695  "could not set scratchpad mode primitive attribute");
2696  }
2697 
2707  void get_output_scales(int &mask, std::vector<float> &scales) const {
2708  dnnl_dim_t count;
2709  int c_mask;
2710  const float *c_scales;
2712  get(), &count, &c_mask, &c_scales),
2713  "could not get output scales primitive attribute");
2714  scales.resize(count);
2715 
2716  mask = c_mask;
2717  for (dnnl_dim_t c = 0; c < count; ++c)
2718  scales[c] = c_scales[c];
2719  }
2720 
2763  void set_output_scales(int mask, const std::vector<float> &scales) {
2766  get(), (dnnl_dim_t)scales.size(), mask, scales.data()),
2767  "could not set output scales primitive attribute");
2768  }
2769 
2781  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
2782  dnnl_dim_t count;
2783  int c_mask;
2784  const float *c_scales;
2786  get(), arg, &count, &c_mask, &c_scales),
2787  "could not get scales primitive attributes");
2788  scales.resize(count);
2789 
2790  mask = c_mask;
2791  for (dnnl_dim_t c = 0; c < count; ++c)
2792  scales[c] = c_scales[c];
2793  }
2794 
2811  void set_scales(int arg, int mask, const std::vector<float> &scales) {
2814  (dnnl_dim_t)scales.size(), mask, scales.data()),
2815  "could not set scales primitive attribute");
2816  }
2817 
2829  int arg, int &mask, std::vector<int32_t> &zero_points) const {
2830  dnnl_dim_t count;
2831  int c_mask;
2832  const int32_t *c_zero_points;
2834  get(), arg, &count, &c_mask, &c_zero_points),
2835  "could not get zero points primitive attribute");
2836  zero_points.resize(count);
2837 
2838  mask = c_mask;
2839  for (dnnl_dim_t c = 0; c < count; ++c)
2840  zero_points[c] = c_zero_points[c];
2841  }
2842 
2864  int arg, int mask, const std::vector<int32_t> &zero_points) {
2866  (dnnl_dim_t)zero_points.size(), mask,
2867  zero_points.data()),
2868  "could not set zero points primitive attribute");
2869  }
2870 
2874  const post_ops get_post_ops() const {
2875  post_ops result;
2876  const_dnnl_post_ops_t c_result;
2878  "could not get post-ops primitive attribute");
2879  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
2880  return result;
2881  }
2882 
2891  void set_post_ops(const post_ops ops) {
2893  "could not set post-ops primitive attribute");
2894  }
2895 
2929  void set_rnn_data_qparams(float scale, float shift) {
2932  "could not set RNN data quantization parameters primitive "
2933  "attribute");
2934  }
2935 
2962  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
2964  (int)scales.size(), mask, scales.data()),
2965  "could not set RNN weights quantization parameters primitive "
2966  "attribute");
2967  }
2968 };
2969 
2971 
2974 
2976 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
2978 
2980  primitive_desc_base() = default;
2981 
2984  engine get_engine() const { return engine::query(*this); }
2985 
2988  const char *impl_info_str() const {
2989  const char *res;
2991  get(), dnnl_query_impl_info_str, 0, &res),
2992  "could not retrieve implementation info string from a "
2993  "primitive descriptor");
2994  return res;
2995  }
2996 
3001  memory::dim res;
3003  get(), dnnl::convert_to_c(what), 0, &res);
3004  return status == dnnl_success ? res : 0;
3005  }
3006 
3021  memory::desc query_md(query what, int idx = 0) const {
3022  std::vector<query> valid_q {query::src_md, query::diff_src_md,
3023  query::weights_md, query::diff_weights_md, query::dst_md,
3024  query::diff_dst_md, query::workspace_md, query::scratchpad_md,
3026  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
3027  [=](query q) { return what == q; }))
3028  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3029  "memory descriptor query is invalid");
3030 
3032  get(), dnnl::convert_to_c(what), idx);
3033  return cdesc ? memory::desc(*cdesc) : memory::desc();
3034  }
3035 
3041  memory::desc src_desc(int idx) const {
3042  return query_md(query::src_md, idx);
3043  }
3044 
3050  memory::desc dst_desc(int idx) const {
3051  return query_md(query::dst_md, idx);
3052  }
3053 
3059  memory::desc weights_desc(int idx) const {
3060  return query_md(query::weights_md, idx);
3061  }
3062 
3068  memory::desc diff_src_desc(int idx) const {
3069  return query_md(query::diff_src_md, idx);
3070  }
3071 
3077  memory::desc diff_dst_desc(int idx) const {
3078  return query_md(query::diff_dst_md, idx);
3079  }
3080 
3087  return query_md(query::diff_weights_md, idx);
3088  }
3089 
3090  // Separate versions without the index argument for documentation
3091  // purposes.
3092 
3097  memory::desc src_desc() const { return src_desc(0); }
3098 
3103  memory::desc dst_desc() const { return dst_desc(0); }
3104 
3109  memory::desc weights_desc() const { return weights_desc(0); }
3110 
3116 
3122 
3128 
3134  return query_md(query::workspace_md, 0);
3135  }
3136 
3143  return query_md(query::scratchpad_md, 0);
3144  }
3145 
3149  dnnl_engine_t c_engine;
3152  0, &c_engine),
3153  "could not retrieve scratchpad engine from a primitive "
3154  "descriptor");
3155  return engine(c_engine, true);
3156  }
3157 
3161  const_dnnl_primitive_attr_t const_c_attr;
3163  "could not get attributes from a primitive descriptor");
3164  dnnl_primitive_attr_t c_attr;
3165  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
3166  "could not clone primitive attributes");
3167  return primitive_attr(c_attr);
3168  }
3169 
3173  dnnl_primitive_kind_t kind;
3175  dnnl_query_primitive_kind, 0, (void *)&kind),
3176  "could not get primitive kind from a primitive descriptor");
3177  return static_cast<dnnl::primitive::kind>(kind);
3178  }
3179 
3180 protected:
3185  dnnl_primitive_desc_t new_pd;
3187  "could not clone a primitive descriptor");
3188  reset(new_pd);
3189  }
3190 
3206  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
3207 
3220  dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
3221  : primitive_desc_base(pd, prim_kind, aprop_kind, aprop_kind) {}
3222 
3237  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
3238  dnnl::prop_kind prop_kind2) {
3239  // It is OK to pass an empty primitive descriptor
3240  if (pd == nullptr) return;
3241 
3242  dnnl_status_t rc;
3243 
3244  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
3245  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
3246  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
3247 
3248  // Check that primitive kind matches
3249  dnnl_primitive_kind_t pd_kind;
3251  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
3253  rc, "could not get primitive kind from a primitive descriptor");
3254  if (pd_kind != c_prim_kind)
3255  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3256  "primitive descriptor operation kind mismatch");
3257 
3258  // Check that propagation kind matches
3259  dnnl_prop_kind_t pd_prop_kind;
3261  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
3262 
3263  // Something went wrong
3264  if (rc != dnnl_success && rc != dnnl_unimplemented)
3265  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3266  "could not get propagation kind from the primitive "
3267  "descriptor");
3268 
3269  // Everything is fine
3270  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
3271  || (rc == dnnl_success
3272  && (pd_prop_kind == c_prop_kind1
3273  || pd_prop_kind == c_prop_kind2))) {
3274  reset_with_clone(pd);
3275  return;
3276  }
3277 
3278  // We could get the propagation kind but there is a mismatch
3279  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3280  "primitive descriptor propagation kind mismatch");
3281  }
3282 
3283  using base = primitive_desc_base;
3284 };
3285 
3287 
3296 
3298 struct reorder : public primitive {
3302 
3304  primitive_desc() = default;
3305 
3323  primitive_desc(const engine &src_engine, const memory::desc &src_md,
3324  const engine &dst_engine, const memory::desc &dst_md,
3325  const primitive_attr &attr = primitive_attr(),
3326  bool allow_empty = false) {
3327  dnnl_primitive_desc_t result;
3329  &src_md.data, src_engine.get(), &dst_md.data,
3330  dst_engine.get(), attr.get());
3331  if (!allow_empty)
3333  "could not create a primitive descriptor for a reorder "
3334  "primitive");
3336  }
3337 
3349  primitive_desc(const memory &src, const memory &dst,
3350  const primitive_attr &attr = primitive_attr(),
3351  bool allow_empty = false) {
3352  dnnl_primitive_desc_t result;
3353  auto src_md = src.get_desc();
3354  auto dst_md = dst.get_desc();
3356  &src_md.data, src.get_engine().get(), &dst_md.data,
3357  dst.get_engine().get(), attr.get());
3358  if (!allow_empty)
3360  "could not create a primitive descriptor for a reorder "
3361  "primitive");
3363  }
3364 
3371 
3375  return engine::query(*this, dnnl::query::reorder_src_engine);
3376  }
3377 
3381  return engine::query(*this, dnnl::query::reorder_dst_engine);
3382  }
3383 
3385  memory::desc src_desc() const { return base::src_desc(0); }
3386 
3388  memory::desc dst_desc() const { return base::dst_desc(0); }
3389  };
3390 
3392  reorder() = default;
3393 
3396  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
3397 
3405  reorder(const memory &src, const memory &dst,
3406  const primitive_attr &attr = primitive_attr())
3407  : primitive(primitive_desc(src, dst, attr).get()) {}
3408 
3409  using primitive::execute;
3410 
3417  void execute(const stream &astream, memory &src, memory &dst) const {
3418  primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
3419  }
3420 };
3421 
3423 
3431 
3433 inline std::vector<dnnl_memory_desc_t> convert_to_c(
3434  const std::vector<memory::desc> &mems) {
3435  std::vector<dnnl_memory_desc_t> c_mems;
3436  c_mems.reserve(mems.size());
3437  for (const auto &s : mems)
3438  c_mems.push_back(s.data);
3439  return c_mems;
3440 }
3442 
3444 struct concat : public primitive {
3448 
3450  primitive_desc() = default;
3451 
3462  primitive_desc(const memory::desc &dst, int concat_dimension,
3463  const std::vector<memory::desc> &srcs, const engine &aengine,
3464  const primitive_attr &attr = primitive_attr()) {
3465  auto c_srcs = convert_to_c(srcs);
3466 
3467  dnnl_primitive_desc_t result;
3470  (int)c_srcs.size(), concat_dimension, c_srcs.data(),
3471  attr.get(), aengine.get()),
3472  "could not create a primitive descriptor for a concat "
3473  "primitive");
3474  reset(result);
3475  }
3476 
3489  primitive_desc(int concat_dimension,
3490  const std::vector<memory::desc> &srcs, const engine &aengine,
3491  const primitive_attr &attr = primitive_attr()) {
3492  auto c_api_srcs = convert_to_c(srcs);
3493 
3494  dnnl_primitive_desc_t result;
3496  dnnl_concat_primitive_desc_create(&result, nullptr,
3497  (int)c_api_srcs.size(), concat_dimension,
3498  c_api_srcs.data(), attr.get(), aengine.get()),
3499  "could not create a primitive descriptor for a concat "
3500  "primitive");
3501  reset(result);
3502  }
3503 
3510 
3512  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3513 
3515  memory::desc dst_desc() const { return base::dst_desc(0); }
3516  };
3517 
3519  concat() = default;
3520 
3523  concat(const primitive_desc &pd) : primitive(pd.get()) {}
3524 };
3525 
3527 
3535 
3537 struct sum : public primitive {
3541 
3543  primitive_desc() = default;
3544 
3554  const std::vector<float> &scales,
3555  const std::vector<memory::desc> &srcs, const engine &aengine,
3556  const primitive_attr &attr = primitive_attr()) {
3557  validate_container_size(scales,
3558  "counts of scales and sources are not equal",
3559  (int)srcs.size(), (int)srcs.size());
3560 
3561  auto c_api_srcs = convert_to_c(srcs);
3562 
3563  dnnl_primitive_desc_t result;
3565  dnnl_sum_primitive_desc_create(&result, &dst.data,
3566  (int)c_api_srcs.size(), scales.data(),
3567  c_api_srcs.data(), attr.get(), aengine.get()),
3568  "could not create a primitive descriptor for a sum "
3569  "primitive");
3570  reset(result);
3571  }
3572 
3583  primitive_desc(const std::vector<float> &scales,
3584  const std::vector<memory::desc> &srcs, const engine &aengine,
3585  const primitive_attr &attr = primitive_attr()) {
3586  validate_container_size(scales,
3587  "counts of scales and sources are not equal",
3588  (int)srcs.size(), (int)srcs.size());
3589 
3590  auto c_api_srcs = convert_to_c(srcs);
3591  dnnl_primitive_desc_t result;
3593  dnnl_sum_primitive_desc_create(&result, nullptr,
3594  (int)c_api_srcs.size(), scales.data(),
3595  c_api_srcs.data(), attr.get(), aengine.get()),
3596  "could not create a primitive descriptor for a sum "
3597  "primitive");
3598  reset(result);
3599  }
3600 
3607 
3609  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3610 
3612  memory::desc dst_desc() const { return base::dst_desc(0); }
3613  };
3614 
3616  sum() = default;
3617 
3620  sum(const primitive_desc &pd) : primitive(pd.get()) {}
3621 };
3622 
3624 
3627 
3632 
3633  primitive_desc() = default;
3634 
3658  const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd,
3659  bool allow_empty = false)
3660  : allow_empty_(allow_empty) {
3661  dnnl_primitive_desc_iterator_t iterator = nullptr;
3663  desc, attr ? attr->get() : nullptr, aengine.get(), hint_fwd_pd);
3664  if (!allow_empty)
3666  status, "could not create a primitive descriptor iterator");
3667  pd_iterator.reset(iterator);
3668  fetch_impl();
3669  }
3670 
3675  bool next_impl() {
3677  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3678  if (status == dnnl_iterator_ends) return false;
3680  status, "could not advance a primitive descriptor iterator");
3681  fetch_impl();
3682  return true;
3683  }
3684 
3685 private:
3686  bool allow_empty_ = false;
3688  void fetch_impl() {
3690  pd_iterator.get(allow_empty_));
3691  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3693  "could not fetch a primitive descriptor from a primitive "
3694  "descriptor iterator");
3695  reset(pd);
3696  }
3697 };
3698 
3700 
3710 
3714  struct desc {
3716 
3747  desc(prop_kind aprop_kind, algorithm aalgorithm,
3748  const memory::desc &src_desc, const memory::desc &weights_desc,
3749  const memory::desc &bias_desc, const memory::desc &dst_desc,
3750  const memory::dims &strides, const memory::dims &padding_l,
3751  const memory::dims &padding_r) {
3752  memory::validate_dims(strides, src_desc.data.ndims - 2);
3753  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3754  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3757  dnnl::convert_to_c(aprop_kind),
3758  convert_to_c(aalgorithm), &src_desc.data,
3759  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3760  &strides[0], &padding_l[0], &padding_r[0]),
3761  "could not create a descriptor for a convolution forward "
3762  "propagation primitive");
3763  }
3764 
3793  desc(prop_kind aprop_kind, algorithm aalgorithm,
3794  const memory::desc &src_desc, const memory::desc &weights_desc,
3795  const memory::desc &dst_desc, const memory::dims &strides,
3796  const memory::dims &padding_l, const memory::dims &padding_r) {
3797  memory::validate_dims(strides, src_desc.data.ndims - 2);
3798  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3799  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3802  dnnl::convert_to_c(aprop_kind),
3803  convert_to_c(aalgorithm), &src_desc.data,
3804  &weights_desc.data, nullptr, &dst_desc.data,
3805  &strides[0], &padding_l[0], &padding_r[0]),
3806  "could not create a descriptor for a convolution forward "
3807  "propagation primitive");
3808  }
3809 
3842  desc(prop_kind aprop_kind, algorithm aalgorithm,
3843  const memory::desc &src_desc, const memory::desc &weights_desc,
3844  const memory::desc &bias_desc, const memory::desc &dst_desc,
3845  const memory::dims &strides, const memory::dims &dilates,
3846  const memory::dims &padding_l, const memory::dims &padding_r) {
3847  memory::validate_dims(strides, src_desc.data.ndims - 2);
3848  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3849  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3850  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3852  dnnl::convert_to_c(aprop_kind),
3853  convert_to_c(aalgorithm), &src_desc.data,
3854  &weights_desc.data, &bias_desc.data,
3855  &dst_desc.data, &strides[0], &dilates[0],
3856  &padding_l[0], &padding_r[0]),
3857  "could not create a descriptor for a dilated convolution "
3858  "forward propagation primitive");
3859  }
3860 
3891  desc(prop_kind aprop_kind, algorithm aalgorithm,
3892  const memory::desc &src_desc, const memory::desc &weights_desc,
3893  const memory::desc &dst_desc, const memory::dims &strides,
3894  const memory::dims &dilates, const memory::dims &padding_l,
3895  const memory::dims &padding_r) {
3896  memory::validate_dims(strides, src_desc.data.ndims - 2);
3897  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3898  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3899  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3901  dnnl::convert_to_c(aprop_kind),
3902  convert_to_c(aalgorithm), &src_desc.data,
3903  &weights_desc.data, nullptr,
3904  &dst_desc.data, &strides[0], &dilates[0],
3905  &padding_l[0], &padding_r[0]),
3906  "could not create a descriptor for a dilated convolution "
3907  "forward propagation primitive");
3908  }
3909  };
3910 
3914  primitive_desc() = default;
3915 
3926  primitive_desc(const desc &adesc, const engine &aengine,
3927  bool allow_empty = false)
3928  : dnnl::primitive_desc(
3929  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
3930 
3942  primitive_desc(const desc &adesc, const primitive_attr &attr,
3943  const engine &aengine, bool allow_empty = false)
3944  : dnnl::primitive_desc(
3945  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
3946 
3954  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3955  dnnl::prop_kind::forward_training,
3956  dnnl::prop_kind::forward_inference) {}
3957 
3959  memory::desc src_desc() const { return base::src_desc(0); }
3960 
3963 
3965  memory::desc dst_desc() const { return base::dst_desc(0); }
3966 
3972  };
3973 
3975  convolution_forward() = default;
3976 
3981 };
3982 
3985 
3987  struct desc {
3989 
4015  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4016  const memory::desc &weights_desc,
4017  const memory::desc &diff_dst_desc, const memory::dims &strides,
4018  const memory::dims &padding_l, const memory::dims &padding_r) {
4019  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4020  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4021  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4024  convert_to_c(aalgorithm), &diff_src_desc.data,
4025  &weights_desc.data, &diff_dst_desc.data,
4026  &strides[0], &padding_l[0], &padding_r[0]),
4027  "could not create a descriptor for a convolution backward "
4028  "propagation primitive");
4029  }
4030 
4058  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4059  const memory::desc &weights_desc,
4060  const memory::desc &diff_dst_desc, const memory::dims &strides,
4061  const memory::dims &dilates, const memory::dims &padding_l,
4062  const memory::dims &padding_r) {
4063  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4064  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4065  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4066  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4069  convert_to_c(aalgorithm), &diff_src_desc.data,
4070  &weights_desc.data, &diff_dst_desc.data,
4071  &strides[0], &dilates[0], &padding_l[0],
4072  &padding_r[0]),
4073  "could not create a descriptor for a dilated convolution "
4074  "backward propagation primitive");
4075  }
4076  };
4077 
4081  primitive_desc() = default;
4082 
4096  primitive_desc(const desc &adesc, const engine &aengine,
4097  const convolution_forward::primitive_desc &hint_fwd_pd,
4098  bool allow_empty = false)
4099  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4100  hint_fwd_pd.get(), allow_empty) {}
4101 
4116  primitive_desc(const desc &adesc, const primitive_attr &attr,
4117  const engine &aengine,
4118  const convolution_forward::primitive_desc &hint_fwd_pd,
4119  bool allow_empty = false)
4120  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4121  hint_fwd_pd.get(), allow_empty) {}
4122 
4130  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4131  dnnl::prop_kind::backward_data) {}
4132 
4135 
4138 
4141  };
4142 
4145 
4150 };
4151 
4155  struct desc {
4157 
4185  desc(algorithm aalgorithm, const memory::desc &src_desc,
4186  const memory::desc &diff_weights_desc,
4187  const memory::desc &diff_bias_desc,
4188  const memory::desc &diff_dst_desc, const memory::dims &strides,
4189  const memory::dims &padding_l, const memory::dims &padding_r) {
4190  memory::validate_dims(strides, src_desc.data.ndims - 2);
4191  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4192  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4195  convert_to_c(aalgorithm), &src_desc.data,
4196  &diff_weights_desc.data, &diff_bias_desc.data,
4197  &diff_dst_desc.data, &strides[0], &padding_l[0],
4198  &padding_r[0]),
4199  "could not create a descriptor for a convolution weights "
4200  "update primitive");
4201  }
4202 
4228  desc(algorithm aalgorithm, const memory::desc &src_desc,
4229  const memory::desc &diff_weights_desc,
4230  const memory::desc &diff_dst_desc, const memory::dims &strides,
4231  const memory::dims &padding_l, const memory::dims &padding_r) {
4232  memory::validate_dims(strides, src_desc.data.ndims - 2);
4233  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4234  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4236  convert_to_c(aalgorithm), &src_desc.data,
4237  &diff_weights_desc.data, nullptr,
4238  &diff_dst_desc.data, &strides[0],
4239  &padding_l[0], &padding_r[0]),
4240  "could not create a descriptor for a convolution weights "
4241  "update primitive");
4242  }
4243 
4273  desc(algorithm aalgorithm, const memory::desc &src_desc,
4274  const memory::desc &diff_weights_desc,
4275  const memory::desc &diff_bias_desc,
4276  const memory::desc &diff_dst_desc, const memory::dims &strides,
4277  const memory::dims &dilates, const memory::dims &padding_l,
4278  const memory::dims &padding_r) {
4279  memory::validate_dims(strides, src_desc.data.ndims - 2);
4280  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4281  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4282  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4285  convert_to_c(aalgorithm), &src_desc.data,
4286  &diff_weights_desc.data, &diff_bias_desc.data,
4287  &diff_dst_desc.data, &strides[0], &dilates[0],
4288  &padding_l[0], &padding_r[0]),
4289  "could not create a descriptor for a dilated convolution "
4290  "weights gradient primitive");
4291  }
4292 
4320  desc(algorithm aalgorithm, const memory::desc &src_desc,
4321  const memory::desc &diff_weights_desc,
4322  const memory::desc &diff_dst_desc, const memory::dims &strides,
4323  const memory::dims &dilates, const memory::dims &padding_l,
4324  const memory::dims &padding_r) {
4325  memory::validate_dims(strides, src_desc.data.ndims - 2);
4326  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4327  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4328  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4331  convert_to_c(aalgorithm), &src_desc.data,
4332  &diff_weights_desc.data, nullptr,
4333  &diff_dst_desc.data, &strides[0], &dilates[0],
4334  &padding_l[0], &padding_r[0]),
4335  "could not create a descriptor for a dilated convolution "
4336  "weights gradient primitive");
4337  }
4338  };
4339 
4343  primitive_desc() = default;
4344 
4357  primitive_desc(const desc &adesc, const engine &aengine,
4358  const convolution_forward::primitive_desc &hint_fwd_pd,
4359  bool allow_empty = false)
4360  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4361  hint_fwd_pd.get(), allow_empty) {}
4362 
4376  primitive_desc(const desc &adesc, const primitive_attr &attr,
4377  const engine &aengine,
4378  const convolution_forward::primitive_desc &hint_fwd_pd,
4379  bool allow_empty = false)
4380  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4381  hint_fwd_pd.get(), allow_empty) {}
4382 
4390  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4391  dnnl::prop_kind::backward_weights) {}
4392 
4394  memory::desc src_desc() const { return base::src_desc(0); }
4395 
4398  return base::diff_weights_desc(0);
4399  }
4400 
4403 
4409  return base::diff_weights_desc(1);
4410  }
4411  };
4412 
4415 
4420 };
4421 
4423 //
4431 
4435  struct desc {
4437 
4467  desc(prop_kind aprop_kind, algorithm aalgorithm,
4468  const memory::desc &src_desc, const memory::desc &weights_desc,
4469  const memory::desc &bias_desc, const memory::desc &dst_desc,
4470  const memory::dims &strides, const memory::dims &padding_l,
4471  const memory::dims &padding_r) {
4472  memory::validate_dims(strides, src_desc.data.ndims - 2);
4473  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4474  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4477  dnnl::convert_to_c(aprop_kind),
4478  convert_to_c(aalgorithm), &src_desc.data,
4479  &weights_desc.data, &bias_desc.data, &dst_desc.data,
4480  &strides[0], &padding_l[0], &padding_r[0]),
4481  "could not create a descriptor for a deconvolution forward "
4482  "propagation primitive");
4483  }
4484 
4512  desc(prop_kind aprop_kind, algorithm aalgorithm,
4513  const memory::desc &src_desc, const memory::desc &weights_desc,
4514  const memory::desc &dst_desc, const memory::dims &strides,
4515  const memory::dims &padding_l, const memory::dims &padding_r) {
4516  memory::validate_dims(strides, src_desc.data.ndims - 2);
4517  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4518  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4521  dnnl::convert_to_c(aprop_kind),
4522  convert_to_c(aalgorithm), &src_desc.data,
4523  &weights_desc.data, nullptr, &dst_desc.data,
4524  &strides[0], &padding_l[0], &padding_r[0]),
4525  "could not create a descriptor for a deconvolution forward "
4526  "propagation primitive");
4527  }
4528 
4560  desc(prop_kind aprop_kind, algorithm aalgorithm,
4561  const memory::desc &src_desc, const memory::desc &weights_desc,
4562  const memory::desc &bias_desc, const memory::desc &dst_desc,
4563  const memory::dims &strides, const memory::dims &dilates,
4564  const memory::dims &padding_l, const memory::dims &padding_r) {
4565  memory::validate_dims(strides, src_desc.data.ndims - 2);
4566  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4567  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4568  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4570  &data, dnnl::convert_to_c(aprop_kind),
4571  convert_to_c(aalgorithm), &src_desc.data,
4572  &weights_desc.data, &bias_desc.data,
4573  &dst_desc.data, &strides[0], &dilates[0],
4574  &padding_l[0], &padding_r[0]),
4575  "could not create a descriptor for a dilated deconvolution "
4576  "forward propagation primitive");
4577  }
4578 
4608  desc(prop_kind aprop_kind, algorithm aalgorithm,
4609  const memory::desc &src_desc, const memory::desc &weights_desc,
4610  const memory::desc &dst_desc, const memory::dims &strides,
4611  const memory::dims &dilates, const memory::dims &padding_l,
4612  const memory::dims &padding_r) {
4613  memory::validate_dims(strides, src_desc.data.ndims - 2);
4614  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4615  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4616  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4618  &data, dnnl::convert_to_c(aprop_kind),
4619  convert_to_c(aalgorithm), &src_desc.data,
4620  &weights_desc.data, nullptr,
4621  &dst_desc.data, &strides[0], &dilates[0],
4622  &padding_l[0], &padding_r[0]),
4623  "could not create a descriptor for a dilated deconvolution "
4624  "forward propagation primitive");
4625  }
4626  };
4627 
4631  primitive_desc() = default;
4632 
4643  primitive_desc(const desc &adesc, const engine &aengine,
4644  bool allow_empty = false)
4645  : dnnl::primitive_desc(
4646  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4647 
4659  primitive_desc(const desc &adesc, const primitive_attr &attr,
4660  const engine &aengine, bool allow_empty = false)
4661  : dnnl::primitive_desc(
4662  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4663 
4671  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4672  dnnl::prop_kind::forward_training,
4673  dnnl::prop_kind::forward_inference) {}
4674 
4676  memory::desc src_desc() const { return base::src_desc(0); }
4677 
4680 
4682  memory::desc dst_desc() const { return base::dst_desc(0); }
4683 
4686  };
4687 
4690 
4695 };
4696 
4700  struct desc {
4702 
4727  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4728  const memory::desc &weights_desc,
4729  const memory::desc &diff_dst_desc, const memory::dims &strides,
4730  const memory::dims &padding_l, const memory::dims &padding_r) {
4731  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4732  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4733  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4736  convert_to_c(aalgorithm), &diff_src_desc.data,
4737  &weights_desc.data, &diff_dst_desc.data,
4738  &strides[0], &padding_l[0], &padding_r[0]),
4739  "could not create a descriptor for a deconvolution "
4740  "backward propagation primitive");
4741  }
4742 
4769  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4770  const memory::desc &weights_desc,
4771  const memory::desc &diff_dst_desc, const memory::dims &strides,
4772  const memory::dims &dilates, const memory::dims &padding_l,
4773  const memory::dims &padding_r) {
4774  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4775  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4776  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4777  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4780  convert_to_c(aalgorithm), &diff_src_desc.data,
4781  &weights_desc.data, &diff_dst_desc.data,
4782  &strides[0], &dilates[0], &padding_l[0],
4783  &padding_r[0]),
4784  "could not create a descriptor for a dilated deconvolution "
4785  "backward propagation primitive");
4786  }
4787  };
4788 
4792  primitive_desc() = default;
4793 
4807  primitive_desc(const desc &adesc, const engine &aengine,
4808  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4809  bool allow_empty = false)
4810  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4811  hint_fwd_pd.get(), allow_empty) {}
4812 
4827  primitive_desc(const desc &adesc, const primitive_attr &attr,
4828  const engine &aengine,
4829  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4830  bool allow_empty = false)
4831  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4832  hint_fwd_pd.get(), allow_empty) {}
4833 
4841  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4842  dnnl::prop_kind::backward_data) {}
4843 
4846 
4849 
4852  };
4853 
4856 
4861 };
4862 
4866  struct desc {
4868 
4895  desc(algorithm aalgorithm, const memory::desc &src_desc,
4896  const memory::desc &diff_weights_desc,
4897  const memory::desc &diff_bias_desc,
4898  const memory::desc &diff_dst_desc, const memory::dims &strides,
4899  const memory::dims &padding_l, const memory::dims &padding_r) {
4900  memory::validate_dims(strides, src_desc.data.ndims - 2);
4901  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4902  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4905  convert_to_c(aalgorithm), &src_desc.data,
4906  &diff_weights_desc.data, &diff_bias_desc.data,
4907  &diff_dst_desc.data, &strides[0], &padding_l[0],
4908  &padding_r[0]),
4909  "could not create a descriptor for a deconvolution weights "
4910  "update primitive");
4911  }
4912 
4937  desc(algorithm aalgorithm, const memory::desc &src_desc,
4938  const memory::desc &diff_weights_desc,
4939  const memory::desc &diff_dst_desc, const memory::dims &strides,
4940  const memory::dims &padding_l, const memory::dims &padding_r) {
4941  memory::validate_dims(strides, src_desc.data.ndims - 2);
4942  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4943  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4945  &data, convert_to_c(aalgorithm),
4946  &src_desc.data, &diff_weights_desc.data,
4947  nullptr, &diff_dst_desc.data, &strides[0],
4948  &padding_l[0], &padding_r[0]),
4949  "could not create a descriptor for a deconvolution weights "
4950  "update primitive");
4951  }
4952 
4981  desc(algorithm aalgorithm, const memory::desc &src_desc,
4982  const memory::desc &diff_weights_desc,
4983  const memory::desc &diff_bias_desc,
4984  const memory::desc &diff_dst_desc, const memory::dims &strides,
4985  const memory::dims &dilates, const memory::dims &padding_l,
4986  const memory::dims &padding_r) {
4987  memory::validate_dims(strides, src_desc.data.ndims - 2);
4988  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4989  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4990  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4993  convert_to_c(aalgorithm), &src_desc.data,
4994  &diff_weights_desc.data, &diff_bias_desc.data,
4995  &diff_dst_desc.data, &strides[0], &dilates[0],
4996  &padding_l[0], &padding_r[0]),
4997  "could not create a descriptor for a dilated deconvolution "
4998  "weights gradient primitive");
4999  }
5000 
5027  desc(algorithm aalgorithm, const memory::desc &src_desc,
5028  const memory::desc &diff_weights_desc,
5029  const memory::desc &diff_dst_desc, const memory::dims &strides,
5030  const memory::dims &dilates, const memory::dims &padding_l,
5031  const memory::dims &padding_r) {
5032  memory::validate_dims(strides, src_desc.data.ndims - 2);
5033  memory::validate_dims(dilates, src_desc.data.ndims - 2);
5034  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5035  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5038  convert_to_c(aalgorithm), &src_desc.data,
5039  &diff_weights_desc.data, nullptr,
5040  &diff_dst_desc.data, &strides[0], &dilates[0],
5041  &padding_l[0], &padding_r[0]),
5042  "could not create a descriptor for a dilated deconvolution "
5043  "weights gradient primitive");
5044  }
5045  };
5046 
5050  primitive_desc() = default;
5051 
5065  primitive_desc(const desc &adesc, const engine &aengine,
5066  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5067  bool allow_empty = false)
5068  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5069  hint_fwd_pd.get(), allow_empty) {}
5070 
5085  primitive_desc(const desc &adesc, const primitive_attr &attr,
5086  const engine &aengine,
5087  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5088  bool allow_empty = false)
5089  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5090  hint_fwd_pd.get(), allow_empty) {}
5091 
5099  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
5100  dnnl::prop_kind::backward_weights) {}
5101 
5103  memory::desc src_desc() const { return base::src_desc(0); }
5104 
5107  return base::diff_weights_desc(0);
5108  }
5109 
5112 
5115  return base::diff_weights_desc(1);
5116  }
5117  };
5118 
5121 
5126 };
5127 
5129 
5138 
5140 struct lrn_forward : public primitive {
5142  struct desc {
5143  dnnl_lrn_desc_t data;
5144 
5158  desc(prop_kind aprop_kind, algorithm aalgorithm,
5159  const memory::desc &data_desc, memory::dim local_size,
5160  float alpha, float beta, float k = 1.f) {
5162  dnnl::convert_to_c(aprop_kind),
5163  convert_to_c(aalgorithm), &data_desc.data,
5164  local_size, alpha, beta, k),
5165  "could not create a descriptor for a lrn forward "
5166  "propagation primitive");
5167  }
5168  };
5169 
5173  primitive_desc() = default;
5174 
5184  primitive_desc(const desc &adesc, const engine &aengine,
5185  bool allow_empty = false)
5186  : dnnl::primitive_desc(
5187  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5188 
5199  primitive_desc(const desc &adesc, const primitive_attr &attr,
5200  const engine &aengine, bool allow_empty = false)
5201  : dnnl::primitive_desc(
5202  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5203 
5211  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5212  dnnl::prop_kind::forward_training,
5213  dnnl::prop_kind::forward_inference) {}
5214 
5216  memory::desc src_desc() const { return base::src_desc(0); }
5217 
5219  memory::desc dst_desc() const { return base::dst_desc(0); }
5220 
5223  };
5224 
5226  lrn_forward() = default;
5227 
5232 };
5233 
5235 struct lrn_backward : public primitive {
5237  struct desc {
5238  dnnl_lrn_desc_t data;
5239 
5252  desc(algorithm aalgorithm, const memory::desc &data_desc,
5253  const memory::desc &diff_data_desc, memory::dim local_size,
5254  float alpha, float beta, float k = 1.f) {
5256  dnnl_lrn_backward_desc_init(&data, convert_to_c(aalgorithm),
5257  &diff_data_desc.data, &data_desc.data, local_size,
5258  alpha, beta, k),
5259  "could not create a descriptor for a lrn backward "
5260  "propagation primitive");
5261  }
5262  };
5263 
5267  primitive_desc() = default;
5268 
5281  primitive_desc(const desc &adesc, const engine &aengine,
5282  const lrn_forward::primitive_desc &hint_fwd_pd,
5283  bool allow_empty = false)
5284  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5285  hint_fwd_pd.get(), allow_empty) {}
5286 
5300  primitive_desc(const desc &adesc, const primitive_attr &attr,
5301  const engine &aengine,
5302  const lrn_forward::primitive_desc &hint_fwd_pd,
5303  bool allow_empty = false)
5304  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5305  hint_fwd_pd.get(), allow_empty) {}
5306 
5314  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5315  dnnl::prop_kind::backward_data) {}
5316 
5319 
5322 
5325  };
5326 
5328  lrn_backward() = default;
5329 
5334 };
5335 
5337 
5345 
5347 struct pooling_forward : public primitive {
5349  struct desc {
5350  dnnl_pooling_desc_t data;
5351 
5376  desc(prop_kind aprop_kind, algorithm aalgorithm,
5377  const memory::desc &src_desc, const memory::desc &dst_desc,
5378  const memory::dims &strides, const memory::dims &kernel,
5379  const memory::dims &padding_l, const memory::dims &padding_r) {
5380  memory::validate_dims(strides, src_desc.data.ndims - 2);
5381  memory::validate_dims(kernel, src_desc.data.ndims - 2);
5382  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5383  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5385  dnnl::convert_to_c(aprop_kind),
5386  convert_to_c(aalgorithm), &src_desc.data,
5387  &dst_desc.data, &strides[0], &kernel[0],
5388  &padding_l[0], &padding_r[0]),
5389  "could not create a descriptor for a pooling forward "
5390  "propagation primitive");
5391  }
5392  };
5393 
5397  primitive_desc() = default;
5398 
5408  primitive_desc(const desc &adesc, const engine &aengine,
5409  bool allow_empty = false)
5410  : dnnl::primitive_desc(
5411  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5412 
5423  primitive_desc(const desc &adesc, const primitive_attr &attr,
5424  const engine &aengine, bool allow_empty = false)
5425  : dnnl::primitive_desc(
5426  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5427 
5435  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5436  dnnl::prop_kind::forward_training,
5437  dnnl::prop_kind::forward_inference) {}
5438 
5440  memory::desc src_desc() const { return base::src_desc(0); }
5441 
5443  memory::desc dst_desc() const { return base::dst_desc(0); }
5444 
5447  };
5448 
5450  pooling_forward() = default;
5451 
5456 };
5457 
5459 struct pooling_backward : public primitive {
5461  struct desc {
5462  dnnl_pooling_desc_t data;
5463 
5485  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
5486  const memory::desc &diff_dst_desc, const memory::dims &strides,
5487  const memory::dims &kernel, const memory::dims &padding_l,
5488  const memory::dims &padding_r) {
5489  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
5490  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
5491  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
5492  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
5495  convert_to_c(aalgorithm), &diff_src_desc.data,
5496  &diff_dst_desc.data, &strides[0], &kernel[0],
5497  &padding_l[0], &padding_r[0]),
5498  "could not create a descriptor for a pooling backward "
5499  "propagation primitive");
5500  }
5501  };
5502 
5506  primitive_desc() = default;
5507 
5520  primitive_desc(const desc &adesc, const engine &aengine,
5521  const pooling_forward::primitive_desc &hint_fwd_pd,
5522  bool allow_empty = false)
5523  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5524  hint_fwd_pd.get(), allow_empty) {}
5525 
5539  primitive_desc(const desc &adesc, const primitive_attr &attr,
5540  const engine &aengine,
5541  const pooling_forward::primitive_desc &hint_fwd_pd,
5542  bool allow_empty = false)
5543  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5544  hint_fwd_pd.get(), allow_empty) {}
5545 
5553  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5554  dnnl::prop_kind::backward_data) {}
5555 
5558 
5561 
5564  };
5565 
5567  pooling_backward() = default;
5568 
5573 };
5574 
5576 
5597 
5599 struct eltwise_forward : public primitive {
5601  struct desc {
5602  dnnl_eltwise_desc_t data;
5603 
5616  desc(prop_kind aprop_kind, algorithm aalgorithm,
5617  const memory::desc &data_desc, float alpha = 0,
5618  float beta = 0) {
5620  dnnl::convert_to_c(aprop_kind),
5621  dnnl::convert_to_c(aalgorithm),
5622  &data_desc.data, alpha, beta),
5623  "could not create a descriptor for an eltwise forward "
5624  "propagation primitive");
5625  }
5626  };
5627 
5631  primitive_desc() = default;
5632 
5643  primitive_desc(const desc &adesc, const engine &aengine,
5644  bool allow_empty = false)
5645  : dnnl::primitive_desc(
5646  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5647 
5659  primitive_desc(const desc &adesc, const primitive_attr &attr,
5660  const engine &aengine, bool allow_empty = false)
5661  : dnnl::primitive_desc(
5662  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5663 
5671  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5672  dnnl::prop_kind::forward_training,
5673  dnnl::prop_kind::forward_inference) {}
5674 
5676  memory::desc src_desc() const { return base::src_desc(0); }
5677 
5679  memory::desc dst_desc() const { return base::dst_desc(0); }
5680  };
5681 
5683  eltwise_forward() = default;
5684 
5689 };
5690 
5692 struct eltwise_backward : public primitive {
5694  struct desc {
5695  dnnl_eltwise_desc_t data;
5696 
5708  desc(algorithm aalgorithm, const memory::desc &diff_data_desc,
5709  const memory::desc &data_desc, float alpha = 0,
5710  float beta = 0) {
5713  dnnl::convert_to_c(aalgorithm),
5714  &diff_data_desc.data, &data_desc.data, alpha, beta),
5715  "could not create a descriptor for an eltwise backward "
5716  "propagation primitive");
5717  }
5718  };
5719 
5723  primitive_desc() = default;
5724 
5738  primitive_desc(const desc &adesc, const engine &aengine,
5739  const eltwise_forward::primitive_desc &hint_fwd_pd,
5740  bool allow_empty = false)
5741  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5742  hint_fwd_pd.get(), allow_empty) {}
5743 
5758  primitive_desc(const desc &adesc, const primitive_attr &attr,
5759  const engine &aengine,
5760  const eltwise_forward::primitive_desc &hint_fwd_pd,
5761  bool allow_empty = false)
5762  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5763  hint_fwd_pd.get(), allow_empty) {}
5764 
5772  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5773  dnnl::prop_kind::backward_data) {}
5774 
5776  memory::desc src_desc() const { return base::src_desc(0); }
5777 
5780 
5783  };
5784 
5786  eltwise_backward() = default;
5787 
5792 };
5793 
5795 
5803 
5805 struct softmax_forward : public primitive {
5807  struct desc {
5808  dnnl_softmax_desc_t data;
5809 
5811  desc() = default;
5812 
5821  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5822  int softmax_axis) {
5824  dnnl::convert_to_c(aprop_kind),
5825  &data_desc.data, softmax_axis),
5826  "could not create a descriptor for a softmax forward "
5827  "propagation primitive");
5828  }
5829  };
5830 
5834  primitive_desc() = default;
5835 
5846  primitive_desc(const desc &adesc, const engine &aengine,
5847  bool allow_empty = false)
5848  : dnnl::primitive_desc(
5849  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5850 
5862  primitive_desc(const desc &adesc, const primitive_attr &attr,
5863  const engine &aengine, bool allow_empty = false)
5864  : dnnl::primitive_desc(
5865  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5866 
5874  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5875  dnnl::prop_kind::forward_training,
5876  dnnl::prop_kind::forward_inference) {}
5877 
5879  memory::desc src_desc() const { return base::src_desc(0); }
5880 
5882  memory::desc dst_desc() const { return base::dst_desc(0); }
5883  };
5884 
5886  softmax_forward() = default;
5887 
5892 };
5893 
5895 struct softmax_backward : public primitive {
5897  struct desc {
5898  dnnl_softmax_desc_t data;
5899 
5901  desc() = default;
5902 
5910  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5911  int softmax_axis) {
5913  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
5914  &data_desc.data, softmax_axis),
5915  "could not create a descriptor for a softmax backward "
5916  "propagation primitive");
5917  }
5918  };
5919 
5923  primitive_desc() = default;
5924 
5938  primitive_desc(const desc &adesc, const engine &aengine,
5939  const softmax_forward::primitive_desc &hint_fwd_pd,
5940  bool allow_empty = false)
5941  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5942  hint_fwd_pd.get(), allow_empty) {}
5943 
5958  primitive_desc(const desc &adesc, const primitive_attr &attr,
5959  const engine &aengine,
5960  const softmax_forward::primitive_desc &hint_fwd_pd,
5961  bool allow_empty = false)
5962  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5963  hint_fwd_pd.get(), allow_empty) {}
5964 
5972  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5973  dnnl::prop_kind::backward_data) {}
5974 
5976  memory::desc dst_desc() const { return base::dst_desc(0); }
5977 
5980 
5983  };
5984 
5986  softmax_backward() = default;
5987 
5992 };
5993 
5995 
6003 
6007  struct desc {
6009 
6011  desc() = default;
6012 
6021  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6022  int logsoftmax_axis) {
6024  dnnl::convert_to_c(aprop_kind),
6025  &data_desc.data, logsoftmax_axis),
6026  "could not create a descriptor for a logsoftmax forward "
6027  "propagation primitive");
6028  }
6029  };
6030 
6034  primitive_desc() = default;
6035 
6046  primitive_desc(const desc &adesc, const engine &aengine,
6047  bool allow_empty = false)
6048  : dnnl::primitive_desc(
6049  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6050 
6062  primitive_desc(const desc &adesc, const primitive_attr &attr,
6063  const engine &aengine, bool allow_empty = false)
6064  : dnnl::primitive_desc(
6065  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6066 
6074  : dnnl::primitive_desc(pd,
6075  // Logsoftmax and softmax share the implementation and
6076  // currently report the same primitive kind. Hence this
6077  // must be softmax and not logsoftmax.
6078  dnnl::primitive::kind::softmax,
6079  dnnl::prop_kind::forward_training,
6080  dnnl::prop_kind::forward_inference) {}
6081 
6083  memory::desc src_desc() const { return base::src_desc(0); }
6084 
6086  memory::desc dst_desc() const { return base::dst_desc(0); }
6087  };
6088 
6090  logsoftmax_forward() = default;
6091 
6096 };
6097 
6101  struct desc {
6103 
6105  desc() = default;
6106 
6114  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
6115  int logsoftmax_axis) {
6117  &diff_data_desc.data, &data_desc.data,
6118  logsoftmax_axis),
6119  "could not create a descriptor for a logsoftmax backward "
6120  "propagation primitive");
6121  }
6122  };
6123 
6127  primitive_desc() = default;
6128 
6142  primitive_desc(const desc &adesc, const engine &aengine,
6143  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6144  bool allow_empty = false)
6145  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6146  hint_fwd_pd.get(), allow_empty) {}
6147 
6162  primitive_desc(const desc &adesc, const primitive_attr &attr,
6163  const engine &aengine,
6164  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6165  bool allow_empty = false)
6166  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6167  hint_fwd_pd.get(), allow_empty) {}
6168 
6176  : dnnl::primitive_desc(pd,
6177  // Logsoftmax and softmax share the implementation and
6178  // currently report the same primitive kind. Hence this
6179  // must be softmax and not logsoftmax.
6180  dnnl::primitive::kind::softmax,
6181  dnnl::prop_kind::backward_data) {}
6182 
6184  memory::desc dst_desc() const { return base::dst_desc(0); }
6185 
6188 
6191  };
6192 
6194  logsoftmax_backward() = default;
6195 
6200 };
6201 
6203 
6223 
6227  struct desc {
6229 
6244  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6245  normalization_flags flags) {
6248  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6249  epsilon, convert_to_c(flags)),
6250  "could not create a descriptor for a batch normalization "
6251  "forward propagation primitive");
6252  }
6253  };
6254 
6259  primitive_desc() = default;
6260 
6271  primitive_desc(const desc &adesc, const engine &aengine,
6272  bool allow_empty = false)
6273  : dnnl::primitive_desc(
6274  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6275 
6287  primitive_desc(const desc &adesc, const primitive_attr &attr,
6288  const engine &aengine, bool allow_empty = false)
6289  : dnnl::primitive_desc(
6290  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6291 
6299  : dnnl::primitive_desc(pd,
6300  dnnl::primitive::kind::batch_normalization,
6301  dnnl::prop_kind::forward_training,
6302  dnnl::prop_kind::forward_inference) {}
6303 
6305  memory::desc src_desc() const { return base::src_desc(0); }
6306 
6308  memory::desc dst_desc() const { return base::dst_desc(0); }
6309 
6312 
6315 
6318  memory::desc mean_desc() const { return stat_desc(mean); }
6319 
6322  memory::desc variance_desc() const { return stat_desc(var); }
6323 
6324  private:
6325  enum {
6326  mean = 1,
6327  var = 2,
6328  };
6329  memory::desc stat_desc(int kind) const {
6333  dnnl::convert_to_c(query::batch_normalization_d), 0,
6334  &p),
6335  "could not retrieve a descriptor from a primitive "
6336  "descriptor for batch normalization forward propagation "
6337  "primitive");
6338  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6339  : query::dst_md,
6340  kind);
6341  }
6342  };
6343 
6346 
6351 };
6352 
6356  struct desc {
6358 
6371  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6372  const memory::desc &data_desc, float epsilon,
6373  normalization_flags flags) {
6375  dnnl::convert_to_c(aprop_kind),
6376  &diff_data_desc.data, &data_desc.data,
6377  epsilon, convert_to_c(flags)),
6378  "could not create a descriptor for a batch normalization "
6379  "backward propagation primitive");
6380  }
6381  };
6382 
6387  primitive_desc() = default;
6388 
6402  primitive_desc(const desc &adesc, const engine &aengine,
6404  bool allow_empty = false)
6405  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6406  hint_fwd_pd.get(), allow_empty) {}
6407 
6422  primitive_desc(const desc &adesc, const primitive_attr &attr,
6423  const engine &aengine,
6425  bool allow_empty = false)
6426  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6427  hint_fwd_pd.get(), allow_empty) {}
6428 
6436  : dnnl::primitive_desc(pd,
6437  dnnl::primitive::kind::batch_normalization,
6438  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6439  }
6440 
6442  memory::desc src_desc() const { return base::src_desc(0); }
6443 
6446 
6448  memory::desc dst_desc() const { return base::dst_desc(0); }
6449 
6452 
6455 
6458  return base::diff_weights_desc(0);
6459  }
6460 
6462  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6463 
6466  return query_md(query::src_md, 2);
6467  }
6468 
6471  };
6472 
6475 
6480 };
6481 
6483 
6505 
6509  struct desc {
6511 
6523  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6524  const memory::desc &stat_desc, float epsilon,
6525  normalization_flags flags) {
6528  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6529  &stat_desc.data, epsilon, convert_to_c(flags)),
6530  "could not create a descriptor for a layer normalization "
6531  "forward propagation primitive");
6532  }
6533 
6544  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6545  normalization_flags flags) {
6548  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6549  nullptr, epsilon, convert_to_c(flags)),
6550  "could not create a descriptor for a layer normalization "
6551  "forward propagation primitive");
6552  }
6553  };
6554 
6559  primitive_desc() = default;
6560 
6571  primitive_desc(const desc &adesc, const engine &aengine,
6572  bool allow_empty = false)
6573  : dnnl::primitive_desc(
6574  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6575 
6587  primitive_desc(const desc &adesc, const primitive_attr &attr,
6588  const engine &aengine, bool allow_empty = false)
6589  : dnnl::primitive_desc(
6590  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6591 
6599  : dnnl::primitive_desc(pd,
6600  dnnl::primitive::kind::layer_normalization,
6601  dnnl::prop_kind::forward_training,
6602  dnnl::prop_kind::forward_inference) {}
6603 
6605  memory::desc src_desc() const { return base::src_desc(0); }
6606 
6608  memory::desc dst_desc() const { return base::dst_desc(0); }
6609 
6612 
6615 
6617  memory::desc mean_desc() const { return stat_desc(mean); }
6618 
6620  memory::desc variance_desc() const { return stat_desc(var); }
6621 
6622  private:
6623  enum {
6624  mean = 1,
6625  var = 2,
6626  };
6627  memory::desc stat_desc(int kind) const {
6631  dnnl::convert_to_c(query::layer_normalization_d), 0,
6632  &p),
6633  "could not retrieve a descriptor from a primitive "
6634  "descriptor for layer normalization forward propagation "
6635  "primitive");
6636  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6637  : query::dst_md,
6638  kind);
6639  }
6640  };
6641 
6644 
6649 };
6650 
6654  struct desc {
6656 
6670  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6671  const memory::desc &data_desc, const memory::desc &stat_desc,
6672  float epsilon, normalization_flags flags) {
6675  dnnl::convert_to_c(aprop_kind),
6676  &diff_data_desc.data, &data_desc.data,
6677  &stat_desc.data, epsilon, convert_to_c(flags)),
6678  "could not create a descriptor for a batch normalization "
6679  "backward propagation primitive");
6680  }
6681 
6694  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6695  const memory::desc &data_desc, float epsilon,
6696  normalization_flags flags) {
6698  dnnl::convert_to_c(aprop_kind),
6699  &diff_data_desc.data, &data_desc.data,
6700  nullptr, epsilon, convert_to_c(flags)),
6701  "could not create a descriptor for a batch normalization "
6702  "backward propagation primitive");
6703  }
6704  };
6705 
6710  primitive_desc() = default;
6711 
6725  primitive_desc(const desc &adesc, const engine &aengine,
6727  bool allow_empty = false)
6728  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6729  hint_fwd_pd.get(), allow_empty) {}
6730 
6745  primitive_desc(const desc &adesc, const primitive_attr &attr,
6746  const engine &aengine,
6748  bool allow_empty = false)
6749  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6750  hint_fwd_pd.get(), allow_empty) {}
6751 
6759  : dnnl::primitive_desc(pd,
6760  dnnl::primitive::kind::layer_normalization,
6761  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6762  }
6763 
6765  memory::desc src_desc() const { return base::src_desc(0); }
6766 
6769 
6771  memory::desc dst_desc() const { return base::dst_desc(0); }
6772 
6775 
6778 
6781  return base::diff_weights_desc(0);
6782  }
6783 
6785  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6786 
6789  return query_md(query::src_md, 2);
6790  }
6791 
6794  };
6795 
6798 
6803 };
6804 
6806 
6814 
6818  struct desc {
6820 
6835  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6836  const memory::desc &weights_desc, const memory::desc &bias_desc,
6837  const memory::desc &dst_desc) {
6839  dnnl::convert_to_c(aprop_kind),
6840  &src_desc.data, &weights_desc.data,
6841  &bias_desc.data, &dst_desc.data),
6842  "could not create a descriptor for an inner product "
6843  "forward propagation primitive");
6844  }
6845 
6859  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6860  const memory::desc &weights_desc,
6861  const memory::desc &dst_desc) {
6864  dnnl::convert_to_c(aprop_kind), &src_desc.data,
6865  &weights_desc.data, nullptr, &dst_desc.data),
6866  "could not create a descriptor for an inner product "
6867  "forward propagation primitive");
6868  }
6869  };
6870 
6874  primitive_desc() = default;
6875 
6886  primitive_desc(const desc &adesc, const engine &aengine,
6887  bool allow_empty = false)
6888  : dnnl::primitive_desc(
6889  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6890 
6902  primitive_desc(const desc &adesc, const primitive_attr &attr,
6903  const engine &aengine, bool allow_empty = false)
6904  : dnnl::primitive_desc(
6905  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6906 
6914  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6915  dnnl::prop_kind::forward_training,
6916  dnnl::prop_kind::forward_inference) {}
6917 
6919  memory::desc src_desc() const { return base::src_desc(0); }
6920 
6923 
6925  memory::desc dst_desc() const { return base::dst_desc(0); }
6926 
6929  };
6930 
6933 
6938 };
6939 
6943  struct desc {
6945 
6956  desc(const memory::desc &diff_src_desc,
6957  const memory::desc &weights_desc,
6958  const memory::desc &diff_dst_desc) {
6960  &diff_src_desc.data, &weights_desc.data,
6961  &diff_dst_desc.data),
6962  "could not create a descriptor for an inner product "
6963  "backward propagation primitive");
6964  }
6965  };
6966 
6971  primitive_desc() = default;
6972 
6986  primitive_desc(const desc &adesc, const engine &aengine,
6987  const inner_product_forward::primitive_desc &hint_fwd_pd,
6988  bool allow_empty = false)
6989  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6990  hint_fwd_pd.get(), allow_empty) {}
6991 
7006  primitive_desc(const desc &adesc, const primitive_attr &attr,
7007  const engine &aengine,
7008  const inner_product_forward::primitive_desc &hint_fwd_pd,
7009  bool allow_empty = false)
7010  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7011  hint_fwd_pd.get(), allow_empty) {}
7012 
7020  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7021  dnnl::prop_kind::backward_data) {}
7022 
7025 
7028 
7031  };
7032 
7035 
7040 };
7041 
7045  struct desc {
7047 
7059  desc(const memory::desc &src_desc,
7060  const memory::desc &diff_weights_desc,
7061  const memory::desc &diff_bias_desc,
7062  const memory::desc &diff_dst_desc) {
7065  &src_desc.data, &diff_weights_desc.data,
7066  &diff_bias_desc.data, &diff_dst_desc.data),
7067  "could not create a descriptor for an inner product "
7068  "weights gradient primitive");
7069  }
7070 
7081  desc(const memory::desc &src_desc,
7082  const memory::desc &diff_weights_desc,
7083  const memory::desc &diff_dst_desc) {
7086  &src_desc.data, &diff_weights_desc.data, nullptr,
7087  &diff_dst_desc.data),
7088  "could not create a descriptor for an inner product "
7089  "weights gradient primitive");
7090  }
7091  };
7092 
7096  primitive_desc() = default;
7097 
7111  primitive_desc(const desc &adesc, const engine &aengine,
7112  const inner_product_forward::primitive_desc &hint_fwd_pd,
7113  bool allow_empty = false)
7114  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7115  hint_fwd_pd.get(), allow_empty) {}
7116 
7131  primitive_desc(const desc &adesc, const primitive_attr &attr,
7132  const engine &aengine,
7133  const inner_product_forward::primitive_desc &hint_fwd_pd,
7134  bool allow_empty = false)
7135  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7136  hint_fwd_pd.get(), allow_empty) {}
7137 
7145  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7146  dnnl::prop_kind::backward_weights) {}
7147 
7149  memory::desc src_desc() const { return base::src_desc(0); }
7150 
7153  return base::diff_weights_desc(0);
7154  }
7155 
7158 
7161  return base::diff_weights_desc(1);
7162  }
7163  };
7164 
7167 
7172 };
7173 
7175 
7183 
7186  using primitive_desc::primitive_desc;
7187 
7190 
7199  dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
7200  : rnn_primitive_desc_base(pd, aprop_kind, aprop_kind, cell_kind) {}
7201 
7206  }
7207 
7214  }
7215 
7220  }
7221 
7226  }
7227 
7232  }
7233 
7238  }
7239 
7244  }
7245 
7252  }
7253 
7258  }
7259 
7266  }
7267 
7272  }
7273 
7278  }
7279 
7286  }
7287 
7292  }
7293 
7298  }
7299 
7304  }
7305 
7309  return base::query_md(
7311  }
7312 
7316  return base::query_md(
7318  }
7319 
7326  }
7327 
7332  }
7333 
7340  }
7341 
7346  }
7347 
7348 protected:
7349  using rnn_base = rnn_primitive_desc_base;
7350 
7351  // (Deliberately not using doxygen comments)
7352  //
7353  // Constructs an RNN primitive descriptor base from a C API primitive
7354  // descriptor while checking that it actually describes the expected
7355  // primitive by comparing propagation and primitive kinds. Caller can
7356  // pass two options propagation kinds. This is typically used to check
7357  // that propagation kind is inference or training forward propagation.
7358  //
7359  // @param pd C API primitive descriptor.
7360  // @param prop_kind1 Expected propagation kind.
7361  // @param prop_kind2 Expected propagation kind.
7362  // @param cell_kind Expected cell kind.
7364  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
7365  dnnl::algorithm cell_kind) {
7366  dnnl_rnn_desc_t *rnn_d;
7367  dnnl_status_t rc;
7368  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
7369  error::wrap_c_api(rc,
7370  "could not retrieve a descriptor from a primitive descriptor "
7371  "for an RNN primitive");
7372 
7373  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
7374  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
7375  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
7376 
7377  bool ok = rnn_d->primitive_kind == dnnl_rnn
7378  && (rnn_d->prop_kind == c_prop_kind1
7379  || rnn_d->prop_kind == c_prop_kind2)
7380  && rnn_d->cell_kind == c_cell_kind;
7381 
7382  if (!ok)
7383  DNNL_THROW_ERROR(dnnl_invalid_arguments,
7384  "mismatch between expected and provided descriptors for an "
7385  "RNN primitive");
7386 
7387  reset_with_clone(pd);
7388  }
7389 };
7390 
7394  struct desc {
7395  dnnl_rnn_desc_t data;
7396 
7437  desc(prop_kind aprop_kind, algorithm activation,
7438  rnn_direction direction, const memory::desc &src_layer_desc,
7439  const memory::desc &src_iter_desc,
7440  const memory::desc &weights_layer_desc,
7441  const memory::desc &weights_iter_desc,
7442  const memory::desc &bias_desc,
7443  const memory::desc &dst_layer_desc,
7444  const memory::desc &dst_iter_desc,
7445  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7446  float beta = 0.0f) {
7449  dnnl::convert_to_c(aprop_kind),
7450  dnnl::convert_to_c(activation),
7451  dnnl::convert_to_c(direction), &src_layer_desc.data,
7452  &src_iter_desc.data, &weights_layer_desc.data,
7453  &weights_iter_desc.data, &bias_desc.data,
7454  &dst_layer_desc.data, &dst_iter_desc.data,
7455  dnnl::convert_to_c(flags), alpha, beta),
7456  "could not create a descriptor for a vanilla RNN forward "
7457  "propagation primitive");
7458  }
7459  };
7460 
7464  primitive_desc() = default;
7465 
7476  primitive_desc(const desc &adesc, const engine &aengine,
7477  bool allow_empty = false)
7479  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7480 
7492  primitive_desc(const desc &adesc, const primitive_attr &attr,
7493  const engine &aengine, bool allow_empty = false)
7495  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7496 
7504  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
7505  dnnl::prop_kind::forward_inference,
7506  dnnl::algorithm::vanilla_rnn) {}
7507 
7510  return rnn_base::src_layer_desc();
7511  }
7512 
7515 
7519  }
7520 
7523  return rnn_base::weights_iter_desc();
7524  }
7525 
7528 
7531  return rnn_base::dst_layer_desc();
7532  }
7533 
7536 
7539  return rnn_base::workspace_desc();
7540  }
7541  };
7542 
7544  vanilla_rnn_forward() = default;
7545 
7550 };
7551 
7555  struct desc {
7556  dnnl_rnn_desc_t data;
7557 
7610  desc(prop_kind aprop_kind, algorithm activation,
7611  rnn_direction direction, const memory::desc &src_layer_desc,
7612  const memory::desc &src_iter_desc,
7613  const memory::desc &weights_layer_desc,
7614  const memory::desc &weights_iter_desc,
7615  const memory::desc &bias_desc,
7616  const memory::desc &dst_layer_desc,
7617  const memory::desc &dst_iter_desc,
7618  const memory::desc &diff_src_layer_desc,
7619  const memory::desc &diff_src_iter_desc,
7620  const memory::desc &diff_weights_layer_desc,
7621  const memory::desc &diff_weights_iter_desc,
7622  const memory::desc &diff_bias_desc,
7623  const memory::desc &diff_dst_layer_desc,
7624  const memory::desc &diff_dst_iter_desc,
7625  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7626  float beta = 0.0f) {
7629  dnnl::convert_to_c(aprop_kind),
7630  dnnl::convert_to_c(activation),
7631  dnnl::convert_to_c(direction), &src_layer_desc.data,
7632  &src_iter_desc.data, &weights_layer_desc.data,
7633  &weights_iter_desc.data, &bias_desc.data,
7634  &dst_layer_desc.data, &dst_iter_desc.data,
7635  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7636  &diff_weights_layer_desc.data,
7637  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7638  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7639  dnnl::convert_to_c(flags), alpha, beta),
7640  "could not create a descriptor for a vanilla RNN backward "
7641  "propagation primitive");
7642  }
7643  };
7644 
7648  primitive_desc() = default;
7649 
7663  primitive_desc(const desc &adesc, const engine &aengine,
7664  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7665  bool allow_empty = false)
7666  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
7667  hint_fwd_pd.get(), allow_empty) {}
7668 
7683  primitive_desc(const desc &adesc, const primitive_attr &attr,
7684  const engine &aengine,
7685  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7686  bool allow_empty = false)
7687  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
7688  hint_fwd_pd.get(), allow_empty) {}
7689 
7697  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
7698  dnnl::algorithm::vanilla_rnn) {}
7699 
7702  return rnn_base::src_layer_desc();
7703  }
7704 
7707 
7711  }
7712 
7715  return rnn_base::weights_iter_desc();
7716  }
7717 
7720 
7723  return rnn_base::dst_layer_desc();
7724  }
7725 
7728 
7731  return rnn_base::workspace_desc();
7732  }
7733 
7737  }
7738 
7742  }
7743 
7747  }
7748 
7752  }
7753 
7756  return rnn_base::diff_bias_desc();
7757  }
7758 
7762  }
7763 
7767  }
7768  };
7769 
7772 
7777 };
7778 
7780 struct lstm_forward : public primitive {
7782  struct desc {
7783  dnnl_rnn_desc_t data;
7784 
7833  desc(prop_kind aprop_kind, rnn_direction direction,
7834  const memory::desc &src_layer_desc,
7835  const memory::desc &src_iter_desc,
7836  const memory::desc &src_iter_c_desc,
7837  const memory::desc &weights_layer_desc,
7838  const memory::desc &weights_iter_desc,
7839  const memory::desc &weights_peephole_desc,
7840  const memory::desc &weights_projection_desc,
7841  const memory::desc &bias_desc,
7842  const memory::desc &dst_layer_desc,
7843  const memory::desc &dst_iter_desc,
7844  const memory::desc &dst_iter_c_desc,
7845  rnn_flags flags = rnn_flags::undef) {
7848  dnnl::convert_to_c(aprop_kind),
7849  dnnl::convert_to_c(direction), &src_layer_desc.data,
7850  &src_iter_desc.data, &src_iter_c_desc.data,
7851  &weights_layer_desc.data, &weights_iter_desc.data,
7852  &weights_peephole_desc.data,
7853  &weights_projection_desc.data, &bias_desc.data,
7854  &dst_layer_desc.data, &dst_iter_desc.data,
7855  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7856  "could not create a descriptor for an LSTM forward "
7857  "propagation primitive");
7858  }
7859 
7901  desc(prop_kind aprop_kind, rnn_direction direction,
7902  const memory::desc &src_layer_desc,
7903  const memory::desc &src_iter_desc,
7904  const memory::desc &src_iter_c_desc,
7905  const memory::desc &weights_layer_desc,
7906  const memory::desc &weights_iter_desc,
7907  const memory::desc &weights_peephole_desc,
7908  const memory::desc &bias_desc,
7909  const memory::desc &dst_layer_desc,
7910  const memory::desc &dst_iter_desc,
7911  const memory::desc &dst_iter_c_desc,
7912  rnn_flags flags = rnn_flags::undef) {
7915  dnnl::convert_to_c(aprop_kind),
7916  dnnl::convert_to_c(direction), &src_layer_desc.data,
7917  &src_iter_desc.data, &src_iter_c_desc.data,
7918  &weights_layer_desc.data, &weights_iter_desc.data,
7919  &weights_peephole_desc.data, &bias_desc.data,
7920  &dst_layer_desc.data, &dst_iter_desc.data,
7921  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7922  "could not create a descriptor for an LSTM forward "
7923  "propagation primitive");
7924  }
7925 
7962  desc(prop_kind aprop_kind, rnn_direction direction,
7963  const memory::desc &src_layer_desc,
7964  const memory::desc &src_iter_desc,
7965  const memory::desc &src_iter_c_desc,
7966  const memory::desc &weights_layer_desc,
7967  const memory::desc &weights_iter_desc,
7968  const memory::desc &bias_desc,
7969  const memory::desc &dst_layer_desc,
7970  const memory::desc &dst_iter_desc,
7971  const memory::desc &dst_iter_c_desc,
7972  rnn_flags flags = rnn_flags::undef) {
7975  dnnl::convert_to_c(aprop_kind),
7976  dnnl::convert_to_c(direction), &src_layer_desc.data,
7977  &src_iter_desc.data, &src_iter_c_desc.data,
7978  &weights_layer_desc.data, &weights_iter_desc.data,
7979  &bias_desc.data, &dst_layer_desc.data,
7980  &dst_iter_desc.data, &dst_iter_c_desc.data,
7981  dnnl::convert_to_c(flags)),
7982  "could not create a descriptor for an LSTM forward "
7983  "propagation primitive");
7984  }
7985  };
7986 
7990  primitive_desc() = default;
7991 
8001  primitive_desc(const desc &adesc, const engine &aengine,
8002  bool allow_empty = false)
8004  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8005 
8016  primitive_desc(const desc &adesc, const primitive_attr &attr,
8017  const engine &aengine, bool allow_empty = false)
8019  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8020 
8028  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8029  dnnl::prop_kind::forward_inference,
8030  dnnl::algorithm::vanilla_lstm) {}
8031 
8034  return rnn_base::src_layer_desc();
8035  }
8036 
8039 
8042  return rnn_base::src_iter_c_desc();
8043  }
8044 
8048  }
8049 
8052  return rnn_base::weights_iter_desc();
8053  }
8054 
8058  }
8059 
8063  }
8064 
8067 
8070  return rnn_base::dst_layer_desc();
8071  }
8072 
8075 
8078  return rnn_base::dst_iter_c_desc();
8079  }
8080 
8083  return rnn_base::workspace_desc();
8084  }
8085  };
8086 
8088  lstm_forward() = default;
8089 
8094 };
8095 
8097 struct lstm_backward : public primitive {
8099  struct desc {
8100  dnnl_rnn_desc_t data;
8101 
8177  desc(prop_kind aprop_kind, rnn_direction direction,
8178  const memory::desc &src_layer_desc,
8179  const memory::desc &src_iter_desc,
8180  const memory::desc &src_iter_c_desc,
8181  const memory::desc &weights_layer_desc,
8182  const memory::desc &weights_iter_desc,
8183  const memory::desc &weights_peephole_desc,
8184  const memory::desc &weights_projection_desc,
8185  const memory::desc &bias_desc,
8186  const memory::desc &dst_layer_desc,
8187  const memory::desc &dst_iter_desc,
8188  const memory::desc &dst_iter_c_desc,
8189  const memory::desc &diff_src_layer_desc,
8190  const memory::desc &diff_src_iter_desc,
8191  const memory::desc &diff_src_iter_c_desc,
8192  const memory::desc &diff_weights_layer_desc,
8193  const memory::desc &diff_weights_iter_desc,
8194  const memory::desc &diff_weights_peephole_desc,
8195  const memory::desc &diff_weights_projection_desc,
8196  const memory::desc &diff_bias_desc,
8197  const memory::desc &diff_dst_layer_desc,
8198  const memory::desc &diff_dst_iter_desc,
8199  const memory::desc &diff_dst_iter_c_desc,
8200  rnn_flags flags = rnn_flags::undef) {
8203  dnnl::convert_to_c(aprop_kind),
8204  dnnl::convert_to_c(direction), &src_layer_desc.data,
8205  &src_iter_desc.data, &src_iter_c_desc.data,
8206  &weights_layer_desc.data, &weights_iter_desc.data,
8207  &weights_peephole_desc.data,
8208  &weights_projection_desc.data, &bias_desc.data,
8209  &dst_layer_desc.data, &dst_iter_desc.data,
8210  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8211  &diff_src_iter_desc.data,
8212  &diff_src_iter_c_desc.data,
8213  &diff_weights_layer_desc.data,
8214  &diff_weights_iter_desc.data,
8215  &diff_weights_peephole_desc.data,
8216  &diff_weights_projection_desc.data,
8217  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8218  &diff_dst_iter_desc.data,
8219  &diff_dst_iter_c_desc.data,
8220  dnnl::convert_to_c(flags)),
8221  "could not create a descriptor for an LSTM backward "
8222  "propagation primitive");
8223  }
8224 
8289  desc(prop_kind aprop_kind, rnn_direction direction,
8290  const memory::desc &src_layer_desc,
8291  const memory::desc &src_iter_desc,
8292  const memory::desc &src_iter_c_desc,
8293  const memory::desc &weights_layer_desc,
8294  const memory::desc &weights_iter_desc,
8295  const memory::desc &weights_peephole_desc,
8296  const memory::desc &bias_desc,
8297  const memory::desc &dst_layer_desc,
8298  const memory::desc &dst_iter_desc,
8299  const memory::desc &dst_iter_c_desc,
8300  const memory::desc &diff_src_layer_desc,
8301  const memory::desc &diff_src_iter_desc,
8302  const memory::desc &diff_src_iter_c_desc,
8303  const memory::desc &diff_weights_layer_desc,
8304  const memory::desc &diff_weights_iter_desc,
8305  const memory::desc &diff_weights_peephole_desc,
8306  const memory::desc &diff_bias_desc,
8307  const memory::desc &diff_dst_layer_desc,
8308  const memory::desc &diff_dst_iter_desc,
8309  const memory::desc &diff_dst_iter_c_desc,
8310  rnn_flags flags = rnn_flags::undef) {
8313  dnnl::convert_to_c(aprop_kind),
8314  dnnl::convert_to_c(direction), &src_layer_desc.data,
8315  &src_iter_desc.data, &src_iter_c_desc.data,
8316  &weights_layer_desc.data, &weights_iter_desc.data,
8317  &weights_peephole_desc.data, &bias_desc.data,
8318  &dst_layer_desc.data, &dst_iter_desc.data,
8319  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8320  &diff_src_iter_desc.data,
8321  &diff_src_iter_c_desc.data,
8322  &diff_weights_layer_desc.data,
8323  &diff_weights_iter_desc.data,
8324  &diff_weights_peephole_desc.data,
8325  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8326  &diff_dst_iter_desc.data,
8327  &diff_dst_iter_c_desc.data,
8328  dnnl::convert_to_c(flags)),
8329  "could not create a descriptor for an LSTM backward "
8330  "propagation primitive");
8331  }
8332 
8388  desc(prop_kind aprop_kind, rnn_direction direction,
8389  const memory::desc &src_layer_desc,
8390  const memory::desc &src_iter_desc,
8391  const memory::desc &src_iter_c_desc,
8392  const memory::desc &weights_layer_desc,
8393  const memory::desc &weights_iter_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_bias_desc,
8404  const memory::desc &diff_dst_layer_desc,
8405  const memory::desc &diff_dst_iter_desc,
8406  const memory::desc &diff_dst_iter_c_desc,
8407  rnn_flags flags = rnn_flags::undef) {
8410  dnnl::convert_to_c(aprop_kind),
8411  dnnl::convert_to_c(direction), &src_layer_desc.data,
8412  &src_iter_desc.data, &src_iter_c_desc.data,
8413  &weights_layer_desc.data, &weights_iter_desc.data,
8414  &bias_desc.data, &dst_layer_desc.data,
8415  &dst_iter_desc.data, &dst_iter_c_desc.data,
8416  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8417  &diff_src_iter_c_desc.data,
8418  &diff_weights_layer_desc.data,
8419  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8420  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8421  &diff_dst_iter_c_desc.data,
8422  dnnl::convert_to_c(flags)),
8423  "could not create a descriptor for an LSTM backward "
8424  "propagation primitive");
8425  }
8426  };
8427 
8431  primitive_desc() = default;
8432 
8445  primitive_desc(const desc &adesc, const engine &aengine,
8446  const lstm_forward::primitive_desc &hint_fwd_pd,
8447  bool allow_empty = false)
8448  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8449  hint_fwd_pd.get(), allow_empty) {}
8450 
8464  primitive_desc(const desc &adesc, const primitive_attr &attr,
8465  const engine &aengine,
8466  const lstm_forward::primitive_desc &hint_fwd_pd,
8467  bool allow_empty = false)
8468  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8469  hint_fwd_pd.get(), allow_empty) {}
8470 
8478  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8479  dnnl::algorithm::vanilla_lstm) {}
8480 
8483  return rnn_base::src_layer_desc();
8484  }
8485 
8488 
8491  return rnn_base::src_iter_c_desc();
8492  }
8493 
8497  }
8498 
8501  return rnn_base::weights_iter_desc();
8502  }
8503 
8507  }
8508 
8512  }
8513 
8516 
8519  return rnn_base::dst_layer_desc();
8520  }
8521 
8524 
8527  return rnn_base::dst_iter_c_desc();
8528  }
8529 
8532  return rnn_base::workspace_desc();
8533  }
8534 
8538  }
8539 
8543  }
8544 
8548  }
8549 
8553  }
8554 
8558  }
8559 
8563  }
8564 
8568  }
8569 
8572  return rnn_base::diff_bias_desc();
8573  }
8574 
8578  }
8579 
8583  }
8584 
8588  }
8589  };
8590 
8592  lstm_backward() = default;
8593 
8598 };
8599 
8601 struct gru_forward : public primitive {
8603  struct desc {
8604  dnnl_rnn_desc_t data;
8605 
8638  desc(prop_kind aprop_kind, rnn_direction direction,
8639  const memory::desc &src_layer_desc,
8640  const memory::desc &src_iter_desc,
8641  const memory::desc &weights_layer_desc,
8642  const memory::desc &weights_iter_desc,
8643  const memory::desc &bias_desc,
8644  const memory::desc &dst_layer_desc,
8645  const memory::desc &dst_iter_desc,
8646  rnn_flags flags = rnn_flags::undef) {
8649  dnnl::convert_to_c(aprop_kind),
8650  dnnl::convert_to_c(direction), &src_layer_desc.data,
8651  &src_iter_desc.data, &weights_layer_desc.data,
8652  &weights_iter_desc.data, &bias_desc.data,
8653  &dst_layer_desc.data, &dst_iter_desc.data,
8654  dnnl::convert_to_c(flags)),
8655  "could not create a descriptor for a GRU forward "
8656  "propagation primitive");
8657  }
8658  };
8659 
8663  primitive_desc() = default;
8664 
8674  primitive_desc(const desc &adesc, const engine &aengine,
8675  bool allow_empty = false)
8677  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8678 
8689  primitive_desc(const desc &adesc, const primitive_attr &attr,
8690  const engine &aengine, bool allow_empty = false)
8692  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8693 
8701  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8702  dnnl::prop_kind::forward_inference,
8703  dnnl::algorithm::vanilla_gru) {}
8704 
8707  return rnn_base::src_layer_desc();
8708  }
8709 
8712 
8716  }
8717 
8720  return rnn_base::weights_iter_desc();
8721  }
8722 
8725 
8728  return rnn_base::dst_layer_desc();
8729  }
8730 
8733 
8736  return rnn_base::workspace_desc();
8737  }
8738  };
8739 
8741  gru_forward() = default;
8742 
8747 };
8748 
8750 struct gru_backward : public primitive {
8752  struct desc {
8753  dnnl_rnn_desc_t data;
8754 
8799  desc(prop_kind aprop_kind, rnn_direction direction,
8800  const memory::desc &src_layer_desc,
8801  const memory::desc &src_iter_desc,
8802  const memory::desc &weights_layer_desc,
8803  const memory::desc &weights_iter_desc,
8804  const memory::desc &bias_desc,
8805  const memory::desc &dst_layer_desc,
8806  const memory::desc &dst_iter_desc,
8807  const memory::desc &diff_src_layer_desc,
8808  const memory::desc &diff_src_iter_desc,
8809  const memory::desc &diff_weights_layer_desc,
8810  const memory::desc &diff_weights_iter_desc,
8811  const memory::desc &diff_bias_desc,
8812  const memory::desc &diff_dst_layer_desc,
8813  const memory::desc &diff_dst_iter_desc,
8814  rnn_flags flags = rnn_flags::undef) {
8817  dnnl::convert_to_c(aprop_kind),
8818  dnnl::convert_to_c(direction), &src_layer_desc.data,
8819  &src_iter_desc.data, &weights_layer_desc.data,
8820  &weights_iter_desc.data, &bias_desc.data,
8821  &dst_layer_desc.data, &dst_iter_desc.data,
8822  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8823  &diff_weights_layer_desc.data,
8824  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8825  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8826  dnnl::convert_to_c(flags)),
8827  "could not create a descriptor for a GRU backward "
8828  "propagation primitive");
8829  }
8830  };
8831 
8835  primitive_desc() = default;
8836 
8849  primitive_desc(const desc &adesc, const engine &aengine,
8850  const gru_forward::primitive_desc &hint_fwd_pd,
8851  bool allow_empty = false)
8852  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8853  hint_fwd_pd.get(), allow_empty) {}
8854 
8868  primitive_desc(const desc &adesc, const primitive_attr &attr,
8869  const engine &aengine,
8870  const gru_forward::primitive_desc &hint_fwd_pd,
8871  bool allow_empty = false)
8872  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8873  hint_fwd_pd.get(), allow_empty) {}
8874 
8882  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8883  dnnl::algorithm::vanilla_gru) {}
8884 
8887  return rnn_base::src_layer_desc();
8888  }
8889 
8892 
8896  }
8897 
8900  return rnn_base::weights_iter_desc();
8901  }
8902 
8905 
8908  return rnn_base::dst_layer_desc();
8909  }
8910 
8913 
8916  return rnn_base::workspace_desc();
8917  }
8918 
8922  }
8923 
8927  }
8928 
8932  }
8933 
8937  }
8938 
8941  return rnn_base::diff_bias_desc();
8942  }
8943 
8947  }
8948 
8952  }
8953  };
8954 
8956  gru_backward() = default;
8957 
8962 };
8963 
8965 struct lbr_gru_forward : public primitive {
8967  struct desc {
8968  dnnl_rnn_desc_t data;
8969 
9003  desc(prop_kind aprop_kind, rnn_direction direction,
9004  const memory::desc &src_layer_desc,
9005  const memory::desc &src_iter_desc,
9006  const memory::desc &weights_layer_desc,
9007  const memory::desc &weights_iter_desc,
9008  const memory::desc &bias_desc,
9009  const memory::desc &dst_layer_desc,
9010  const memory::desc &dst_iter_desc,
9011  rnn_flags flags = rnn_flags::undef) {
9014  dnnl::convert_to_c(aprop_kind),
9015  dnnl::convert_to_c(direction), &src_layer_desc.data,
9016  &src_iter_desc.data, &weights_layer_desc.data,
9017  &weights_iter_desc.data, &bias_desc.data,
9018  &dst_layer_desc.data, &dst_iter_desc.data,
9019  dnnl::convert_to_c(flags)),
9020  "could not create a descriptor for an LBR GRU forward "
9021  "propagation primitive");
9022  }
9023  };
9024 
9028  primitive_desc() = default;
9029 
9040  primitive_desc(const desc &adesc, const engine &aengine,
9041  bool allow_empty = false)
9043  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9044 
9056  primitive_desc(const desc &adesc, const primitive_attr &attr,
9057  const engine &aengine, bool allow_empty = false)
9059  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9060 
9068  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
9069  dnnl::prop_kind::forward_inference,
9070  dnnl::algorithm::lbr_gru) {}
9071 
9074  return rnn_base::src_layer_desc();
9075  }
9076 
9079 
9083  }
9084 
9087  return rnn_base::weights_iter_desc();
9088  }
9089 
9092 
9095  return rnn_base::dst_layer_desc();
9096  }
9097 
9100 
9103  return rnn_base::workspace_desc();
9104  }
9105  };
9106 
9108  lbr_gru_forward() = default;
9109 
9114 };
9115 
9117 struct lbr_gru_backward : public primitive {
9119  struct desc {
9120  dnnl_rnn_desc_t data;
9121 
9167  desc(prop_kind aprop_kind, rnn_direction direction,
9168  const memory::desc &src_layer_desc,
9169  const memory::desc &src_iter_desc,
9170  const memory::desc &weights_layer_desc,
9171  const memory::desc &weights_iter_desc,
9172  const memory::desc &bias_desc,
9173  const memory::desc &dst_layer_desc,
9174  const memory::desc &dst_iter_desc,
9175  const memory::desc &diff_src_layer_desc,
9176  const memory::desc &diff_src_iter_desc,
9177  const memory::desc &diff_weights_layer_desc,
9178  const memory::desc &diff_weights_iter_desc,
9179  const memory::desc &diff_bias_desc,
9180  const memory::desc &diff_dst_layer_desc,
9181  const memory::desc &diff_dst_iter_desc,
9182  rnn_flags flags = rnn_flags::undef) {
9185  dnnl::convert_to_c(aprop_kind),
9186  dnnl::convert_to_c(direction), &src_layer_desc.data,
9187  &src_iter_desc.data, &weights_layer_desc.data,
9188  &weights_iter_desc.data, &bias_desc.data,
9189  &dst_layer_desc.data, &dst_iter_desc.data,
9190  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9191  &diff_weights_layer_desc.data,
9192  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9193  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9194  dnnl::convert_to_c(flags)),
9195  "could not create a descriptor for an LBR GRU backward "
9196  "propagation primitive");
9197  }
9198  };
9199 
9203  primitive_desc() = default;
9204 
9218  primitive_desc(const desc &adesc, const engine &aengine,
9219  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9220  bool allow_empty = false)
9221  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9222  hint_fwd_pd.get(), allow_empty) {}
9223 
9238  primitive_desc(const desc &adesc, const primitive_attr &attr,
9239  const engine &aengine,
9240  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9241  bool allow_empty = false)
9242  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9243  hint_fwd_pd.get(), allow_empty) {}
9244 
9253  pd, dnnl::prop_kind::backward, dnnl::algorithm::lbr_gru) {}
9254 
9257  return rnn_base::src_layer_desc();
9258  }
9259 
9262 
9266  }
9267 
9270  return rnn_base::weights_iter_desc();
9271  }
9272 
9275 
9278  return rnn_base::dst_layer_desc();
9279  }
9280 
9283 
9286  return rnn_base::workspace_desc();
9287  }
9288 
9292  }
9293 
9297  }
9298 
9302  }
9303 
9307  }
9308 
9311  return rnn_base::diff_bias_desc();
9312  }
9313 
9317  }
9318 
9322  }
9323  };
9324 
9326  lbr_gru_backward() = default;
9327 
9332 };
9333 
9335 
9343 
9345 struct shuffle_forward : public primitive {
9347  struct desc {
9348  dnnl_shuffle_desc_t data;
9349 
9359  desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis,
9360  int group_size) {
9362  dnnl::convert_to_c(aprop_kind),
9363  &data_desc.data, axis, group_size),
9364  "could not create a descriptor for a shuffle forward "
9365  "propagation primitive");
9366  }
9367  };
9368 
9372  primitive_desc() = default;
9373 
9385  primitive_desc(const desc &adesc, const engine &aengine,
9386  const primitive_attr &attr = primitive_attr(),
9387  bool allow_empty = false)
9388  : dnnl::primitive_desc(
9389  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9390 
9398  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9399  dnnl::prop_kind::forward_training,
9400  dnnl::prop_kind::forward_inference) {}
9401 
9403  memory::desc src_desc() const { return base::src_desc(0); }
9404 
9406  memory::desc dst_desc() const { return base::dst_desc(0); }
9407  };
9408 
9410  shuffle_forward() = default;
9411 
9416 };
9417 
9419 struct shuffle_backward : public primitive {
9422  struct desc {
9423  dnnl_shuffle_desc_t data;
9424 
9432  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
9434  &diff_data_desc.data, axis, group_size),
9435  "could not create a descriptor for a shuffle backward "
9436  "propagation primitive");
9437  }
9438  };
9439 
9443  primitive_desc() = default;
9444 
9459  primitive_desc(const desc &adesc, const engine &aengine,
9460  const shuffle_forward::primitive_desc &hint_fwd_pd,
9461  const primitive_attr &attr = primitive_attr(),
9462  bool allow_empty = false)
9463  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9464  hint_fwd_pd.get(), allow_empty) {}
9465 
9473  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9474  dnnl::prop_kind::backward_data) {}
9475 
9478 
9481  };
9482 
9484  shuffle_backward() = default;
9485 
9490 };
9491 
9493 
9501 
9503 struct binary : public primitive {
9505  struct desc {
9508 
9510  desc() = default;
9511 
9519  desc(algorithm aalgorithm, const memory::desc &src0,
9520  const memory::desc &src1, const memory::desc &dst) {
9523  &src0.data, &src1.data, &dst.data),
9524  "could not create a descriptor for a binary operation "
9525  "primitive");
9526  }
9527  };
9528 
9532  primitive_desc() = default;
9533 
9543  primitive_desc(const desc &adesc, const engine &aengine,
9544  bool allow_empty = false)
9545  : dnnl::primitive_desc(
9546  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9547 
9558  primitive_desc(const desc &adesc, const primitive_attr &attr,
9559  const engine &aengine, bool allow_empty = false)
9560  : dnnl::primitive_desc(
9561  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9562 
9569 
9571  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
9572 
9574  memory::desc src0_desc() const { return base::src_desc(0); }
9575 
9577  memory::desc src1_desc() const { return base::src_desc(1); }
9578 
9580  memory::desc dst_desc() const { return base::dst_desc(0); }
9581  };
9582 
9584  binary() = default;
9585 
9589  binary(const primitive_desc &pd) : primitive(pd) {}
9590 };
9591 
9593 
9603 
9605 struct matmul : public primitive {
9607  struct desc {
9608  dnnl_matmul_desc_t data;
9609 
9615  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9616  const memory::desc &dst_desc) {
9618  dnnl_matmul_desc_init(&data, &src_desc.data,
9619  &weights_desc.data, nullptr, &dst_desc.data),
9620  "could not create a descriptor for a matmul primitive");
9621  }
9622 
9629  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9630  const memory::desc &bias_desc, const memory::desc &dst_desc) {
9631  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
9632  &weights_desc.data, &bias_desc.data,
9633  &dst_desc.data),
9634  "could not create a descriptor for a matmul primitive");
9635  }
9636  };
9637 
9641  primitive_desc() = default;
9642 
9651  primitive_desc(const desc &adesc, const engine &aengine,
9652  bool allow_empty = false)
9653  : dnnl::primitive_desc(
9654  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9655 
9665  primitive_desc(const desc &adesc, const primitive_attr &attr,
9666  const engine &aengine, bool allow_empty = false)
9667  : dnnl::primitive_desc(
9668  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9669 
9676 
9678  memory::desc src_desc() const { return query_md(query::src_md, 0); }
9679 
9682  return query_md(query::weights_md, 0);
9683  }
9684 
9687  return query_md(query::weights_md, 1);
9688  }
9689 
9691  memory::desc dst_desc() const { return query_md(query::dst_md, 0); }
9692  };
9693 
9695  matmul() = default;
9696 
9699  matmul(const primitive_desc &pd) : primitive(pd) {}
9700 };
9701 
9703 
9713 
9717  struct desc {
9719 
9735  desc(prop_kind aprop_kind, algorithm aalgorithm,
9736  const memory::desc &src_desc, const memory::desc &dst_desc) {
9738  dnnl::convert_to_c(aprop_kind),
9739  convert_to_c(aalgorithm), nullptr,
9740  &src_desc.data, &dst_desc.data),
9741  "could not create a resampling forward descriptor");
9742  }
9743 
9755  desc(prop_kind aprop_kind, algorithm aalgorithm,
9756  const std::vector<float> &factors,
9757  const memory::desc &src_desc) {
9758  memory::validate_dims(factors, src_desc.data.ndims - 2);
9760  dnnl::convert_to_c(aprop_kind),
9761  convert_to_c(aalgorithm), &factors[0],
9762  &src_desc.data, nullptr),
9763  "could not create a resampling forward descriptor");
9764  }
9765 
9782  desc(prop_kind aprop_kind, algorithm aalgorithm,
9783  const std::vector<float> &factors, const memory::desc &src_desc,
9784  const memory::desc &dst_desc) {
9785  if (!factors.empty())
9786  memory::validate_dims(factors, src_desc.data.ndims - 2);
9788  dnnl::convert_to_c(aprop_kind),
9789  convert_to_c(aalgorithm), factors.data(),
9790  &src_desc.data, &dst_desc.data),
9791  "could not create a resampling forward descriptor");
9792  }
9793  };
9794 
9798  primitive_desc() = default;
9799 
9810  primitive_desc(const desc &adesc, const engine &aengine,
9811  bool allow_empty = false)
9812  : dnnl::primitive_desc(
9813  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9814 
9826  primitive_desc(const desc &adesc, const primitive_attr &attr,
9827  const engine &aengine, bool allow_empty = false)
9828  : dnnl::primitive_desc(
9829  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9830 
9838  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9839  dnnl::prop_kind::forward_training,
9840  dnnl::prop_kind::forward_inference) {}
9841 
9843  memory::desc src_desc() const { return base::src_desc(0); }
9844 
9846  memory::desc dst_desc() const { return base::dst_desc(0); }
9847  };
9848 
9850  resampling_forward() = default;
9851 
9856 };
9857 
9861  struct desc {
9863 
9872  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
9873  const memory::desc &diff_dst_desc) {
9875  convert_to_c(aalgorithm), nullptr,
9876  &diff_src_desc.data, &diff_dst_desc.data),
9877  "could not create a resampling backward data descriptor");
9878  }
9879 
9889  desc(algorithm aalgorithm, const std::vector<float> &factors,
9890  const memory::desc &diff_src_desc,
9891  const memory::desc &diff_dst_desc) {
9892  if (!factors.empty())
9893  memory::validate_dims(factors, diff_src_desc.data.ndims - 2);
9895  convert_to_c(aalgorithm), factors.data(),
9896  &diff_src_desc.data, &diff_dst_desc.data),
9897  "could not create a resampling backward data descriptor");
9898  }
9899  };
9900 
9904  primitive_desc() = default;
9905 
9919  primitive_desc(const desc &adesc, const engine &aengine,
9920  const resampling_forward::primitive_desc &hint_fwd_pd,
9921  bool allow_empty = false)
9922  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
9923  hint_fwd_pd.get(), allow_empty) {}
9924 
9939  primitive_desc(const desc &adesc, const primitive_attr &attr,
9940  const engine &aengine,
9941  const resampling_forward::primitive_desc &hint_fwd_pd,
9942  bool allow_empty = false)
9943  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9944  hint_fwd_pd.get(), allow_empty) {}
9945 
9953  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9954  dnnl::prop_kind::backward_data) {}
9955 
9958 
9961  };
9962 
9964  resampling_backward() = default;
9965 
9970 };
9971 
9973 
9983 
9987  struct desc {
9989 
10016  desc(prop_kind aprop_kind, algorithm aalgorithm,
10017  const memory::desc &src_desc, const memory::desc &dst_desc,
10018  const memory::dims &strides, const memory::dims &kernel,
10019  const memory::dims &dilation, const memory::dims &padding_l,
10020  const memory::dims &padding_r) {
10021  memory::validate_dims(strides, src_desc.data.ndims - 2);
10022  memory::validate_dims(kernel, src_desc.data.ndims - 2);
10023  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
10024  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
10025  memory::validate_dims(dilation, src_desc.data.ndims - 2);
10028  dnnl::convert_to_c(aprop_kind),
10029  convert_to_c(aalgorithm), &src_desc.data,
10030  &dst_desc.data, &strides[0], &kernel[0],
10031  &dilation[0], &padding_l[0], &padding_r[0]),
10032  "could not create a descriptor for a pooling forward "
10033  "propagation primitive");
10034  }
10035  };
10036 
10040  primitive_desc() = default;
10041 
10052  primitive_desc(const desc &adesc, const engine &aengine,
10053  bool allow_empty = false)
10054  : dnnl::primitive_desc(
10055  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10056 
10068  primitive_desc(const desc &adesc, const primitive_attr &attr,
10069  const engine &aengine, bool allow_empty = false)
10070  : dnnl::primitive_desc(
10071  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10072 
10081  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling_v2,
10082  dnnl::prop_kind::forward_training,
10083  dnnl::prop_kind::forward_inference) {}
10084 
10086  memory::desc src_desc() const { return base::src_desc(0); }
10087 
10089  memory::desc dst_desc() const { return base::dst_desc(0); }
10090 
10093  };
10094 
10096  pooling_v2_forward() = default;
10097 
10103 };
10104 
10108  struct desc {
10110 
10134  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
10135  const memory::desc &diff_dst_desc, const memory::dims &strides,
10136  const memory::dims &kernel, const memory::dims &dilation,
10137  const memory::dims &padding_l, const memory::dims &padding_r) {
10138  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
10139  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
10140  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
10141  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
10142  memory::validate_dims(dilation, diff_src_desc.data.ndims - 2);
10145  convert_to_c(aalgorithm), &diff_src_desc.data,
10146  &diff_dst_desc.data, &strides[0], &kernel[0],
10147  &dilation[0], &padding_l[0], &padding_r[0]),
10148  "could not create a descriptor for a pooling backward "
10149  "propagation primitive");
10150  }
10151  };
10152 
10157  primitive_desc() = default;
10158 
10172  primitive_desc(const desc &adesc, const engine &aengine,
10173  const pooling_v2_forward::primitive_desc &hint_fwd_pd,
10174  bool allow_empty = false)
10175  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
10176  hint_fwd_pd.get(), allow_empty) {}
10177 
10192  primitive_desc(const desc &adesc, const primitive_attr &attr,
10193  const engine &aengine,
10194  const pooling_v2_forward::primitive_desc &hint_fwd_pd,
10195  bool allow_empty = false)
10196  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
10197  hint_fwd_pd.get(), allow_empty) {}
10198 
10207  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling_v2,
10208  dnnl::prop_kind::backward_data) {}
10209 
10212 
10215 
10218  };
10219 
10221  pooling_v2_backward() = default;
10222 
10228 };
10229 
10231 
10240 
10242 struct reduction : public primitive {
10244  struct desc {
10245  dnnl_reduction_desc_t data;
10246 
10248  desc() = default;
10249 
10267  desc(algorithm aalgorithm, const memory::desc &src_desc,
10268  const memory::desc &dst_desc, float p, float eps) {
10270  dnnl_reduction_desc_init(&data, convert_to_c(aalgorithm),
10271  &src_desc.data, &dst_desc.data, p, eps),
10272  "could not create a reduction descriptor");
10273  }
10274  };
10275 
10279  primitive_desc() = default;
10280 
10289  primitive_desc(const desc &adesc, const engine &aengine,
10290  bool allow_empty = false)
10291  : dnnl::primitive_desc(
10292  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10293 
10303  primitive_desc(const desc &adesc, const primitive_attr &attr,
10304  const engine &aengine, bool allow_empty = false)
10305  : dnnl::primitive_desc(
10306  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10307 
10314 
10316  memory::desc src_desc() const { return base::src_desc(0); }
10317 
10319  memory::desc dst_desc() const { return base::dst_desc(0); }
10320  };
10321 
10323  reduction() = default;
10324 
10327  reduction(const primitive_desc &pd) : primitive(pd) {}
10328 };
10329 
10331 
10333 
10339 
10342 
10344 enum class status {
10346  success = dnnl_success,
10348  out_of_memory = dnnl_out_of_memory,
10350  invalid_arguments = dnnl_invalid_arguments,
10352  unimplemented = dnnl_unimplemented,
10354  iterator_ends = dnnl_iterator_ends,
10356  runtime_error = dnnl_runtime_error,
10359 };
10360 
10362 inline status set_verbose(int level) {
10363  return static_cast<status>(dnnl_set_verbose(level));
10364 }
10365 
10367 inline const version_t *version() {
10368  return dnnl_version();
10369 }
10370 
10372 inline status set_jit_dump(int enable) {
10373  return static_cast<status>(dnnl_set_jit_dump(enable));
10374 }
10375 
10377 inline status set_jit_profiling_flags(unsigned flags) {
10378  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
10379 }
10380 
10382 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
10383  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
10384 }
10385 
10387 enum class cpu_isa {
10389  all = dnnl_cpu_isa_all,
10391  sse41 = dnnl_cpu_isa_sse41,
10393  avx = dnnl_cpu_isa_avx,
10395  avx2 = dnnl_cpu_isa_avx2,
10397  avx512_mic = dnnl_cpu_isa_avx512_mic,
10399  avx512_mic_4ops = dnnl_cpu_isa_avx512_mic_4ops,
10401  avx512_core = dnnl_cpu_isa_avx512_core,
10403  avx512_core_vnni = dnnl_cpu_isa_avx512_core_vnni,
10405  avx512_core_bf16 = dnnl_cpu_isa_avx512_core_bf16,
10408 };
10409 
10412  return static_cast<status>(
10413  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
10414 }
10415 
10418  return static_cast<cpu_isa>(dnnl_get_effective_cpu_isa());
10419 }
10420 
10422 
10428 
10432  int result = 0;
10434  "could not get primitive cache capacity");
10435  return result;
10436 }
10437 
10439 inline void set_primitive_cache_capacity(int capacity) {
10441  "could not set primitive cache capacity");
10442 }
10443 
10445 
10452 
10454 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10455  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10456  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
10457  return static_cast<status>(dnnl_sgemm(
10458  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
10459 }
10460 
10462 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10463  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10464  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10465  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10466  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
10467  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10468 }
10469 
10471 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10472  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10473  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10474  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10475  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
10476  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10477 }
10478 
10479 #if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL
10480 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10482  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10483  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc,
10484  dnnl::threadpool_iface *tp) {
10485  return static_cast<status>(dnnl_sgemm_tp(
10486  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, tp));
10487 }
10489 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10490  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10491  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10492  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10493  dnnl::threadpool_iface *tp) {
10494  return static_cast<status>(dnnl_gemm_u8s8s32_tp(transa, transb, offsetc, M,
10495  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10496 }
10497 
10499 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10500  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10501  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10502  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10503  dnnl::threadpool_iface *tp) {
10504  return static_cast<status>(dnnl_gemm_s8s8s32_tp(transa, transb, offsetc, M,
10505  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10506 }
10507 #endif
10508 
10510 
10511 // implementation section
10512 
10515  dnnl_primitive_t result;
10517  "could not create a primitive");
10518  reset(result);
10519 }
10520 
10521 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
10522 
10523 inline void primitive::execute(const stream &astream,
10524  const std::unordered_map<int, memory> &args) const {
10525  std::vector<dnnl_exec_arg_t> c_args;
10526  c_args.reserve(args.size());
10527  for (const auto &a : args)
10528  c_args.push_back({a.first, a.second.get(true)});
10529 
10530  error::wrap_c_api(dnnl_primitive_execute(get(), astream.get(),
10531  (int)c_args.size(), c_args.data()),
10532  "could not execute a primitive");
10533 }
10534 
10536 
10537 #undef DNNL_DEFINE_BITMASK_OPS
10538 
10539 } // namespace dnnl
10540 
10542 
10543 #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:6986
dnnl_query_time_estimate_f64
@ dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:2240
dnnl_query_reorder_dst_engine
@ dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:2252
dnnl::memory::set_data_handle
void set_data_handle(void *handle) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2193
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:7735
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:10471
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:9859
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4860
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:364
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:9571
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:1935
dnnl::convolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3965
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:2929
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6648
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:7610
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7782
dnnl_stream_attr_t
struct dnnl_stream_attr * dnnl_stream_attr_t
An execution stream attributes handle.
Definition: dnnl_types.h:2325
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:7344
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:7224
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:5991
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5976
dnnl::pooling_v2_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:10108
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:8724
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:4670
dnnl_eltwise_round
@ dnnl_eltwise_round
Eltwise: round.
Definition: dnnl_types.h:913
dnnl::lrn_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5219
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9530
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:709
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:915
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:8603
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:2054
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:3298
dnnl_query_pooling_d
@ dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:2264
dnnl::shuffle_backward
Shuffle backward propagation primitive.
Definition: dnnl.hpp:9419
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6818
dnnl::vanilla_rnn_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7719
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:9067
dnnl_ABcde2b8a4b
@ dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:304
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:8586
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:6788
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7727
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:8950
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:8935
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:2586
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:373
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9026
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:4153
dnnl_reduction_mul
@ dnnl_reduction_mul
Reduction using mul.
Definition: dnnl_types.h:973
dnnl::stream
An execution stream.
Definition: dnnl.hpp:1069
dnnl::memory::desc::desc
desc(const dnnl_memory_desc_t &data)
Constructs a memory descriptor from a C API data structure.
Definition: dnnl.hpp:1907
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:2501
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:4643
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:4512
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:4357
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:5938
dnnl_aBCde2b4c2b
@ dnnl_aBCde2b4c2b
5D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:352
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:6835
dnnl_query_memory_consumption_s64
@ dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:2241
dnnl_s8
@ dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:74
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:440
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5443
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:2337
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:9674
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:9543
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:837
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:211
dnnl::softmax_backward
Softmax backward propagation primitive.
Definition: dnnl.hpp:5895
dnnl::reduction::primitive_desc
Primitive descriptor for a reduction primitive.
Definition: dnnl.hpp:10277
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:10227
dnnl_batch_normalization
@ dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:833
dnnl::vanilla_rnn_backward
Vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7553
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:7198
dnnl_query_logsoftmax_d
@ dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:2272
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:10462
dnnl::vanilla_rnn_backward::desc
Descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7555
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5318
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9117
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:2041
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:9678
dnnl::lstm_forward::primitive_desc
Primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7988
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:5333
dnnl_abcdefghji
@ dnnl_abcdefghji
permuted 10D tensor
Definition: dnnl_types.h:218
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:3891
DNNL_ARG_WEIGHTS_ITER
#define DNNL_ARG_WEIGHTS_ITER
A special mnemonic for RNN weights applied to the recurrent input.
Definition: dnnl_types.h:2059
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:5738
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:927
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:6859
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:7284
dnnl_query_reorder_src_engine
@ dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:2251
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:3374
dnnl::memory::memory
memory(const desc &md, const engine &aengine)
Constructs a memory object.
Definition: dnnl.hpp:2120
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8714
DNNL_ARG_WEIGHTS_PROJECTION
#define DNNL_ARG_WEIGHTS_PROJECTION
A special mnemonic for RNN weights applied to the projection weights.
Definition: dnnl_types.h:2071
dnnl::engine
An execution engine.
Definition: dnnl.hpp:866
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:6244
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:3605
dnnl::pooling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5560
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:5771
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:6937
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:2828
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:827
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:4840
dnnl_normalization_flags_none
@ dnnl_normalization_flags_none
Use no normalization flags.
Definition: dnnl_types.h:996
dnnl::lrn_forward
Local response normalization (LRN) forward propagation primitive.
Definition: dnnl.hpp:5140
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:7152
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5694
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:9952
dnnl_query_rnn_d
@ dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:2269
DNNL_ARG_TO
#define DNNL_ARG_TO
A special mnemonic for reorder destination argument.
Definition: dnnl_types.h:2027
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:10016
DNNL_MAX_NDIMS
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:1047
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:1940
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:8551
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:8706
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:2329
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:10382
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5504
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8894
dnnl_defcab
@ dnnl_defcab
permuted 6D tensor
Definition: dnnl_types.h:212
dnnl_abcdefghijlk
@ dnnl_abcdefghijlk
permuted 12D tensor
Definition: dnnl_types.h:220
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:306
dnnl::layer_normalization_backward::layer_normalization_backward
layer_normalization_backward(const primitive_desc &pd)
Constructs a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6802
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1841
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8074
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8752
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:9040
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:3349
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:6774
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:5688
dnnl::reduction
Reduction.
Definition: dnnl.hpp:10242
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:7538
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:9717
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5782
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1139
dnnl_eltwise_relu
@ dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:874
dnnl_acb
@ dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:195
dnnl_matmul_desc_t
A descriptor of a matrix multiplication operation.
Definition: dnnl_types.h:1778
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:8719
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:7308
dnnl_eltwise_abs
@ dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:882
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:5971
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4134
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:2377
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:987
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:8581
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:9277
dnnl_eltwise_sqrt_use_dst_for_bwd
@ dnnl_eltwise_sqrt_use_dst_for_bwd
Eltwise: square root (dst for backward)
Definition: dnnl_types.h:921
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:9810
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3068
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5692
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:8289
dnnl_shuffle
@ dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:815
dnnl_query_shuffle_d
@ dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:2261
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:2024
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:9605
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:9957
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8500
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:7236
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:1277
dnnl::convolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4137
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:4096
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3959
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:7296
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6442
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:809
dnnl::eltwise_forward
Elementwise unary operation forward propagation primitive.
Definition: dnnl.hpp:5599
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5563
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:4116
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:5106
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1648
dnnl_pooling_max
@ dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:927
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:2302
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:2231
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:6073
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:9837
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:2560
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:1920
dnnl::stream_attr::set_threadpool
void set_threadpool(threadpool_iface *threadpool)
Sets the threadpool attribute.
Definition: dnnl.hpp:1049
dnnl::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:655
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1670
dnnl_bcdea
@ dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:206
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1654
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:8038
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:10387
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:6062
dnnl_sum
@ dnnl_sum
A sum primitive.
Definition: dnnl_types.h:819
dnnl::engine::get_count
static size_t get_count(kind akind)
Returns the number of engines of a certain kind.
Definition: dnnl.hpp:890
dnnl::memory::set_data_handle
void set_data_handle(void *handle, const stream &astream) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2177
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:4389
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:9607
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:7171
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8735
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:9397
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5171
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:9472
dnnl_backward_weights
@ dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:802
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:3050
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:3675
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:9320
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6608
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1614
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:2259
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8069
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:7094
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:6598
dnnl_gpu
@ dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1870
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:5446
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6005
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:8799
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:8177
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:8920
dnnl::sum::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3612
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:9889
dnnl::rnn_primitive_desc_base::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7324
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:9782
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5601
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:2040
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:7696
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:8097
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6509
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:5679
dnnl_query_diff_weights_md
@ dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:2283
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:9919
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:8746
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:6758
dnnl::reduction::desc
Descriptor for reduction.
Definition: dnnl.hpp:10244
dnnl_query_prop_kind
@ dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:2254
dnnl_abced
@ dnnl_abced
permuted 5D tensor
Definition: dnnl_types.h:213
dnnl_eltwise_logistic
@ dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:892
dnnl::lbr_gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:9086
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8495
dnnl::pooling_forward::pooling_forward
pooling_forward(const primitive_desc &pd)
Constructs a pooling forward propagation primitive.
Definition: dnnl.hpp:5455
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:825
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:8601
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:871
dnnl_aBc16b
@ dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:229
dnnl::lbr_gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:9310
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6454
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7517
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:8700
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:7833
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8482
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6322
dnnl::pooling_v2_forward::desc
Descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:9987
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:7039
dnnl_convolution_auto
@ dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:868
dnnl::binary::binary
binary(const primitive_desc &pd)
Constructs an elementwise binary operation primitive.
Definition: dnnl.hpp:9589
dnnl_cdba
@ dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:208
dnnl_eltwise_sqrt
@ dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:884
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:2407
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9073
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:981
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:10327
dnnl::stream::stream
stream()=default
Constructs an empty stream.
dnnl_eltwise_bounded_relu
@ dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:888
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward(const primitive_desc &pd)
Constructs an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9331
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:1234
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:3793
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:9519
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:10411
dnnl_rnn_desc_t::primitive_kind
dnnl_primitive_kind_t primitive_kind
The kind of primitive.
Definition: dnnl_types.h:1673
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6184
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:6287
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:8429
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:10155
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:7030
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:3160
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8904
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:3508
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:5184
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:9218
dnnl_forward_inference
@ dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:792
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:4727
dnnl_query_impl_info_str
@ dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:2249
dnnl_query_dst_md
@ dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:2284
dnnl_query_resampling_d
@ dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:2274
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:7276
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:2692
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:406
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5557
dnnl_query_inner_product_d
@ dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:2268
dnnl::vanilla_rnn_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7514
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:2139
dnnl_rnn_flags_undef
@ dnnl_rnn_flags_undef
Undefined RNN flags.
Definition: dnnl_types.h:1650
dnnl_nCdhw16c
@ dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:549
dnnl_query_convolution_d
@ dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:2259
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:8945
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9796
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:8638
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:2422
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6318
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5216
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:3148
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:2151
dnnl_aBCdef2c8b4c
@ dnnl_aBCdef2c8b4c
6D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:359
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:8566
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:7740
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7730
dnnl::lrn_forward::lrn_forward
lrn_forward(const primitive_desc &pd)
Constructs an LRN forward propagation primitive.
Definition: dnnl.hpp:5231
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:205
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:6422
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7527
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:3539
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:7962
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:899
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:1661
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:3405
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3103
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1435
dnnl::layer_normalization_forward
Layer normalization forward propagation primitive.
Definition: dnnl.hpp:6507
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4394
dnnl::deconvolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5103
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:2863
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:2127
dnnl::stream_attr
A container for stream attributes.
Definition: dnnl.hpp:1024
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:6694
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:3323
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:938
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7722
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:3942
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:3842
dnnl_aBcd32b
@ dnnl_aBcd32b
4D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:261
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:200
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:7059
dnnl_lrn_within_channel
@ dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:937
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:9902
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3127
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:2891
dnnl_reduction_norm_lp_sum
@ dnnl_reduction_norm_lp_sum
Reduction using lp norm.
Definition: dnnl_types.h:979
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:10068
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:8881
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:955
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:10134
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:2475
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5629
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:3172
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:959
dnnl_post_ops_get_params_sum_v2
dnnl_status_t DNNL_API dnnl_post_ops_get_params_sum_v2(const_dnnl_post_ops_t post_ops, int index, float *scale, dnnl_data_type_t *data_type)
Returns the parameters of an accumulation (sum) post-op with a data type parameter.
dnnl::primitive::kind::resampling
@ resampling
A resampling primitive.
dnnl_primitive_attr_set_output_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_set_output_scales(dnnl_primitive_attr_t attr, dnnl_dim_t count, int mask, const float *scales)
Sets output scaling factors correspondence mask and values.
dnnl_primitive_desc_iterator_create
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_create(dnnl_primitive_desc_iterator_t *iterator, const_dnnl_op_desc_t op_desc, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine, const_dnnl_primitive_desc_t hint_forward_primitive_desc)
Creates a primitive descriptor iterator.
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &src_desc)
Constructs a descriptor for a resampling forward propagation primitive using source memory descriptor...
Definition: dnnl.hpp:9755
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:1022
dnnl_eltwise_log
@ dnnl_eltwise_log
Eltwise: natural logarithm.
Definition: dnnl_types.h:905
dnnl::lbr_gru_backward::primitive_desc
Primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9201
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5142
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5832
dnnl_query_layer_normalization_d
@ dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:2267
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:7437
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5321
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:5210
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:4769
dnnl::pooling_v2_forward
Pooling v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:9985
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:6902
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3388
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:10431
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3385
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:2325
dnnl_ABcd8b8a
@ dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:288
dnnl::engine::get_ocl_device
cl_device_id get_ocl_device() const
Returns the OpenCL device associated with the engine.
Definition: dnnl.hpp:957
dnnl_resampling_linear
@ dnnl_resampling_linear
Linear Resampling Method.
Definition: dnnl_types.h:965
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:7024
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3109
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8940
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:3133
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6557
dnnl_forward_training
@ dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:788
dnnl::query
query
Primitive descriptor query specification.
Definition: dnnl.hpp:742
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8732
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:10312
dnnl_bac
@ dnnl_bac
permuted 3D tensor
Definition: dnnl_types.h:201
dnnl_eltwise_square
@ dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:880
dnnl_fuse_norm_relu
@ dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:1035
dnnl_bacde
@ dnnl_bacde
permuted 5D tensor
Definition: dnnl_types.h:203
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:2145
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:2403
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:9081
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6199
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:4864
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9099
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6919
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:5910
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:2160
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:8445
DNNL_ARG_WEIGHTS_PEEPHOLE
#define DNNL_ARG_WEIGHTS_PEEPHOLE
A special mnemonic for RNN weights applied to the peephole weights.
Definition: dnnl_types.h:2065
dnnl::rnn_primitive_desc_base::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7212
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:3444
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:6101
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:866
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3712
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6187
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6356
dnnl_ABcde4b16a4b
@ dnnl_ABcde4b16a4b
5D tensor blocked by 1st dimension with block size 16
Definition: dnnl_types.h:302
dnnl_nChw8c
@ dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:567
dnnl::batch_normalization_forward
Batch normalization forward propagation primitive.
Definition: dnnl.hpp:6225
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:1864
dnnl_binary
@ dnnl_binary
A binary primitive.
Definition: dnnl_types.h:843
dnnl_cdeba
@ dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:210
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:7750
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6785
dnnl_eltwise_tanh
@ dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:876
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:8907
dnnl_aBc4b
@ dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:235
dnnl::pooling_v2_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10211
dnnl::pooling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5440
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:579
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:6544
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:7045
dnnl_memory_desc_t::dims
dnnl_dims_t dims
Dimensions in the following order:
Definition: dnnl_types.h:1205
dnnl_stream_default_order
@ dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:2305
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:5805
dnnl_pooling
@ dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:829
dnnl::batch_normalization_backward
Batch normalization backward propagation primitive.
Definition: dnnl.hpp:6354
dnnl_acdb
@ dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:198
dnnl_query_lrn_d
@ dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:2265
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:798
dnnl::batch_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6305
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:7027
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1405
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:6587
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:9238
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:2417
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:5376
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:7549
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:5485
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1240
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:8868
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:4807
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:5313
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:5300
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8967
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:948
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:7476
dnnl_sgemm
dnnl_status_t DNNL_API dnnl_sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda, const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc)
Performs single-precision matrix-matrix multiply.
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8464
dnnl::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4341
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6448
dnnl::lstm_forward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8056
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:9167
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:7302
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:6114
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:2018
dnnl::pooling_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5395
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:971
dnnl_nCdhw8c
@ dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:555
dnnl_pooling_avg
@ dnnl_pooling_avg
Average pooling (alias for dnnl_pooling_avg_exclude_padding)
Definition: dnnl_types.h:933
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:5873
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:6745
dnnl_vanilla_rnn
@ dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:939
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:2100
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:10316
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:983
dnnl_unidirectional
@ dnnl_unidirectional
Alias for dnnl_unidirectional_left2right.
Definition: dnnl_types.h:1666
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:2121
dnnl_gru_backward_desc_init
dnnl_status_t DNNL_API dnnl_gru_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, unsigned flags)
Initializes a descriptor for GRU backward propagation primitive.
dnnl::lstm_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8082
dnnl_abdc
@ dnnl_abdc
permuted 4D tensor
Definition: dnnl_types.h:193
dnnl_eltwise_pow
@ dnnl_eltwise_pow
Eltwise: pow.
Definition: dnnl_types.h:909
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:10439
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8077
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4629
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:9665
dnnl_reduction_max
@ dnnl_reduction_max
Reduction using max.
Definition: dnnl_types.h:967
dnnl::lstm_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8531
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6777
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9715
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:9872
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2124
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9406
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:7330
dnnl_aBcd4b
@ dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:263
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:994
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:7043
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6617
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:9969
dnnl::primitive::kind::layer_normalization
@ layer_normalization
A layer normalization primitive.
dnnl_reduction_mean
@ dnnl_reduction_mean
Reduction using mean.
Definition: dnnl_types.h:975
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:7218
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1315
dnnl_query_matmul_d
@ dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:2273
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:2238
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:2115
dnnl::gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8711
DNNL_ARG_SRC_LAYER
#define DNNL_ARG_SRC_LAYER
A special mnemonic for RNN input vector.
Definition: dnnl_types.h:2003
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:1907
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:1034
dnnl_query_binary_d
@ dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:2271
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:1253
dnnl_lbr_gru
@ dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:951
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:796
dnnl::resampling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9846
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:197
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:5158
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:4376
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:612
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:6941
dnnl_use_global_stats
@ dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:1009
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:3747
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9699
dnnl_lrn_across_channels
@ dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:935
dnnl::batch_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6462
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:6298
dnnl_concat
@ dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:817
dnnl::inner_product_forward
Inner product forward propagation primitive.
Definition: dnnl.hpp:6816
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4848
dnnl_query_diff_dst_md
@ dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:2285
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:6099
dnnl_aBcdef16b
@ dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:354
dnnl_layer_normalization
@ dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:835
dnnl::gru_backward::primitive_desc
Primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8833
dnnl::pooling_v2_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:10038
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4676
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:9315
dnnl_memory_desc_t::data_type
dnnl_data_type_t data_type
Data type of the tensor elements.
Definition: dnnl_types.h:1208
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:7081
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:5520
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:7745
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:9251
DNNL_ARG_BIAS
#define DNNL_ARG_BIAS
Bias tensor argument.
Definition: dnnl_types.h:2074
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:5098
dnnl::deconvolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4851
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:8027
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:6571
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5222
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:1095
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:2386
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:8061
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:2258
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7701
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:9459
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:2811
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:369
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3912
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:7230
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:1079
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:6725
dnnl_vanilla_rnn_backward_desc_init
dnnl_status_t DNNL_API dnnl_vanilla_rnn_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, const dnnl_alg_kind_t activation, const dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, unsigned flags, float alpha, float beta)
Initializes a descriptor for vanilla RNN backward propagation primitive.
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward()=default
Default constructor. Produces an empty object.
dnnl_deconvolution_backward_weights_desc_init
dnnl_status_t DNNL_API dnnl_deconvolution_backward_weights_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *diff_weights_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a deconvolution weights gradient primitive.
dnnl::gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8915
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:5676
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:215
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:5821
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:7706
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:1890
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6654
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8899
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:6162
dnnl_query_workspace_md
@ dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:2286
dnnl::lstm_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8033
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9691
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5776
dnnl_format_tag_last
@ dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:427
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:9855
dnnl_query_deconvolution_d
@ dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:2260
DNNL_ARG_DST_ITER
#define DNNL_ARG_DST_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2035
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:8016
dnnl_logsoftmax
@ dnnl_logsoftmax
A logsoftmax primitive.
Definition: dnnl_types.h:845
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:3953
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:9003
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:2157
dnnl_deconvolution_direct
@ dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:870
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:7270
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:813
dnnl::post_ops::append_binary
void append_binary(algorithm aalgorithm, const memory::desc &src1_desc)
Appends a binary post-op.
Definition: dnnl.hpp:2626
dnnl::matmul::primitive_desc
Primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9639
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:10192
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6257
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9686
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:1513
dnnl_stream_default_flags
@ dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:2311
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:5065
DNNL_ARG_WEIGHTS_LAYER
#define DNNL_ARG_WEIGHTS_LAYER
A special mnemonic for RNN weights applied to the layer input.
Definition: dnnl_types.h:2053
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:1330
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:6142
dnnl::pooling_v2_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:10214
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8490
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:4273
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6385
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6086
dnnl_query_reduction_d
@ dnnl_query_reduction_d
reduction descriptor
Definition: dnnl_types.h:2276
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:3446
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:800
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:199
dnnl_version_t
Structure containing version information as per Semantic Versioning
Definition: dnnl_types.h:2354
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1544
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3121
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3115
dnnl_eltwise_exp_use_dst_for_bwd
@ dnnl_eltwise_exp_use_dst_for_bwd
Eltwise: exp (dst for backward)
Definition: dnnl_types.h:925
dnnl::layer_normalization_backward
Layer normalization backward propagation primitive.
Definition: dnnl.hpp:6652
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:8661
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:10106
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:6175
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:7765
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:1352
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:3077
dnnl_aBcd16b
@ dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:255
dnnl_resampling_nearest
@ dnnl_resampling_nearest
Nearest Neighbor Resampling Method.
Definition: dnnl_types.h:963
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:7264
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:6402
dnnl::layer_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6611
dnnl_rnn
@ dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:839
dnnl::vanilla_rnn_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7535
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4397
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:4402
dnnl_aBc32b
@ dnnl_aBc32b
3D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:233
dnnl::lstm_backward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8505
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:10377
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:6523
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:1976
dnnl_query_num_of_outputs_s32
@ dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:2238
dnnl::binary::primitive_desc::src1_desc
memory::desc src1_desc() const
Returns the memory descriptor for source #1.
Definition: dnnl.hpp:9577
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:5347
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel Streaming SIMD Extensions 4.1 (Intel SSE4.1)
Definition: dnnl_types.h:2389
dnnl_abcdfe
@ dnnl_abcdfe
permuted 6D tensor
Definition: dnnl_types.h:214
dnnl_aBCd2b4c2b
@ dnnl_aBCd2b4c2b
4D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:300
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:10454
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:3000
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:10344
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9119
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:6768
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:971
dnnl_cpu_isa_avx2
@ dnnl_cpu_isa_avx2
Intel Advanced Vector Extensions 2 (Intel AVX2)
Definition: dnnl_types.h:2395
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:2412
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:3489
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:3984
dnnl_memory_desc_t::ndims
int ndims
Number of dimensions.
Definition: dnnl_types.h:1190
dnnl_aBc8b
@ dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:245
dnnl::rnn_primitive_desc_base::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7256
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:3097
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:1577
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:10417
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:3300
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:9477
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:9503
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5237
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:4937
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4685
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:6943
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:907
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:9282
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:923
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:6614
dnnl::pooling_v2_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:10086
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:9735
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:929
dnnl::layer_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6620
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:8930
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:2046
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:9629
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1222
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:4827
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:7503
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:3462
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:7157
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8523
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:5048
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:5423
dnnl_deconvolution
@ dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:823
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:2707
dnnl_aBcde4b
@ dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:315
dnnl::pooling_v2_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:10089
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:5199
dnnl_memory_map_data
dnnl_status_t DNNL_API dnnl_memory_map_data(const_dnnl_memory_t memory, void **mapped_ptr)
Maps a memory object and returns a host-side pointer to a memory buffer with a copy of its contents.
dnnl::layer_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6765
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:8571
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:5459
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4845
dnnl_stream_out_of_order
@ dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:2309
dnnl::inner_product_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6922
dnnl::primitive_desc
A base class for descriptors of all primitives that have an operation descriptor and that support ite...
Definition: dnnl.hpp:3630
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:8597
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:10080
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:9580
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:5882
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:7111
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:9305
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:7315
dnnl_convolution
@ dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:821
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:7760
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:1073
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:7290
dnnl::pooling_v2_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:10092
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:6470
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:8477
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:5552
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:9432
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:5324
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:5779
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6780
dnnl::pooling_v2_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:10217
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:4981
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:7160
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:4560
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:831
dnnl::vanilla_rnn_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7755
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:2280
dnnl_primitive_attr_set_rnn_data_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_data_qparams(dnnl_primitive_attr_t attr, const float scale, const float shift)
Set quantization scale and shift parameters for RNN data tensors.
dnnl::rnn_primitive_desc_base::rnn_primitive_desc_base
rnn_primitive_desc_base()=default
Default constructor. Produces an empty object.
dnnl::convolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for dilated convolution backward propagation primitive.
Definition: dnnl.hpp:4058
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:2402
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:9300
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:8925
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6190
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:2677
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5572
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9347
dnnl::reorder::execute
void execute(const stream &astream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:3417
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9403
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3515
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1918
dnnl::primitive_attr
Primitive attributes.
Definition: dnnl.hpp:2661
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:5891
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9285
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:7131
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6925
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9261
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:10289
dnnl::shuffle_backward::shuffle_backward
shuffle_backward(const primitive_desc &pd)
Constructs a shuffle backward propagation primitive.
Definition: dnnl.hpp:9489
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6969
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:2234
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:2094
dnnl_query_softmax_d
@ dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:2263
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1800
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:9102
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3987
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:919
dnnl::shuffle_backward::desc
Descriptor for a shuffle primitive backward propagation primitive.
Definition: dnnl.hpp:9422
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5879
dnnl_cpu
@ dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1868
dnnl::memory
Memory object.
Definition: dnnl.hpp:1220
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:7338
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:2781
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:4895
dnnl_query_undef
@ dnnl_query_undef
no query
Definition: dnnl_types.h:2232
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:903
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:5791
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:9558
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:8689
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3086
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8518
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:6465
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:216
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:10362
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:2106
dnnl::batch_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6308
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6872
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:5252
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:9385
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:8561
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3041
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:3553
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8046
dnnl_binary_div
@ dnnl_binary_div
Binary div.
Definition: dnnl_types.h:961
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:7144
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6227
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:9567
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:911
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:7709
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:9264
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:5027
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7204
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:4149
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:9939
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6451
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:4659
dnnl::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8965
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9960
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6479
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:1188
dnnl_backward_bias
@ dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:804
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:10303
dnnl::vanilla_rnn_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7522
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8041
dnnl::memory::memory
memory(const desc &md, const engine &aengine, void *handle)
Constructs a memory object.
Definition: dnnl.hpp:2106
dnnl_matmul
@ dnnl_matmul
A matrix multiplication primitive.
Definition: dnnl_types.h:847
dnnl::rnn_primitive_desc_base::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:7242
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:2763
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:4419
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:5958
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6095
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:3971
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:6021
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2384
DNNL_ARG_SRC_ITER
#define DNNL_ARG_SRC_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2012
dnnl::inner_product_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:6928
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:2073
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5461
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9370
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:4228
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:4185
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:10267
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:7006
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4682
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7394
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:9507
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:8674
dnnl_nChw4c
@ dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:564
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:8536
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:9274
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7149
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:3184
dnnl_bacd
@ dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:202
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:6708
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:3142
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:561
dnnl::shuffle_backward::primitive_desc
Primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9441
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:4790
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:2392
dnnl_query_eltwise_d
@ dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:2262
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:4408
dnnl::engine::engine
engine(kind akind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:899
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9505
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4866
dnnl_binary_max
@ dnnl_binary_max
Binary max.
Definition: dnnl_types.h:957
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:10206
dnnl::concat::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3512
dnnl_cba
@ dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:207
dnnl::rnn_primitive_desc_base::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7250
dnnl_reduction_desc_t
A descriptor of reduction operation.
Definition: dnnl_types.h:1828
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:3059
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:9290
dnnl_query_num_of_inputs_s32
@ dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:2237
dnnl::memory::dims
std::vector< dim > dims
Vector of dimensions.
Definition: dnnl.hpp:1225
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5921
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4698
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6314
dnnl_acbde
@ dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:196
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:8576
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:5862
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:2874
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7509
dnnl_dcab
@ dnnl_dcab
permuted 4D tensor
Definition: dnnl_types.h:209
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:6886
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8727
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:1838
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3962
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:8001
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:861
dnnl_deconvolution_winograd
@ dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:872
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:1265
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:2399
dnnl::layer_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6771
dnnl::stream::get_engine
engine get_engine() const
Returns the associated engine.
Definition: dnnl.hpp:1119
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:5408
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:2132
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1259
dnnl_eltwise_exp
@ dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:894
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:3980
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:2065
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:9345
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward(const primitive_desc &pd)
Constructs an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9113
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:9826
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:362
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:3714
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:9615
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:2059
dnnl_bidirectional_sum
@ dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1664
dnnl::lstm_forward::lstm_forward
lstm_forward(const primitive_desc &pd)
Constructs an LSTM forward propagation primitive.
Definition: dnnl.hpp:8093
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:8556
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8066
dnnl_eltwise_linear
@ dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:886
dnnl_nCw16c
@ dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:573
dnnl
oneDNN namespace
Definition: dnnl.hpp:81
dnnl_vanilla_gru
@ dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:943
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:9091
dnnl_abc
@ dnnl_abc
plain 3D tensor
Definition: dnnl_types.h:179
dnnl_stream
An opaque structure to describe an execution stream.
dnnl::matmul::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:9681
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4155
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:4700
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:9094
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:5659
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1752
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:9269
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:3380
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:7663
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:5539
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:2142
dnnl_convolution_direct
@ dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:864
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:3926
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:969
dnnl::sum::sum
sum(const primitive_desc &pd)
Constructs a sum primitive.
Definition: dnnl.hpp:3620
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:3523
dnnl_query_diff_src_md
@ dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:2281
dnnl_abcdefgih
@ dnnl_abcdefgih
permuted 9D tensor
Definition: dnnl_types.h:217
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:2438
dnnl::vanilla_rnn_forward
Vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7392
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9256
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:9056
dnnl::stream::get_ocl_command_queue
cl_command_queue get_ocl_command_queue() const
Returns the underlying OpenCL queue object.
Definition: dnnl.hpp:1129
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7776
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9480
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:5616
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:2637
dnnl_pooling_v2_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1473
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4694
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:10367
dnnl_forward_scoring
@ dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:794
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:330
dnnl::reorder::reorder
reorder(const primitive_desc &pd)
Constructs a reorder primitive.
Definition: dnnl.hpp:3396
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:6913
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:1862
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:6956
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:2342
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9078
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:475
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4079
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8526
dnnl_prop_kind_undef
@ dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:785
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:6670
dnnl::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6445
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:380
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:5114
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:10319
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:5846
dnnl_rnn_desc_t::prop_kind
dnnl_prop_kind_t prop_kind
The kind of propagation.
Definition: dnnl_types.h:1676
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:7901
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:9295
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:2235
dnnl_unidirectional_left2right
@ dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1656
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:5349
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:3369
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5721
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6007
dnnl_eltwise_elu
@ dnnl_eltwise_elu
Eltwise: exponential linear unit (elu)
Definition: dnnl_types.h:878
dnnl::binary::primitive_desc::src0_desc
memory::desc src0_desc() const
Returns the memory descriptor for source #0.
Definition: dnnl.hpp:9574
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:2221
dnnl::convolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4140
dnnl::stream_attr::get_threadpool
threadpool_iface * get_threadpool()
Returns the threadpool attribute.
Definition: dnnl.hpp:1059
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:853
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward(const primitive_desc &pd)
Constructs a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6350
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:8541
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:9415
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:3609
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:7683
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:576
dnnl::primitive_attr::get_scratchpad_mode
scratchpad_mode get_scratchpad_mode() const
Returns the scratchpad mode.
Definition: dnnl.hpp:2681
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:313
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:1845
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:2424
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:7492
dnnl_vanilla_lstm
@ dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:941
dnnl_any_engine
@ dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1866
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:7185
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:2665
dnnl_nCdhw4c
@ dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:552
dnnl::lrn_backward::primitive_desc
Primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5265
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:849
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7780
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:7019
dnnl_cpu_isa_avx
@ dnnl_cpu_isa_avx
Intel Advanced Vector Extensions (Intel AVX)
Definition: dnnl_types.h:2392
dnnl_bca
@ dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:204
dnnl::primitive_desc_base::get_engine
engine get_engine() const
Returns the engine of the primitive descriptor.
Definition: dnnl.hpp:2984
dnnl_reduction_norm_lp_max
@ dnnl_reduction_norm_lp_max
Reduction using lp norm.
Definition: dnnl_types.h:977
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:782
dnnl::gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8886
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:2988
dnnl_query_scratchpad_md
@ dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:2287
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:4467
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8051
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6311
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:3021
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:5643
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6457
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:6371
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:901
dnnl::deconvolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4679
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:2282
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:10052
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:10172
dnnl::layer_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6793
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:3583
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:5125
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:9651
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:5281
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:2976
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5897
dnnl::reorder::reorder
reorder()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution forward propagation primitive without bias.
Definition: dnnl.hpp:4608
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:6271
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:2266
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:8849
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:917
dnnl::resampling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9843
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:4129
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8099
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:10102
dnnl::set_jit_dump
status set_jit_dump(int enable)
Configures dumping of JIT-generated code.
Definition: dnnl.hpp:10372
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8912
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5982
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7530
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:4433
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:5235
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:8388
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6083
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:1679
dnnl::softmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5979
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5807
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:811
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:9359
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:8546
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for an RNN backward propagation primitive.
Definition: dnnl.hpp:7646
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:3537
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6032
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:8510
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:890
dnnl::handle::handle
handle(const handle< T, traits > &)=default
Copy constructor.
dnnl_abcdefghikj
@ dnnl_abcdefghikj
permuted 11D tensor
Definition: dnnl_types.h:219
dnnl::gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8891
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:5708
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7462
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:5434
DNNL_ARG_FROM
#define DNNL_ARG_FROM
A special mnemonic for reorder source argument.
Definition: dnnl_types.h:2006
dnnl_unidirectional_right2left
@ dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1658
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:6046
dnnl_aBcd8b
@ dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:282
dnnl::gru_backward::gru_backward
gru_backward(const primitive_desc &pd)
Constructs a GRU backward propagation primitive.
Definition: dnnl.hpp:8961
dnnl::deconvolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5111
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6605
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:6125
dnnl_query_scratchpad_engine
@ dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:2246
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:4015
dnnl_pooling_v2
@ dnnl_pooling_v2
A pooling version 2 primitive (pooling with dilation support).
Definition: dnnl_types.h:851
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:2962
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:2029
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:4320
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9861
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:5085
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:8750
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:5758
dnnl_query_exec_arg_md
@ dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:2288
dnnl::lstm_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8515
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:8487
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4435
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:6435
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:931
dnnl_binary_add
@ dnnl_binary_add
Binary add.
Definition: dnnl_types.h:953
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:5670
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7714
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.