oneAPI Deep Neural Network Library (oneDNN)
Performance library for Deep Learning
1.96.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 ONEAPI_DNNL_DNNL_HPP
21 #define ONEAPI_DNNL_DNNL_HPP
22 
23 #include "oneapi/dnnl/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 "oneapi/dnnl/dnnl.h"
35 
37 
38 // __cpp_exceptions is referred from
39 // https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html
40 // gcc < 5 does not define __cpp_exceptions but __EXCEPTIONS,
41 // Microsoft C++ Compiler does not provide an option to disable exceptions
42 #ifndef DNNL_ENABLE_EXCEPTIONS
43 #if __cpp_exceptions || __EXCEPTIONS \
44  || (defined(_MSC_VER) && !defined(__clang__))
45 #define DNNL_ENABLE_EXCEPTIONS 1
46 #else
47 #define DNNL_ENABLE_EXCEPTIONS 0
48 #endif
49 #endif
50 
51 #if defined(__GNUC__) || defined(__clang__)
52 #define DNNL_TRAP() __builtin_trap()
53 #elif defined(__INTEL_COMPILER) || defined(_MSC_VER)
54 #define DNNL_TRAP() __debugbreak()
55 #else
56 #error "unknown compiler"
57 #endif
58 
59 #if DNNL_ENABLE_EXCEPTIONS
60 #define DNNL_THROW_ERROR(status, msg) throw error(status, msg)
61 #else
62 #include <cstdio>
63 #define DNNL_THROW_ERROR(status, msg) \
64  do { \
65  fputs(msg, stderr); \
66  DNNL_TRAP(); \
67  } while (0)
68 #endif
69 
72 
74 namespace dnnl {
75 
79 
84 struct error : public std::exception {
86  const char *message;
87 
92  error(dnnl_status_t status, const char *message)
93  : status(status), message(message) {}
94 
96  const char *what() const noexcept override { return message; }
97 
103  static void wrap_c_api(dnnl_status_t status, const char *message) {
104  if (status != dnnl_success) DNNL_THROW_ERROR(status, message);
105  }
106 };
107 
109 template <typename T>
110 void validate_container_size(const T &v, const char *error_message,
111  int min_size = 1, int max_size = -1) {
112  const int size = (int)v.size();
113  if (size < min_size || (max_size >= 0 && size > max_size))
114  DNNL_THROW_ERROR(dnnl_invalid_arguments, error_message);
115 }
117 
119 template <typename T>
120 struct handle_traits {};
121 
135 template <typename T, typename traits = handle_traits<T>>
136 struct handle {
137 private:
138  static dnnl_status_t dummy_destructor(T) { return dnnl_success; }
139  std::shared_ptr<typename std::remove_pointer<T>::type> data_ {0};
140 
141 protected:
142  bool operator==(const T other) const { return other == data_.get(); }
143  bool operator!=(const T other) const { return !(*this == other); }
144 
145 public:
153  handle() = default;
154 
156  handle(const handle<T, traits> &) = default;
160  handle(handle<T, traits> &&) = default;
163 
169  explicit handle(T t, bool weak = false) { reset(t, weak); }
170 
176  void reset(T t, bool weak = false) {
177  data_.reset(t, weak ? &dummy_destructor : traits::destructor);
178  }
179 
185  T get(bool allow_empty = false) const {
186  T result = data_.get();
187  if (allow_empty == false && result == nullptr)
188  DNNL_THROW_ERROR(
189  dnnl_invalid_arguments, "object is not initialized");
190  return result;
191  }
192 
197  explicit operator T() const { return get(true); }
198 
202  explicit operator bool() const { return get(true) != nullptr; }
203 
210  bool operator==(const handle<T, traits> &other) const {
211  return other.data_.get() == data_.get();
212  }
213 
220  bool operator!=(const handle &other) const { return !(*this == other); }
221 };
222 
224 template <>
225 struct handle_traits<dnnl_memory_t> {
226  static dnnl_status_t destructor(dnnl_memory_t p) {
227  return dnnl_memory_destroy(p);
228  }
229 };
230 
231 template <>
232 struct handle_traits<dnnl_primitive_desc_t> {
233  static dnnl_status_t destructor(dnnl_primitive_desc_t p) {
234  return dnnl_primitive_desc_destroy(p);
235  }
236 };
237 
238 template <>
239 struct handle_traits<dnnl_primitive_t> {
240  static dnnl_status_t destructor(dnnl_primitive_t p) {
241  return dnnl_primitive_destroy(p);
242  }
243 };
244 
245 template <>
246 struct handle_traits<dnnl_primitive_desc_iterator_t> {
247  static dnnl_status_t destructor(dnnl_primitive_desc_iterator_t p) {
249  }
250 };
252 
254 
255 struct stream;
256 struct memory;
257 struct primitive_desc;
258 
263 
267 
269 struct primitive : public handle<dnnl_primitive_t> {
271  enum class kind {
281  sum = dnnl_sum,
293  lrn = dnnl_lrn,
301  rnn = dnnl_rnn,
314  };
315 
316  using handle::handle;
317 
319  primitive() = default;
320 
325 
330 
336 
340  inline kind get_kind() const;
341 
354  void execute(const stream &astream,
355  const std::unordered_map<int, memory> &args) const;
356 };
357 
363  return static_cast<dnnl_primitive_kind_t>(akind);
364 }
365 
369  "could not get a primitive descriptor from a primitive");
370  return pd;
371 }
372 
375  // TODO (Roma): the code below is only needed because get_primitive_desc
376  // returns a C type.
379  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
380  "could not get a primitive kind from a primitive descriptor");
381  return static_cast<dnnl::primitive::kind>(kind);
382 }
383 
385 
397 
399 enum class scratchpad_mode {
422 };
423 
429  return static_cast<dnnl_scratchpad_mode_t>(mode);
430 }
431 
433 enum class prop_kind {
438  forward_training = dnnl_forward_training,
442  forward_inference = dnnl_forward_inference,
445  forward_scoring = dnnl_forward_scoring,
448  forward = dnnl_forward,
450  backward = dnnl_backward,
452  backward_data = dnnl_backward_data,
454  backward_weights = dnnl_backward_weights,
457 };
458 
464  return static_cast<dnnl_prop_kind_t>(akind);
465 }
466 
468 enum class algorithm {
470  undef = dnnl_alg_kind_undef,
473  convolution_auto = dnnl_convolution_auto,
475  convolution_direct = dnnl_convolution_direct,
477  convolution_winograd = dnnl_convolution_winograd,
479  deconvolution_direct = dnnl_deconvolution_direct,
481  deconvolution_winograd = dnnl_deconvolution_winograd,
483  eltwise_relu = dnnl_eltwise_relu,
485  eltwise_tanh = dnnl_eltwise_tanh,
487  eltwise_elu = dnnl_eltwise_elu,
489  eltwise_square = dnnl_eltwise_square,
491  eltwise_abs = dnnl_eltwise_abs,
493  eltwise_sqrt = dnnl_eltwise_sqrt,
495  eltwise_swish = dnnl_eltwise_swish,
497  eltwise_linear = dnnl_eltwise_linear,
499  eltwise_bounded_relu = dnnl_eltwise_bounded_relu,
501  eltwise_soft_relu = dnnl_eltwise_soft_relu,
503  eltwise_logistic = dnnl_eltwise_logistic,
505  eltwise_exp = dnnl_eltwise_exp,
508  eltwise_gelu = dnnl_eltwise_gelu,
510  eltwise_gelu_tanh = dnnl_eltwise_gelu_tanh,
512  eltwise_gelu_erf = dnnl_eltwise_gelu_erf,
514  eltwise_log = dnnl_eltwise_log,
516  eltwise_clip = dnnl_eltwise_clip,
518  eltwise_pow = dnnl_eltwise_pow,
520  eltwise_round = dnnl_eltwise_round,
522  eltwise_relu_use_dst_for_bwd = dnnl_eltwise_relu_use_dst_for_bwd,
524  eltwise_tanh_use_dst_for_bwd = dnnl_eltwise_tanh_use_dst_for_bwd,
526  eltwise_elu_use_dst_for_bwd = dnnl_eltwise_elu_use_dst_for_bwd,
528  eltwise_sqrt_use_dst_for_bwd = dnnl_eltwise_sqrt_use_dst_for_bwd,
530  eltwise_logistic_use_dst_for_bwd = dnnl_eltwise_logistic_use_dst_for_bwd,
532  eltwise_exp_use_dst_for_bwd = dnnl_eltwise_exp_use_dst_for_bwd,
534  lrn_across_channels = dnnl_lrn_across_channels,
536  lrn_within_channel = dnnl_lrn_within_channel,
538  pooling_max = dnnl_pooling_max,
541  pooling_avg = dnnl_pooling_avg,
543  pooling_avg_include_padding = dnnl_pooling_avg_include_padding,
545  pooling_avg_exclude_padding = dnnl_pooling_avg_exclude_padding,
547  vanilla_rnn = dnnl_vanilla_rnn,
549  vanilla_lstm = dnnl_vanilla_lstm,
551  vanilla_gru = dnnl_vanilla_gru,
557  lbr_gru = dnnl_lbr_gru,
559  binary_add = dnnl_binary_add,
561  binary_mul = dnnl_binary_mul,
563  binary_max = dnnl_binary_max,
565  binary_min = dnnl_binary_min,
567  binary_div = dnnl_binary_div,
569  resampling_nearest = dnnl_resampling_nearest,
571  resampling_linear = dnnl_resampling_linear,
573  reduction_max = dnnl_reduction_max,
575  reduction_min = dnnl_reduction_min,
577  reduction_sum = dnnl_reduction_sum,
579  reduction_mul = dnnl_reduction_mul,
581  reduction_mean = dnnl_reduction_mean,
583  reduction_norm_lp_max = dnnl_reduction_norm_lp_max,
585  reduction_norm_lp_sum = dnnl_reduction_norm_lp_sum,
587  reduction_norm_lp_power_p_max = dnnl_reduction_norm_lp_power_p_max,
590 };
591 
596  return static_cast<dnnl_alg_kind_t>(aalgorithm);
597 }
598 
600 
603 
605 enum class normalization_flags : unsigned {
611 
619  use_global_stats = dnnl_use_global_stats,
620 
626  use_scale_shift = dnnl_use_scaleshift,
627 
633 };
634 
639  return static_cast<dnnl_normalization_flags_t>(flags);
640 }
641 
643 
646 
648 enum class rnn_flags : unsigned {
651 };
652 
657  return static_cast<dnnl_rnn_flags_t>(flags);
658 }
659 
660 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
661  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
662  return static_cast<enum_name>( \
663  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
664  } \
665 \
666  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
667  return static_cast<enum_name>( \
668  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
669  } \
670 \
671  inline enum_name operator^(enum_name lhs, enum_name rhs) { \
672  return static_cast<enum_name>( \
673  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
674  } \
675 \
676  inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
677  lhs = static_cast<enum_name>( \
678  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
679  return lhs; \
680  } \
681 \
682  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
683  lhs = static_cast<enum_name>( \
684  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
685  return lhs; \
686  } \
687 \
688  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
689  lhs = static_cast<enum_name>( \
690  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
691  return lhs; \
692  } \
693 \
694  inline enum_name operator~(enum_name rhs) { \
695  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
696  }
697 
698 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
699 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
700 
701 enum class rnn_direction {
704  unidirectional_left2right = dnnl_unidirectional_left2right,
706  unidirectional_right2left = dnnl_unidirectional_right2left,
709  bidirectional_concat = dnnl_bidirectional_concat,
712  bidirectional_sum = dnnl_bidirectional_sum,
715 };
716 
721  return static_cast<dnnl_rnn_direction_t>(dir);
722 }
723 
725 
728 
735 enum class query {
738 
743 
745  num_of_inputs_s32 = dnnl_query_num_of_inputs_s32,
747  num_of_outputs_s32 = dnnl_query_num_of_outputs_s32,
748 
750  time_estimate_f64 = dnnl_query_time_estimate_f64,
754  memory_consumption_s64 = dnnl_query_memory_consumption_s64,
755 
760 
762  reorder_src_engine = dnnl_query_reorder_src_engine,
764  reorder_dst_engine = dnnl_query_reorder_dst_engine,
765 
768 
771 
773  op_d = dnnl_query_op_d,
775  convolution_d = dnnl_query_convolution_d,
777  deconvolution_d = dnnl_query_deconvolution_d,
779  shuffle_d = dnnl_query_shuffle_d,
781  eltwise_d = dnnl_query_eltwise_d,
783  softmax_d = dnnl_query_softmax_d,
785  pooling_d = dnnl_query_pooling_d,
787  lrn_d = dnnl_query_lrn_d,
789  batch_normalization_d = dnnl_query_batch_normalization_d,
791  layer_normalization_d = dnnl_query_layer_normalization_d,
793  inner_product_d = dnnl_query_inner_product_d,
795  rnn_d = dnnl_query_rnn_d,
797  binary_d = dnnl_query_binary_d,
799  logsoftmax_d = dnnl_query_logsoftmax_d,
801  matmul_d = dnnl_query_matmul_d,
803  resampling_d = dnnl_query_resampling_d,
805  reduction_d = dnnl_query_reduction_d,
806 
808  src_md = dnnl_query_src_md,
810  diff_src_md = dnnl_query_diff_src_md,
812  weights_md = dnnl_query_weights_md,
814  diff_weights_md = dnnl_query_diff_weights_md,
816  dst_md = dnnl_query_dst_md,
818  diff_dst_md = dnnl_query_diff_dst_md,
820  workspace_md = dnnl_query_workspace_md,
822  scratchpad_md = dnnl_query_scratchpad_md,
825 };
826 
831  return static_cast<dnnl_query_t>(aquery);
832 }
833 
835 
837 
848 
850 template <>
851 struct handle_traits<dnnl_engine_t> {
852  static dnnl_status_t destructor(dnnl_engine_t p) {
853  return dnnl_engine_destroy(p);
854  }
855 };
857 
859 struct engine : public handle<dnnl_engine_t> {
860  friend struct primitive;
861  friend struct reorder;
862 
864  enum class kind {
868  cpu = dnnl_cpu,
870  gpu = dnnl_gpu,
871  };
872 
873  using handle::handle;
874 
877  engine() = default;
878 
883  static size_t get_count(kind akind) {
884  return dnnl_engine_get_count(convert_to_c(akind));
885  }
886 
892  engine(kind akind, size_t index) {
895  dnnl_engine_create(&engine, convert_to_c(akind), index),
896  "could not create an engine");
897  reset(engine);
898  }
899 
905  dnnl_engine_t c_engine;
908  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
909  "could not get an engine from a primitive_desc");
910  reset(c_engine, true);
911  }
912 
915  kind get_kind() const {
918  "could not get kind of an engine");
919  return static_cast<engine::kind>(kind);
920  }
921 
927  template <typename primitive_desc>
928  static engine query(const primitive_desc &pd) {
929  return query(pd, dnnl::query::engine);
930  }
931 
932 private:
933  static dnnl_engine_kind_t convert_to_c(kind akind) {
934  return static_cast<dnnl_engine_kind_t>(akind);
935  }
936 
937  template <typename primitive_desc>
938  static engine query(const primitive_desc &pd, dnnl::query what) {
939  dnnl_engine_t c_engine;
941  dnnl::convert_to_c(what), 0, &c_engine),
942  "could not get an engine from a primitive_desc");
943  return engine(c_engine, true);
944  }
945 };
946 
952  return static_cast<dnnl_engine_kind_t>(akind);
953 }
954 
956 
964 
966 template <>
967 struct handle_traits<dnnl_stream_t> {
968  static dnnl_status_t destructor(dnnl_stream_t p) {
969  return dnnl_stream_destroy(p);
970  }
971 };
973 
975 struct stream : public handle<dnnl_stream_t> {
976  using handle::handle;
977 
979  enum class flags : unsigned {
986  };
987 
990  stream() = default;
991 
997  stream(const engine &aengine, flags aflags = flags::default_flags) {
1000  static_cast<dnnl_stream_flags_t>(aflags)),
1001  "could not create a stream");
1002  reset(stream);
1003  }
1004 
1006  engine get_engine() const {
1007  dnnl_engine_t c_engine;
1009  "could not get an engine from a stream object");
1010  return engine(c_engine, true);
1011  }
1012 
1017  dnnl_stream_wait(get()), "could not wait on a stream");
1018  return *this;
1019  }
1020 };
1021 
1022 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1023 
1024 
1091 
1098 struct memory : public handle<dnnl_memory_t> {
1099  using handle::handle;
1100 
1102  typedef dnnl_dim_t dim;
1105  typedef std::vector<dim> dims;
1106 
1113  template <typename T>
1114  static void validate_dims(const std::vector<T> &v, int min_size = 0) {
1115  validate_container_size(
1116  v, "dimensions are invalid", min_size, DNNL_MAX_NDIMS);
1117  }
1118 
1120  enum class data_type {
1124  f16 = dnnl_f16,
1127  bf16 = dnnl_bf16,
1129  f32 = dnnl_f32,
1131  s32 = dnnl_s32,
1133  s8 = dnnl_s8,
1135  u8 = dnnl_u8,
1136  };
1137 
1139  enum class format_kind {
1144  any = dnnl_format_kind_any,
1148  blocked = dnnl_blocked,
1150  wino = dnnl_format_kind_wino,
1152  packed = dnnl_format_kind_rnn_packed,
1153  };
1154 
1195  enum class format_tag {
1200  any = dnnl_format_tag_any,
1201 
1203  a = dnnl_a,
1204 
1206  ab = dnnl_ab,
1208  ba = dnnl_ba,
1209 
1211  abc = dnnl_abc,
1213  acb = dnnl_acb,
1215  bac = dnnl_bac,
1217  bca = dnnl_bca,
1219  cba = dnnl_cba,
1220 
1222  abcd = dnnl_abcd,
1224  abdc = dnnl_abdc,
1226  acdb = dnnl_acdb,
1228  bacd = dnnl_bacd,
1230  bcda = dnnl_bcda,
1232  cdba = dnnl_cdba,
1234  dcab = dnnl_dcab,
1235 
1237  abcde = dnnl_abcde,
1239  abdec = dnnl_abdec,
1241  acbde = dnnl_acbde,
1243  acdeb = dnnl_acdeb,
1245  bacde = dnnl_bacde,
1247  bcdea = dnnl_bcdea,
1249  cdeba = dnnl_cdeba,
1251  decab = dnnl_decab,
1253  abced = dnnl_abced,
1254 
1256  abcdef = dnnl_abcdef,
1258  acbdef = dnnl_acbdef,
1260  defcab = dnnl_defcab,
1262  abcdfe = dnnl_abcdfe,
1263 
1265  abcdefg = dnnl_abcdefg,
1267  abcdegf = dnnl_abcdegf,
1268 
1270  abcdefgh = dnnl_abcdefgh,
1272  abcdefhg = dnnl_abcdefhg,
1273 
1275  abcdefghi = dnnl_abcdefghi,
1277  abcdefgih = dnnl_abcdefgih,
1278 
1280  abcdefghij = dnnl_abcdefghij,
1282  abcdefghji = dnnl_abcdefghji,
1283 
1285  abcdefghijk = dnnl_abcdefghijk,
1287  abcdefghikj = dnnl_abcdefghikj,
1288 
1290  abcdefghijkl = dnnl_abcdefghijkl,
1292  abcdefghijlk = dnnl_abcdefghijlk,
1293 
1295  x = a,
1297  nc = ab,
1299  cn = ba,
1301  tn = ab,
1303  nt = ba,
1305  ncw = abc,
1307  nwc = acb,
1309  nchw = abcd,
1311  nhwc = acdb,
1313  chwn = bcda,
1315  ncdhw = abcde,
1317  ndhwc = acdeb,
1318 
1320  oi = ab,
1322  io = ba,
1324  oiw = abc,
1326  owi = acb,
1328  wio = cba,
1330  iwo = bca,
1332  oihw = abcd,
1334  hwio = cdba,
1336  ohwi = acdb,
1338  ihwo = bcda,
1340  iohw = bacd,
1342  oidhw = abcde,
1344  dhwio = cdeba,
1346  odhwi = acdeb,
1348  iodhw = bacde,
1350  idhwo = bcdea,
1351 
1353  goiw = abcd,
1355  wigo = dcab,
1357  goihw = abcde,
1359  hwigo = decab,
1361  giohw = acbde,
1363  goidhw = abcdef,
1365  giodhw = acbdef,
1367  dhwigo = defcab,
1368 
1370  tnc = abc,
1372  ntc = bac,
1375  ldnc = abcd,
1382  ldigo = abcde,
1389  ldgoi = abdec,
1392  ldio = abcd,
1395  ldoi = abdc,
1402  ldgo = abcd,
1403 
1404  // Opaque blocked formats
1405 
1406  Abc16a = dnnl_Abc16a,
1407  ABc16a16b = dnnl_ABc16a16b,
1408  ABc4a4b = dnnl_ABc4a4b,
1409  aBc16b = dnnl_aBc16b,
1410  aBc32b = dnnl_aBc32b,
1411  ABc16b16a = dnnl_ABc16b16a,
1412  Abc4a = dnnl_Abc4a,
1413  aBc4b = dnnl_aBc4b,
1414  ABc4b16a4b = dnnl_ABc4b16a4b,
1415  ABc2b8a4b = dnnl_ABc2b8a4b,
1416  ABc16b16a4b = dnnl_ABc16b16a4b,
1417  ABc16b16a2b = dnnl_ABc16b16a2b,
1418  ABc4b4a = dnnl_ABc4b4a,
1419  ABc8a16b2a = dnnl_ABc8a16b2a,
1420  ABc8a8b = dnnl_ABc8a8b,
1421  ABc8a4b = dnnl_ABc8a4b,
1422  aBc8b = dnnl_aBc8b,
1423  ABc8b16a2b = dnnl_ABc8b16a2b,
1424  ABc8b8a = dnnl_ABc8b8a,
1425  Abcd8a = dnnl_Abcd8a,
1426  Abcd16a = dnnl_Abcd16a,
1427  Abcd32a = dnnl_Abcd32a,
1428  ABcd16a16b = dnnl_ABcd16a16b,
1429  aBcd16b = dnnl_aBcd16b,
1430  aBcd32b = dnnl_aBcd32b,
1431  ABcd16b16a = dnnl_ABcd16b16a,
1432  aBCd16b16c = dnnl_aBCd16b16c,
1433  aBCd16c16b = dnnl_aBCd16c16b,
1434  Abcd4a = dnnl_Abcd4a,
1435  aBcd4b = dnnl_aBcd4b,
1436  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1437  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1438  ABcd4b4a = dnnl_ABcd4b4a,
1439  ABcd4a4b = dnnl_ABcd4a4b,
1440  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1441  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1442  ABcd16b16a4b = dnnl_ABcd16b16a4b,
1443  ABcd16b16a2b = dnnl_ABcd16b16a2b,
1444  aBCd16c16b4c = dnnl_aBCd16c16b4c,
1445  aBCd16c16b2c = dnnl_aBCd16c16b2c,
1446  aBCd4c4b = dnnl_aBCd4c4b,
1447  aBCd4b4c = dnnl_aBCd4b4c,
1448  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1449  ABcd8a8b = dnnl_ABcd8a8b,
1450  ABcd8a4b = dnnl_ABcd8a4b,
1452  aBcd8b = dnnl_aBcd8b,
1453  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1454  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1456  ABcd8b8a = dnnl_ABcd8b8a,
1457  aBCd8b8c = dnnl_aBCd8b8c,
1458  aBCd8b4c = dnnl_aBCd8b4c,
1459  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1460  aBCd8c8b = dnnl_aBCd8c8b,
1461  Abcde16a = dnnl_Abcde16a,
1462  Abcde32a = dnnl_Abcde32a,
1463  ABcde16a16b = dnnl_ABcde16a16b,
1464  aBcde16b = dnnl_aBcde16b,
1465  aBcde32b = dnnl_aBcde32b,
1466  ABcde16b16a = dnnl_ABcde16b16a,
1467  aBCde16b16c = dnnl_aBCde16b16c,
1468  aBCde16c16b = dnnl_aBCde16c16b,
1469  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1470  Abcde4a = dnnl_Abcde4a,
1471  aBcde4b = dnnl_aBcde4b,
1472  ABcde4b4a = dnnl_ABcde4b4a,
1473  ABcde4a4b = dnnl_ABcde4a4b,
1474  aBCde4b4c = dnnl_aBCde4b4c,
1475  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1476  aBCde16c16b4c = dnnl_aBCde16c16b4c,
1477  aBCde16c16b2c = dnnl_aBCde16c16b2c,
1478  aBCde4c4b = dnnl_aBCde4c4b,
1479  Abcde8a = dnnl_Abcde8a,
1480  ABcde8a8b = dnnl_ABcde8a8b,
1481  ABcde8a4b = dnnl_ABcde8a4b,
1482  aBcde8b = dnnl_aBcde8b,
1483  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1484  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1485  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1486  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1487  ABcde8b8a = dnnl_ABcde8b8a,
1488  aBCde8b8c = dnnl_aBCde8b8c,
1489  aBCde8b4c = dnnl_aBCde8b4c,
1490  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1491  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1492  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1493  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1494  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1495  aBCde8c8b = dnnl_aBCde8c8b,
1496  aBcdef16b = dnnl_aBcdef16b,
1497  aBCdef16b16c = dnnl_aBCdef16b16c,
1498  aBCdef16c16b = dnnl_aBCdef16c16b,
1499  aBcdef4b = dnnl_aBcdef4b,
1500  aBCdef2c8b4c = dnnl_aBCdef2c8b4c,
1501  aBCdef4c4b = dnnl_aBCdef4c4b,
1502  aBCdef4b4c = dnnl_aBCdef4b4c,
1503  aBCdef8b8c = dnnl_aBCdef8b8c,
1504  aBCdef8b4c = dnnl_aBCdef8b4c,
1505  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1506  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1507  aBCdef8c8b = dnnl_aBCdef8c8b,
1508  aBdc16b = dnnl_aBdc16b,
1509  aBdc4b = dnnl_aBdc4b,
1510  aBdc8b = dnnl_aBdc8b,
1511  aBdec16b = dnnl_aBdec16b,
1512  aBdec4b = dnnl_aBdec4b,
1513  aBdec8b = dnnl_aBdec8b,
1514  aBdefc16b = dnnl_aBdefc16b,
1515  aCBdef16c16b = dnnl_aCBdef16c16b,
1516  aCBdef16b16c = dnnl_aCBdef16b16c,
1517  aBdefc4b = dnnl_aBdefc4b,
1518  aBdefc8b = dnnl_aBdefc8b,
1519  Acb16a = dnnl_Acb16a,
1520  Acb4a = dnnl_Acb4a,
1521  Acb8a = dnnl_Acb8a,
1522  aCBd16b16c = dnnl_aCBd16b16c,
1523  aCBd16c16b = dnnl_aCBd16c16b,
1524  aCBde16b16c = dnnl_aCBde16b16c,
1525  aCBde16c16b = dnnl_aCBde16c16b,
1526  Acdb16a = dnnl_Acdb16a,
1527  Acdb4a = dnnl_Acdb4a,
1528  Acdb8a = dnnl_Acdb8a,
1529  Acdeb16a = dnnl_Acdeb16a,
1530  Acdeb4a = dnnl_Acdeb4a,
1531  Acdeb8a = dnnl_Acdeb8a,
1532  BAc16a16b = dnnl_BAc16a16b,
1533  BAc16b16a = dnnl_BAc16b16a,
1534  BAcd16a16b = dnnl_BAcd16a16b,
1535  BAcd16b16a = dnnl_BAcd16b16a,
1536  ABcd32a32b = dnnl_ABcd32a32b,
1537  BAcde16b16a = dnnl_BAcde16b16a,
1538  BAcde16a16b = dnnl_BAcde16a16b,
1539  aBdec32b = dnnl_aBdec32b,
1540  Abcdef16a = dnnl_Abcdef16a,
1541  Abcdef32a = dnnl_Abcdef32a,
1542  Acdb32a = dnnl_Acdb32a,
1543  aBCd2b4c2b = dnnl_aBCd2b4c2b,
1544  aBCde2b4c2b = dnnl_aBCde2b4c2b,
1545  aBCdef2b4c2b = dnnl_aBCdef2b4c2b,
1546  aBCd2c4b2c = dnnl_aBCd2c4b2c,
1547  aBCde2c4b2c = dnnl_aBCde2c4b2c,
1548  aBCdef2c4b2c = dnnl_aBCdef2c4b2c,
1549  aBCd4b8c2b = dnnl_aBCd4b8c2b,
1550  aBCde4b8c2b = dnnl_aBCde4b8c2b,
1551  aBCdef4b8c2b = dnnl_aBCdef4b8c2b,
1552  aBCd4c8b2c = dnnl_aBCd4c8b2c,
1553  aBCde4c8b2c = dnnl_aBCde4c8b2c,
1554  aBCdef4c8b2c = dnnl_aBCdef4c8b2c,
1555 
1556  format_tag_last = dnnl_format_tag_last,
1557 
1558  nCdhw16c = dnnl_nCdhw16c,
1559  nCdhw4c = dnnl_nCdhw4c,
1560  nCdhw8c = dnnl_nCdhw8c,
1561  nChw16c = dnnl_nChw16c,
1562  nChw4c = dnnl_nChw4c,
1563  nChw8c = dnnl_nChw8c,
1564  nCw16c = dnnl_nCw16c,
1565  nCw4c = dnnl_nCw4c,
1566  nCw8c = dnnl_nCw8c,
1567  NCw16n16c = dnnl_NCw16n16c,
1568  NChw16n16c = dnnl_NChw16n16c,
1569  NCdhw16n16c = dnnl_NCdhw16n16c,
1570  NCdhw32n32c = dnnl_NCdhw32n32c,
1571  NChw32n32c = dnnl_NChw32n32c,
1572  IOhw16i16o = dnnl_IOhw16i16o,
1573  Ohwi32o = dnnl_Ohwi32o,
1574  IOdhw16i16o = dnnl_IOdhw16i16o,
1575  gIOhw16i16o = dnnl_gIOhw16i16o,
1576  gOhwi32o = dnnl_gOhwi32o,
1577  Goidhw16g = dnnl_Goidhw16g,
1578  IOw16o16i = dnnl_IOw16o16i,
1579  OIw16i16o = dnnl_OIw16i16o,
1580  IOw16i16o = dnnl_IOw16i16o,
1581  gIOw16i16o = dnnl_gIOw16i16o,
1582  OIw16o16i = dnnl_OIw16o16i,
1583  Oiw16o = dnnl_Oiw16o,
1584  OIw4i16o4i = dnnl_OIw4i16o4i,
1585  OIw2i8o4i = dnnl_OIw2i8o4i,
1586  OIw4i4o = dnnl_OIw4i4o,
1587  OIw4o4i = dnnl_OIw4o4i,
1588  Oiw4o = dnnl_Oiw4o,
1589  OIw8i16o2i = dnnl_OIw8i16o2i,
1590  OIw8i8o = dnnl_OIw8i8o,
1591  OIw8o16i2o = dnnl_OIw8o16i2o,
1592  OIw8o8i = dnnl_OIw8o8i,
1593  OIw8o4i = dnnl_OIw8o4i,
1594  Owi16o = dnnl_Owi16o,
1595  OwI16o2i = dnnl_OwI16o2i,
1596  Owi4o = dnnl_Owi4o,
1597  Owi8o = dnnl_Owi8o,
1598  IOhw16o16i = dnnl_IOhw16o16i,
1599  Ohwi16o = dnnl_Ohwi16o,
1600  OhwI16o2i = dnnl_OhwI16o2i,
1601  Ohwi4o = dnnl_Ohwi4o,
1602  Ohwi8o = dnnl_Ohwi8o,
1603  OIhw16i16o = dnnl_OIhw16i16o,
1604  OIhw16o16i = dnnl_OIhw16o16i,
1605  Oihw16o = dnnl_Oihw16o,
1606  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1607  OIhw4i4o = dnnl_OIhw4i4o,
1608  OIhw4o4i = dnnl_OIhw4o4i,
1609  Oihw4o = dnnl_Oihw4o,
1610  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1611  OIhw8i8o = dnnl_OIhw8i8o,
1612  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1613  OIhw8o8i = dnnl_OIhw8o8i,
1614  OIhw8o4i = dnnl_OIhw8o4i,
1615  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1616  IOdhw16o16i = dnnl_IOdhw16o16i,
1617  Odhwi16o = dnnl_Odhwi16o,
1618  OdhwI16o2i = dnnl_OdhwI16o2i,
1619  Odhwi4o = dnnl_Odhwi4o,
1620  Odhwi8o = dnnl_Odhwi8o,
1621  OIdhw16i16o = dnnl_OIdhw16i16o,
1622  OIdhw16o16i = dnnl_OIdhw16o16i,
1623  Oidhw16o = dnnl_Oidhw16o,
1624  OIdhw4i4o = dnnl_OIdhw4i4o,
1625  OIdhw4o4i = dnnl_OIdhw4o4i,
1626  Oidhw4o = dnnl_Oidhw4o,
1627  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1628  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1629  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1630  OIdhw8i8o = dnnl_OIdhw8i8o,
1631  OIdhw8o8i = dnnl_OIdhw8o8i,
1632  OIdhw8o4i = dnnl_OIdhw8o4i,
1633  gIOw16o16i = dnnl_gIOw16o16i,
1634  gOIw16i16o = dnnl_gOIw16i16o,
1635  gOIw16o16i = dnnl_gOIw16o16i,
1636  gOiw16o = dnnl_gOiw16o,
1637  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1638  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1639  gOIw4i4o = dnnl_gOIw4i4o,
1640  gOIw4o4i = dnnl_gOIw4o4i,
1641  gOiw4o = dnnl_gOiw4o,
1642  gOIw8i16o2i = dnnl_gOIw8i16o2i,
1643  gOIw8i8o = dnnl_gOIw8i8o,
1644  gOIw8o16i2o = dnnl_gOIw8o16i2o,
1645  gOIw8o8i = dnnl_gOIw8o8i,
1646  gOIw8o4i = dnnl_gOIw8o4i,
1647  gOwi16o = dnnl_gOwi16o,
1648  gOwI16o2i = dnnl_gOwI16o2i,
1649  gOwi4o = dnnl_gOwi4o,
1650  gOwi8o = dnnl_gOwi8o,
1651  Goiw8g = dnnl_Goiw8g,
1652  Goiw16g = dnnl_Goiw16g,
1653  gIOhw16o16i = dnnl_gIOhw16o16i,
1654  gOhwi16o = dnnl_gOhwi16o,
1655  gOhwI16o2i = dnnl_gOhwI16o2i,
1656  gOhwi4o = dnnl_gOhwi4o,
1657  gOhwi8o = dnnl_gOhwi8o,
1658  Goihw16g = dnnl_Goihw16g,
1659  gOIhw16i16o = dnnl_gOIhw16i16o,
1660  gOIhw16o16i = dnnl_gOIhw16o16i,
1661  gOihw16o = dnnl_gOihw16o,
1662  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1663  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1664  gOIhw4i4o = dnnl_gOIhw4i4o,
1665  gOIhw4o4i = dnnl_gOIhw4o4i,
1666  gOihw4o = dnnl_gOihw4o,
1667  Goihw8g = dnnl_Goihw8g,
1668  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1669  gOIhw8i8o = dnnl_gOIhw8i8o,
1670  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1671  OIw4o8i8o4i = dnnl_OIw4o8i8o4i,
1672  OIdhw4o8i8o4i = dnnl_OIdhw4o8i8o4i,
1673  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1674  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1675  gOIw4o8i8o4i = dnnl_gOIw4o8i8o4i,
1676  gOIdhw4o8i8o4i = dnnl_gOIdhw4o8i8o4i,
1677  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1678  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1679  OIhw16i16o4i = dnnl_OIhw16i16o4i,
1680  OIhw16i16o2i = dnnl_OIhw16i16o2i,
1681  gOIhw16i16o4i = dnnl_gOIhw16i16o4i,
1682  gOIhw16i16o2i = dnnl_gOIhw16i16o2i,
1683  gOIhw8o8i = dnnl_gOIhw8o8i,
1684  gOIhw8o4i = dnnl_gOIhw8o4i,
1685  gIOdhw16i16o = dnnl_gIOdhw16i16o,
1686  gIOdhw16o16i = dnnl_gIOdhw16o16i,
1687  gOdhwi16o = dnnl_gOdhwi16o,
1688  gOdhwI16o2i = dnnl_gOdhwI16o2i,
1689  gOdhwi4o = dnnl_gOdhwi4o,
1690  gOdhwi8o = dnnl_gOdhwi8o,
1691  gOIdhw16i16o = dnnl_gOIdhw16i16o,
1692  gOIdhw16o16i = dnnl_gOIdhw16o16i,
1693  gOidhw16o = dnnl_gOidhw16o,
1694  gOIdhw4i4o = dnnl_gOIdhw4i4o,
1695  gOIdhw4o4i = dnnl_gOIdhw4o4i,
1696  gOidhw4o = dnnl_gOidhw4o,
1697  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1698  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
1699  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
1700  gOIdhw8i8o = dnnl_gOIdhw8i8o,
1701  gOIdhw8o8i = dnnl_gOIdhw8o8i,
1702  gOIdhw8o4i = dnnl_gOIdhw8o4i,
1703  gOIw2i4o2i = dnnl_gOIw2i4o2i,
1704  gOIhw2i4o2i = dnnl_gOIhw2i4o2i,
1705  gOIdhw2i4o2i = dnnl_gOIdhw2i4o2i,
1706  gOIw2o4i2o = dnnl_gOIw2o4i2o,
1707  gOIhw2o4i2o = dnnl_gOIhw2o4i2o,
1708  gOIdhw2o4i2o = dnnl_gOIdhw2o4i2o,
1709  gOIw4i8o2i = dnnl_gOIw4i8o2i,
1710  gOIhw4i8o2i = dnnl_gOIhw4i8o2i,
1711  gOIdhw4i8o2i = dnnl_gOIdhw4i8o2i,
1712  gOIw4o8i2o = dnnl_gOIw4o8i2o,
1713  gOIhw4o8i2o = dnnl_gOIhw4o8i2o,
1714  gOIdhw4o8i2o = dnnl_gOIdhw4o8i2o,
1715  };
1716 
1718  struct desc {
1719  friend struct memory;
1722 
1725  desc() : data() {}
1726 
1742  desc(const dims &adims, data_type adata_type, format_tag aformat_tag,
1743  bool allow_empty = false)
1744  : data() {
1745  validate_dims(adims);
1747  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1748  convert_to_c(aformat_tag));
1749  if (!allow_empty)
1751  "could not construct a memory descriptor using a "
1752  "format tag");
1753  }
1754 
1770  desc(const dims &adims, data_type adata_type, const dims &strides,
1771  bool allow_empty = false)
1772  : data() {
1773  validate_dims(adims);
1774  if (!strides.empty()) validate_dims(strides, (int)adims.size());
1776  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1777  strides.empty() ? nullptr : &strides[0]);
1778  if (!allow_empty)
1780  "could not construct a memory descriptor using "
1781  "strides");
1782  }
1783 
1787  desc(const dnnl_memory_desc_t &data) : data(data) {}
1788 
1791  //
1800  desc submemory_desc(const dims &adims, const dims &offsets,
1801  bool allow_empty = false) const {
1802  validate_dims(adims, data.ndims);
1803  validate_dims(offsets, data.ndims);
1806  &sub_md, &data, adims.data(), offsets.data());
1807  if (!allow_empty)
1808  error::wrap_c_api(status, "could not construct a sub-memory");
1809  return desc(sub_md);
1810  }
1811 
1856  desc reshape(const dims &adims, bool allow_empty = false) const {
1857  if (data.ndims) validate_dims(adims, 1);
1860  &out_md, &data, (int)adims.size(), adims.data());
1861  if (!allow_empty)
1863  status, "could not reshape a memory descriptor");
1864  return desc(out_md);
1865  }
1866 
1904  desc permute_axes(const std::vector<int> &permutation,
1905  bool allow_empty = false) const {
1906  validate_dims(permutation, data.ndims);
1909  &out_md, &data, permutation.data());
1910  if (!allow_empty)
1912  "could not permute axes of a memory descriptor");
1913  return desc(out_md);
1914  }
1915 
1920  memory::dims dims() const {
1921  return memory::dims(data.dims, data.dims + data.ndims);
1922  }
1923 
1927  return static_cast<memory::data_type>(data.data_type);
1928  }
1929 
1934  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
1935 
1939  bool is_zero() const { return data.ndims == 0; }
1940 
1945  bool operator==(const desc &other) const {
1946  return dnnl_memory_desc_equal(&data, &other.data) != 0;
1947  }
1948 
1953  bool operator!=(const desc &other) const { return !operator==(other); }
1954 
1958  explicit operator bool() const { return data.ndims != 0; }
1959  };
1960 
1965  memory() = default;
1966 
1986  memory(const desc &md, const engine &aengine, void *handle) {
1987  dnnl_memory_t result;
1989  dnnl_memory_create(&result, &md.data, aengine.get(), handle),
1990  "could not create a memory object");
1991  reset(result);
1992  }
1993 
2000  memory(const desc &md, const engine &aengine)
2001  : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
2002 
2004  desc get_desc() const {
2005  const dnnl_memory_desc_t *cdesc;
2007  "could not get a memory descriptor from a memory object");
2008  return desc(*cdesc);
2009  }
2010 
2012  engine get_engine() const {
2013  dnnl_engine_t c_engine;
2014  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2015  "could not get an engine from a memory object");
2016  return engine(c_engine, true);
2017  }
2018 
2023  void *get_data_handle() const {
2024  void *handle;
2026  "could not get a native handle from a memory object");
2027  return handle;
2028  }
2029 
2058  void set_data_handle(void *handle, const stream &astream) const {
2060  get(), handle, astream.get(true)),
2061  "could not set native handle of a memory object");
2062  }
2063 
2074  void set_data_handle(void *handle) const {
2076  dnnl_memory_set_data_handle_v2(get(), handle, nullptr),
2077  "could not set native handle of a memory object");
2078  }
2079 
2101  template <typename T = void>
2102  T *map_data() const {
2103  void *mapped_ptr;
2104  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2105  "could not map memory object data");
2106  return static_cast<T *>(mapped_ptr);
2107  }
2108 
2119  void unmap_data(void *mapped_ptr) const {
2120  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2121  "could not unmap memory object data");
2122  }
2123 
2124  static dnnl_data_type_t convert_to_c(data_type adata_type) {
2125  return static_cast<dnnl_data_type_t>(adata_type);
2126  }
2127  static dnnl_format_tag_t convert_to_c(format_tag format) {
2128  return static_cast<dnnl_format_tag_t>(format);
2129  }
2130 };
2131 
2132 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2133  return a == memory::convert_to_c(b);
2134 }
2135 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2136  return !(a == b);
2137 }
2138 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2139  return b == a;
2140 }
2141 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2142  return !(a == b);
2143 }
2144 
2145 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2146  return a == memory::convert_to_c(b);
2147 }
2148 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2149  return !(a == b);
2150 }
2151 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2152  return b == a;
2153 }
2154 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2155  return !(a == b);
2156 }
2157 
2159 
2167 
2169 template <>
2170 struct handle_traits<dnnl_post_ops_t> {
2171  static dnnl_status_t destructor(dnnl_post_ops_t p) {
2172  return dnnl_post_ops_destroy(p);
2173  }
2174 };
2176 
2184 struct post_ops : public handle<dnnl_post_ops_t> {
2186 
2189  dnnl_post_ops_t result;
2191  dnnl_post_ops_create(&result), "could not create post-ops");
2192  reset(result);
2193  }
2194 
2196  int len() const { return dnnl_post_ops_len(get()); }
2197 
2201  primitive::kind kind(int index) const {
2203  "post-ops index is out of range");
2204  return static_cast<primitive::kind>(
2205  dnnl_post_ops_get_kind(get(), index));
2206  }
2207 
2236  void append_sum(float scale = 1.f,
2238  if (data_type == memory::data_type::undef)
2240  "could not append a sum post-op");
2241  else
2243  memory::convert_to_c(data_type)),
2244  "could not append a sum post-op");
2245  }
2246 
2251  void get_params_sum(int index, float &scale) const {
2253  "could not get parameters of a sum post-op");
2254  }
2255 
2262  int index, float &scale, memory::data_type &data_type) const {
2263  dnnl_data_type_t c_data_type;
2265  get(), index, &scale, &c_data_type),
2266  "could not get parameters of a sum post-op");
2267  data_type = static_cast<memory::data_type>(c_data_type);
2268  }
2269 
2284  float scale, algorithm aalgorithm, float alpha, float beta) {
2286  convert_to_c(aalgorithm), alpha, beta),
2287  "could not append an elementwise post-op");
2288  }
2289 
2297  void get_params_eltwise(int index, float &scale, algorithm &aalgorithm,
2298  float &alpha, float &beta) const {
2299  dnnl_alg_kind_t c_alg;
2301  get(), index, &scale, &c_alg, &alpha, &beta),
2302  "could not get parameters of an elementwise post-op");
2303  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2304  }
2305 
2334  void append_dw_k3s1p1(memory::data_type weights_data_type,
2335  memory::data_type bias_data_type, memory::data_type dst_data_type,
2336  int mask, const std::vector<float> &scales) {
2337 
2339  memory::convert_to_c(weights_data_type),
2340  memory::convert_to_c(bias_data_type),
2341  memory::convert_to_c(dst_data_type),
2342  scales.size(), mask, &scales[0]),
2343  "could not append depthwise post-op");
2344  }
2345 
2360  void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type,
2361  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2362  int &mask, std::vector<float> &scales) const {
2363 
2364  dnnl_data_type_t c_weights_data_type;
2365  dnnl_data_type_t c_bias_data_type;
2366  dnnl_data_type_t c_dst_data_type;
2367  dnnl_dim_t count;
2368  int c_mask;
2369  const float *c_scales;
2371  &c_weights_data_type, &c_bias_data_type,
2372  &c_dst_data_type, &count, &c_mask, &c_scales),
2373  "could not get parameters of depthwise post-op");
2374 
2375  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2376  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2377  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2378  scales.resize(count);
2379 
2380  mask = c_mask;
2381  for (dnnl_dim_t c = 0; c < count; ++c)
2382  scales[c] = c_scales[c];
2383  return;
2384  }
2385 
2419  void append_dw_k3s2p1(memory::data_type weights_data_type,
2420  memory::data_type bias_data_type, memory::data_type dst_data_type,
2421  int mask, const std::vector<float> &scales) {
2422 
2424  memory::convert_to_c(weights_data_type),
2425  memory::convert_to_c(bias_data_type),
2426  memory::convert_to_c(dst_data_type),
2427  scales.size(), mask, &scales[0]),
2428  "could not append depthwise post-op");
2429  }
2430 
2445  void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type,
2446  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2447  int &mask, std::vector<float> &scales) const {
2448 
2449  dnnl_data_type_t c_weights_data_type;
2450  dnnl_data_type_t c_bias_data_type;
2451  dnnl_data_type_t c_dst_data_type;
2452  dnnl_dim_t count;
2453  int c_mask;
2454  const float *c_scales;
2456  &c_weights_data_type, &c_bias_data_type,
2457  &c_dst_data_type, &count, &c_mask, &c_scales),
2458  "could not get parameters of depthwise post-op");
2459 
2460  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2461  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2462  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2463  scales.resize(count);
2464 
2465  mask = c_mask;
2466  for (dnnl_dim_t c = 0; c < count; ++c)
2467  scales[c] = c_scales[c];
2468  return;
2469  }
2470 
2485  void append_binary(algorithm aalgorithm, const memory::desc &src1_desc) {
2487  convert_to_c(aalgorithm), &src1_desc.data),
2488  "could not append a binary post-op");
2489  }
2490 
2497  int index, algorithm &aalgorithm, memory::desc &src1_desc) const {
2498  dnnl_alg_kind_t c_alg;
2499  const dnnl_memory_desc_t *data;
2501  dnnl_post_ops_get_params_binary(get(), index, &c_alg, &data),
2502  "could not get parameters of a binary post-op");
2503  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2504  src1_desc.data = *data;
2505  }
2506 };
2507 
2509 template <>
2510 struct handle_traits<dnnl_primitive_attr_t> {
2511  static dnnl_status_t destructor(dnnl_primitive_attr_t p) {
2512  return dnnl_primitive_attr_destroy(p);
2513  }
2514 };
2516 
2520 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
2522 
2525  dnnl_primitive_attr_t result;
2527  "could not create primitive attribute");
2528  reset(result);
2529  }
2530 
2537  : handle<dnnl_primitive_attr_t>(attr) {}
2538 
2541  dnnl_scratchpad_mode_t result;
2544  "could not get scratchpad mode primitive attribute");
2545  return scratchpad_mode(result);
2546  }
2547 
2553  get(), dnnl::convert_to_c(mode)),
2554  "could not set scratchpad mode primitive attribute");
2555  }
2556 
2566  void get_output_scales(int &mask, std::vector<float> &scales) const {
2567  dnnl_dim_t count;
2568  int c_mask;
2569  const float *c_scales;
2571  get(), &count, &c_mask, &c_scales),
2572  "could not get output scales primitive attribute");
2573  scales.resize(count);
2574 
2575  mask = c_mask;
2576  for (dnnl_dim_t c = 0; c < count; ++c)
2577  scales[c] = c_scales[c];
2578  }
2579 
2622  void set_output_scales(int mask, const std::vector<float> &scales) {
2625  get(), (dnnl_dim_t)scales.size(), mask, scales.data()),
2626  "could not set output scales primitive attribute");
2627  }
2628 
2640  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
2641  dnnl_dim_t count;
2642  int c_mask;
2643  const float *c_scales;
2645  get(), arg, &count, &c_mask, &c_scales),
2646  "could not get scales primitive attributes");
2647  scales.resize(count);
2648 
2649  mask = c_mask;
2650  for (dnnl_dim_t c = 0; c < count; ++c)
2651  scales[c] = c_scales[c];
2652  }
2653 
2670  void set_scales(int arg, int mask, const std::vector<float> &scales) {
2673  (dnnl_dim_t)scales.size(), mask, scales.data()),
2674  "could not set scales primitive attribute");
2675  }
2676 
2688  int arg, int &mask, std::vector<int32_t> &zero_points) const {
2689  dnnl_dim_t count;
2690  int c_mask;
2691  const int32_t *c_zero_points;
2693  get(), arg, &count, &c_mask, &c_zero_points),
2694  "could not get zero points primitive attribute");
2695  zero_points.resize(count);
2696 
2697  mask = c_mask;
2698  for (dnnl_dim_t c = 0; c < count; ++c)
2699  zero_points[c] = c_zero_points[c];
2700  }
2701 
2723  int arg, int mask, const std::vector<int32_t> &zero_points) {
2725  (dnnl_dim_t)zero_points.size(), mask,
2726  zero_points.data()),
2727  "could not set zero points primitive attribute");
2728  }
2729 
2733  const post_ops get_post_ops() const {
2734  post_ops result;
2735  const_dnnl_post_ops_t c_result;
2737  "could not get post-ops primitive attribute");
2738  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
2739  return result;
2740  }
2741 
2750  void set_post_ops(const post_ops ops) {
2752  "could not set post-ops primitive attribute");
2753  }
2754 
2788  void set_rnn_data_qparams(float scale, float shift) {
2791  "could not set RNN data quantization parameters primitive "
2792  "attribute");
2793  }
2794 
2821  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
2823  (int)scales.size(), mask, scales.data()),
2824  "could not set RNN weights quantization parameters primitive "
2825  "attribute");
2826  }
2827 };
2828 
2830 
2833 
2835 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
2837 
2839  primitive_desc_base() = default;
2840 
2843  engine get_engine() const { return engine::query(*this); }
2844 
2847  const char *impl_info_str() const {
2848  const char *res;
2850  get(), dnnl_query_impl_info_str, 0, &res),
2851  "could not retrieve implementation info string from a "
2852  "primitive descriptor");
2853  return res;
2854  }
2855 
2860  memory::dim res;
2862  get(), dnnl::convert_to_c(what), 0, &res);
2863  return status == dnnl_success ? res : 0;
2864  }
2865 
2880  memory::desc query_md(query what, int idx = 0) const {
2881  std::vector<query> valid_q {query::src_md, query::diff_src_md,
2882  query::weights_md, query::diff_weights_md, query::dst_md,
2883  query::diff_dst_md, query::workspace_md, query::scratchpad_md,
2885  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
2886  [=](query q) { return what == q; }))
2887  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2888  "memory descriptor query is invalid");
2889 
2891  get(), dnnl::convert_to_c(what), idx);
2892  return cdesc ? memory::desc(*cdesc) : memory::desc();
2893  }
2894 
2900  memory::desc src_desc(int idx) const {
2901  return query_md(query::src_md, idx);
2902  }
2903 
2909  memory::desc dst_desc(int idx) const {
2910  return query_md(query::dst_md, idx);
2911  }
2912 
2918  memory::desc weights_desc(int idx) const {
2919  return query_md(query::weights_md, idx);
2920  }
2921 
2927  memory::desc diff_src_desc(int idx) const {
2928  return query_md(query::diff_src_md, idx);
2929  }
2930 
2936  memory::desc diff_dst_desc(int idx) const {
2937  return query_md(query::diff_dst_md, idx);
2938  }
2939 
2946  return query_md(query::diff_weights_md, idx);
2947  }
2948 
2949  // Separate versions without the index argument for documentation
2950  // purposes.
2951 
2956  memory::desc src_desc() const { return src_desc(0); }
2957 
2962  memory::desc dst_desc() const { return dst_desc(0); }
2963 
2968  memory::desc weights_desc() const { return weights_desc(0); }
2969 
2975 
2981 
2987 
2993  return query_md(query::workspace_md, 0);
2994  }
2995 
3002  return query_md(query::scratchpad_md, 0);
3003  }
3004 
3008  dnnl_engine_t c_engine;
3011  0, &c_engine),
3012  "could not retrieve scratchpad engine from a primitive "
3013  "descriptor");
3014  return engine(c_engine, true);
3015  }
3016 
3020  const_dnnl_primitive_attr_t const_c_attr;
3022  "could not get attributes from a primitive descriptor");
3023  dnnl_primitive_attr_t c_attr;
3024  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
3025  "could not clone primitive attributes");
3026  return primitive_attr(c_attr);
3027  }
3028 
3032  dnnl_primitive_kind_t kind;
3034  dnnl_query_primitive_kind, 0, (void *)&kind),
3035  "could not get primitive kind from a primitive descriptor");
3036  return static_cast<dnnl::primitive::kind>(kind);
3037  }
3038 
3039 protected:
3044  dnnl_primitive_desc_t new_pd;
3046  "could not clone a primitive descriptor");
3047  reset(new_pd);
3048  }
3049 
3065  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
3066 
3079  dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
3080  : primitive_desc_base(pd, prim_kind, aprop_kind, aprop_kind) {}
3081 
3096  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
3097  dnnl::prop_kind prop_kind2) {
3098  // It is OK to pass an empty primitive descriptor
3099  if (pd == nullptr) return;
3100 
3101  dnnl_status_t rc;
3102 
3103  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
3104  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
3105  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
3106 
3107  // Check that primitive kind matches
3108  dnnl_primitive_kind_t pd_kind;
3110  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
3112  rc, "could not get primitive kind from a primitive descriptor");
3113  if (pd_kind != c_prim_kind)
3114  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3115  "primitive descriptor operation kind mismatch");
3116 
3117  // Check that propagation kind matches
3118  dnnl_prop_kind_t pd_prop_kind;
3120  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
3121 
3122  // Something went wrong
3123  if (rc != dnnl_success && rc != dnnl_unimplemented)
3124  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3125  "could not get propagation kind from the primitive "
3126  "descriptor");
3127 
3128  // Everything is fine
3129  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
3130  || (rc == dnnl_success
3131  && (pd_prop_kind == c_prop_kind1
3132  || pd_prop_kind == c_prop_kind2))) {
3133  reset_with_clone(pd);
3134  return;
3135  }
3136 
3137  // We could get the propagation kind but there is a mismatch
3138  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3139  "primitive descriptor propagation kind mismatch");
3140  }
3141 
3142  using base = primitive_desc_base;
3143 };
3144 
3146 
3155 
3157 struct reorder : public primitive {
3161 
3163  primitive_desc() = default;
3164 
3182  primitive_desc(const engine &src_engine, const memory::desc &src_md,
3183  const engine &dst_engine, const memory::desc &dst_md,
3184  const primitive_attr &attr = primitive_attr(),
3185  bool allow_empty = false) {
3186  dnnl_primitive_desc_t result;
3188  &src_md.data, src_engine.get(), &dst_md.data,
3189  dst_engine.get(), attr.get());
3190  if (!allow_empty)
3192  "could not create a primitive descriptor for a reorder "
3193  "primitive");
3195  }
3196 
3208  primitive_desc(const memory &src, const memory &dst,
3209  const primitive_attr &attr = primitive_attr(),
3210  bool allow_empty = false) {
3211  dnnl_primitive_desc_t result;
3212  auto src_md = src.get_desc();
3213  auto dst_md = dst.get_desc();
3215  &src_md.data, src.get_engine().get(), &dst_md.data,
3216  dst.get_engine().get(), attr.get());
3217  if (!allow_empty)
3219  "could not create a primitive descriptor for a reorder "
3220  "primitive");
3222  }
3223 
3230 
3234  return engine::query(*this, dnnl::query::reorder_src_engine);
3235  }
3236 
3240  return engine::query(*this, dnnl::query::reorder_dst_engine);
3241  }
3242 
3244  memory::desc src_desc() const { return base::src_desc(0); }
3245 
3247  memory::desc dst_desc() const { return base::dst_desc(0); }
3248  };
3249 
3251  reorder() = default;
3252 
3255  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
3256 
3264  reorder(const memory &src, const memory &dst,
3265  const primitive_attr &attr = primitive_attr())
3266  : primitive(primitive_desc(src, dst, attr).get()) {}
3267 
3268  using primitive::execute;
3269 
3276  void execute(const stream &astream, memory &src, memory &dst) const {
3277  primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
3278  }
3279 };
3280 
3282 
3290 
3292 inline std::vector<dnnl_memory_desc_t> convert_to_c(
3293  const std::vector<memory::desc> &mems) {
3294  std::vector<dnnl_memory_desc_t> c_mems;
3295  c_mems.reserve(mems.size());
3296  for (const auto &s : mems)
3297  c_mems.push_back(s.data);
3298  return c_mems;
3299 }
3301 
3303 struct concat : public primitive {
3307 
3309  primitive_desc() = default;
3310 
3321  primitive_desc(const memory::desc &dst, int concat_dimension,
3322  const std::vector<memory::desc> &srcs, const engine &aengine,
3323  const primitive_attr &attr = primitive_attr()) {
3324  auto c_srcs = convert_to_c(srcs);
3325 
3326  dnnl_primitive_desc_t result;
3329  (int)c_srcs.size(), concat_dimension, c_srcs.data(),
3330  attr.get(), aengine.get()),
3331  "could not create a primitive descriptor for a concat "
3332  "primitive");
3333  reset(result);
3334  }
3335 
3348  primitive_desc(int concat_dimension,
3349  const std::vector<memory::desc> &srcs, const engine &aengine,
3350  const primitive_attr &attr = primitive_attr()) {
3351  auto c_api_srcs = convert_to_c(srcs);
3352 
3353  dnnl_primitive_desc_t result;
3355  dnnl_concat_primitive_desc_create(&result, nullptr,
3356  (int)c_api_srcs.size(), concat_dimension,
3357  c_api_srcs.data(), attr.get(), aengine.get()),
3358  "could not create a primitive descriptor for a concat "
3359  "primitive");
3360  reset(result);
3361  }
3362 
3369 
3371  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3372 
3374  memory::desc dst_desc() const { return base::dst_desc(0); }
3375  };
3376 
3378  concat() = default;
3379 
3382  concat(const primitive_desc &pd) : primitive(pd.get()) {}
3383 };
3384 
3386 
3394 
3396 struct sum : public primitive {
3400 
3402  primitive_desc() = default;
3403 
3413  const std::vector<float> &scales,
3414  const std::vector<memory::desc> &srcs, const engine &aengine,
3415  const primitive_attr &attr = primitive_attr()) {
3416  validate_container_size(scales,
3417  "counts of scales and sources are not equal",
3418  (int)srcs.size(), (int)srcs.size());
3419 
3420  auto c_api_srcs = convert_to_c(srcs);
3421 
3422  dnnl_primitive_desc_t result;
3424  dnnl_sum_primitive_desc_create(&result, &dst.data,
3425  (int)c_api_srcs.size(), scales.data(),
3426  c_api_srcs.data(), attr.get(), aengine.get()),
3427  "could not create a primitive descriptor for a sum "
3428  "primitive");
3429  reset(result);
3430  }
3431 
3442  primitive_desc(const std::vector<float> &scales,
3443  const std::vector<memory::desc> &srcs, const engine &aengine,
3444  const primitive_attr &attr = primitive_attr()) {
3445  validate_container_size(scales,
3446  "counts of scales and sources are not equal",
3447  (int)srcs.size(), (int)srcs.size());
3448 
3449  auto c_api_srcs = convert_to_c(srcs);
3450  dnnl_primitive_desc_t result;
3452  dnnl_sum_primitive_desc_create(&result, nullptr,
3453  (int)c_api_srcs.size(), scales.data(),
3454  c_api_srcs.data(), attr.get(), aengine.get()),
3455  "could not create a primitive descriptor for a sum "
3456  "primitive");
3457  reset(result);
3458  }
3459 
3466 
3468  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3469 
3471  memory::desc dst_desc() const { return base::dst_desc(0); }
3472  };
3473 
3475  sum() = default;
3476 
3479  sum(const primitive_desc &pd) : primitive(pd.get()) {}
3480 };
3481 
3483 
3486 
3491 
3492  primitive_desc() = default;
3493 
3517  const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd,
3518  bool allow_empty = false)
3519  : allow_empty_(allow_empty) {
3520  dnnl_primitive_desc_iterator_t iterator = nullptr;
3522  desc, attr ? attr->get() : nullptr, aengine.get(), hint_fwd_pd);
3523  if (!allow_empty)
3525  status, "could not create a primitive descriptor iterator");
3526  pd_iterator.reset(iterator);
3527  fetch_impl();
3528  }
3529 
3534  bool next_impl() {
3536  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3537  if (status == dnnl_iterator_ends) return false;
3539  status, "could not advance a primitive descriptor iterator");
3540  fetch_impl();
3541  return true;
3542  }
3543 
3544 private:
3545  bool allow_empty_ = false;
3547  void fetch_impl() {
3549  pd_iterator.get(allow_empty_));
3550  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3552  "could not fetch a primitive descriptor from a primitive "
3553  "descriptor iterator");
3554  reset(pd);
3555  }
3556 };
3557 
3559 
3569 
3573  struct desc {
3575 
3606  desc(prop_kind aprop_kind, algorithm aalgorithm,
3607  const memory::desc &src_desc, const memory::desc &weights_desc,
3608  const memory::desc &bias_desc, const memory::desc &dst_desc,
3609  const memory::dims &strides, const memory::dims &padding_l,
3610  const memory::dims &padding_r) {
3611  memory::validate_dims(strides, src_desc.data.ndims - 2);
3612  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3613  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3616  dnnl::convert_to_c(aprop_kind),
3617  convert_to_c(aalgorithm), &src_desc.data,
3618  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3619  &strides[0], &padding_l[0], &padding_r[0]),
3620  "could not create a descriptor for a convolution forward "
3621  "propagation primitive");
3622  }
3623 
3652  desc(prop_kind aprop_kind, algorithm aalgorithm,
3653  const memory::desc &src_desc, const memory::desc &weights_desc,
3654  const memory::desc &dst_desc, const memory::dims &strides,
3655  const memory::dims &padding_l, const memory::dims &padding_r) {
3656  memory::validate_dims(strides, src_desc.data.ndims - 2);
3657  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3658  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3661  dnnl::convert_to_c(aprop_kind),
3662  convert_to_c(aalgorithm), &src_desc.data,
3663  &weights_desc.data, nullptr, &dst_desc.data,
3664  &strides[0], &padding_l[0], &padding_r[0]),
3665  "could not create a descriptor for a convolution forward "
3666  "propagation primitive");
3667  }
3668 
3701  desc(prop_kind aprop_kind, algorithm aalgorithm,
3702  const memory::desc &src_desc, const memory::desc &weights_desc,
3703  const memory::desc &bias_desc, const memory::desc &dst_desc,
3704  const memory::dims &strides, const memory::dims &dilates,
3705  const memory::dims &padding_l, const memory::dims &padding_r) {
3706  memory::validate_dims(strides, src_desc.data.ndims - 2);
3707  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3708  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3709  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3711  dnnl::convert_to_c(aprop_kind),
3712  convert_to_c(aalgorithm), &src_desc.data,
3713  &weights_desc.data, &bias_desc.data,
3714  &dst_desc.data, &strides[0], &dilates[0],
3715  &padding_l[0], &padding_r[0]),
3716  "could not create a descriptor for a dilated convolution "
3717  "forward propagation primitive");
3718  }
3719 
3750  desc(prop_kind aprop_kind, algorithm aalgorithm,
3751  const memory::desc &src_desc, const memory::desc &weights_desc,
3752  const memory::desc &dst_desc, const memory::dims &strides,
3753  const memory::dims &dilates, const memory::dims &padding_l,
3754  const memory::dims &padding_r) {
3755  memory::validate_dims(strides, src_desc.data.ndims - 2);
3756  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3757  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3758  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3760  dnnl::convert_to_c(aprop_kind),
3761  convert_to_c(aalgorithm), &src_desc.data,
3762  &weights_desc.data, nullptr,
3763  &dst_desc.data, &strides[0], &dilates[0],
3764  &padding_l[0], &padding_r[0]),
3765  "could not create a descriptor for a dilated convolution "
3766  "forward propagation primitive");
3767  }
3768  };
3769 
3773  primitive_desc() = default;
3774 
3785  primitive_desc(const desc &adesc, const engine &aengine,
3786  bool allow_empty = false)
3787  : dnnl::primitive_desc(
3788  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
3789 
3801  primitive_desc(const desc &adesc, const primitive_attr &attr,
3802  const engine &aengine, bool allow_empty = false)
3803  : dnnl::primitive_desc(
3804  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
3805 
3813  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3814  dnnl::prop_kind::forward_training,
3815  dnnl::prop_kind::forward_inference) {}
3816 
3818  memory::desc src_desc() const { return base::src_desc(0); }
3819 
3822 
3824  memory::desc dst_desc() const { return base::dst_desc(0); }
3825 
3831  };
3832 
3834  convolution_forward() = default;
3835 
3840 };
3841 
3844 
3846  struct desc {
3848 
3874  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
3875  const memory::desc &weights_desc,
3876  const memory::desc &diff_dst_desc, const memory::dims &strides,
3877  const memory::dims &padding_l, const memory::dims &padding_r) {
3878  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
3879  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
3880  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
3883  convert_to_c(aalgorithm), &diff_src_desc.data,
3884  &weights_desc.data, &diff_dst_desc.data,
3885  &strides[0], &padding_l[0], &padding_r[0]),
3886  "could not create a descriptor for a convolution backward "
3887  "propagation primitive");
3888  }
3889 
3917  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
3918  const memory::desc &weights_desc,
3919  const memory::desc &diff_dst_desc, const memory::dims &strides,
3920  const memory::dims &dilates, const memory::dims &padding_l,
3921  const memory::dims &padding_r) {
3922  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
3923  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
3924  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
3925  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
3928  convert_to_c(aalgorithm), &diff_src_desc.data,
3929  &weights_desc.data, &diff_dst_desc.data,
3930  &strides[0], &dilates[0], &padding_l[0],
3931  &padding_r[0]),
3932  "could not create a descriptor for a dilated convolution "
3933  "backward propagation primitive");
3934  }
3935  };
3936 
3940  primitive_desc() = default;
3941 
3955  primitive_desc(const desc &adesc, const engine &aengine,
3956  const convolution_forward::primitive_desc &hint_fwd_pd,
3957  bool allow_empty = false)
3958  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
3959  hint_fwd_pd.get(), allow_empty) {}
3960 
3975  primitive_desc(const desc &adesc, const primitive_attr &attr,
3976  const engine &aengine,
3977  const convolution_forward::primitive_desc &hint_fwd_pd,
3978  bool allow_empty = false)
3979  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
3980  hint_fwd_pd.get(), allow_empty) {}
3981 
3989  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3990  dnnl::prop_kind::backward_data) {}
3991 
3994 
3997 
4000  };
4001 
4004 
4009 };
4010 
4014  struct desc {
4016 
4044  desc(algorithm aalgorithm, const memory::desc &src_desc,
4045  const memory::desc &diff_weights_desc,
4046  const memory::desc &diff_bias_desc,
4047  const memory::desc &diff_dst_desc, const memory::dims &strides,
4048  const memory::dims &padding_l, const memory::dims &padding_r) {
4049  memory::validate_dims(strides, src_desc.data.ndims - 2);
4050  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4051  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4054  convert_to_c(aalgorithm), &src_desc.data,
4055  &diff_weights_desc.data, &diff_bias_desc.data,
4056  &diff_dst_desc.data, &strides[0], &padding_l[0],
4057  &padding_r[0]),
4058  "could not create a descriptor for a convolution weights "
4059  "update primitive");
4060  }
4061 
4087  desc(algorithm aalgorithm, const memory::desc &src_desc,
4088  const memory::desc &diff_weights_desc,
4089  const memory::desc &diff_dst_desc, const memory::dims &strides,
4090  const memory::dims &padding_l, const memory::dims &padding_r) {
4091  memory::validate_dims(strides, src_desc.data.ndims - 2);
4092  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4093  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4095  convert_to_c(aalgorithm), &src_desc.data,
4096  &diff_weights_desc.data, nullptr,
4097  &diff_dst_desc.data, &strides[0],
4098  &padding_l[0], &padding_r[0]),
4099  "could not create a descriptor for a convolution weights "
4100  "update primitive");
4101  }
4102 
4132  desc(algorithm aalgorithm, const memory::desc &src_desc,
4133  const memory::desc &diff_weights_desc,
4134  const memory::desc &diff_bias_desc,
4135  const memory::desc &diff_dst_desc, const memory::dims &strides,
4136  const memory::dims &dilates, const memory::dims &padding_l,
4137  const memory::dims &padding_r) {
4138  memory::validate_dims(strides, src_desc.data.ndims - 2);
4139  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4140  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4141  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4144  convert_to_c(aalgorithm), &src_desc.data,
4145  &diff_weights_desc.data, &diff_bias_desc.data,
4146  &diff_dst_desc.data, &strides[0], &dilates[0],
4147  &padding_l[0], &padding_r[0]),
4148  "could not create a descriptor for a dilated convolution "
4149  "weights gradient primitive");
4150  }
4151 
4179  desc(algorithm aalgorithm, const memory::desc &src_desc,
4180  const memory::desc &diff_weights_desc,
4181  const memory::desc &diff_dst_desc, const memory::dims &strides,
4182  const memory::dims &dilates, const memory::dims &padding_l,
4183  const memory::dims &padding_r) {
4184  memory::validate_dims(strides, src_desc.data.ndims - 2);
4185  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4186  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4187  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4190  convert_to_c(aalgorithm), &src_desc.data,
4191  &diff_weights_desc.data, nullptr,
4192  &diff_dst_desc.data, &strides[0], &dilates[0],
4193  &padding_l[0], &padding_r[0]),
4194  "could not create a descriptor for a dilated convolution "
4195  "weights gradient primitive");
4196  }
4197  };
4198 
4202  primitive_desc() = default;
4203 
4216  primitive_desc(const desc &adesc, const engine &aengine,
4217  const convolution_forward::primitive_desc &hint_fwd_pd,
4218  bool allow_empty = false)
4219  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4220  hint_fwd_pd.get(), allow_empty) {}
4221 
4235  primitive_desc(const desc &adesc, const primitive_attr &attr,
4236  const engine &aengine,
4237  const convolution_forward::primitive_desc &hint_fwd_pd,
4238  bool allow_empty = false)
4239  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4240  hint_fwd_pd.get(), allow_empty) {}
4241 
4249  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4250  dnnl::prop_kind::backward_weights) {}
4251 
4253  memory::desc src_desc() const { return base::src_desc(0); }
4254 
4257  return base::diff_weights_desc(0);
4258  }
4259 
4262 
4268  return base::diff_weights_desc(1);
4269  }
4270  };
4271 
4274 
4279 };
4280 
4282 //
4290 
4294  struct desc {
4296 
4326  desc(prop_kind aprop_kind, algorithm aalgorithm,
4327  const memory::desc &src_desc, const memory::desc &weights_desc,
4328  const memory::desc &bias_desc, const memory::desc &dst_desc,
4329  const memory::dims &strides, const memory::dims &padding_l,
4330  const memory::dims &padding_r) {
4331  memory::validate_dims(strides, src_desc.data.ndims - 2);
4332  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4333  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4336  dnnl::convert_to_c(aprop_kind),
4337  convert_to_c(aalgorithm), &src_desc.data,
4338  &weights_desc.data, &bias_desc.data, &dst_desc.data,
4339  &strides[0], &padding_l[0], &padding_r[0]),
4340  "could not create a descriptor for a deconvolution forward "
4341  "propagation primitive");
4342  }
4343 
4371  desc(prop_kind aprop_kind, algorithm aalgorithm,
4372  const memory::desc &src_desc, const memory::desc &weights_desc,
4373  const memory::desc &dst_desc, const memory::dims &strides,
4374  const memory::dims &padding_l, const memory::dims &padding_r) {
4375  memory::validate_dims(strides, src_desc.data.ndims - 2);
4376  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4377  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4380  dnnl::convert_to_c(aprop_kind),
4381  convert_to_c(aalgorithm), &src_desc.data,
4382  &weights_desc.data, nullptr, &dst_desc.data,
4383  &strides[0], &padding_l[0], &padding_r[0]),
4384  "could not create a descriptor for a deconvolution forward "
4385  "propagation primitive");
4386  }
4387 
4419  desc(prop_kind aprop_kind, algorithm aalgorithm,
4420  const memory::desc &src_desc, const memory::desc &weights_desc,
4421  const memory::desc &bias_desc, const memory::desc &dst_desc,
4422  const memory::dims &strides, const memory::dims &dilates,
4423  const memory::dims &padding_l, const memory::dims &padding_r) {
4424  memory::validate_dims(strides, src_desc.data.ndims - 2);
4425  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4426  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4427  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4429  &data, dnnl::convert_to_c(aprop_kind),
4430  convert_to_c(aalgorithm), &src_desc.data,
4431  &weights_desc.data, &bias_desc.data,
4432  &dst_desc.data, &strides[0], &dilates[0],
4433  &padding_l[0], &padding_r[0]),
4434  "could not create a descriptor for a dilated deconvolution "
4435  "forward propagation primitive");
4436  }
4437 
4467  desc(prop_kind aprop_kind, algorithm aalgorithm,
4468  const memory::desc &src_desc, const memory::desc &weights_desc,
4469  const memory::desc &dst_desc, const memory::dims &strides,
4470  const memory::dims &dilates, 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(dilates, src_desc.data.ndims - 2);
4474  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4475  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4477  &data, dnnl::convert_to_c(aprop_kind),
4478  convert_to_c(aalgorithm), &src_desc.data,
4479  &weights_desc.data, nullptr,
4480  &dst_desc.data, &strides[0], &dilates[0],
4481  &padding_l[0], &padding_r[0]),
4482  "could not create a descriptor for a dilated deconvolution "
4483  "forward propagation primitive");
4484  }
4485  };
4486 
4490  primitive_desc() = default;
4491 
4502  primitive_desc(const desc &adesc, const engine &aengine,
4503  bool allow_empty = false)
4504  : dnnl::primitive_desc(
4505  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4506 
4518  primitive_desc(const desc &adesc, const primitive_attr &attr,
4519  const engine &aengine, bool allow_empty = false)
4520  : dnnl::primitive_desc(
4521  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4522 
4530  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4531  dnnl::prop_kind::forward_training,
4532  dnnl::prop_kind::forward_inference) {}
4533 
4535  memory::desc src_desc() const { return base::src_desc(0); }
4536 
4539 
4541  memory::desc dst_desc() const { return base::dst_desc(0); }
4542 
4545  };
4546 
4549 
4554 };
4555 
4559  struct desc {
4561 
4586  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4587  const memory::desc &weights_desc,
4588  const memory::desc &diff_dst_desc, const memory::dims &strides,
4589  const memory::dims &padding_l, const memory::dims &padding_r) {
4590  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4591  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4592  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4595  convert_to_c(aalgorithm), &diff_src_desc.data,
4596  &weights_desc.data, &diff_dst_desc.data,
4597  &strides[0], &padding_l[0], &padding_r[0]),
4598  "could not create a descriptor for a deconvolution "
4599  "backward propagation primitive");
4600  }
4601 
4628  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4629  const memory::desc &weights_desc,
4630  const memory::desc &diff_dst_desc, const memory::dims &strides,
4631  const memory::dims &dilates, const memory::dims &padding_l,
4632  const memory::dims &padding_r) {
4633  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4634  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4635  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4636  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4639  convert_to_c(aalgorithm), &diff_src_desc.data,
4640  &weights_desc.data, &diff_dst_desc.data,
4641  &strides[0], &dilates[0], &padding_l[0],
4642  &padding_r[0]),
4643  "could not create a descriptor for a dilated deconvolution "
4644  "backward propagation primitive");
4645  }
4646  };
4647 
4651  primitive_desc() = default;
4652 
4666  primitive_desc(const desc &adesc, const engine &aengine,
4667  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4668  bool allow_empty = false)
4669  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4670  hint_fwd_pd.get(), allow_empty) {}
4671 
4686  primitive_desc(const desc &adesc, const primitive_attr &attr,
4687  const engine &aengine,
4688  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4689  bool allow_empty = false)
4690  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4691  hint_fwd_pd.get(), allow_empty) {}
4692 
4700  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4701  dnnl::prop_kind::backward_data) {}
4702 
4705 
4708 
4711  };
4712 
4715 
4720 };
4721 
4725  struct desc {
4727 
4754  desc(algorithm aalgorithm, const memory::desc &src_desc,
4755  const memory::desc &diff_weights_desc,
4756  const memory::desc &diff_bias_desc,
4757  const memory::desc &diff_dst_desc, const memory::dims &strides,
4758  const memory::dims &padding_l, const memory::dims &padding_r) {
4759  memory::validate_dims(strides, src_desc.data.ndims - 2);
4760  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4761  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4764  convert_to_c(aalgorithm), &src_desc.data,
4765  &diff_weights_desc.data, &diff_bias_desc.data,
4766  &diff_dst_desc.data, &strides[0], &padding_l[0],
4767  &padding_r[0]),
4768  "could not create a descriptor for a deconvolution weights "
4769  "update primitive");
4770  }
4771 
4796  desc(algorithm aalgorithm, const memory::desc &src_desc,
4797  const memory::desc &diff_weights_desc,
4798  const memory::desc &diff_dst_desc, const memory::dims &strides,
4799  const memory::dims &padding_l, const memory::dims &padding_r) {
4800  memory::validate_dims(strides, src_desc.data.ndims - 2);
4801  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4802  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4804  &data, convert_to_c(aalgorithm),
4805  &src_desc.data, &diff_weights_desc.data,
4806  nullptr, &diff_dst_desc.data, &strides[0],
4807  &padding_l[0], &padding_r[0]),
4808  "could not create a descriptor for a deconvolution weights "
4809  "update primitive");
4810  }
4811 
4840  desc(algorithm aalgorithm, const memory::desc &src_desc,
4841  const memory::desc &diff_weights_desc,
4842  const memory::desc &diff_bias_desc,
4843  const memory::desc &diff_dst_desc, const memory::dims &strides,
4844  const memory::dims &dilates, const memory::dims &padding_l,
4845  const memory::dims &padding_r) {
4846  memory::validate_dims(strides, src_desc.data.ndims - 2);
4847  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4848  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4849  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4852  convert_to_c(aalgorithm), &src_desc.data,
4853  &diff_weights_desc.data, &diff_bias_desc.data,
4854  &diff_dst_desc.data, &strides[0], &dilates[0],
4855  &padding_l[0], &padding_r[0]),
4856  "could not create a descriptor for a dilated deconvolution "
4857  "weights gradient primitive");
4858  }
4859 
4886  desc(algorithm aalgorithm, const memory::desc &src_desc,
4887  const memory::desc &diff_weights_desc,
4888  const memory::desc &diff_dst_desc, const memory::dims &strides,
4889  const memory::dims &dilates, const memory::dims &padding_l,
4890  const memory::dims &padding_r) {
4891  memory::validate_dims(strides, src_desc.data.ndims - 2);
4892  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4893  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4894  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4897  convert_to_c(aalgorithm), &src_desc.data,
4898  &diff_weights_desc.data, nullptr,
4899  &diff_dst_desc.data, &strides[0], &dilates[0],
4900  &padding_l[0], &padding_r[0]),
4901  "could not create a descriptor for a dilated deconvolution "
4902  "weights gradient primitive");
4903  }
4904  };
4905 
4909  primitive_desc() = default;
4910 
4924  primitive_desc(const desc &adesc, const engine &aengine,
4925  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4926  bool allow_empty = false)
4927  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4928  hint_fwd_pd.get(), allow_empty) {}
4929 
4944  primitive_desc(const desc &adesc, const primitive_attr &attr,
4945  const engine &aengine,
4946  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4947  bool allow_empty = false)
4948  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4949  hint_fwd_pd.get(), allow_empty) {}
4950 
4958  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4959  dnnl::prop_kind::backward_weights) {}
4960 
4962  memory::desc src_desc() const { return base::src_desc(0); }
4963 
4966  return base::diff_weights_desc(0);
4967  }
4968 
4971 
4974  return base::diff_weights_desc(1);
4975  }
4976  };
4977 
4980 
4985 };
4986 
4988 
4997 
4999 struct lrn_forward : public primitive {
5001  struct desc {
5002  dnnl_lrn_desc_t data;
5003 
5017  desc(prop_kind aprop_kind, algorithm aalgorithm,
5018  const memory::desc &data_desc, memory::dim local_size,
5019  float alpha, float beta, float k = 1.f) {
5021  dnnl::convert_to_c(aprop_kind),
5022  convert_to_c(aalgorithm), &data_desc.data,
5023  local_size, alpha, beta, k),
5024  "could not create a descriptor for a lrn forward "
5025  "propagation primitive");
5026  }
5027  };
5028 
5032  primitive_desc() = default;
5033 
5043  primitive_desc(const desc &adesc, const engine &aengine,
5044  bool allow_empty = false)
5045  : dnnl::primitive_desc(
5046  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5047 
5058  primitive_desc(const desc &adesc, const primitive_attr &attr,
5059  const engine &aengine, bool allow_empty = false)
5060  : dnnl::primitive_desc(
5061  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5062 
5070  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5071  dnnl::prop_kind::forward_training,
5072  dnnl::prop_kind::forward_inference) {}
5073 
5075  memory::desc src_desc() const { return base::src_desc(0); }
5076 
5078  memory::desc dst_desc() const { return base::dst_desc(0); }
5079 
5082  };
5083 
5085  lrn_forward() = default;
5086 
5091 };
5092 
5094 struct lrn_backward : public primitive {
5096  struct desc {
5097  dnnl_lrn_desc_t data;
5098 
5111  desc(algorithm aalgorithm, const memory::desc &data_desc,
5112  const memory::desc &diff_data_desc, memory::dim local_size,
5113  float alpha, float beta, float k = 1.f) {
5115  dnnl_lrn_backward_desc_init(&data, convert_to_c(aalgorithm),
5116  &diff_data_desc.data, &data_desc.data, local_size,
5117  alpha, beta, k),
5118  "could not create a descriptor for a lrn backward "
5119  "propagation primitive");
5120  }
5121  };
5122 
5126  primitive_desc() = default;
5127 
5140  primitive_desc(const desc &adesc, const engine &aengine,
5141  const lrn_forward::primitive_desc &hint_fwd_pd,
5142  bool allow_empty = false)
5143  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5144  hint_fwd_pd.get(), allow_empty) {}
5145 
5159  primitive_desc(const desc &adesc, const primitive_attr &attr,
5160  const engine &aengine,
5161  const lrn_forward::primitive_desc &hint_fwd_pd,
5162  bool allow_empty = false)
5163  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5164  hint_fwd_pd.get(), allow_empty) {}
5165 
5173  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5174  dnnl::prop_kind::backward_data) {}
5175 
5178 
5181 
5184  };
5185 
5187  lrn_backward() = default;
5188 
5193 };
5194 
5196 
5204 
5206 struct pooling_forward : public primitive {
5208  struct desc {
5209  dnnl_pooling_desc_t data;
5210 
5235  desc(prop_kind aprop_kind, algorithm aalgorithm,
5236  const memory::desc &src_desc, const memory::desc &dst_desc,
5237  const memory::dims &strides, const memory::dims &kernel,
5238  const memory::dims &padding_l, const memory::dims &padding_r) {
5239  memory::validate_dims(strides, src_desc.data.ndims - 2);
5240  memory::validate_dims(kernel, src_desc.data.ndims - 2);
5241  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5242  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5244  dnnl::convert_to_c(aprop_kind),
5245  convert_to_c(aalgorithm), &src_desc.data,
5246  &dst_desc.data, &strides[0], &kernel[0],
5247  &padding_l[0], &padding_r[0]),
5248  "could not create a descriptor for a pooling forward "
5249  "propagation primitive");
5250  }
5251  };
5252 
5256  primitive_desc() = default;
5257 
5267  primitive_desc(const desc &adesc, const engine &aengine,
5268  bool allow_empty = false)
5269  : dnnl::primitive_desc(
5270  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5271 
5282  primitive_desc(const desc &adesc, const primitive_attr &attr,
5283  const engine &aengine, bool allow_empty = false)
5284  : dnnl::primitive_desc(
5285  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5286 
5294  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5295  dnnl::prop_kind::forward_training,
5296  dnnl::prop_kind::forward_inference) {}
5297 
5299  memory::desc src_desc() const { return base::src_desc(0); }
5300 
5302  memory::desc dst_desc() const { return base::dst_desc(0); }
5303 
5306  };
5307 
5309  pooling_forward() = default;
5310 
5315 };
5316 
5318 struct pooling_backward : public primitive {
5320  struct desc {
5321  dnnl_pooling_desc_t data;
5322 
5344  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
5345  const memory::desc &diff_dst_desc, const memory::dims &strides,
5346  const memory::dims &kernel, const memory::dims &padding_l,
5347  const memory::dims &padding_r) {
5348  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
5349  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
5350  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
5351  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
5354  convert_to_c(aalgorithm), &diff_src_desc.data,
5355  &diff_dst_desc.data, &strides[0], &kernel[0],
5356  &padding_l[0], &padding_r[0]),
5357  "could not create a descriptor for a pooling backward "
5358  "propagation primitive");
5359  }
5360  };
5361 
5365  primitive_desc() = default;
5366 
5379  primitive_desc(const desc &adesc, const engine &aengine,
5380  const pooling_forward::primitive_desc &hint_fwd_pd,
5381  bool allow_empty = false)
5382  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5383  hint_fwd_pd.get(), allow_empty) {}
5384 
5398  primitive_desc(const desc &adesc, const primitive_attr &attr,
5399  const engine &aengine,
5400  const pooling_forward::primitive_desc &hint_fwd_pd,
5401  bool allow_empty = false)
5402  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5403  hint_fwd_pd.get(), allow_empty) {}
5404 
5412  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5413  dnnl::prop_kind::backward_data) {}
5414 
5417 
5420 
5423  };
5424 
5426  pooling_backward() = default;
5427 
5432 };
5433 
5435 
5456 
5458 struct eltwise_forward : public primitive {
5460  struct desc {
5461  dnnl_eltwise_desc_t data;
5462 
5475  desc(prop_kind aprop_kind, algorithm aalgorithm,
5476  const memory::desc &data_desc, float alpha = 0,
5477  float beta = 0) {
5479  dnnl::convert_to_c(aprop_kind),
5480  dnnl::convert_to_c(aalgorithm),
5481  &data_desc.data, alpha, beta),
5482  "could not create a descriptor for an eltwise forward "
5483  "propagation primitive");
5484  }
5485  };
5486 
5490  primitive_desc() = default;
5491 
5502  primitive_desc(const desc &adesc, const engine &aengine,
5503  bool allow_empty = false)
5504  : dnnl::primitive_desc(
5505  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5506 
5518  primitive_desc(const desc &adesc, const primitive_attr &attr,
5519  const engine &aengine, bool allow_empty = false)
5520  : dnnl::primitive_desc(
5521  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5522 
5530  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5531  dnnl::prop_kind::forward_training,
5532  dnnl::prop_kind::forward_inference) {}
5533 
5535  memory::desc src_desc() const { return base::src_desc(0); }
5536 
5538  memory::desc dst_desc() const { return base::dst_desc(0); }
5539  };
5540 
5542  eltwise_forward() = default;
5543 
5548 };
5549 
5551 struct eltwise_backward : public primitive {
5553  struct desc {
5554  dnnl_eltwise_desc_t data;
5555 
5567  desc(algorithm aalgorithm, const memory::desc &diff_data_desc,
5568  const memory::desc &data_desc, float alpha = 0,
5569  float beta = 0) {
5572  dnnl::convert_to_c(aalgorithm),
5573  &diff_data_desc.data, &data_desc.data, alpha, beta),
5574  "could not create a descriptor for an eltwise backward "
5575  "propagation primitive");
5576  }
5577  };
5578 
5582  primitive_desc() = default;
5583 
5597  primitive_desc(const desc &adesc, const engine &aengine,
5598  const eltwise_forward::primitive_desc &hint_fwd_pd,
5599  bool allow_empty = false)
5600  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5601  hint_fwd_pd.get(), allow_empty) {}
5602 
5617  primitive_desc(const desc &adesc, const primitive_attr &attr,
5618  const engine &aengine,
5619  const eltwise_forward::primitive_desc &hint_fwd_pd,
5620  bool allow_empty = false)
5621  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5622  hint_fwd_pd.get(), allow_empty) {}
5623 
5631  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5632  dnnl::prop_kind::backward_data) {}
5633 
5635  memory::desc src_desc() const { return base::src_desc(0); }
5636 
5639 
5642  };
5643 
5645  eltwise_backward() = default;
5646 
5651 };
5652 
5654 
5662 
5664 struct softmax_forward : public primitive {
5666  struct desc {
5667  dnnl_softmax_desc_t data;
5668 
5670  desc() = default;
5671 
5680  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5681  int softmax_axis) {
5683  dnnl::convert_to_c(aprop_kind),
5684  &data_desc.data, softmax_axis),
5685  "could not create a descriptor for a softmax forward "
5686  "propagation primitive");
5687  }
5688  };
5689 
5693  primitive_desc() = default;
5694 
5705  primitive_desc(const desc &adesc, const engine &aengine,
5706  bool allow_empty = false)
5707  : dnnl::primitive_desc(
5708  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5709 
5721  primitive_desc(const desc &adesc, const primitive_attr &attr,
5722  const engine &aengine, bool allow_empty = false)
5723  : dnnl::primitive_desc(
5724  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5725 
5733  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5734  dnnl::prop_kind::forward_training,
5735  dnnl::prop_kind::forward_inference) {}
5736 
5738  memory::desc src_desc() const { return base::src_desc(0); }
5739 
5741  memory::desc dst_desc() const { return base::dst_desc(0); }
5742  };
5743 
5745  softmax_forward() = default;
5746 
5751 };
5752 
5754 struct softmax_backward : public primitive {
5756  struct desc {
5757  dnnl_softmax_desc_t data;
5758 
5760  desc() = default;
5761 
5769  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5770  int softmax_axis) {
5772  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
5773  &data_desc.data, softmax_axis),
5774  "could not create a descriptor for a softmax backward "
5775  "propagation primitive");
5776  }
5777  };
5778 
5782  primitive_desc() = default;
5783 
5797  primitive_desc(const desc &adesc, const engine &aengine,
5798  const softmax_forward::primitive_desc &hint_fwd_pd,
5799  bool allow_empty = false)
5800  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5801  hint_fwd_pd.get(), allow_empty) {}
5802 
5817  primitive_desc(const desc &adesc, const primitive_attr &attr,
5818  const engine &aengine,
5819  const softmax_forward::primitive_desc &hint_fwd_pd,
5820  bool allow_empty = false)
5821  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5822  hint_fwd_pd.get(), allow_empty) {}
5823 
5831  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5832  dnnl::prop_kind::backward_data) {}
5833 
5835  memory::desc dst_desc() const { return base::dst_desc(0); }
5836 
5839 
5842  };
5843 
5845  softmax_backward() = default;
5846 
5851 };
5852 
5854 
5862 
5866  struct desc {
5868 
5870  desc() = default;
5871 
5880  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5881  int logsoftmax_axis) {
5883  dnnl::convert_to_c(aprop_kind),
5884  &data_desc.data, logsoftmax_axis),
5885  "could not create a descriptor for a logsoftmax forward "
5886  "propagation primitive");
5887  }
5888  };
5889 
5893  primitive_desc() = default;
5894 
5905  primitive_desc(const desc &adesc, const engine &aengine,
5906  bool allow_empty = false)
5907  : dnnl::primitive_desc(
5908  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5909 
5921  primitive_desc(const desc &adesc, const primitive_attr &attr,
5922  const engine &aengine, bool allow_empty = false)
5923  : dnnl::primitive_desc(
5924  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5925 
5933  : dnnl::primitive_desc(pd,
5934  // Logsoftmax and softmax share the implementation and
5935  // currently report the same primitive kind. Hence this
5936  // must be softmax and not logsoftmax.
5937  dnnl::primitive::kind::softmax,
5938  dnnl::prop_kind::forward_training,
5939  dnnl::prop_kind::forward_inference) {}
5940 
5942  memory::desc src_desc() const { return base::src_desc(0); }
5943 
5945  memory::desc dst_desc() const { return base::dst_desc(0); }
5946  };
5947 
5949  logsoftmax_forward() = default;
5950 
5955 };
5956 
5960  struct desc {
5962 
5964  desc() = default;
5965 
5973  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5974  int logsoftmax_axis) {
5976  &diff_data_desc.data, &data_desc.data,
5977  logsoftmax_axis),
5978  "could not create a descriptor for a logsoftmax backward "
5979  "propagation primitive");
5980  }
5981  };
5982 
5986  primitive_desc() = default;
5987 
6001  primitive_desc(const desc &adesc, const engine &aengine,
6002  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6003  bool allow_empty = false)
6004  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6005  hint_fwd_pd.get(), allow_empty) {}
6006 
6021  primitive_desc(const desc &adesc, const primitive_attr &attr,
6022  const engine &aengine,
6023  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6024  bool allow_empty = false)
6025  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6026  hint_fwd_pd.get(), allow_empty) {}
6027 
6035  : dnnl::primitive_desc(pd,
6036  // Logsoftmax and softmax share the implementation and
6037  // currently report the same primitive kind. Hence this
6038  // must be softmax and not logsoftmax.
6039  dnnl::primitive::kind::softmax,
6040  dnnl::prop_kind::backward_data) {}
6041 
6043  memory::desc dst_desc() const { return base::dst_desc(0); }
6044 
6047 
6050  };
6051 
6053  logsoftmax_backward() = default;
6054 
6059 };
6060 
6062 
6082 
6086  struct desc {
6088 
6103  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6104  normalization_flags flags) {
6107  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6108  epsilon, convert_to_c(flags)),
6109  "could not create a descriptor for a batch normalization "
6110  "forward propagation primitive");
6111  }
6112  };
6113 
6118  primitive_desc() = default;
6119 
6130  primitive_desc(const desc &adesc, const engine &aengine,
6131  bool allow_empty = false)
6132  : dnnl::primitive_desc(
6133  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6134 
6146  primitive_desc(const desc &adesc, const primitive_attr &attr,
6147  const engine &aengine, bool allow_empty = false)
6148  : dnnl::primitive_desc(
6149  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6150 
6158  : dnnl::primitive_desc(pd,
6159  dnnl::primitive::kind::batch_normalization,
6160  dnnl::prop_kind::forward_training,
6161  dnnl::prop_kind::forward_inference) {}
6162 
6164  memory::desc src_desc() const { return base::src_desc(0); }
6165 
6167  memory::desc dst_desc() const { return base::dst_desc(0); }
6168 
6171 
6174 
6177  memory::desc mean_desc() const { return stat_desc(mean); }
6178 
6181  memory::desc variance_desc() const { return stat_desc(var); }
6182 
6183  private:
6184  enum {
6185  mean = 1,
6186  var = 2,
6187  };
6188  memory::desc stat_desc(int kind) const {
6192  dnnl::convert_to_c(query::batch_normalization_d), 0,
6193  &p),
6194  "could not retrieve a descriptor from a primitive "
6195  "descriptor for batch normalization forward propagation "
6196  "primitive");
6197  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6198  : query::dst_md,
6199  kind);
6200  }
6201  };
6202 
6205 
6210 };
6211 
6215  struct desc {
6217 
6230  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6231  const memory::desc &data_desc, float epsilon,
6232  normalization_flags flags) {
6234  dnnl::convert_to_c(aprop_kind),
6235  &diff_data_desc.data, &data_desc.data,
6236  epsilon, convert_to_c(flags)),
6237  "could not create a descriptor for a batch normalization "
6238  "backward propagation primitive");
6239  }
6240  };
6241 
6246  primitive_desc() = default;
6247 
6261  primitive_desc(const desc &adesc, const engine &aengine,
6263  bool allow_empty = false)
6264  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6265  hint_fwd_pd.get(), allow_empty) {}
6266 
6281  primitive_desc(const desc &adesc, const primitive_attr &attr,
6282  const engine &aengine,
6284  bool allow_empty = false)
6285  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6286  hint_fwd_pd.get(), allow_empty) {}
6287 
6295  : dnnl::primitive_desc(pd,
6296  dnnl::primitive::kind::batch_normalization,
6297  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6298  }
6299 
6301  memory::desc src_desc() const { return base::src_desc(0); }
6302 
6305 
6307  memory::desc dst_desc() const { return base::dst_desc(0); }
6308 
6311 
6314 
6317  return base::diff_weights_desc(0);
6318  }
6319 
6321  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6322 
6325  return query_md(query::src_md, 2);
6326  }
6327 
6330  };
6331 
6334 
6339 };
6340 
6342 
6364 
6368  struct desc {
6370 
6382  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6383  const memory::desc &stat_desc, float epsilon,
6384  normalization_flags flags) {
6387  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6388  &stat_desc.data, epsilon, convert_to_c(flags)),
6389  "could not create a descriptor for a layer normalization "
6390  "forward propagation primitive");
6391  }
6392 
6403  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6404  normalization_flags flags) {
6407  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6408  nullptr, epsilon, convert_to_c(flags)),
6409  "could not create a descriptor for a layer normalization "
6410  "forward propagation primitive");
6411  }
6412  };
6413 
6418  primitive_desc() = default;
6419 
6430  primitive_desc(const desc &adesc, const engine &aengine,
6431  bool allow_empty = false)
6432  : dnnl::primitive_desc(
6433  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6434 
6446  primitive_desc(const desc &adesc, const primitive_attr &attr,
6447  const engine &aengine, bool allow_empty = false)
6448  : dnnl::primitive_desc(
6449  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6450 
6458  : dnnl::primitive_desc(pd,
6459  dnnl::primitive::kind::layer_normalization,
6460  dnnl::prop_kind::forward_training,
6461  dnnl::prop_kind::forward_inference) {}
6462 
6464  memory::desc src_desc() const { return base::src_desc(0); }
6465 
6467  memory::desc dst_desc() const { return base::dst_desc(0); }
6468 
6471 
6474 
6476  memory::desc mean_desc() const { return stat_desc(mean); }
6477 
6479  memory::desc variance_desc() const { return stat_desc(var); }
6480 
6481  private:
6482  enum {
6483  mean = 1,
6484  var = 2,
6485  };
6486  memory::desc stat_desc(int kind) const {
6490  dnnl::convert_to_c(query::layer_normalization_d), 0,
6491  &p),
6492  "could not retrieve a descriptor from a primitive "
6493  "descriptor for layer normalization forward propagation "
6494  "primitive");
6495  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6496  : query::dst_md,
6497  kind);
6498  }
6499  };
6500 
6503 
6508 };
6509 
6513  struct desc {
6515 
6529  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6530  const memory::desc &data_desc, const memory::desc &stat_desc,
6531  float epsilon, normalization_flags flags) {
6534  dnnl::convert_to_c(aprop_kind),
6535  &diff_data_desc.data, &data_desc.data,
6536  &stat_desc.data, epsilon, convert_to_c(flags)),
6537  "could not create a descriptor for a batch normalization "
6538  "backward propagation primitive");
6539  }
6540 
6553  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6554  const memory::desc &data_desc, float epsilon,
6555  normalization_flags flags) {
6557  dnnl::convert_to_c(aprop_kind),
6558  &diff_data_desc.data, &data_desc.data,
6559  nullptr, epsilon, convert_to_c(flags)),
6560  "could not create a descriptor for a batch normalization "
6561  "backward propagation primitive");
6562  }
6563  };
6564 
6569  primitive_desc() = default;
6570 
6584  primitive_desc(const desc &adesc, const engine &aengine,
6586  bool allow_empty = false)
6587  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6588  hint_fwd_pd.get(), allow_empty) {}
6589 
6604  primitive_desc(const desc &adesc, const primitive_attr &attr,
6605  const engine &aengine,
6607  bool allow_empty = false)
6608  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6609  hint_fwd_pd.get(), allow_empty) {}
6610 
6618  : dnnl::primitive_desc(pd,
6619  dnnl::primitive::kind::layer_normalization,
6620  dnnl::prop_kind::backward, dnnl::prop_kind::backward_data) {
6621  }
6622 
6624  memory::desc src_desc() const { return base::src_desc(0); }
6625 
6628 
6630  memory::desc dst_desc() const { return base::dst_desc(0); }
6631 
6634 
6637 
6640  return base::diff_weights_desc(0);
6641  }
6642 
6644  memory::desc mean_desc() const { return query_md(query::src_md, 1); }
6645 
6648  return query_md(query::src_md, 2);
6649  }
6650 
6653  };
6654 
6657 
6662 };
6663 
6665 
6673 
6677  struct desc {
6679 
6694  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6695  const memory::desc &weights_desc, const memory::desc &bias_desc,
6696  const memory::desc &dst_desc) {
6698  dnnl::convert_to_c(aprop_kind),
6699  &src_desc.data, &weights_desc.data,
6700  &bias_desc.data, &dst_desc.data),
6701  "could not create a descriptor for an inner product "
6702  "forward propagation primitive");
6703  }
6704 
6718  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6719  const memory::desc &weights_desc,
6720  const memory::desc &dst_desc) {
6723  dnnl::convert_to_c(aprop_kind), &src_desc.data,
6724  &weights_desc.data, nullptr, &dst_desc.data),
6725  "could not create a descriptor for an inner product "
6726  "forward propagation primitive");
6727  }
6728  };
6729 
6733  primitive_desc() = default;
6734 
6745  primitive_desc(const desc &adesc, const engine &aengine,
6746  bool allow_empty = false)
6747  : dnnl::primitive_desc(
6748  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6749 
6761  primitive_desc(const desc &adesc, const primitive_attr &attr,
6762  const engine &aengine, bool allow_empty = false)
6763  : dnnl::primitive_desc(
6764  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6765 
6773  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6774  dnnl::prop_kind::forward_training,
6775  dnnl::prop_kind::forward_inference) {}
6776 
6778  memory::desc src_desc() const { return base::src_desc(0); }
6779 
6782 
6784  memory::desc dst_desc() const { return base::dst_desc(0); }
6785 
6788  };
6789 
6792 
6797 };
6798 
6802  struct desc {
6804 
6815  desc(const memory::desc &diff_src_desc,
6816  const memory::desc &weights_desc,
6817  const memory::desc &diff_dst_desc) {
6819  &diff_src_desc.data, &weights_desc.data,
6820  &diff_dst_desc.data),
6821  "could not create a descriptor for an inner product "
6822  "backward propagation primitive");
6823  }
6824  };
6825 
6830  primitive_desc() = default;
6831 
6845  primitive_desc(const desc &adesc, const engine &aengine,
6846  const inner_product_forward::primitive_desc &hint_fwd_pd,
6847  bool allow_empty = false)
6848  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6849  hint_fwd_pd.get(), allow_empty) {}
6850 
6865  primitive_desc(const desc &adesc, const primitive_attr &attr,
6866  const engine &aengine,
6867  const inner_product_forward::primitive_desc &hint_fwd_pd,
6868  bool allow_empty = false)
6869  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6870  hint_fwd_pd.get(), allow_empty) {}
6871 
6879  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6880  dnnl::prop_kind::backward_data) {}
6881 
6884 
6887 
6890  };
6891 
6894 
6899 };
6900 
6904  struct desc {
6906 
6918  desc(const memory::desc &src_desc,
6919  const memory::desc &diff_weights_desc,
6920  const memory::desc &diff_bias_desc,
6921  const memory::desc &diff_dst_desc) {
6924  &src_desc.data, &diff_weights_desc.data,
6925  &diff_bias_desc.data, &diff_dst_desc.data),
6926  "could not create a descriptor for an inner product "
6927  "weights gradient primitive");
6928  }
6929 
6940  desc(const memory::desc &src_desc,
6941  const memory::desc &diff_weights_desc,
6942  const memory::desc &diff_dst_desc) {
6945  &src_desc.data, &diff_weights_desc.data, nullptr,
6946  &diff_dst_desc.data),
6947  "could not create a descriptor for an inner product "
6948  "weights gradient primitive");
6949  }
6950  };
6951 
6955  primitive_desc() = default;
6956 
6970  primitive_desc(const desc &adesc, const engine &aengine,
6971  const inner_product_forward::primitive_desc &hint_fwd_pd,
6972  bool allow_empty = false)
6973  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6974  hint_fwd_pd.get(), allow_empty) {}
6975 
6990  primitive_desc(const desc &adesc, const primitive_attr &attr,
6991  const engine &aengine,
6992  const inner_product_forward::primitive_desc &hint_fwd_pd,
6993  bool allow_empty = false)
6994  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6995  hint_fwd_pd.get(), allow_empty) {}
6996 
7004  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7005  dnnl::prop_kind::backward_weights) {}
7006 
7008  memory::desc src_desc() const { return base::src_desc(0); }
7009 
7012  return base::diff_weights_desc(0);
7013  }
7014 
7017 
7020  return base::diff_weights_desc(1);
7021  }
7022  };
7023 
7026 
7031 };
7032 
7034 
7042 
7045  using primitive_desc::primitive_desc;
7046 
7049 
7058  dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
7059  : rnn_primitive_desc_base(pd, aprop_kind, aprop_kind, cell_kind) {}
7060 
7065  }
7066 
7073  }
7074 
7079  }
7080 
7085  }
7086 
7091  }
7092 
7097  }
7098 
7103  }
7104 
7111  }
7112 
7117  }
7118 
7125  }
7126 
7131  }
7132 
7137  }
7138 
7145  }
7146 
7151  }
7152 
7157  }
7158 
7163  }
7164 
7168  return base::query_md(
7170  }
7171 
7175  return base::query_md(
7177  }
7178 
7185  }
7186 
7191  }
7192 
7199  }
7200 
7205  }
7206 
7207 protected:
7208  using rnn_base = rnn_primitive_desc_base;
7209 
7210  // (Deliberately not using doxygen comments)
7211  //
7212  // Constructs an RNN primitive descriptor base from a C API primitive
7213  // descriptor while checking that it actually describes the expected
7214  // primitive by comparing propagation and primitive kinds. Caller can
7215  // pass two options propagation kinds. This is typically used to check
7216  // that propagation kind is inference or training forward propagation.
7217  //
7218  // @param pd C API primitive descriptor.
7219  // @param prop_kind1 Expected propagation kind.
7220  // @param prop_kind2 Expected propagation kind.
7221  // @param cell_kind Expected cell kind.
7223  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
7224  dnnl::algorithm cell_kind) {
7225  dnnl_rnn_desc_t *rnn_d;
7226  dnnl_status_t rc;
7227  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
7228  error::wrap_c_api(rc,
7229  "could not retrieve a descriptor from a primitive descriptor "
7230  "for an RNN primitive");
7231 
7232  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
7233  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
7234  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
7235 
7236  bool ok = rnn_d->primitive_kind == dnnl_rnn
7237  && (rnn_d->prop_kind == c_prop_kind1
7238  || rnn_d->prop_kind == c_prop_kind2)
7239  && rnn_d->cell_kind == c_cell_kind;
7240 
7241  if (!ok)
7242  DNNL_THROW_ERROR(dnnl_invalid_arguments,
7243  "mismatch between expected and provided descriptors for an "
7244  "RNN primitive");
7245 
7246  reset_with_clone(pd);
7247  }
7248 };
7249 
7253  struct desc {
7254  dnnl_rnn_desc_t data;
7255 
7296  desc(prop_kind aprop_kind, algorithm activation,
7297  rnn_direction direction, const memory::desc &src_layer_desc,
7298  const memory::desc &src_iter_desc,
7299  const memory::desc &weights_layer_desc,
7300  const memory::desc &weights_iter_desc,
7301  const memory::desc &bias_desc,
7302  const memory::desc &dst_layer_desc,
7303  const memory::desc &dst_iter_desc,
7304  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7305  float beta = 0.0f) {
7308  dnnl::convert_to_c(aprop_kind),
7309  dnnl::convert_to_c(activation),
7310  dnnl::convert_to_c(direction), &src_layer_desc.data,
7311  &src_iter_desc.data, &weights_layer_desc.data,
7312  &weights_iter_desc.data, &bias_desc.data,
7313  &dst_layer_desc.data, &dst_iter_desc.data,
7314  dnnl::convert_to_c(flags), alpha, beta),
7315  "could not create a descriptor for a vanilla RNN forward "
7316  "propagation primitive");
7317  }
7318  };
7319 
7323  primitive_desc() = default;
7324 
7335  primitive_desc(const desc &adesc, const engine &aengine,
7336  bool allow_empty = false)
7338  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7339 
7351  primitive_desc(const desc &adesc, const primitive_attr &attr,
7352  const engine &aengine, bool allow_empty = false)
7354  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7355 
7363  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
7364  dnnl::prop_kind::forward_inference,
7365  dnnl::algorithm::vanilla_rnn) {}
7366 
7369  return rnn_base::src_layer_desc();
7370  }
7371 
7374 
7378  }
7379 
7382  return rnn_base::weights_iter_desc();
7383  }
7384 
7387 
7390  return rnn_base::dst_layer_desc();
7391  }
7392 
7395 
7398  return rnn_base::workspace_desc();
7399  }
7400  };
7401 
7403  vanilla_rnn_forward() = default;
7404 
7409 };
7410 
7414  struct desc {
7415  dnnl_rnn_desc_t data;
7416 
7469  desc(prop_kind aprop_kind, algorithm activation,
7470  rnn_direction direction, const memory::desc &src_layer_desc,
7471  const memory::desc &src_iter_desc,
7472  const memory::desc &weights_layer_desc,
7473  const memory::desc &weights_iter_desc,
7474  const memory::desc &bias_desc,
7475  const memory::desc &dst_layer_desc,
7476  const memory::desc &dst_iter_desc,
7477  const memory::desc &diff_src_layer_desc,
7478  const memory::desc &diff_src_iter_desc,
7479  const memory::desc &diff_weights_layer_desc,
7480  const memory::desc &diff_weights_iter_desc,
7481  const memory::desc &diff_bias_desc,
7482  const memory::desc &diff_dst_layer_desc,
7483  const memory::desc &diff_dst_iter_desc,
7484  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7485  float beta = 0.0f) {
7488  dnnl::convert_to_c(aprop_kind),
7489  dnnl::convert_to_c(activation),
7490  dnnl::convert_to_c(direction), &src_layer_desc.data,
7491  &src_iter_desc.data, &weights_layer_desc.data,
7492  &weights_iter_desc.data, &bias_desc.data,
7493  &dst_layer_desc.data, &dst_iter_desc.data,
7494  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7495  &diff_weights_layer_desc.data,
7496  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7497  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7498  dnnl::convert_to_c(flags), alpha, beta),
7499  "could not create a descriptor for a vanilla RNN backward "
7500  "propagation primitive");
7501  }
7502  };
7503 
7507  primitive_desc() = default;
7508 
7522  primitive_desc(const desc &adesc, const engine &aengine,
7523  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7524  bool allow_empty = false)
7525  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
7526  hint_fwd_pd.get(), allow_empty) {}
7527 
7542  primitive_desc(const desc &adesc, const primitive_attr &attr,
7543  const engine &aengine,
7544  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7545  bool allow_empty = false)
7546  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
7547  hint_fwd_pd.get(), allow_empty) {}
7548 
7556  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
7557  dnnl::algorithm::vanilla_rnn) {}
7558 
7561  return rnn_base::src_layer_desc();
7562  }
7563 
7566 
7570  }
7571 
7574  return rnn_base::weights_iter_desc();
7575  }
7576 
7579 
7582  return rnn_base::dst_layer_desc();
7583  }
7584 
7587 
7590  return rnn_base::workspace_desc();
7591  }
7592 
7596  }
7597 
7601  }
7602 
7606  }
7607 
7611  }
7612 
7615  return rnn_base::diff_bias_desc();
7616  }
7617 
7621  }
7622 
7626  }
7627  };
7628 
7631 
7636 };
7637 
7639 struct lstm_forward : public primitive {
7641  struct desc {
7642  dnnl_rnn_desc_t data;
7643 
7692  desc(prop_kind aprop_kind, rnn_direction direction,
7693  const memory::desc &src_layer_desc,
7694  const memory::desc &src_iter_desc,
7695  const memory::desc &src_iter_c_desc,
7696  const memory::desc &weights_layer_desc,
7697  const memory::desc &weights_iter_desc,
7698  const memory::desc &weights_peephole_desc,
7699  const memory::desc &weights_projection_desc,
7700  const memory::desc &bias_desc,
7701  const memory::desc &dst_layer_desc,
7702  const memory::desc &dst_iter_desc,
7703  const memory::desc &dst_iter_c_desc,
7704  rnn_flags flags = rnn_flags::undef) {
7707  dnnl::convert_to_c(aprop_kind),
7708  dnnl::convert_to_c(direction), &src_layer_desc.data,
7709  &src_iter_desc.data, &src_iter_c_desc.data,
7710  &weights_layer_desc.data, &weights_iter_desc.data,
7711  &weights_peephole_desc.data,
7712  &weights_projection_desc.data, &bias_desc.data,
7713  &dst_layer_desc.data, &dst_iter_desc.data,
7714  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7715  "could not create a descriptor for an LSTM forward "
7716  "propagation primitive");
7717  }
7718 
7760  desc(prop_kind aprop_kind, rnn_direction direction,
7761  const memory::desc &src_layer_desc,
7762  const memory::desc &src_iter_desc,
7763  const memory::desc &src_iter_c_desc,
7764  const memory::desc &weights_layer_desc,
7765  const memory::desc &weights_iter_desc,
7766  const memory::desc &weights_peephole_desc,
7767  const memory::desc &bias_desc,
7768  const memory::desc &dst_layer_desc,
7769  const memory::desc &dst_iter_desc,
7770  const memory::desc &dst_iter_c_desc,
7771  rnn_flags flags = rnn_flags::undef) {
7774  dnnl::convert_to_c(aprop_kind),
7775  dnnl::convert_to_c(direction), &src_layer_desc.data,
7776  &src_iter_desc.data, &src_iter_c_desc.data,
7777  &weights_layer_desc.data, &weights_iter_desc.data,
7778  &weights_peephole_desc.data, &bias_desc.data,
7779  &dst_layer_desc.data, &dst_iter_desc.data,
7780  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7781  "could not create a descriptor for an LSTM forward "
7782  "propagation primitive");
7783  }
7784 
7821  desc(prop_kind aprop_kind, rnn_direction direction,
7822  const memory::desc &src_layer_desc,
7823  const memory::desc &src_iter_desc,
7824  const memory::desc &src_iter_c_desc,
7825  const memory::desc &weights_layer_desc,
7826  const memory::desc &weights_iter_desc,
7827  const memory::desc &bias_desc,
7828  const memory::desc &dst_layer_desc,
7829  const memory::desc &dst_iter_desc,
7830  const memory::desc &dst_iter_c_desc,
7831  rnn_flags flags = rnn_flags::undef) {
7834  dnnl::convert_to_c(aprop_kind),
7835  dnnl::convert_to_c(direction), &src_layer_desc.data,
7836  &src_iter_desc.data, &src_iter_c_desc.data,
7837  &weights_layer_desc.data, &weights_iter_desc.data,
7838  &bias_desc.data, &dst_layer_desc.data,
7839  &dst_iter_desc.data, &dst_iter_c_desc.data,
7840  dnnl::convert_to_c(flags)),
7841  "could not create a descriptor for an LSTM forward "
7842  "propagation primitive");
7843  }
7844  };
7845 
7849  primitive_desc() = default;
7850 
7860  primitive_desc(const desc &adesc, const engine &aengine,
7861  bool allow_empty = false)
7863  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7864 
7875  primitive_desc(const desc &adesc, const primitive_attr &attr,
7876  const engine &aengine, bool allow_empty = false)
7878  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7879 
7887  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
7888  dnnl::prop_kind::forward_inference,
7889  dnnl::algorithm::vanilla_lstm) {}
7890 
7893  return rnn_base::src_layer_desc();
7894  }
7895 
7898 
7901  return rnn_base::src_iter_c_desc();
7902  }
7903 
7907  }
7908 
7911  return rnn_base::weights_iter_desc();
7912  }
7913 
7917  }
7918 
7922  }
7923 
7926 
7929  return rnn_base::dst_layer_desc();
7930  }
7931 
7934 
7937  return rnn_base::dst_iter_c_desc();
7938  }
7939 
7942  return rnn_base::workspace_desc();
7943  }
7944  };
7945 
7947  lstm_forward() = default;
7948 
7953 };
7954 
7956 struct lstm_backward : public primitive {
7958  struct desc {
7959  dnnl_rnn_desc_t data;
7960 
8036  desc(prop_kind aprop_kind, rnn_direction direction,
8037  const memory::desc &src_layer_desc,
8038  const memory::desc &src_iter_desc,
8039  const memory::desc &src_iter_c_desc,
8040  const memory::desc &weights_layer_desc,
8041  const memory::desc &weights_iter_desc,
8042  const memory::desc &weights_peephole_desc,
8043  const memory::desc &weights_projection_desc,
8044  const memory::desc &bias_desc,
8045  const memory::desc &dst_layer_desc,
8046  const memory::desc &dst_iter_desc,
8047  const memory::desc &dst_iter_c_desc,
8048  const memory::desc &diff_src_layer_desc,
8049  const memory::desc &diff_src_iter_desc,
8050  const memory::desc &diff_src_iter_c_desc,
8051  const memory::desc &diff_weights_layer_desc,
8052  const memory::desc &diff_weights_iter_desc,
8053  const memory::desc &diff_weights_peephole_desc,
8054  const memory::desc &diff_weights_projection_desc,
8055  const memory::desc &diff_bias_desc,
8056  const memory::desc &diff_dst_layer_desc,
8057  const memory::desc &diff_dst_iter_desc,
8058  const memory::desc &diff_dst_iter_c_desc,
8059  rnn_flags flags = rnn_flags::undef) {
8062  dnnl::convert_to_c(aprop_kind),
8063  dnnl::convert_to_c(direction), &src_layer_desc.data,
8064  &src_iter_desc.data, &src_iter_c_desc.data,
8065  &weights_layer_desc.data, &weights_iter_desc.data,
8066  &weights_peephole_desc.data,
8067  &weights_projection_desc.data, &bias_desc.data,
8068  &dst_layer_desc.data, &dst_iter_desc.data,
8069  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8070  &diff_src_iter_desc.data,
8071  &diff_src_iter_c_desc.data,
8072  &diff_weights_layer_desc.data,
8073  &diff_weights_iter_desc.data,
8074  &diff_weights_peephole_desc.data,
8075  &diff_weights_projection_desc.data,
8076  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8077  &diff_dst_iter_desc.data,
8078  &diff_dst_iter_c_desc.data,
8079  dnnl::convert_to_c(flags)),
8080  "could not create a descriptor for an LSTM backward "
8081  "propagation primitive");
8082  }
8083 
8148  desc(prop_kind aprop_kind, rnn_direction direction,
8149  const memory::desc &src_layer_desc,
8150  const memory::desc &src_iter_desc,
8151  const memory::desc &src_iter_c_desc,
8152  const memory::desc &weights_layer_desc,
8153  const memory::desc &weights_iter_desc,
8154  const memory::desc &weights_peephole_desc,
8155  const memory::desc &bias_desc,
8156  const memory::desc &dst_layer_desc,
8157  const memory::desc &dst_iter_desc,
8158  const memory::desc &dst_iter_c_desc,
8159  const memory::desc &diff_src_layer_desc,
8160  const memory::desc &diff_src_iter_desc,
8161  const memory::desc &diff_src_iter_c_desc,
8162  const memory::desc &diff_weights_layer_desc,
8163  const memory::desc &diff_weights_iter_desc,
8164  const memory::desc &diff_weights_peephole_desc,
8165  const memory::desc &diff_bias_desc,
8166  const memory::desc &diff_dst_layer_desc,
8167  const memory::desc &diff_dst_iter_desc,
8168  const memory::desc &diff_dst_iter_c_desc,
8169  rnn_flags flags = rnn_flags::undef) {
8172  dnnl::convert_to_c(aprop_kind),
8173  dnnl::convert_to_c(direction), &src_layer_desc.data,
8174  &src_iter_desc.data, &src_iter_c_desc.data,
8175  &weights_layer_desc.data, &weights_iter_desc.data,
8176  &weights_peephole_desc.data, &bias_desc.data,
8177  &dst_layer_desc.data, &dst_iter_desc.data,
8178  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8179  &diff_src_iter_desc.data,
8180  &diff_src_iter_c_desc.data,
8181  &diff_weights_layer_desc.data,
8182  &diff_weights_iter_desc.data,
8183  &diff_weights_peephole_desc.data,
8184  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8185  &diff_dst_iter_desc.data,
8186  &diff_dst_iter_c_desc.data,
8187  dnnl::convert_to_c(flags)),
8188  "could not create a descriptor for an LSTM backward "
8189  "propagation primitive");
8190  }
8191 
8247  desc(prop_kind aprop_kind, rnn_direction direction,
8248  const memory::desc &src_layer_desc,
8249  const memory::desc &src_iter_desc,
8250  const memory::desc &src_iter_c_desc,
8251  const memory::desc &weights_layer_desc,
8252  const memory::desc &weights_iter_desc,
8253  const memory::desc &bias_desc,
8254  const memory::desc &dst_layer_desc,
8255  const memory::desc &dst_iter_desc,
8256  const memory::desc &dst_iter_c_desc,
8257  const memory::desc &diff_src_layer_desc,
8258  const memory::desc &diff_src_iter_desc,
8259  const memory::desc &diff_src_iter_c_desc,
8260  const memory::desc &diff_weights_layer_desc,
8261  const memory::desc &diff_weights_iter_desc,
8262  const memory::desc &diff_bias_desc,
8263  const memory::desc &diff_dst_layer_desc,
8264  const memory::desc &diff_dst_iter_desc,
8265  const memory::desc &diff_dst_iter_c_desc,
8266  rnn_flags flags = rnn_flags::undef) {
8269  dnnl::convert_to_c(aprop_kind),
8270  dnnl::convert_to_c(direction), &src_layer_desc.data,
8271  &src_iter_desc.data, &src_iter_c_desc.data,
8272  &weights_layer_desc.data, &weights_iter_desc.data,
8273  &bias_desc.data, &dst_layer_desc.data,
8274  &dst_iter_desc.data, &dst_iter_c_desc.data,
8275  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8276  &diff_src_iter_c_desc.data,
8277  &diff_weights_layer_desc.data,
8278  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8279  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8280  &diff_dst_iter_c_desc.data,
8281  dnnl::convert_to_c(flags)),
8282  "could not create a descriptor for an LSTM backward "
8283  "propagation primitive");
8284  }
8285  };
8286 
8290  primitive_desc() = default;
8291 
8304  primitive_desc(const desc &adesc, const engine &aengine,
8305  const lstm_forward::primitive_desc &hint_fwd_pd,
8306  bool allow_empty = false)
8307  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8308  hint_fwd_pd.get(), allow_empty) {}
8309 
8323  primitive_desc(const desc &adesc, const primitive_attr &attr,
8324  const engine &aengine,
8325  const lstm_forward::primitive_desc &hint_fwd_pd,
8326  bool allow_empty = false)
8327  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8328  hint_fwd_pd.get(), allow_empty) {}
8329 
8337  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8338  dnnl::algorithm::vanilla_lstm) {}
8339 
8342  return rnn_base::src_layer_desc();
8343  }
8344 
8347 
8350  return rnn_base::src_iter_c_desc();
8351  }
8352 
8356  }
8357 
8360  return rnn_base::weights_iter_desc();
8361  }
8362 
8366  }
8367 
8371  }
8372 
8375 
8378  return rnn_base::dst_layer_desc();
8379  }
8380 
8383 
8386  return rnn_base::dst_iter_c_desc();
8387  }
8388 
8391  return rnn_base::workspace_desc();
8392  }
8393 
8397  }
8398 
8402  }
8403 
8407  }
8408 
8412  }
8413 
8417  }
8418 
8422  }
8423 
8427  }
8428 
8431  return rnn_base::diff_bias_desc();
8432  }
8433 
8437  }
8438 
8442  }
8443 
8447  }
8448  };
8449 
8451  lstm_backward() = default;
8452 
8457 };
8458 
8460 struct gru_forward : public primitive {
8462  struct desc {
8463  dnnl_rnn_desc_t data;
8464 
8497  desc(prop_kind aprop_kind, rnn_direction direction,
8498  const memory::desc &src_layer_desc,
8499  const memory::desc &src_iter_desc,
8500  const memory::desc &weights_layer_desc,
8501  const memory::desc &weights_iter_desc,
8502  const memory::desc &bias_desc,
8503  const memory::desc &dst_layer_desc,
8504  const memory::desc &dst_iter_desc,
8505  rnn_flags flags = rnn_flags::undef) {
8508  dnnl::convert_to_c(aprop_kind),
8509  dnnl::convert_to_c(direction), &src_layer_desc.data,
8510  &src_iter_desc.data, &weights_layer_desc.data,
8511  &weights_iter_desc.data, &bias_desc.data,
8512  &dst_layer_desc.data, &dst_iter_desc.data,
8513  dnnl::convert_to_c(flags)),
8514  "could not create a descriptor for a GRU forward "
8515  "propagation primitive");
8516  }
8517  };
8518 
8522  primitive_desc() = default;
8523 
8533  primitive_desc(const desc &adesc, const engine &aengine,
8534  bool allow_empty = false)
8536  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8537 
8548  primitive_desc(const desc &adesc, const primitive_attr &attr,
8549  const engine &aengine, bool allow_empty = false)
8551  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8552 
8560  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8561  dnnl::prop_kind::forward_inference,
8562  dnnl::algorithm::vanilla_gru) {}
8563 
8566  return rnn_base::src_layer_desc();
8567  }
8568 
8571 
8575  }
8576 
8579  return rnn_base::weights_iter_desc();
8580  }
8581 
8584 
8587  return rnn_base::dst_layer_desc();
8588  }
8589 
8592 
8595  return rnn_base::workspace_desc();
8596  }
8597  };
8598 
8600  gru_forward() = default;
8601 
8606 };
8607 
8609 struct gru_backward : public primitive {
8611  struct desc {
8612  dnnl_rnn_desc_t data;
8613 
8658  desc(prop_kind aprop_kind, rnn_direction direction,
8659  const memory::desc &src_layer_desc,
8660  const memory::desc &src_iter_desc,
8661  const memory::desc &weights_layer_desc,
8662  const memory::desc &weights_iter_desc,
8663  const memory::desc &bias_desc,
8664  const memory::desc &dst_layer_desc,
8665  const memory::desc &dst_iter_desc,
8666  const memory::desc &diff_src_layer_desc,
8667  const memory::desc &diff_src_iter_desc,
8668  const memory::desc &diff_weights_layer_desc,
8669  const memory::desc &diff_weights_iter_desc,
8670  const memory::desc &diff_bias_desc,
8671  const memory::desc &diff_dst_layer_desc,
8672  const memory::desc &diff_dst_iter_desc,
8673  rnn_flags flags = rnn_flags::undef) {
8676  dnnl::convert_to_c(aprop_kind),
8677  dnnl::convert_to_c(direction), &src_layer_desc.data,
8678  &src_iter_desc.data, &weights_layer_desc.data,
8679  &weights_iter_desc.data, &bias_desc.data,
8680  &dst_layer_desc.data, &dst_iter_desc.data,
8681  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8682  &diff_weights_layer_desc.data,
8683  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8684  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8685  dnnl::convert_to_c(flags)),
8686  "could not create a descriptor for a GRU backward "
8687  "propagation primitive");
8688  }
8689  };
8690 
8694  primitive_desc() = default;
8695 
8708  primitive_desc(const desc &adesc, const engine &aengine,
8709  const gru_forward::primitive_desc &hint_fwd_pd,
8710  bool allow_empty = false)
8711  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8712  hint_fwd_pd.get(), allow_empty) {}
8713 
8727  primitive_desc(const desc &adesc, const primitive_attr &attr,
8728  const engine &aengine,
8729  const gru_forward::primitive_desc &hint_fwd_pd,
8730  bool allow_empty = false)
8731  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8732  hint_fwd_pd.get(), allow_empty) {}
8733 
8741  : rnn_primitive_desc_base(pd, dnnl::prop_kind::backward,
8742  dnnl::algorithm::vanilla_gru) {}
8743 
8746  return rnn_base::src_layer_desc();
8747  }
8748 
8751 
8755  }
8756 
8759  return rnn_base::weights_iter_desc();
8760  }
8761 
8764 
8767  return rnn_base::dst_layer_desc();
8768  }
8769 
8772 
8775  return rnn_base::workspace_desc();
8776  }
8777 
8781  }
8782 
8786  }
8787 
8791  }
8792 
8796  }
8797 
8800  return rnn_base::diff_bias_desc();
8801  }
8802 
8806  }
8807 
8811  }
8812  };
8813 
8815  gru_backward() = default;
8816 
8821 };
8822 
8824 struct lbr_gru_forward : public primitive {
8826  struct desc {
8827  dnnl_rnn_desc_t data;
8828 
8862  desc(prop_kind aprop_kind, rnn_direction direction,
8863  const memory::desc &src_layer_desc,
8864  const memory::desc &src_iter_desc,
8865  const memory::desc &weights_layer_desc,
8866  const memory::desc &weights_iter_desc,
8867  const memory::desc &bias_desc,
8868  const memory::desc &dst_layer_desc,
8869  const memory::desc &dst_iter_desc,
8870  rnn_flags flags = rnn_flags::undef) {
8873  dnnl::convert_to_c(aprop_kind),
8874  dnnl::convert_to_c(direction), &src_layer_desc.data,
8875  &src_iter_desc.data, &weights_layer_desc.data,
8876  &weights_iter_desc.data, &bias_desc.data,
8877  &dst_layer_desc.data, &dst_iter_desc.data,
8878  dnnl::convert_to_c(flags)),
8879  "could not create a descriptor for an LBR GRU forward "
8880  "propagation primitive");
8881  }
8882  };
8883 
8887  primitive_desc() = default;
8888 
8899  primitive_desc(const desc &adesc, const engine &aengine,
8900  bool allow_empty = false)
8902  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8903 
8915  primitive_desc(const desc &adesc, const primitive_attr &attr,
8916  const engine &aengine, bool allow_empty = false)
8918  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8919 
8927  : rnn_primitive_desc_base(pd, dnnl::prop_kind::forward_training,
8928  dnnl::prop_kind::forward_inference,
8929  dnnl::algorithm::lbr_gru) {}
8930 
8933  return rnn_base::src_layer_desc();
8934  }
8935 
8938 
8942  }
8943 
8946  return rnn_base::weights_iter_desc();
8947  }
8948 
8951 
8954  return rnn_base::dst_layer_desc();
8955  }
8956 
8959 
8962  return rnn_base::workspace_desc();
8963  }
8964  };
8965 
8967  lbr_gru_forward() = default;
8968 
8973 };
8974 
8976 struct lbr_gru_backward : public primitive {
8978  struct desc {
8979  dnnl_rnn_desc_t data;
8980 
9026  desc(prop_kind aprop_kind, rnn_direction direction,
9027  const memory::desc &src_layer_desc,
9028  const memory::desc &src_iter_desc,
9029  const memory::desc &weights_layer_desc,
9030  const memory::desc &weights_iter_desc,
9031  const memory::desc &bias_desc,
9032  const memory::desc &dst_layer_desc,
9033  const memory::desc &dst_iter_desc,
9034  const memory::desc &diff_src_layer_desc,
9035  const memory::desc &diff_src_iter_desc,
9036  const memory::desc &diff_weights_layer_desc,
9037  const memory::desc &diff_weights_iter_desc,
9038  const memory::desc &diff_bias_desc,
9039  const memory::desc &diff_dst_layer_desc,
9040  const memory::desc &diff_dst_iter_desc,
9041  rnn_flags flags = rnn_flags::undef) {
9044  dnnl::convert_to_c(aprop_kind),
9045  dnnl::convert_to_c(direction), &src_layer_desc.data,
9046  &src_iter_desc.data, &weights_layer_desc.data,
9047  &weights_iter_desc.data, &bias_desc.data,
9048  &dst_layer_desc.data, &dst_iter_desc.data,
9049  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9050  &diff_weights_layer_desc.data,
9051  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9052  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9053  dnnl::convert_to_c(flags)),
9054  "could not create a descriptor for an LBR GRU backward "
9055  "propagation primitive");
9056  }
9057  };
9058 
9062  primitive_desc() = default;
9063 
9077  primitive_desc(const desc &adesc, const engine &aengine,
9078  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9079  bool allow_empty = false)
9080  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9081  hint_fwd_pd.get(), allow_empty) {}
9082 
9097  primitive_desc(const desc &adesc, const primitive_attr &attr,
9098  const engine &aengine,
9099  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9100  bool allow_empty = false)
9101  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9102  hint_fwd_pd.get(), allow_empty) {}
9103 
9112  pd, dnnl::prop_kind::backward, dnnl::algorithm::lbr_gru) {}
9113 
9116  return rnn_base::src_layer_desc();
9117  }
9118 
9121 
9125  }
9126 
9129  return rnn_base::weights_iter_desc();
9130  }
9131 
9134 
9137  return rnn_base::dst_layer_desc();
9138  }
9139 
9142 
9145  return rnn_base::workspace_desc();
9146  }
9147 
9151  }
9152 
9156  }
9157 
9161  }
9162 
9166  }
9167 
9170  return rnn_base::diff_bias_desc();
9171  }
9172 
9176  }
9177 
9181  }
9182  };
9183 
9185  lbr_gru_backward() = default;
9186 
9191 };
9192 
9194 
9202 
9204 struct shuffle_forward : public primitive {
9206  struct desc {
9207  dnnl_shuffle_desc_t data;
9208 
9218  desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis,
9219  int group_size) {
9221  dnnl::convert_to_c(aprop_kind),
9222  &data_desc.data, axis, group_size),
9223  "could not create a descriptor for a shuffle forward "
9224  "propagation primitive");
9225  }
9226  };
9227 
9231  primitive_desc() = default;
9232 
9244  primitive_desc(const desc &adesc, const engine &aengine,
9245  const primitive_attr &attr = primitive_attr(),
9246  bool allow_empty = false)
9247  : dnnl::primitive_desc(
9248  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9249 
9257  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9258  dnnl::prop_kind::forward_training,
9259  dnnl::prop_kind::forward_inference) {}
9260 
9262  memory::desc src_desc() const { return base::src_desc(0); }
9263 
9265  memory::desc dst_desc() const { return base::dst_desc(0); }
9266  };
9267 
9269  shuffle_forward() = default;
9270 
9275 };
9276 
9278 struct shuffle_backward : public primitive {
9281  struct desc {
9282  dnnl_shuffle_desc_t data;
9283 
9291  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
9293  &diff_data_desc.data, axis, group_size),
9294  "could not create a descriptor for a shuffle backward "
9295  "propagation primitive");
9296  }
9297  };
9298 
9302  primitive_desc() = default;
9303 
9318  primitive_desc(const desc &adesc, const engine &aengine,
9319  const shuffle_forward::primitive_desc &hint_fwd_pd,
9320  const primitive_attr &attr = primitive_attr(),
9321  bool allow_empty = false)
9322  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9323  hint_fwd_pd.get(), allow_empty) {}
9324 
9332  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9333  dnnl::prop_kind::backward_data) {}
9334 
9337 
9340  };
9341 
9343  shuffle_backward() = default;
9344 
9349 };
9350 
9352 
9360 
9362 struct binary : public primitive {
9364  struct desc {
9367 
9369  desc() = default;
9370 
9378  desc(algorithm aalgorithm, const memory::desc &src0,
9379  const memory::desc &src1, const memory::desc &dst) {
9382  &src0.data, &src1.data, &dst.data),
9383  "could not create a descriptor for a binary operation "
9384  "primitive");
9385  }
9386  };
9387 
9391  primitive_desc() = default;
9392 
9402  primitive_desc(const desc &adesc, const engine &aengine,
9403  bool allow_empty = false)
9404  : dnnl::primitive_desc(
9405  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9406 
9417  primitive_desc(const desc &adesc, const primitive_attr &attr,
9418  const engine &aengine, bool allow_empty = false)
9419  : dnnl::primitive_desc(
9420  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9421 
9428 
9430  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
9431 
9433  memory::desc src0_desc() const { return base::src_desc(0); }
9434 
9436  memory::desc src1_desc() const { return base::src_desc(1); }
9437 
9439  memory::desc dst_desc() const { return base::dst_desc(0); }
9440  };
9441 
9443  binary() = default;
9444 
9448  binary(const primitive_desc &pd) : primitive(pd) {}
9449 };
9450 
9452 
9462 
9464 struct matmul : public primitive {
9466  struct desc {
9467  dnnl_matmul_desc_t data;
9468 
9474  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9475  const memory::desc &dst_desc) {
9477  dnnl_matmul_desc_init(&data, &src_desc.data,
9478  &weights_desc.data, nullptr, &dst_desc.data),
9479  "could not create a descriptor for a matmul primitive");
9480  }
9481 
9488  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9489  const memory::desc &bias_desc, const memory::desc &dst_desc) {
9490  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
9491  &weights_desc.data, &bias_desc.data,
9492  &dst_desc.data),
9493  "could not create a descriptor for a matmul primitive");
9494  }
9495  };
9496 
9500  primitive_desc() = default;
9501 
9510  primitive_desc(const desc &adesc, const engine &aengine,
9511  bool allow_empty = false)
9512  : dnnl::primitive_desc(
9513  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9514 
9524  primitive_desc(const desc &adesc, const primitive_attr &attr,
9525  const engine &aengine, bool allow_empty = false)
9526  : dnnl::primitive_desc(
9527  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9528 
9535 
9537  memory::desc src_desc() const { return query_md(query::src_md, 0); }
9538 
9541  return query_md(query::weights_md, 0);
9542  }
9543 
9546  return query_md(query::weights_md, 1);
9547  }
9548 
9550  memory::desc dst_desc() const { return query_md(query::dst_md, 0); }
9551  };
9552 
9554  matmul() = default;
9555 
9558  matmul(const primitive_desc &pd) : primitive(pd) {}
9559 };
9560 
9562 
9572 
9576  struct desc {
9578 
9594  desc(prop_kind aprop_kind, algorithm aalgorithm,
9595  const memory::desc &src_desc, const memory::desc &dst_desc) {
9597  dnnl::convert_to_c(aprop_kind),
9598  convert_to_c(aalgorithm), nullptr,
9599  &src_desc.data, &dst_desc.data),
9600  "could not create a resampling forward descriptor");
9601  }
9602 
9614  desc(prop_kind aprop_kind, algorithm aalgorithm,
9615  const std::vector<float> &factors,
9616  const memory::desc &src_desc) {
9617  memory::validate_dims(factors, src_desc.data.ndims - 2);
9619  dnnl::convert_to_c(aprop_kind),
9620  convert_to_c(aalgorithm), &factors[0],
9621  &src_desc.data, nullptr),
9622  "could not create a resampling forward descriptor");
9623  }
9624 
9641  desc(prop_kind aprop_kind, algorithm aalgorithm,
9642  const std::vector<float> &factors, const memory::desc &src_desc,
9643  const memory::desc &dst_desc) {
9644  if (!factors.empty())
9645  memory::validate_dims(factors, src_desc.data.ndims - 2);
9647  dnnl::convert_to_c(aprop_kind),
9648  convert_to_c(aalgorithm), factors.data(),
9649  &src_desc.data, &dst_desc.data),
9650  "could not create a resampling forward descriptor");
9651  }
9652  };
9653 
9657  primitive_desc() = default;
9658 
9669  primitive_desc(const desc &adesc, const engine &aengine,
9670  bool allow_empty = false)
9671  : dnnl::primitive_desc(
9672  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9673 
9685  primitive_desc(const desc &adesc, const primitive_attr &attr,
9686  const engine &aengine, bool allow_empty = false)
9687  : dnnl::primitive_desc(
9688  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9689 
9697  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9698  dnnl::prop_kind::forward_training,
9699  dnnl::prop_kind::forward_inference) {}
9700 
9702  memory::desc src_desc() const { return base::src_desc(0); }
9703 
9705  memory::desc dst_desc() const { return base::dst_desc(0); }
9706  };
9707 
9709  resampling_forward() = default;
9710 
9715 };
9716 
9720  struct desc {
9722 
9731  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
9732  const memory::desc &diff_dst_desc) {
9734  convert_to_c(aalgorithm), nullptr,
9735  &diff_src_desc.data, &diff_dst_desc.data),
9736  "could not create a resampling backward data descriptor");
9737  }
9738 
9748  desc(algorithm aalgorithm, const std::vector<float> &factors,
9749  const memory::desc &diff_src_desc,
9750  const memory::desc &diff_dst_desc) {
9751  if (!factors.empty())
9752  memory::validate_dims(factors, diff_src_desc.data.ndims - 2);
9754  convert_to_c(aalgorithm), factors.data(),
9755  &diff_src_desc.data, &diff_dst_desc.data),
9756  "could not create a resampling backward data descriptor");
9757  }
9758  };
9759 
9763  primitive_desc() = default;
9764 
9778  primitive_desc(const desc &adesc, const engine &aengine,
9779  const resampling_forward::primitive_desc &hint_fwd_pd,
9780  bool allow_empty = false)
9781  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
9782  hint_fwd_pd.get(), allow_empty) {}
9783 
9798  primitive_desc(const desc &adesc, const primitive_attr &attr,
9799  const engine &aengine,
9800  const resampling_forward::primitive_desc &hint_fwd_pd,
9801  bool allow_empty = false)
9802  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9803  hint_fwd_pd.get(), allow_empty) {}
9804 
9812  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9813  dnnl::prop_kind::backward_data) {}
9814 
9817 
9820  };
9821 
9823  resampling_backward() = default;
9824 
9829 };
9830 
9832 
9835 
9839  struct desc {
9841 
9868  desc(prop_kind aprop_kind, algorithm aalgorithm,
9869  const memory::desc &src_desc, const memory::desc &dst_desc,
9870  const memory::dims &strides, const memory::dims &kernel,
9871  const memory::dims &dilation, const memory::dims &padding_l,
9872  const memory::dims &padding_r) {
9873  memory::validate_dims(strides, src_desc.data.ndims - 2);
9874  memory::validate_dims(kernel, src_desc.data.ndims - 2);
9875  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
9876  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
9877  memory::validate_dims(dilation, src_desc.data.ndims - 2);
9880  dnnl::convert_to_c(aprop_kind),
9881  convert_to_c(aalgorithm), &src_desc.data,
9882  &dst_desc.data, &strides[0], &kernel[0],
9883  &dilation[0], &padding_l[0], &padding_r[0]),
9884  "could not create a descriptor for a pooling forward "
9885  "propagation primitive");
9886  }
9887  };
9888 
9892  primitive_desc() = default;
9893 
9904  primitive_desc(const desc &adesc, const engine &aengine,
9905  bool allow_empty = false)
9906  : dnnl::primitive_desc(
9907  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9908 
9920  primitive_desc(const desc &adesc, const primitive_attr &attr,
9921  const engine &aengine, bool allow_empty = false)
9922  : dnnl::primitive_desc(
9923  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9924 
9933  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling_v2,
9934  dnnl::prop_kind::forward_training,
9935  dnnl::prop_kind::forward_inference) {}
9936 
9938  memory::desc src_desc() const { return base::src_desc(0); }
9939 
9941  memory::desc dst_desc() const { return base::dst_desc(0); }
9942 
9945  };
9946 
9948  pooling_v2_forward() = default;
9949 
9955 };
9956 
9960  struct desc {
9962 
9986  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
9987  const memory::desc &diff_dst_desc, const memory::dims &strides,
9988  const memory::dims &kernel, const memory::dims &dilation,
9989  const memory::dims &padding_l, const memory::dims &padding_r) {
9990  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
9991  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
9992  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
9993  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
9994  memory::validate_dims(dilation, diff_src_desc.data.ndims - 2);
9997  convert_to_c(aalgorithm), &diff_src_desc.data,
9998  &diff_dst_desc.data, &strides[0], &kernel[0],
9999  &dilation[0], &padding_l[0], &padding_r[0]),
10000  "could not create a descriptor for a pooling backward "
10001  "propagation primitive");
10002  }
10003  };
10004 
10009  primitive_desc() = default;
10010 
10024  primitive_desc(const desc &adesc, const engine &aengine,
10025  const pooling_v2_forward::primitive_desc &hint_fwd_pd,
10026  bool allow_empty = false)
10027  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
10028  hint_fwd_pd.get(), allow_empty) {}
10029 
10044  primitive_desc(const desc &adesc, const primitive_attr &attr,
10045  const engine &aengine,
10046  const pooling_v2_forward::primitive_desc &hint_fwd_pd,
10047  bool allow_empty = false)
10048  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
10049  hint_fwd_pd.get(), allow_empty) {}
10050 
10059  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling_v2,
10060  dnnl::prop_kind::backward_data) {}
10061 
10064 
10067 
10070  };
10071 
10073  pooling_v2_backward() = default;
10074 
10080 };
10081 
10083 
10092 
10094 struct reduction : public primitive {
10096  struct desc {
10097  dnnl_reduction_desc_t data;
10098 
10100  desc() = default;
10101 
10119  desc(algorithm aalgorithm, const memory::desc &src_desc,
10120  const memory::desc &dst_desc, float p, float eps) {
10122  dnnl_reduction_desc_init(&data, convert_to_c(aalgorithm),
10123  &src_desc.data, &dst_desc.data, p, eps),
10124  "could not create a reduction descriptor");
10125  }
10126  };
10127 
10131  primitive_desc() = default;
10132 
10141  primitive_desc(const desc &adesc, const engine &aengine,
10142  bool allow_empty = false)
10143  : dnnl::primitive_desc(
10144  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
10145 
10155  primitive_desc(const desc &adesc, const primitive_attr &attr,
10156  const engine &aengine, bool allow_empty = false)
10157  : dnnl::primitive_desc(
10158  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
10159 
10166 
10168  memory::desc src_desc() const { return base::src_desc(0); }
10169 
10171  memory::desc dst_desc() const { return base::dst_desc(0); }
10172  };
10173 
10175  reduction() = default;
10176 
10179  reduction(const primitive_desc &pd) : primitive(pd) {}
10180 };
10181 
10183 
10185 
10191 
10194 
10196 enum class status {
10198  success = dnnl_success,
10200  out_of_memory = dnnl_out_of_memory,
10202  invalid_arguments = dnnl_invalid_arguments,
10204  unimplemented = dnnl_unimplemented,
10206  iterator_ends = dnnl_iterator_ends,
10208  runtime_error = dnnl_runtime_error,
10211 };
10212 
10214 inline status set_verbose(int level) {
10215  return static_cast<status>(dnnl_set_verbose(level));
10216 }
10217 
10219 inline const version_t *version() {
10220  return dnnl_version();
10221 }
10222 
10224 inline status set_jit_dump(int enable) {
10225  return static_cast<status>(dnnl_set_jit_dump(enable));
10226 }
10227 
10229 inline status set_jit_profiling_flags(unsigned flags) {
10230  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
10231 }
10232 
10234 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
10235  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
10236 }
10237 
10239 enum class cpu_isa {
10241  all = dnnl_cpu_isa_all,
10243  sse41 = dnnl_cpu_isa_sse41,
10245  avx = dnnl_cpu_isa_avx,
10247  avx2 = dnnl_cpu_isa_avx2,
10249  avx512_mic = dnnl_cpu_isa_avx512_mic,
10251  avx512_mic_4ops = dnnl_cpu_isa_avx512_mic_4ops,
10253  avx512_core = dnnl_cpu_isa_avx512_core,
10255  avx512_core_vnni = dnnl_cpu_isa_avx512_core_vnni,
10257  avx512_core_bf16 = dnnl_cpu_isa_avx512_core_bf16,
10260 };
10261 
10264  return static_cast<status>(
10265  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
10266 }
10267 
10270  return static_cast<cpu_isa>(dnnl_get_effective_cpu_isa());
10271 }
10272 
10274 
10280 
10284  int result = 0;
10286  "could not get primitive cache capacity");
10287  return result;
10288 }
10289 
10291 inline void set_primitive_cache_capacity(int capacity) {
10293  "could not set primitive cache capacity");
10294 }
10295 
10297 
10304 
10306 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10307  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10308  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
10309  return static_cast<status>(dnnl_sgemm(
10310  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
10311 }
10312 
10314 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10315  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10316  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10317  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10318  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
10319  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10320 }
10321 
10323 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10324  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10325  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10326  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10327  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
10328  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10329 }
10330 
10332 
10333 // implementation section
10334 
10337  dnnl_primitive_t result;
10339  "could not create a primitive");
10340  reset(result);
10341 }
10342 
10343 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
10344 
10345 inline void primitive::execute(const stream &astream,
10346  const std::unordered_map<int, memory> &args) const {
10347  std::vector<dnnl_exec_arg_t> c_args;
10348  c_args.reserve(args.size());
10349  for (const auto &a : args)
10350  c_args.push_back({a.first, a.second.get(true)});
10351 
10352  error::wrap_c_api(dnnl_primitive_execute(get(), astream.get(),
10353  (int)c_args.size(), c_args.data()),
10354  "could not execute a primitive");
10355 }
10357 
10358 #undef DNNL_DEFINE_BITMASK_OPS
10359 
10360 } // namespace dnnl
10361 
10363 namespace oneapi {
10365 namespace dnnl = ::dnnl;
10366 } // namespace oneapi
10367 
10369 
10370 #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:6845
dnnl_query_time_estimate_f64
@ dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:2235
dnnl_query_reorder_dst_engine
@ dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:2247
dnnl::memory::set_data_handle
void set_data_handle(void *handle) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2074
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:7594
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:10323
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:9718
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4719
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:9430
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:1930
dnnl::convolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3824
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:2788
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6507
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:7469
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7641
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:7203
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:7083
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:5850
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5835
dnnl::pooling_v2_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:9960
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:8583
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:4529
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:5078
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9389
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:702
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:8462
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:1934
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:3157
dnnl_query_pooling_d
@ dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:2259
dnnl::shuffle_backward
Shuffle backward propagation primitive.
Definition: dnnl.hpp:9278
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6677
dnnl::vanilla_rnn_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7578
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:8926
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:8445
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:6647
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7586
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:8809
dnnl::error::what
const char * what() const noexcept override
Returns the explanatory string.
Definition: dnnl.hpp:96
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:8794
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:2445
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:366
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8885
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:4012
dnnl_reduction_mul
@ dnnl_reduction_mul
Reduction using mul.
Definition: dnnl_types.h:973
dnnl::stream
An execution stream.
Definition: dnnl.hpp:975
dnnl::memory::desc::desc
desc(const dnnl_memory_desc_t &data)
Constructs a memory descriptor from a C API data structure.
Definition: dnnl.hpp:1787
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:2360
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:4502
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:4371
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:4216
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:5797
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:6694
dnnl_query_memory_consumption_s64
@ dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:2236
dnnl_s8
@ dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:74
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:433
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5302
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:2196
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:9533
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:9402
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:5754
dnnl::reduction::primitive_desc
Primitive descriptor for a reduction primitive.
Definition: dnnl.hpp:10129
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:10079
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:7412
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:7057
dnnl_query_logsoftmax_d
@ dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:2267
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:10314
dnnl::vanilla_rnn_backward::desc
Descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7414
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5177
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:8976
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:2036
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:9537
dnnl::lstm_forward::primitive_desc
Primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7847
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:5192
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:3750
DNNL_ARG_WEIGHTS_ITER
#define DNNL_ARG_WEIGHTS_ITER
A special mnemonic for RNN weights applied to the recurrent input.
Definition: dnnl_types.h:2054
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:5597
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:904
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:6718
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:7143
dnnl_query_reorder_src_engine
@ dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:2246
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:3233
dnnl::memory::memory
memory(const desc &md, const engine &aengine)
Constructs a memory object.
Definition: dnnl.hpp:2000
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8573
DNNL_ARG_WEIGHTS_PROJECTION
#define DNNL_ARG_WEIGHTS_PROJECTION
A special mnemonic for RNN weights applied to the projection weights.
Definition: dnnl_types.h:2066
dnnl::engine
An execution engine.
Definition: dnnl.hpp:859
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:6103
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:3464
dnnl::pooling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5419
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:5630
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:6796
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:2687
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:4699
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:4999
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:7011
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5553
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:9811
dnnl_query_rnn_d
@ dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:2264
DNNL_ARG_TO
#define DNNL_ARG_TO
A special mnemonic for reorder destination argument.
Definition: dnnl_types.h:2022
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:9868
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:1935
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:8410
dnnl::primitive::kind
kind
Kinds of primitives supported by the library.
Definition: dnnl.hpp:271
dnnl::gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8565
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:2188
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:10234
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5363
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8753
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:6661
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1721
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7933
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8611
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:8899
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:3208
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:6633
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:5547
dnnl::reduction
Reduction.
Definition: dnnl.hpp:10094
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:7397
dnnl::resampling_forward::desc
Descriptor for resampling forward propagation.
Definition: dnnl.hpp:9576
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5641
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1015
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:1773
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:8578
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:7167
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:5830
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3993
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:2236
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:8440
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:9136
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:9669
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:2927
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5551
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:8148
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:2256
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:1904
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:9464
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:9816
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8359
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:7095
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:3996
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:3955
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3818
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:7155
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6301
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:5458
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5422
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:3975
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:4965
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1643
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:2297
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:2226
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:5932
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:9696
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:2419
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:1800
dnnl::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:648
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1665
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:1649
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:7897
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:10239
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:5921
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:883
dnnl::memory::set_data_handle
void set_data_handle(void *handle, const stream &astream) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2058
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:4248
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:9466
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:7030
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8594
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:9256
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5030
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:9331
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:2909
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:3534
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:9179
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6467
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1609
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7928
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:6953
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:6457
dnnl_gpu
@ dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1865
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:5305
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5864
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:8658
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:8036
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:8779
dnnl::sum::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3471
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:9748
dnnl::rnn_primitive_desc_base::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7183
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:9641
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5460
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:1920
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:7555
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:7956
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6368
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:5538
dnnl_query_diff_weights_md
@ dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:2278
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:9778
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:8605
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:6617
dnnl::reduction::desc
Descriptor for reduction.
Definition: dnnl.hpp:10096
dnnl_query_prop_kind
@ dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:2249
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:8945
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8354
dnnl::pooling_forward::pooling_forward
pooling_forward(const primitive_desc &pd)
Constructs a pooling forward propagation primitive.
Definition: dnnl.hpp:5314
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:825
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:8460
dnnl_stream_in_order
@ dnnl_stream_in_order
In-order execution.
Definition: dnnl_types.h:2299
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:864
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:9169
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6313
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7376
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:8559
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:7692
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8341
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6181
dnnl::pooling_v2_forward::desc
Descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:9839
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:6898
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:9448
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:2398
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8932
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:210
dnnl::reduction::reduction
reduction(const primitive_desc &pd)
Constructs a reduction primitive.
Definition: dnnl.hpp:10179
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:9190
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:1114
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:3652
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:9378
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:10263
dnnl_rnn_desc_t::primitive_kind
dnnl_primitive_kind_t primitive_kind
The kind of primitive.
Definition: dnnl_types.h:1668
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6043
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:6146
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:8288
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:10007
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:6889
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:3019
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8763
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:3367
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:5043
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:9077
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:4586
dnnl_query_impl_info_str
@ dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:2244
dnnl_query_dst_md
@ dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:2279
dnnl_query_resampling_d
@ dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:2269
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:7135
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:2551
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:399
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5416
dnnl_query_inner_product_d
@ dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:2263
dnnl::vanilla_rnn_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7373
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:2134
dnnl_rnn_flags_undef
@ dnnl_rnn_flags_undef
Undefined RNN flags.
Definition: dnnl_types.h:1645
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:2254
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:8804
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9655
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:8497
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:2413
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6177
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5075
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:3007
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:2146
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:8425
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:7599
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7589
dnnl::lrn_forward::lrn_forward
lrn_forward(const primitive_desc &pd)
Constructs an LRN forward propagation primitive.
Definition: dnnl.hpp:5090
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:6281
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7386
dnnl::sum::primitive_desc
Primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3398
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:7821
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_bidirectional_concat
@ dnnl_bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1656
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:3264
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2962
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:6366
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4253
dnnl::deconvolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4962
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:2722
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:2122
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:6553
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:3182
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:915
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7581
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:3801
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:3701
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:6918
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:9761
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:2986
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:2750
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:9920
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:8740
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:9986
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:2334
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5488
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:3031
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:9614
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_version
const dnnl_version_t DNNL_API * dnnl_version(void)
Returns library version information.
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:9060
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5001
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5691
dnnl_query_layer_normalization_d
@ dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:2262
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:7296
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5180
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:5069
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:4628
dnnl::pooling_v2_forward
Pooling v2 (dilated pooling) forward propagation primitive.
Definition: dnnl.hpp:9837
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:6761
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3247
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:10283
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3244
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:2184
dnnl_ABcd8b8a
@ dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:288
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:6883
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2968
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8799
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:2992
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6416
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:735
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8591
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:10164
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:2140
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:2394
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8940
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6058
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:4723
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8958
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6778
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:5769
dnnl_stream_destroy
dnnl_status_t DNNL_API dnnl_stream_destroy(dnnl_stream_t stream)
Destroys an execution stream.
dnnl.h
C API.
DNNL_ARG_DIFF_BIAS
#define DNNL_ARG_DIFF_BIAS
Gradient (diff) of the bias tensor argument.
Definition: dnnl_types.h:2155
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:8304
DNNL_ARG_WEIGHTS_PEEPHOLE
#define DNNL_ARG_WEIGHTS_PEEPHOLE
A special mnemonic for RNN weights applied to the peephole weights.
Definition: dnnl_types.h:2060
dnnl::rnn_primitive_desc_base::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7071
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:3303
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:5960
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:866
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3571
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6046
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6215
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:6084
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:1859
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:7609
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6644
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:92
dnnl::gru_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8766
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:10063
dnnl::pooling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5299
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
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:6403
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:6904
dnnl_memory_desc_t::dims
dnnl_dims_t dims
Dimensions in the following order:
Definition: dnnl_types.h:1205
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:5664
dnnl_pooling
@ dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:829
dnnl::batch_normalization_backward
Batch normalization backward propagation primitive.
Definition: dnnl.hpp:6213
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:2260
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:6164
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:6886
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:6446
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:9097
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:2408
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:5235
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:7408
dnnl_iterator_ends
@ dnnl_iterator_ends
Primitive iterator passed over last primitive descriptor.
Definition: dnnl_types.h:49
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:5344
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1120
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:8727
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:4666
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:5172
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:5159
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8826
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::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:7335
dnnl_stream_create
dnnl_status_t DNNL_API dnnl_stream_create(dnnl_stream_t *stream, dnnl_engine_t engine, unsigned flags)
Creates an execution stream.
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:8323
dnnl::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4200
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6307
dnnl::lstm_forward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7915
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:9026
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:7161
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:5973
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:2013
dnnl::pooling_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5254
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:928
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:5732
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:6604
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:2095
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:10168
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:1661
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:2116
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:7941
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:10291
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7936
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4488
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:9524
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:8390
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6636
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9574
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:9731
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2004
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9265
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:7189
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:951
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:6902
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6476
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:9828
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:7077
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1195
dnnl_query_matmul_d
@ dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:2268
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:2119
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:2110
dnnl::gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8570
DNNL_ARG_SRC_LAYER
#define DNNL_ARG_SRC_LAYER
A special mnemonic for RNN input vector.
Definition: dnnl_types.h:1998
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:1902
dnnl_query_binary_d
@ dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:2266
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:9705
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:5017
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:4235
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:605
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:6800
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:3606
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9558
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:6321
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:6157
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:6675
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4707
dnnl_query_diff_dst_md
@ dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:2280
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:5958
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:8692
dnnl::pooling_v2_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:9890
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4535
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:9174
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:6940
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:5379
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:7604
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:9110
DNNL_ARG_BIAS
#define DNNL_ARG_BIAS
Bias tensor argument.
Definition: dnnl_types.h:2069
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:4957
dnnl::deconvolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4710
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:7886
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:6430
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5081
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:2377
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:7920
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:2253
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7560
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:9318
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:2670
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:362
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3771
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:7089
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:6584
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:8774
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:5535
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:5680
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:7565
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:1770
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6513
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8758
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:6021
dnnl_query_workspace_md
@ dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:2281
dnnl::lstm_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7892
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9550
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5635
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:9714
dnnl_query_deconvolution_d
@ dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:2255
DNNL_ARG_DST_ITER
#define DNNL_ARG_DST_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2030
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:7875
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:3812
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:8862
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:2152
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:7129
dnnl::handle::handle
handle(T t, bool weak=false)
Constructs a handle wrapper object from a C API handle.
Definition: dnnl.hpp:169
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:2485
dnnl::matmul::primitive_desc
Primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9498
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:10044
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6116
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9545
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:1508
dnnl_stream_default_flags
@ dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:2303
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:4924
DNNL_ARG_WEIGHTS_LAYER
#define DNNL_ARG_WEIGHTS_LAYER
A special mnemonic for RNN weights applied to the layer input.
Definition: dnnl_types.h:2048
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:6001
dnnl::pooling_v2_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:10066
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8349
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:4132
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6244
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5945
dnnl_query_reduction_d
@ dnnl_query_reduction_d
reduction descriptor
Definition: dnnl_types.h:2271
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:3305
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:2345
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1539
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:2980
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:2974
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:6511
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:8520
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:9958
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:6034
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:7624
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:2936
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:7123
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:6261
dnnl::layer_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6470
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:7394
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4256
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:4261
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:8364
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:10229
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:6382
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:1856
dnnl_query_num_of_outputs_s32
@ dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:2233
dnnl::binary::primitive_desc::src1_desc
memory::desc src1_desc() const
Returns the memory descriptor for source #1.
Definition: dnnl.hpp:9436
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:5206
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel Streaming SIMD Extensions 4.1 (Intel SSE4.1)
Definition: dnnl_types.h:2380
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::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:10306
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:2859
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:10196
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:8978
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:6627
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:2386
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:2403
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:3348
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:3843
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:7115
dnnl::handle::get
T get(bool allow_empty=false) const
Returns the underlying C API handle.
Definition: dnnl.hpp:185
dnnl::primitive_desc_base::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:2956
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:1572
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:10269
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:3159
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:9336
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:9362
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5096
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:4796
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4544
dnnl::inner_product_backward_data::desc
Descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6802
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_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:9141
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:84
dnnl::layer_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6473
dnnl::pooling_v2_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9938
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:9594
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:6479
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:8789
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:1926
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:9488
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1102
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:4686
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:7362
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:3321
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:7016
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8382
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:4907
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:5282
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:2566
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:9941
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:5058
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:6624
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:8430
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:5318
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4704
dnnl_stream_out_of_order
@ dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:2301
dnnl::inner_product_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6781
dnnl::primitive_desc
A base class for descriptors of all primitives that have an operation descriptor and that support ite...
Definition: dnnl.hpp:3489
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:8456
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:9932
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:9439
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:176
dnnl::softmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5741
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:6970
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:9164
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:7174
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:7619
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:979
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:7149
dnnl::pooling_v2_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9944
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:6329
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:8336
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:5411
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:9291
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:5183
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:5638
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6639
dnnl::pooling_v2_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:10069
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:4840
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.
oneapi
oneAPI namespace
Definition: dnnl.hpp:10363
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:7019
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:4419
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:7614
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:2275
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:3917
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:2261
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:9159
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:8784
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6049
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:2536
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5431
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9206
dnnl::reorder::execute
void execute(const stream &astream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:3276
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9262
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3374
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1913
dnnl::primitive_attr
Primitive attributes.
Definition: dnnl.hpp:2520
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:5750
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9144
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:6990
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6784
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9120
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:10141
dnnl::shuffle_backward::shuffle_backward
shuffle_backward(const primitive_desc &pd)
Constructs a shuffle backward propagation primitive.
Definition: dnnl.hpp:9348
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6828
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:2229
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:2089
dnnl_query_softmax_d
@ dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:2258
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1795
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:8961
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3846
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:9281
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5738
dnnl_cpu
@ dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1863
dnnl::memory
Memory object.
Definition: dnnl.hpp:1098
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:7197
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:2640
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:4754
dnnl_query_undef
@ dnnl_query_undef
no query
Definition: dnnl_types.h:2227
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:103
dnnl::eltwise_backward::eltwise_backward
eltwise_backward(const primitive_desc &pd)
Constructs an eltwise backward propagation primitive.
Definition: dnnl.hpp:5650
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:9417
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:8548
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:2945
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8377
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:6324
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:10214
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:2101
dnnl::batch_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6167
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6731
dnnl::handle
oneDNN C API handle wrapper class.
Definition: dnnl.hpp:136
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:5111
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:9244
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:8420
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:2900
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:3412
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7905
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:7003
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6086
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:9426
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:7568
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:9123
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:4886
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7063
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:4008
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:9798
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6310
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:4518
dnnl::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8824
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9819
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6338
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:10155
dnnl::vanilla_rnn_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7381
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7900
dnnl::memory::memory
memory(const desc &md, const engine &aengine, void *handle)
Constructs a memory object.
Definition: dnnl.hpp:1986
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:7101
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:2622
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:4278
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:5817
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5954
dnnl::handle::operator!=
bool operator!=(const handle &other) const
Inequality operator.
Definition: dnnl.hpp:220
dnnl::convolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:3830
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:5880
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2375
DNNL_ARG_SRC_ITER
#define DNNL_ARG_SRC_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:2007
dnnl::inner_product_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:6787
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:1953
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5320
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9229
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:4087
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:4044
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:10119
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:6865
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4541
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7253
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:9366
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:8533
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:8395
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:9133
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7008
dnnl_engine_destroy
dnnl_status_t DNNL_API dnnl_engine_destroy(dnnl_engine_t engine)
Destroys an engine.
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:3043
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:6567
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:3001
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:9300
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:4649
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:2251
dnnl_query_eltwise_d
@ dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:2257
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:4267
dnnl::engine::engine
engine(kind akind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:892
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9364
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4725
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:10058
dnnl::concat::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3371
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:7109
dnnl_reduction_desc_t
A descriptor of reduction operation.
Definition: dnnl_types.h:1823
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:120
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc(int idx) const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2918
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:9149
dnnl_query_num_of_inputs_s32
@ dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:2232
dnnl::memory::dims
std::vector< dim > dims
Vector of dimensions.
Definition: dnnl.hpp:1105
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5780
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4557
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6173
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:8435
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:5721
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:2733
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7368
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:6745
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8586
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:1718
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3821
dnnl::primitive
Base class for all computational primitives.
Definition: dnnl.hpp:269
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:7860
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:2390
dnnl::layer_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6630
dnnl::stream::get_engine
engine get_engine() const
Returns the associated engine.
Definition: dnnl.hpp:1006
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:5267
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:2012
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1139
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:3839
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:1945
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:9204
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward(const primitive_desc &pd)
Constructs an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8972
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:9685
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:3573
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:9474
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:1939
dnnl_bidirectional_sum
@ dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1659
dnnl::lstm_forward::lstm_forward
lstm_forward(const primitive_desc &pd)
Constructs an LSTM forward propagation primitive.
Definition: dnnl.hpp:7952
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:8415
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7925
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:74
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:8950
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:9540
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4014
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:4559
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8953
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:5518
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1747
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:9128
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:3239
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:7522
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:5398
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:2023
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:3785
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:3479
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:3382
dnnl_query_diff_src_md
@ dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:2276
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:2297
dnnl::vanilla_rnn_forward
Vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7251
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9115
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:8915
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7635
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9339
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:5475
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:2496
dnnl_pooling_v2_desc_t
A descriptor of a pooling (version 2) operation.
Definition: dnnl_types.h:1468
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4553
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:10219
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:3255
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:6772
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:1742
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:6815
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:2201
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8937
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:468
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3938
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8385
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:6529
dnnl::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6304
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:373
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:4973
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:10171
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:5705
dnnl_rnn_desc_t::prop_kind
dnnl_prop_kind_t prop_kind
The kind of propagation.
Definition: dnnl_types.h:1671
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:7760
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:9154
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:2230
dnnl_unidirectional_left2right
@ dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1651
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:5208
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:3228
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5580
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5866
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:9433
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:2102
dnnl::convolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3999
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:6209
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:8400
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:9274
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:3468
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:7542
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:2540
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:1725
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:2283
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:7351
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:1861
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:7044
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:2524
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:5124
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:849
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7639
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:6878
dnnl_cpu_isa_avx
@ dnnl_cpu_isa_avx
Intel Advanced Vector Extensions (Intel AVX)
Definition: dnnl_types.h:2383
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:2843
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:8745
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:2847
dnnl_query_scratchpad_md
@ dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:2282
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:4326
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7910
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6170
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:2880
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:5502
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6316
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:6230
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:4538
dnnl::stream::stream
stream(const engine &aengine, flags aflags=flags::default_flags)
Constructs a stream for the specified engine and with behavior controlled by the specified flags.
Definition: dnnl.hpp:997
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:2277
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:9904
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:10024
dnnl::layer_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6652
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:3442
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:4984
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:9510
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:5140
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:2835
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5756
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:4467
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:6130
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:2261
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:8708
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:9702
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:3988
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:7958
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:9954
dnnl::set_jit_dump
status set_jit_dump(int enable)
Configures dumping of JIT-generated code.
Definition: dnnl.hpp:10224
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8771
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5841
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7389
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:4292
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:5094
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:8247
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5942
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:1674
dnnl::softmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5838
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5666
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:9218
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:8405
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for an RNN backward propagation primitive.
Definition: dnnl.hpp:7505
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:3396
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5891
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:8369
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:8750
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:5567
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7321
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:5293
DNNL_ARG_FROM
#define DNNL_ARG_FROM
A special mnemonic for reorder source argument.
Definition: dnnl_types.h:2001
dnnl_unidirectional_right2left
@ dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1653
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:5905
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:8820
dnnl::deconvolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4970
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6464
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:5984
dnnl_query_scratchpad_engine
@ dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:2241
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:3874
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:2821
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:2024
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:4179
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9720
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:4944
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:8609
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:5617
dnnl_query_exec_arg_md
@ dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:2283
dnnl::lstm_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8374
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:8346
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4294
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:6294
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:5529
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7573
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.