Deep Neural Network Library (DNNL)  1.2.2
Performance library for Deep Learning
dnnl.hpp
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright 2016-2019 Intel Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *******************************************************************************/
16 
19 
20 #ifndef DNNL_HPP
21 #define DNNL_HPP
22 
23 #include "dnnl_config.h"
24 
26 #include <algorithm>
27 #include <cstdlib>
28 #include <iterator>
29 #include <memory>
30 #include <string>
31 #include <vector>
32 #include <unordered_map>
33 
34 #include "dnnl.h"
35 
36 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
37 #include <CL/cl.h>
38 #endif
39 
41 // __cpp_exceptions is referred from
42 // https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html
43 // gcc < 5 does not define __cpp_exceptions but __EXCEPTIONS,
44 // Microsoft C++ Compiler does not provide an option to disable exceptions
45 #ifndef DNNL_ENABLE_EXCEPTIONS
46 #if __cpp_exceptions || __EXCEPTIONS \
47  || (defined(_MSC_VER) && !defined(__clang__))
48 #define DNNL_ENABLE_EXCEPTIONS 1
49 #else
50 #define DNNL_ENABLE_EXCEPTIONS 0
51 #endif
52 #endif
53 
54 #if defined(__GNUC__) || defined(__clang__)
55 #define DNNL_TRAP() __builtin_trap()
56 #elif defined(__INTEL_COMPILER) || defined(_MSC_VER)
57 #define DNNL_TRAP() __debugbreak()
58 #else
59 #error "unknown compiler"
60 #endif
61 
62 #if DNNL_ENABLE_EXCEPTIONS
63 #define DNNL_THROW_ERROR(status, msg) throw error(status, msg)
64 #else
65 #include <cstdio>
66 #define DNNL_THROW_ERROR(status, msg) \
67  do { \
68  fputs(msg, stderr); \
69  DNNL_TRAP(); \
70  } while (0)
71 #endif
72 
75 
77 namespace dnnl {
78 
82 
87 struct error : public std::exception {
89  const char *message;
90 
95  error(dnnl_status_t status, const char *message)
96  : status(status), message(message) {}
97 
99  const char *what() const noexcept override { return message; }
100 
106  static void wrap_c_api(dnnl_status_t status, const char *message) {
107  if (status != dnnl_success) DNNL_THROW_ERROR(status, message);
108  }
109 };
110 
112 template <typename T>
113 struct handle_traits {};
114 
128 template <typename T, typename traits = handle_traits<T>>
129 struct handle {
130 private:
131  static dnnl_status_t dummy_destructor(T) { return dnnl_success; }
132  std::shared_ptr<typename std::remove_pointer<T>::type> data_ {0};
133 
134 protected:
135  bool operator==(const T other) const { return other == data_.get(); }
136  bool operator!=(const T other) const { return !(*this == other); }
137 
138 public:
146  handle() = default;
147 
149  handle(const handle<T, traits> &) = default;
151  handle<T, traits> &operator=(const handle<T, traits> &) = default;
153  handle(handle<T, traits> &&) = default;
156 
162  explicit handle(T t, bool weak = false) { reset(t, weak); }
163 
169  void reset(T t, bool weak = false) {
170  data_.reset(t, weak ? &dummy_destructor : traits::destructor);
171  }
172 
178  T get(bool allow_empty = false) const {
179  T result = data_.get();
180  if (allow_empty == false && result == nullptr)
181  DNNL_THROW_ERROR(
182  dnnl_invalid_arguments, "object is not initialized");
183  return result;
184  }
185 
190  explicit operator T() const { return get(true); }
191 
195  explicit operator bool() const { return get(true) != nullptr; }
196 
203  bool operator==(const handle<T, traits> &other) const {
204  return other.data_.get() == data_.get();
205  }
206 
213  bool operator!=(const handle &other) const { return !(*this == other); }
214 };
215 
217 template <>
218 struct handle_traits<dnnl_memory_t> {
219  static constexpr auto destructor = &dnnl_memory_destroy;
220 };
221 
222 template <>
223 struct handle_traits<dnnl_primitive_desc_t> {
224  static constexpr auto destructor = &dnnl_primitive_desc_destroy;
225 };
226 
227 template <>
228 struct handle_traits<dnnl_primitive_t> {
229  static constexpr auto destructor = &dnnl_primitive_destroy;
230 };
231 
232 template <>
233 struct handle_traits<dnnl_primitive_desc_iterator_t> {
234  static constexpr auto destructor = &dnnl_primitive_desc_iterator_destroy;
235 };
237 
239 
240 struct stream;
241 struct error;
242 struct memory;
243 struct primitive_desc;
244 
249 
253 
255 struct primitive : public handle<dnnl_primitive_t> {
256  friend struct error;
257  friend struct stream;
258 
259 public:
262  enum class kind {
272  sum = dnnl_sum,
284  lrn = dnnl_lrn,
292  rnn = dnnl_rnn,
301  };
302 
303  using handle::handle;
304 
306  primitive() = default;
307 
312 
316  primitive(const primitive_desc &pd);
317 
323 
327  inline kind get_kind() const;
328 
341  void execute(
342  stream &stream, const std::unordered_map<int, memory> &args) const;
343 };
344 
350  return static_cast<dnnl_primitive_kind_t>(kind);
351 }
352 
356  "could not get a primitive descriptor from a primitive");
357  return pd;
358 }
359 
362  // TODO (Roma): the code below is only needed because get_primitive_desc
363  // returns a C type.
366  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
367  "could not get a primitive kind from a primitive descriptor");
368  return static_cast<dnnl::primitive::kind>(kind);
369 }
370 
372 
384 
386 enum class scratchpad_mode {
408 };
409 
415  return static_cast<dnnl_scratchpad_mode_t>(mode);
416 }
417 
419 enum class prop_kind {
443 };
444 
450  return static_cast<dnnl_prop_kind_t>(kind);
451 }
452 
454 enum class algorithm {
455  undef = dnnl_alg_kind_undef,
532 };
533 
538  return static_cast<dnnl_alg_kind_t>(algorithm);
539 }
540 
542 
545 
547 enum class normalization_flags : unsigned {
561 
577 
586 };
587 
592  return static_cast<dnnl_normalization_flags_t>(flags);
593 }
594 
596 
599 
601 enum class rnn_flags : unsigned {
604 };
605 
610  return static_cast<dnnl_rnn_flags_t>(flags);
611 }
612 
613 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
614  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
615  return static_cast<enum_name>( \
616  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
617  } \
618 \
619  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
620  return static_cast<enum_name>( \
621  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
622  } \
623 \
624  inline enum_name operator^(enum_name lhs, enum_name rhs) { \
625  return static_cast<enum_name>( \
626  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
627  } \
628 \
629  inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
630  lhs = static_cast<enum_name>( \
631  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
632  return lhs; \
633  } \
634 \
635  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
636  lhs = static_cast<enum_name>( \
637  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
638  return lhs; \
639  } \
640 \
641  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
642  lhs = static_cast<enum_name>( \
643  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
644  return lhs; \
645  } \
646 \
647  inline enum_name operator~(enum_name rhs) { \
648  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
649  }
650 
651 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
652 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
653 
654 enum class rnn_direction {
668 };
669 
674  return static_cast<dnnl_rnn_direction_t>(dir);
675 }
676 
678 
681 
688 enum class query {
691 
696 
701 
710 
715 
720 
723 
726 
759 
778 };
779 
784  return static_cast<dnnl_query_t>(query);
785 }
786 
788 
794 
796 template <>
797 struct handle_traits<dnnl_post_ops_t> {
798  static constexpr auto destructor = &dnnl_post_ops_destroy;
799 };
801 
809 struct post_ops : public handle<dnnl_post_ops_t> {
811 
814  dnnl_post_ops_t result;
816  dnnl_post_ops_create(&result), "could not create post-ops");
817  reset(result);
818  }
819 
821  int len() const { return dnnl_post_ops_len(get()); }
822 
826  primitive::kind kind(int index) const {
828  "post-ops index is out of range");
829  return static_cast<primitive::kind>(
830  dnnl_post_ops_get_kind(get(), index));
831  }
832 
855  void append_sum(float scale = 1.) {
857  "could not append a sum post-op");
858  }
859 
864  void get_params_sum(int index, float &scale) const {
866  "could not get parameters of a sum post-op");
867  }
868 
885  float scale, algorithm algorithm, float alpha, float beta) {
887  convert_to_c(algorithm), alpha, beta),
888  "could not append an elementwise post-op");
889  }
890 
898  void get_params_eltwise(int index, float &scale, algorithm &algorithm,
899  float &alpha, float &beta) const {
900  dnnl_alg_kind_t c_alg;
902  get(), index, &scale, &c_alg, &alpha, &beta),
903  "could not get parameters of an elementwise post-op");
904  algorithm = static_cast<dnnl::algorithm>(c_alg);
905  }
906 };
907 
909 template <>
910 struct handle_traits<dnnl_primitive_attr_t> {
911  static constexpr auto destructor = &dnnl_primitive_attr_destroy;
912 };
914 
918 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
920 
923  dnnl_primitive_attr_t result;
925  "could not create primitive attribute");
926  reset(result);
927  }
928 
935  : handle<dnnl_primitive_attr_t>(attr) {}
936 
939  dnnl_scratchpad_mode_t result;
942  "could not get primitive scratchpad mode attribute");
943  return scratchpad_mode(result);
944  }
945 
951  get(), dnnl::convert_to_c(mode)),
952  "could not set primitive scratchpad mode attribute");
953  }
954 
964  void get_output_scales(int &mask, std::vector<float> &scales) const {
965  dnnl_dim_t count;
966  int c_mask;
967  const float *c_scales;
969  get(), &count, &c_mask, &c_scales),
970  "could not get primitive output scales attribute");
971  scales.resize(count);
972 
973  mask = c_mask;
974  for (dnnl_dim_t c = 0; c < count; ++c)
975  scales[c] = c_scales[c];
976  }
977 
1020  void set_output_scales(int mask, const std::vector<float> &scales) {
1022  (dnnl_dim_t)scales.size(), mask, &scales[0]),
1023  "could not set primitive output scales attribute");
1024  }
1025 
1037  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
1038  dnnl_dim_t count;
1039  int c_mask;
1040  const float *c_scales;
1042  get(), arg, &count, &c_mask, &c_scales),
1043  "could not get scales");
1044  scales.resize(count);
1045 
1046  mask = c_mask;
1047  for (dnnl_dim_t c = 0; c < count; ++c)
1048  scales[c] = c_scales[c];
1049  }
1050 
1067  void set_scales(int arg, int mask, const std::vector<float> &scales) {
1069  (dnnl_dim_t)scales.size(), mask, &scales[0]),
1070  "could not set scales");
1071  }
1072 
1084  int arg, int &mask, std::vector<int32_t> &zero_points) const {
1085  dnnl_dim_t count;
1086  int c_mask;
1087  const int32_t *c_zero_points;
1089  get(), arg, &count, &c_mask, &c_zero_points),
1090  "could not get primitive zero points attribute");
1091  zero_points.resize(count);
1092 
1093  mask = c_mask;
1094  for (dnnl_dim_t c = 0; c < count; ++c)
1095  zero_points[c] = c_zero_points[c];
1096  }
1097 
1120  int arg, int mask, const std::vector<int32_t> &zero_points) {
1123  (dnnl_dim_t)zero_points.size(), mask, &zero_points[0]),
1124  "could not set primitive zero points attribute");
1125  }
1126 
1130  const post_ops get_post_ops() const {
1131  post_ops result;
1132  const_dnnl_post_ops_t c_result;
1134  "could not get primitive post-ops attribute");
1135  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
1136  return result;
1137  }
1138 
1147  void set_post_ops(const post_ops ops) {
1149  "could not set primitive post-ops attribute");
1150  }
1151 
1185  void set_rnn_data_qparams(float scale, float shift) {
1188  "could not get primitive RNN data quantization parameters "
1189  "attributes");
1190  }
1191 
1218  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
1220  get(), (int)scales.size(), mask, &scales[0]),
1221  "could not get primitive RNN weights quantization parameters "
1222  "attributes");
1223  }
1224 };
1225 
1227 
1229 
1240 
1242 template <>
1243 struct handle_traits<dnnl_engine_t> {
1244  static constexpr auto destructor = &dnnl_engine_destroy;
1245 };
1247 
1249 struct engine : public handle<dnnl_engine_t> {
1250  friend struct primitive;
1251  friend struct reorder;
1252 
1254  enum class kind {
1256  any = dnnl_any_engine,
1258  cpu = dnnl_cpu,
1260  gpu = dnnl_gpu,
1261  };
1262 
1263  using handle::handle;
1264 
1267  engine() = default;
1268 
1273  static size_t get_count(kind kind) {
1274  return dnnl_engine_get_count(convert_to_c(kind));
1275  }
1276 
1282  engine(kind kind, size_t index) {
1285  dnnl_engine_create(&engine, convert_to_c(kind), index),
1286  "could not create an engine");
1287  reset(engine);
1288  }
1289 
1290 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1291  engine(kind kind, cl_device_id device, cl_context context) {
1299  error::wrap_c_api(dnnl_engine_create_ocl(
1300  &engine, convert_to_c(kind), device, context),
1301  "could not create an engine");
1302  reset(engine);
1303  }
1304 #endif
1305 
1311  dnnl_engine_t c_engine;
1314  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
1315  "could not get an engine from a primitive_desc");
1316  reset(c_engine, true);
1317  }
1318 
1321  kind get_kind() const {
1324  "could not get kind of an engine");
1325  return static_cast<engine::kind>(kind);
1326  }
1327 
1328 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1329  cl_context get_ocl_context() const {
1332  cl_context context = nullptr;
1333  error::wrap_c_api(dnnl_engine_get_ocl_context(get(), &context),
1334  "could not get an OpenCL context fron an engine");
1335  return context;
1336  }
1337 
1340  cl_device_id get_ocl_device() const {
1341  cl_device_id device = nullptr;
1342  error::wrap_c_api(dnnl_engine_get_ocl_device(get(), &device),
1343  "could not get an OpenCL device fron an engine");
1344  return device;
1345  }
1346 #endif
1347 
1353  template <class primitive_desc>
1354  static engine query(const primitive_desc &pd) {
1355  return query(pd, dnnl::query::engine);
1356  }
1357 
1358 private:
1359  static dnnl_engine_kind_t convert_to_c(kind kind) {
1360  return static_cast<dnnl_engine_kind_t>(kind);
1361  }
1362 
1363  template <class primitive_desc>
1364  static engine query(const primitive_desc &pd, dnnl::query what) {
1365  dnnl_engine_t c_engine;
1367  dnnl::convert_to_c(what), 0, &c_engine),
1368  "could not get an engine from a primitive_desc");
1369  return engine(c_engine, true);
1370  }
1371 };
1372 
1374 
1382 
1384 template <>
1385 struct handle_traits<dnnl_stream_t> {
1386  static constexpr auto destructor = &dnnl_stream_destroy;
1387 };
1389 
1391 struct stream : public handle<dnnl_stream_t> {
1392  using handle::handle;
1393 
1395  enum class flags : unsigned {
1405  };
1406 
1409  stream() = default;
1410 
1419  static_cast<dnnl_stream_flags_t>(flags)),
1420  "could not create a stream");
1421  reset(stream);
1422  }
1423 
1424 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1425  stream(const engine &engine, cl_command_queue queue) {
1431  error::wrap_c_api(dnnl_stream_create_ocl(&stream, engine.get(), queue),
1432  "could not create a stream");
1433  reset(stream);
1434  }
1435 
1438  cl_command_queue get_ocl_command_queue() const {
1439  cl_command_queue queue = nullptr;
1440  error::wrap_c_api(dnnl_stream_get_ocl_command_queue(get(), &queue),
1441  "could not get an OpenCL command queue from a stream");
1442  return queue;
1443  }
1444 #endif
1445 
1450  dnnl_stream_wait(get()), "could not wait on a stream");
1451  return *this;
1452  }
1453 };
1454 
1455 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1456 
1457 
1546 
1553 struct memory : public handle<dnnl_memory_t> {
1555  typedef dnnl_dim_t dim;
1558  typedef std::vector<dim> dims;
1559 
1565  template <typename T>
1566  static void validate_dims(const std::vector<T> &v) {
1567  if (v.size() > DNNL_MAX_NDIMS)
1568  DNNL_THROW_ERROR(dnnl_invalid_arguments, "dimensions are invalid");
1569  }
1570 
1572  enum class data_type {
1576  f16 = dnnl_f16,
1578  bf16 = dnnl_bf16,
1580  f32 = dnnl_f32,
1582  s32 = dnnl_s32,
1584  s8 = dnnl_s8,
1586  u8 = dnnl_u8,
1587  };
1588 
1590  enum class format_kind {
1595  any = dnnl_format_kind_any,
1599  blocked = dnnl_blocked,
1601  wino = dnnl_format_kind_wino,
1603  packed = dnnl_format_kind_rnn_packed,
1604  };
1605 
1646  enum class format_tag {
1651  any = dnnl_format_tag_any,
1652 
1654  a = dnnl_a,
1655 
1657  ab = dnnl_ab,
1659  ba = dnnl_ba,
1660 
1662  abc = dnnl_abc,
1664  acb = dnnl_acb,
1666  bac = dnnl_bac,
1668  bca = dnnl_bca,
1670  cba = dnnl_cba,
1671 
1673  abcd = dnnl_abcd,
1675  acdb = dnnl_acdb,
1677  bacd = dnnl_bacd,
1679  bcda = dnnl_bcda,
1681  cdba = dnnl_cdba,
1682 
1684  abcde = dnnl_abcde,
1686  abdec = dnnl_abdec,
1688  acbde = dnnl_acbde,
1690  acdeb = dnnl_acdeb,
1692  bcdea = dnnl_bcdea,
1694  cdeba = dnnl_cdeba,
1696  decab = dnnl_decab,
1698  abcdef = dnnl_abcdef,
1700  acbdef = dnnl_acbdef,
1702  defcab = dnnl_defcab,
1703 
1705  x = a,
1707  nc = ab,
1709  cn = ba,
1711  tn = ab,
1713  nt = ba,
1715  ncw = abc,
1717  nwc = acb,
1719  nchw = abcd,
1721  nhwc = acdb,
1723  chwn = bcda,
1725  ncdhw = abcde,
1727  ndhwc = acdeb,
1728 
1730  oi = ab,
1732  io = ba,
1734  oiw = abc,
1736  owi = acb,
1738  wio = cba,
1740  iwo = bca,
1742  oihw = abcd,
1744  hwio = cdba,
1746  ohwi = acdb,
1748  ihwo = bcda,
1750  iohw = bacd,
1752  oidhw = abcde,
1754  dhwio = cdeba,
1756  odhwi = acdeb,
1758  idhwo = bcdea,
1759 
1761  goiw = abcd,
1763  goihw = abcde,
1765  hwigo = decab,
1767  giohw = acbde,
1769  goidhw = abcdef,
1771  giodhw = acbdef,
1773  dhwigo = defcab,
1774 
1776  tnc = abc,
1778  ntc = bac,
1781  ldnc = abcd,
1788  ldigo = abcde,
1795  ldgoi = abdec,
1802  ldgo = abcd,
1803 
1804  // Opaque blocked formats
1805 
1806  Abc16a = dnnl_Abc16a,
1807  ABc16a16b = dnnl_ABc16a16b,
1808  ABc4a4b = dnnl_ABc4a4b,
1809  aBc16b = dnnl_aBc16b,
1810  ABc16b16a = dnnl_ABc16b16a,
1811  Abc4a = dnnl_Abc4a,
1812  aBc4b = dnnl_aBc4b,
1813  ABc4b16a4b = dnnl_ABc4b16a4b,
1814  ABc2b8a4b = dnnl_ABc2b8a4b,
1815  ABc4b4a = dnnl_ABc4b4a,
1816  ABc8a16b2a = dnnl_ABc8a16b2a,
1817  ABc8a8b = dnnl_ABc8a8b,
1818  aBc8b = dnnl_aBc8b,
1819  ABc8b16a2b = dnnl_ABc8b16a2b,
1820  ABc8b8a = dnnl_ABc8b8a,
1821  Abcd16a = dnnl_Abcd16a,
1822  ABcd16a16b = dnnl_ABcd16a16b,
1823  aBcd16b = dnnl_aBcd16b,
1824  ABcd16b16a = dnnl_ABcd16b16a,
1825  aBCd16b16c = dnnl_aBCd16b16c,
1826  aBCd16c16b = dnnl_aBCd16c16b,
1827  Abcd4a = dnnl_Abcd4a,
1828  aBcd4b = dnnl_aBcd4b,
1829  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1830  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1831  ABcd4b4a = dnnl_ABcd4b4a,
1832  ABcd4a4b = dnnl_ABcd4a4b,
1833  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1834  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1835  aBCd4c4b = dnnl_aBCd4c4b,
1836  aBCd4b4c = dnnl_aBCd4b4c,
1837  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1838  ABcd8a8b = dnnl_ABcd8a8b,
1840  aBcd8b = dnnl_aBcd8b,
1841  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1842  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1844  ABcd8b8a = dnnl_ABcd8b8a,
1845  aBCd8b8c = dnnl_aBCd8b8c,
1846  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1847  aBCd8c8b = dnnl_aBCd8c8b,
1848  Abcde16a = dnnl_Abcde16a,
1849  ABcde16a16b = dnnl_ABcde16a16b,
1850  aBcde16b = dnnl_aBcde16b,
1851  ABcde16b16a = dnnl_ABcde16b16a,
1852  aBCde16b16c = dnnl_aBCde16b16c,
1853  aBCde16c16b = dnnl_aBCde16c16b,
1854  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1855  Abcde4a = dnnl_Abcde4a,
1856  aBcde4b = dnnl_aBcde4b,
1857  ABcde4b4a = dnnl_ABcde4b4a,
1858  ABcde4a4b = dnnl_ABcde4a4b,
1859  aBCde4b4c = dnnl_aBCde4b4c,
1860  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1861  aBCde4c4b = dnnl_aBCde4c4b,
1862  Abcde8a = dnnl_Abcde8a,
1863  ABcde8a8b = dnnl_ABcde8a8b,
1864  aBcde8b = dnnl_aBcde8b,
1865  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1866  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1867  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1868  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1869  ABcde8b8a = dnnl_ABcde8b8a,
1870  aBCde8b8c = dnnl_aBCde8b8c,
1871  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1872  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1873  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1874  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1875  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1876  aBCde8c8b = dnnl_aBCde8c8b,
1877  aBcdef16b = dnnl_aBcdef16b,
1878  aBCdef16b16c = dnnl_aBCdef16b16c,
1879  aBCdef16c16b = dnnl_aBCdef16c16b,
1880  aBcdef4b = dnnl_aBcdef4b,
1881  aBCdef4c4b = dnnl_aBCdef4c4b,
1882  aBCdef4b4c = dnnl_aBCdef4b4c,
1883  aBCdef8b8c = dnnl_aBCdef8b8c,
1884  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1885  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1886  aBCdef8c8b = dnnl_aBCdef8c8b,
1887  aBdc16b = dnnl_aBdc16b,
1888  aBdc4b = dnnl_aBdc4b,
1889  aBdc8b = dnnl_aBdc8b,
1890  aBdec16b = dnnl_aBdec16b,
1891  aBdec4b = dnnl_aBdec4b,
1892  aBdec8b = dnnl_aBdec8b,
1893  aBdefc16b = dnnl_aBdefc16b,
1894  aCBdef16c16b = dnnl_aCBdef16c16b,
1895  aBdefc4b = dnnl_aBdefc4b,
1896  aBdefc8b = dnnl_aBdefc8b,
1897  Acb16a = dnnl_Acb16a,
1898  Acb4a = dnnl_Acb4a,
1899  Acb8a = dnnl_Acb8a,
1900  aCBd16b16c = dnnl_aCBd16b16c,
1901  aCBd16c16b = dnnl_aCBd16c16b,
1902  aCBde16b16c = dnnl_aCBde16b16c,
1903  aCBde16c16b = dnnl_aCBde16c16b,
1904  Acdb16a = dnnl_Acdb16a,
1905  Acdb4a = dnnl_Acdb4a,
1906  Acdb8a = dnnl_Acdb8a,
1907  Acdeb16a = dnnl_Acdeb16a,
1908  Acdeb4a = dnnl_Acdeb4a,
1909  Acdeb8a = dnnl_Acdeb8a,
1910  BAc16a16b = dnnl_BAc16a16b,
1911  BAc16b16a = dnnl_BAc16b16a,
1912  BAcd16a16b = dnnl_BAcd16a16b,
1913  BAcd16b16a = dnnl_BAcd16b16a,
1914  ABcd32a32b = dnnl_ABcd32a32b,
1915  BAcde16b16 = dnnl_BAcde16b16a,
1916  aBdec32b = dnnl_aBdec32b,
1917  Abcdef16a = dnnl_Abcdef16a,
1918  Acdb32a = dnnl_Acdb32a,
1919  format_tag_last = dnnl_format_tag_last,
1920 
1921  nCdhw16c = dnnl_nCdhw16c,
1922  nCdhw4c = dnnl_nCdhw4c,
1923  nCdhw8c = dnnl_nCdhw8c,
1924  nChw16c = dnnl_nChw16c,
1925  nChw4c = dnnl_nChw4c,
1926  nChw8c = dnnl_nChw8c,
1927  nCw16c = dnnl_nCw16c,
1928  nCw4c = dnnl_nCw4c,
1929  nCw8c = dnnl_nCw8c,
1930  NCw16n16c = dnnl_NCw16n16c,
1931  NChw16n16c = dnnl_NChw16n16c,
1932  NCdhw16n16c = dnnl_NCdhw16n16c,
1933  NChw32n32c = dnnl_NChw32n32c,
1934  IOhw16i16o = dnnl_IOhw16i16o,
1935  Ohwi32o = dnnl_Ohwi32o,
1936  IOdhw16i16o = dnnl_IOdhw16i16o,
1937  gIOhw16i16o = dnnl_gIOhw16i16o,
1938  gOhwi32o = dnnl_gOhwi32o,
1939  Goidhw16g = dnnl_Goidhw16g,
1940  IOw16o16i = dnnl_IOw16o16i,
1941  OIw16i16o = dnnl_OIw16i16o,
1942  IOw16i16o = dnnl_IOw16i16o,
1943  gIOw16i16o = dnnl_gIOw16i16o,
1944  OIw16o16i = dnnl_OIw16o16i,
1945  Oiw16o = dnnl_Oiw16o,
1946  OIw4i16o4i = dnnl_OIw4i16o4i,
1947  OIw2i8o4i = dnnl_OIw2i8o4i,
1948  OIw4i4o = dnnl_OIw4i4o,
1949  OIw4o4i = dnnl_OIw4o4i,
1950  Oiw4o = dnnl_Oiw4o,
1951  OIw8i16o2i = dnnl_OIw8i16o2i,
1952  OIw8i8o = dnnl_OIw8i8o,
1953  OIw8o16i2o = dnnl_OIw8o16i2o,
1954  OIw8o8i = dnnl_OIw8o8i,
1955  Owi16o = dnnl_Owi16o,
1956  OwI16o2i = dnnl_OwI16o2i,
1957  Owi4o = dnnl_Owi4o,
1958  Owi8o = dnnl_Owi8o,
1959  IOhw16o16i = dnnl_IOhw16o16i,
1960  Ohwi16o = dnnl_Ohwi16o,
1961  OhwI16o2i = dnnl_OhwI16o2i,
1962  Ohwi4o = dnnl_Ohwi4o,
1963  Ohwi8o = dnnl_Ohwi8o,
1964  OIhw16i16o = dnnl_OIhw16i16o,
1965  OIhw16o16i = dnnl_OIhw16o16i,
1966  Oihw16o = dnnl_Oihw16o,
1967  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1968  OIhw4i4o = dnnl_OIhw4i4o,
1969  OIhw4o4i = dnnl_OIhw4o4i,
1970  Oihw4o = dnnl_Oihw4o,
1971  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1972  OIhw8i8o = dnnl_OIhw8i8o,
1973  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1974  OIhw8o8i = dnnl_OIhw8o8i,
1975  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1976  Odhwi16o = dnnl_Odhwi16o,
1977  OdhwI16o2i = dnnl_OdhwI16o2i,
1978  Odhwi4o = dnnl_Odhwi4o,
1979  Odhwi8o = dnnl_Odhwi8o,
1980  OIdhw16i16o = dnnl_OIdhw16i16o,
1981  OIdhw16o16i = dnnl_OIdhw16o16i,
1982  Oidhw16o = dnnl_Oidhw16o,
1983  OIdhw4i4o = dnnl_OIdhw4i4o,
1984  OIdhw4o4i = dnnl_OIdhw4o4i,
1985  Oidhw4o = dnnl_Oidhw4o,
1986  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1987  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1988  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1989  OIdhw8i8o = dnnl_OIdhw8i8o,
1990  OIdhw8o8i = dnnl_OIdhw8o8i,
1991  gIOw16o16i = dnnl_gIOw16o16i,
1992  gOIw16i16o = dnnl_gOIw16i16o,
1993  gOIw16o16i = dnnl_gOIw16o16i,
1994  gOiw16o = dnnl_gOiw16o,
1995  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1996  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1997  gOIw4i4o = dnnl_gOIw4i4o,
1998  gOIw4o4i = dnnl_gOIw4o4i,
1999  gOiw4o = dnnl_gOiw4o,
2000  gOIw8i16o2i = dnnl_gOIw8i16o2i,
2001  gOIw8i8o = dnnl_gOIw8i8o,
2002  gOIw8o16i2o = dnnl_gOIw8o16i2o,
2003  gOIw8o8i = dnnl_gOIw8o8i,
2004  gOwi16o = dnnl_gOwi16o,
2005  gOwI16o2i = dnnl_gOwI16o2i,
2006  gOwi4o = dnnl_gOwi4o,
2007  gOwi8o = dnnl_gOwi8o,
2008  Goiw8g = dnnl_Goiw8g,
2009  Goiw16g = dnnl_Goiw16g,
2010  gIOhw16o16i = dnnl_gIOhw16o16i,
2011  gOhwi16o = dnnl_gOhwi16o,
2012  gOhwI16o2i = dnnl_gOhwI16o2i,
2013  gOhwi4o = dnnl_gOhwi4o,
2014  gOhwi8o = dnnl_gOhwi8o,
2015  Goihw16g = dnnl_Goihw16g,
2016  gOIhw16i16o = dnnl_gOIhw16i16o,
2017  gOIhw16o16i = dnnl_gOIhw16o16i,
2018  gOihw16o = dnnl_gOihw16o,
2019  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
2020  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
2021  gOIhw4i4o = dnnl_gOIhw4i4o,
2022  gOIhw4o4i = dnnl_gOIhw4o4i,
2023  gOihw4o = dnnl_gOihw4o,
2024  Goihw8g = dnnl_Goihw8g,
2025  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
2026  gOIhw8i8o = dnnl_gOIhw8i8o,
2027  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
2028  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
2029  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
2030  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
2031  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
2032  gOIhw8o8i = dnnl_gOIhw8o8i,
2033  gIOdhw16i16o = dnnl_gIOdhw16i16o,
2034  gOdhwi16o = dnnl_gOdhwi16o,
2035  gOdhwI16o2i = dnnl_gOdhwI16o2i,
2036  gOdhwi4o = dnnl_gOdhwi4o,
2037  gOdhwi8o = dnnl_gOdhwi8o,
2038  gOIdhw16i16o = dnnl_gOIdhw16i16o,
2039  gOIdhw16o16i = dnnl_gOIdhw16o16i,
2040  gOidhw16o = dnnl_gOidhw16o,
2041  gOIdhw4i4o = dnnl_gOIdhw4i4o,
2042  gOIdhw4o4i = dnnl_gOIdhw4o4i,
2043  gOidhw4o = dnnl_gOidhw4o,
2044  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
2045  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
2046  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
2047  gOIdhw8i8o = dnnl_gOIdhw8i8o,
2048  gOIdhw8o8i = dnnl_gOIdhw8o8i,
2049  };
2050 
2052  struct desc {
2053  friend struct memory;
2056 
2059  desc() : data() {}
2060 
2074  validate_dims(dims);
2076  dnnl_memory_desc_init_by_tag(&data, (int)dims.size(),
2077  dims.size() == 0 ? nullptr : &dims[0],
2079  "could not construct a memory descriptor using a format "
2080  "tag");
2081  }
2082 
2095  const memory::dims &strides) {
2096  validate_dims(dims);
2098  dnnl_memory_desc_init_by_strides(&data, (int)dims.size(),
2099  dims.size() == 0 ? nullptr : &dims[0],
2101  strides.size() == 0 ? nullptr : &strides[0]),
2102  "could not construct a memory descriptor using strides");
2103  }
2104 
2108  desc(const dnnl_memory_desc_t &data) : data(data) {}
2109 
2112  //
2118  const memory::dims &dims, const memory::dims &offsets) const {
2119  dnnl_memory_desc_t sub_md;
2121  &sub_md, &data, &dims[0], &offsets[0]),
2122  "could not construct a sub-memory");
2123  return desc(sub_md);
2124  }
2125 
2127  //
2131  desc reshape(const memory::dims &dims) const {
2132  dnnl_memory_desc_t out_md;
2134  (int)dims.size(), &dims[0]),
2135  "could not reshape a memory descriptor");
2136  return desc(out_md);
2137  }
2138 
2143  memory::dims dims() const {
2144  return memory::dims(data.dims, data.dims + data.ndims);
2145  }
2146 
2150  return static_cast<memory::data_type>(data.data_type);
2151  }
2152 
2157  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
2158 
2162  bool is_zero() const { return data.ndims == 0; }
2163 
2168  bool operator==(const desc &other) const {
2169  return dnnl_memory_desc_equal(&data, &other.data) != 0;
2170  }
2171 
2176  bool operator!=(const desc &other) const { return !operator==(other); }
2177  };
2178 
2179  // Default constructor.
2180  //
2181  // Constructs an empty memory object, which can be used to indicate absence
2182  // of a parameter.
2183  memory() = default;
2184 
2191  memory(const desc &md, const engine &engine, void *handle) {
2192  dnnl_memory_t result;
2194  dnnl_memory_create(&result, &md.data, engine.get(), handle),
2195  "could not create a memory object");
2196  reset(result);
2197  }
2198 
2205  memory(const desc &md, const engine &engine)
2206  : memory(md, engine, DNNL_MEMORY_ALLOCATE) {}
2207 
2209  desc get_desc() const {
2210  const dnnl_memory_desc_t *cdesc;
2212  "could not get a memory descriptor from a memory object");
2213  return desc(*cdesc);
2214  }
2215 
2217  engine get_engine() const {
2218  dnnl_engine_t c_engine;
2219  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2220  "could not get an engine from a memory object");
2221  return engine(c_engine, true);
2222  }
2223 
2227  void *get_data_handle() const {
2228  void *handle;
2230  "could not get a native handle from a memory object");
2231  return handle;
2232  }
2233 
2238  void set_data_handle(void *handle) const {
2240  "could not set native handle of a memory object");
2241  }
2242 
2262  template <typename T = void>
2263  T *map_data() const {
2264  void *mapped_ptr;
2265  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2266  "could not map memory object data");
2267  return static_cast<T *>(mapped_ptr);
2268  }
2269 
2281  void unmap_data(void *mapped_ptr) const {
2282  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2283  "could not unmap memory object data");
2284  }
2285 
2286 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
2287  cl_mem get_ocl_mem_object() const {
2289  cl_mem mem_object;
2290  error::wrap_c_api(dnnl_memory_get_ocl_mem_object(get(), &mem_object),
2291  "could not get OpenCL buffer object from a memory object");
2292  return mem_object;
2293  }
2294 
2300  void set_ocl_mem_object(cl_mem mem_object) {
2301  error::wrap_c_api(dnnl_memory_set_ocl_mem_object(get(), mem_object),
2302  "could not set OpenCL buffer object from a memory object");
2303  }
2304 #endif
2305 
2306  static dnnl_data_type_t convert_to_c(data_type data_type) {
2307  return static_cast<dnnl_data_type_t>(data_type);
2308  }
2309  static dnnl_format_tag_t convert_to_c(format_tag format) {
2310  return static_cast<dnnl_format_tag_t>(format);
2311  }
2312 };
2313 
2314 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2315  return a == memory::convert_to_c(b);
2316 }
2317 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2318  return !(a == b);
2319 }
2320 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2321  return b == a;
2322 }
2323 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2324  return !(a == b);
2325 }
2326 
2327 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2328  return a == memory::convert_to_c(b);
2329 }
2330 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2331  return !(a == b);
2332 }
2333 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2334  return b == a;
2335 }
2336 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2337  return !(a == b);
2338 }
2339 
2341 
2344 
2347 
2349 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
2351 
2353  primitive_desc_base() = default;
2354 
2356  engine get_engine() const { return engine::query(*this); }
2357 
2359  const char *impl_info_str() const {
2360  const char *res;
2362  get(), dnnl_query_impl_info_str, 0, &res),
2363  "could not retrieve implementation info string from a "
2364  "primitive descriptor");
2365  return res;
2366  }
2367 
2370  memory::dim res;
2372  get(), dnnl::convert_to_c(what), 0, &res);
2373  return status == dnnl_success ? res : 0;
2374  }
2375 
2390  memory::desc query_md(query what, int idx = 0) const {
2391  std::vector<query> valid_q {query::src_md, query::diff_src_md,
2395  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
2396  [=](query q) { return what == q; }))
2397  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2398  "memory descriptor query is invalid");
2399 
2401  get(), dnnl::convert_to_c(what), idx);
2402  return cdesc ? memory::desc(*cdesc) : memory::desc();
2403  }
2404 
2410  memory::desc src_desc(int idx) const {
2411  return query_md(query::src_md, idx);
2412  }
2413 
2419  memory::desc dst_desc(int idx) const {
2420  return query_md(query::dst_md, idx);
2421  }
2422 
2428  memory::desc weights_desc(int idx) const {
2429  return query_md(query::weights_md, idx);
2430  }
2431 
2437  memory::desc diff_src_desc(int idx) const {
2438  return query_md(query::diff_src_md, idx);
2439  }
2440 
2446  memory::desc diff_dst_desc(int idx) const {
2447  return query_md(query::diff_dst_md, idx);
2448  }
2449 
2456  return query_md(query::diff_weights_md, idx);
2457  }
2458 
2459  // Separate versions without the index argument for documentation
2460  // purposes.
2461 
2466  memory::desc src_desc() const { return src_desc(0); }
2467 
2472  memory::desc dst_desc() const { return dst_desc(0); }
2473 
2478  memory::desc weights_desc() const { return weights_desc(0); }
2479 
2485 
2491 
2497 
2503  return query_md(query::workspace_md, 0);
2504  }
2505 
2512  return query_md(query::scratchpad_md, 0);
2513  }
2514 
2518  dnnl_engine_t c_engine;
2521  0, &c_engine),
2522  "could not retrieve scratchpad engine from a primitive "
2523  "descriptor");
2524  return engine(c_engine, true);
2525  }
2526 
2530  const_dnnl_primitive_attr_t const_c_attr;
2532  "could not get attributes from a primitive descriptor");
2533  dnnl_primitive_attr_t c_attr;
2534  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
2535  "could not clone primitive attributes");
2536  return primitive_attr(c_attr);
2537  }
2538 
2542  dnnl_primitive_kind_t kind;
2544  dnnl_query_primitive_kind, 0, (void *)&kind),
2545  "could not get primitive kind from a primitive descriptor");
2546  return static_cast<dnnl::primitive::kind>(kind);
2547  }
2548 
2549 protected:
2554  dnnl_primitive_desc_t new_pd;
2556  "could not clone a primitive descriptor");
2557  reset(new_pd);
2558  }
2559 
2575  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
2576 
2590  : primitive_desc_base(pd, prim_kind, prop_kind, prop_kind) {}
2591 
2606  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
2607  dnnl::prop_kind prop_kind2) {
2608  // It is OK to pass an empty primitive descriptor
2609  if (pd == nullptr) return;
2610 
2611  dnnl_status_t rc;
2612 
2613  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
2614  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
2615  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
2616 
2617  // Check that primitive kind matches
2618  dnnl_primitive_kind_t pd_kind;
2620  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
2622  rc, "could not get primitive kind from a primitive descriptor");
2623  if (pd_kind != c_prim_kind)
2624  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2625  "primitive descriptor operation kind mismatch");
2626 
2627  // Check that propagation kind matches
2628  dnnl_prop_kind_t pd_prop_kind;
2630  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
2631 
2632  // Something went wrong
2633  if (rc != dnnl_success && rc != dnnl_unimplemented)
2634  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2635  "could not get propagation kind from the primitive "
2636  "descriptor");
2637 
2638  // Everything is fine
2639  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
2640  || (rc == dnnl_success
2641  && (pd_prop_kind == c_prop_kind1
2642  || pd_prop_kind == c_prop_kind2))) {
2643  reset_with_clone(pd);
2644  return;
2645  }
2646 
2647  // We could get the propagation kind but there is a mismatch
2648  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2649  "primitive descriptor propagation kind mismatch");
2650  }
2651 
2652 protected:
2653  using base = primitive_desc_base;
2654 };
2655 
2657 
2666 
2668 struct reorder : public primitive {
2672 
2674  primitive_desc() = default;
2675 
2691  primitive_desc(const engine &src_engine, const memory::desc &src_md,
2692  const engine &dst_engine, const memory::desc &dst_md,
2693  const primitive_attr &attr = primitive_attr()) {
2694  dnnl_primitive_desc_t result;
2697  src_engine.get(), &dst_md.data, dst_engine.get(),
2698  attr.get()),
2699  "could not create a primitive descriptor for a reorder "
2700  "primitive");
2701  reset(result);
2702  }
2703 
2711  primitive_desc(const memory &src, const memory &dst,
2712  const primitive_attr &attr = primitive_attr()) {
2713  dnnl_primitive_desc_t result;
2714  auto src_md = src.get_desc();
2715  auto dst_md = dst.get_desc();
2718  src.get_engine().get(), &dst_md.data,
2719  dst.get_engine().get(), attr.get()),
2720  "could not create a primitive descriptor for a reorder "
2721  "primitive");
2722  reset(result);
2723  }
2724 
2731 
2736  }
2737 
2742  }
2743 
2745  memory::desc src_desc() const { return base::src_desc(0); }
2746 
2748  memory::desc dst_desc() const { return base::dst_desc(0); }
2749  };
2750 
2752  reorder() = default;
2753 
2756  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
2757 
2765  reorder(const memory &src, const memory &dst,
2766  const primitive_attr &attr = primitive_attr())
2767  : primitive(primitive_desc(src, dst, attr).get()) {}
2768 
2769  using primitive::execute;
2770 
2777  void execute(stream stream, memory &src, memory &dst) const {
2779  }
2780 };
2781 
2783 
2791 
2793 inline std::vector<dnnl_memory_desc_t> convert_to_c(
2794  const std::vector<memory::desc> &mems) {
2795  std::vector<dnnl_memory_desc_t> c_mems;
2796  c_mems.reserve(mems.size());
2797  for (const auto &s : mems)
2798  c_mems.push_back(s.data);
2799  return c_mems;
2800 }
2802 
2804 struct concat : public primitive {
2808 
2810  primitive_desc() = default;
2811 
2831  primitive_desc(const memory::desc &dst, int concat_dimension,
2832  const std::vector<memory::desc> &srcs, const engine &engine,
2833  const primitive_attr &attr = primitive_attr()) {
2834  auto c_srcs = convert_to_c(srcs);
2835 
2836  dnnl_primitive_desc_t result;
2839  (int)c_srcs.size(), concat_dimension, &c_srcs[0],
2840  attr.get(), engine.get()),
2841  "could not create a primitive descriptor for a concat "
2842  "primitive");
2843  reset(result);
2844  }
2845 
2858  primitive_desc(int concat_dimension,
2859  const std::vector<memory::desc> &srcs, const engine &engine,
2860  const primitive_attr &attr = primitive_attr()) {
2861  auto c_api_srcs = convert_to_c(srcs);
2862 
2863  dnnl_primitive_desc_t result;
2865  dnnl_concat_primitive_desc_create(&result, nullptr,
2866  (int)c_api_srcs.size(), concat_dimension,
2867  &c_api_srcs[0], attr.get(), engine.get()),
2868  "could not create a primitive descriptor for a concat "
2869  "primitive");
2870  reset(result);
2871  }
2872 
2879 
2881  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
2882 
2884  memory::desc dst_desc() const { return base::dst_desc(0); }
2885  };
2886 
2888  concat() = default;
2889 
2892  concat(const primitive_desc &pd) : primitive(pd.get()) {}
2893 };
2894 
2896 
2904 
2906 struct sum : public primitive {
2910 
2912  primitive_desc() = default;
2913 
2932  const std::vector<float> &scales,
2933  const std::vector<memory::desc> &srcs, const engine &engine,
2934  const primitive_attr &attr = primitive_attr()) {
2935  error::wrap_c_api(scales.size() == srcs.size()
2936  ? dnnl_success
2938  "counts of scales and sources are not equal");
2939 
2940  auto c_api_srcs = convert_to_c(srcs);
2941 
2942  dnnl_primitive_desc_t result;
2944  (int)c_api_srcs.size(), &scales[0],
2945  &c_api_srcs[0], attr.get(), engine.get()),
2946  "could not create a primitive descriptor for a sum "
2947  "primitive");
2948  reset(result);
2949  }
2950 
2961  primitive_desc(const std::vector<float> &scales,
2962  const std::vector<memory::desc> &srcs, const engine &engine,
2963  const primitive_attr &attr = primitive_attr()) {
2964  error::wrap_c_api(scales.size() == srcs.size()
2965  ? dnnl_success
2967  "counts of scales and sources are not equal");
2968 
2969  auto c_api_srcs = convert_to_c(srcs);
2970  dnnl_primitive_desc_t result;
2972  (int)c_api_srcs.size(), &scales[0],
2973  &c_api_srcs[0], attr.get(), engine.get()),
2974  "could not create a primitive descriptor for a sum "
2975  "primitive");
2976  reset(result);
2977  }
2978 
2985 
2987  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
2988 
2990  memory::desc dst_desc() const { return base::dst_desc(0); }
2991  };
2992 
2994  sum() = default;
2995 
2998  sum(const primitive_desc &pd) : primitive(pd.get()) {}
2999 };
3000 
3002 
3005 
3010 
3011  primitive_desc() = default;
3012 
3036  const engine &engine, const_dnnl_primitive_desc_t hint_fwd_pd,
3037  bool allow_empty = false)
3038  : allow_empty_(allow_empty) {
3039  dnnl_primitive_desc_iterator_t iterator = nullptr;
3041  desc, attr ? attr->get() : nullptr, engine.get(), hint_fwd_pd);
3042  if (!allow_empty)
3044  status, "could not create a primitive descriptor iterator");
3045  pd_iterator.reset(iterator);
3046  fetch_impl();
3047  }
3048 
3053  bool next_impl() {
3055  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3056  if (status == dnnl_iterator_ends) return false;
3058  status, "could not advance a primitive descriptor iterator");
3059  fetch_impl();
3060  return true;
3061  }
3062 
3063 private:
3064  bool allow_empty_ = false;
3066  void fetch_impl() {
3068  pd_iterator.get(allow_empty_));
3069  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3071  "could not fetch a primitive descriptor from a primitive "
3072  "descriptor iterator");
3073  reset(pd);
3074  }
3075 };
3076 
3078 
3088 
3092  struct desc {
3094 
3128  const memory::desc &src_desc, const memory::desc &weights_desc,
3129  const memory::desc &bias_desc, const memory::desc &dst_desc,
3130  const memory::dims &strides, const memory::dims &padding_l,
3131  const memory::dims &padding_r) {
3132  memory::validate_dims(strides);
3133  memory::validate_dims(padding_l);
3134  memory::validate_dims(padding_r);
3138  convert_to_c(algorithm), &src_desc.data,
3139  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3140  &strides[0], &padding_l[0], &padding_r[0]),
3141  "could not create a descriptor for a convolution forward "
3142  "propagation primitive");
3143  }
3144 
3175  const memory::desc &src_desc, const memory::desc &weights_desc,
3176  const memory::desc &dst_desc, const memory::dims &strides,
3177  const memory::dims &padding_l, const memory::dims &padding_r) {
3178  memory::validate_dims(strides);
3179  memory::validate_dims(padding_l);
3180  memory::validate_dims(padding_r);
3184  convert_to_c(algorithm), &src_desc.data,
3185  &weights_desc.data, nullptr, &dst_desc.data,
3186  &strides[0], &padding_l[0], &padding_r[0]),
3187  "could not create a descriptor for a convolution forward "
3188  "propagation primitive");
3189  }
3190 
3226  const memory::desc &src_desc, const memory::desc &weights_desc,
3227  const memory::desc &bias_desc, const memory::desc &dst_desc,
3228  const memory::dims &strides, const memory::dims &dilates,
3229  const memory::dims &padding_l, const memory::dims &padding_r) {
3230  memory::validate_dims(strides);
3231  memory::validate_dims(dilates);
3232  memory::validate_dims(padding_l);
3233  memory::validate_dims(padding_r);
3236  convert_to_c(algorithm), &src_desc.data,
3237  &weights_desc.data, &bias_desc.data,
3238  &dst_desc.data, &strides[0], &dilates[0],
3239  &padding_l[0], &padding_r[0]),
3240  "could not create a descriptor for a dilated convolution "
3241  "forward propagation primitive");
3242  }
3243 
3276  const memory::desc &src_desc, const memory::desc &weights_desc,
3277  const memory::desc &dst_desc, const memory::dims &strides,
3278  const memory::dims &dilates, const memory::dims &padding_l,
3279  const memory::dims &padding_r) {
3280  memory::validate_dims(strides);
3281  memory::validate_dims(dilates);
3282  memory::validate_dims(padding_l);
3283  memory::validate_dims(padding_r);
3286  convert_to_c(algorithm), &src_desc.data,
3287  &weights_desc.data, nullptr,
3288  &dst_desc.data, &strides[0], &dilates[0],
3289  &padding_l[0], &padding_r[0]),
3290  "could not create a descriptor for a dilated convolution "
3291  "forward propagation primitive");
3292  }
3293  };
3294 
3298  primitive_desc() = default;
3299 
3311  bool allow_empty = false)
3312  : dnnl::primitive_desc(
3313  &desc.data, nullptr, engine, nullptr, allow_empty) {}
3314 
3327  const engine &engine, bool allow_empty = false)
3328  : dnnl::primitive_desc(
3329  &desc.data, &attr, engine, nullptr, allow_empty) {}
3330 
3338  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3341 
3343  memory::desc src_desc() const { return base::src_desc(0); }
3344 
3347 
3349  memory::desc dst_desc() const { return base::dst_desc(0); }
3350 
3356  };
3357 
3359  convolution_forward() = default;
3360 
3365 };
3366 
3369 
3371  struct desc {
3373 
3400  desc(algorithm algorithm, const memory::desc &diff_src_desc,
3401  const memory::desc &weights_desc,
3402  const memory::desc &diff_dst_desc, const memory::dims &strides,
3403  const memory::dims &padding_l, const memory::dims &padding_r) {
3404  memory::validate_dims(strides);
3405  memory::validate_dims(padding_l);
3406  memory::validate_dims(padding_r);
3409  convert_to_c(algorithm), &diff_src_desc.data,
3410  &weights_desc.data, &diff_dst_desc.data,
3411  &strides[0], &padding_l[0], &padding_r[0]),
3412  "could not create a descriptor for a convolution backward "
3413  "propagation primitive");
3414  }
3415 
3444  desc(algorithm algorithm, const memory::desc &diff_src_desc,
3445  const memory::desc &weights_desc,
3446  const memory::desc &diff_dst_desc, const memory::dims &strides,
3447  const memory::dims &dilates, const memory::dims &padding_l,
3448  const memory::dims &padding_r) {
3449  memory::validate_dims(strides);
3450  memory::validate_dims(dilates);
3451  memory::validate_dims(padding_l);
3452  memory::validate_dims(padding_r);
3455  convert_to_c(algorithm), &diff_src_desc.data,
3456  &weights_desc.data, &diff_dst_desc.data,
3457  &strides[0], &dilates[0], &padding_l[0],
3458  &padding_r[0]),
3459  "could not create a descriptor for a dilated convolution "
3460  "backward propagation primitive");
3461  }
3462  };
3463 
3467  primitive_desc() = default;
3468 
3483  const convolution_forward::primitive_desc &hint_fwd_pd,
3484  bool allow_empty = false)
3485  : dnnl::primitive_desc(&desc.data, nullptr, engine,
3486  hint_fwd_pd.get(), allow_empty) {}
3487 
3503  const engine &engine,
3504  const convolution_forward::primitive_desc &hint_fwd_pd,
3505  bool allow_empty = false)
3506  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
3507  allow_empty) {}
3508 
3516  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3518 
3521 
3524 
3527  };
3528 
3530  convolution_backward_data() = default;
3531 
3536 };
3537 
3541  struct desc {
3543 
3574  const memory::desc &diff_weights_desc,
3575  const memory::desc &diff_bias_desc,
3576  const memory::desc &diff_dst_desc, const memory::dims &strides,
3577  const memory::dims &padding_l, const memory::dims &padding_r) {
3578  memory::validate_dims(strides);
3579  memory::validate_dims(padding_l);
3580  memory::validate_dims(padding_r);
3583  convert_to_c(algorithm), &src_desc.data,
3584  &diff_weights_desc.data, &diff_bias_desc.data,
3585  &diff_dst_desc.data, &strides[0], &padding_l[0],
3586  &padding_r[0]),
3587  "could not create a descriptor for a convolution weights "
3588  "update primitive");
3589  }
3590 
3618  const memory::desc &diff_weights_desc,
3619  const memory::desc &diff_dst_desc, const memory::dims &strides,
3620  const memory::dims &padding_l, const memory::dims &padding_r) {
3621  memory::validate_dims(strides);
3622  memory::validate_dims(padding_l);
3623  memory::validate_dims(padding_r);
3625  convert_to_c(algorithm), &src_desc.data,
3626  &diff_weights_desc.data, nullptr,
3627  &diff_dst_desc.data, &strides[0],
3628  &padding_l[0], &padding_r[0]),
3629  "could not create a descriptor for a convolution weights "
3630  "update primitive");
3631  }
3632 
3665  const memory::desc &diff_weights_desc,
3666  const memory::desc &diff_bias_desc,
3667  const memory::desc &diff_dst_desc, const memory::dims &strides,
3668  const memory::dims &dilates, const memory::dims &padding_l,
3669  const memory::dims &padding_r) {
3670  memory::validate_dims(strides);
3671  memory::validate_dims(dilates);
3672  memory::validate_dims(padding_l);
3673  memory::validate_dims(padding_r);
3676  convert_to_c(algorithm), &src_desc.data,
3677  &diff_weights_desc.data, &diff_bias_desc.data,
3678  &diff_dst_desc.data, &strides[0], &dilates[0],
3679  &padding_l[0], &padding_r[0]),
3680  "could not create a descriptor for a dilated convolution "
3681  "weights gradient primitive");
3682  }
3683 
3713  const memory::desc &diff_weights_desc,
3714  const memory::desc &diff_dst_desc, const memory::dims &strides,
3715  const memory::dims &dilates, const memory::dims &padding_l,
3716  const memory::dims &padding_r) {
3717  memory::validate_dims(strides);
3718  memory::validate_dims(dilates);
3719  memory::validate_dims(padding_l);
3720  memory::validate_dims(padding_r);
3723  convert_to_c(algorithm), &src_desc.data,
3724  &diff_weights_desc.data, nullptr,
3725  &diff_dst_desc.data, &strides[0], &dilates[0],
3726  &padding_l[0], &padding_r[0]),
3727  "could not create a descriptor for a dilated convolution "
3728  "weights gradient primitive");
3729  }
3730  };
3731 
3735  primitive_desc() = default;
3736 
3750  const convolution_forward::primitive_desc &hint_fwd_pd,
3751  bool allow_empty = false)
3752  : dnnl::primitive_desc(&desc.data, nullptr, engine,
3753  hint_fwd_pd.get(), allow_empty) {}
3754 
3769  const engine &engine,
3770  const convolution_forward::primitive_desc &hint_fwd_pd,
3771  bool allow_empty = false)
3772  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
3773  allow_empty) {}
3774 
3782  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3784 
3786  memory::desc src_desc() const { return base::src_desc(0); }
3787 
3790  return base::diff_weights_desc(0);
3791  }
3792 
3795 
3801  return base::diff_weights_desc(1);
3802  }
3803  };
3804 
3806  convolution_backward_weights() = default;
3807 
3812 };
3813 
3815 //
3823 
3827  struct desc {
3829 
3861  const memory::desc &src_desc, const memory::desc &weights_desc,
3862  const memory::desc &bias_desc, const memory::desc &dst_desc,
3863  const memory::dims &strides, const memory::dims &padding_l,
3864  const memory::dims &padding_r) {
3865  memory::validate_dims(strides);
3866  memory::validate_dims(padding_l);
3867  memory::validate_dims(padding_r);
3871  convert_to_c(algorithm), &src_desc.data,
3872  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3873  &strides[0], &padding_l[0], &padding_r[0]),
3874  "could not create a descriptor for a deconvolution forward "
3875  "propagation primitive");
3876  }
3877 
3906  const memory::desc &src_desc, const memory::desc &weights_desc,
3907  const memory::desc &dst_desc, const memory::dims &strides,
3908  const memory::dims &padding_l, const memory::dims &padding_r) {
3909  memory::validate_dims(strides);
3910  memory::validate_dims(padding_l);
3911  memory::validate_dims(padding_r);
3915  convert_to_c(algorithm), &src_desc.data,
3916  &weights_desc.data, nullptr, &dst_desc.data,
3917  &strides[0], &padding_l[0], &padding_r[0]),
3918  "could not create a descriptor for a deconvolution forward "
3919  "propagation primitive");
3920  }
3921 
3955  const memory::desc &src_desc, const memory::desc &weights_desc,
3956  const memory::desc &bias_desc, const memory::desc &dst_desc,
3957  const memory::dims &strides, const memory::dims &dilates,
3958  const memory::dims &padding_l, const memory::dims &padding_r) {
3959  memory::validate_dims(strides);
3960  memory::validate_dims(dilates);
3961  memory::validate_dims(padding_l);
3962  memory::validate_dims(padding_r);
3964  &data, dnnl::convert_to_c(prop_kind),
3965  convert_to_c(algorithm), &src_desc.data,
3966  &weights_desc.data, &bias_desc.data,
3967  &dst_desc.data, &strides[0], &dilates[0],
3968  &padding_l[0], &padding_r[0]),
3969  "could not create a descriptor for a dilated deconvolution "
3970  "forward propagation primitive");
3971  }
3972 
4003  const memory::desc &src_desc, const memory::desc &weights_desc,
4004  const memory::desc &dst_desc, const memory::dims &strides,
4005  const memory::dims &dilates, const memory::dims &padding_l,
4006  const memory::dims &padding_r) {
4007  memory::validate_dims(strides);
4008  memory::validate_dims(dilates);
4009  memory::validate_dims(padding_l);
4010  memory::validate_dims(padding_r);
4012  &data, dnnl::convert_to_c(prop_kind),
4013  convert_to_c(algorithm), &src_desc.data,
4014  &weights_desc.data, nullptr,
4015  &dst_desc.data, &strides[0], &dilates[0],
4016  &padding_l[0], &padding_r[0]),
4017  "could not create a descriptor for a dilated deconvolution "
4018  "forward propagation primitive");
4019  }
4020  };
4021 
4025  primitive_desc() = default;
4026 
4038  bool allow_empty = false)
4039  : dnnl::primitive_desc(
4040  &desc.data, nullptr, engine, nullptr, allow_empty) {}
4041 
4054  const engine &engine, bool allow_empty = false)
4055  : dnnl::primitive_desc(
4056  &desc.data, &attr, engine, nullptr, allow_empty) {}
4057 
4065  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4068 
4070  memory::desc src_desc() const { return base::src_desc(0); }
4071 
4074 
4076  memory::desc dst_desc() const { return base::dst_desc(0); }
4077 
4080  };
4081 
4083  deconvolution_forward() = default;
4084 
4089 };
4090 
4094  struct desc {
4096 
4122  desc(algorithm algorithm, const memory::desc &diff_src_desc,
4123  const memory::desc &weights_desc,
4124  const memory::desc &diff_dst_desc, const memory::dims &strides,
4125  const memory::dims &padding_l, const memory::dims &padding_r) {
4126  memory::validate_dims(strides);
4127  memory::validate_dims(padding_l);
4128  memory::validate_dims(padding_r);
4131  convert_to_c(algorithm), &diff_src_desc.data,
4132  &weights_desc.data, &diff_dst_desc.data,
4133  &strides[0], &padding_l[0], &padding_r[0]),
4134  "could not create a descriptor for a deconvolution "
4135  "backward propagation primitive");
4136  }
4137 
4165  desc(algorithm algorithm, const memory::desc &diff_src_desc,
4166  const memory::desc &weights_desc,
4167  const memory::desc &diff_dst_desc, const memory::dims &strides,
4168  const memory::dims &dilates, const memory::dims &padding_l,
4169  const memory::dims &padding_r) {
4170  memory::validate_dims(strides);
4171  memory::validate_dims(dilates);
4172  memory::validate_dims(padding_l);
4173  memory::validate_dims(padding_r);
4176  convert_to_c(algorithm), &diff_src_desc.data,
4177  &weights_desc.data, &diff_dst_desc.data,
4178  &strides[0], &dilates[0], &padding_l[0],
4179  &padding_r[0]),
4180  "could not create a descriptor for a dilated deconvolution "
4181  "backward propagation primitive");
4182  }
4183  };
4184 
4188  primitive_desc() = default;
4189 
4204  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4205  bool allow_empty = false)
4206  : dnnl::primitive_desc(&desc.data, nullptr, engine,
4207  hint_fwd_pd.get(), allow_empty) {}
4208 
4224  const engine &engine,
4225  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4226  bool allow_empty = false)
4227  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
4228  allow_empty) {}
4229 
4237  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4239 
4242 
4245 
4248  };
4249 
4251  deconvolution_backward_data() = default;
4252 
4257 };
4258 
4262  struct desc {
4264 
4294  const memory::desc &diff_weights_desc,
4295  const memory::desc &diff_bias_desc,
4296  const memory::desc &diff_dst_desc, const memory::dims &strides,
4297  const memory::dims &padding_l, const memory::dims &padding_r) {
4298  memory::validate_dims(strides);
4299  memory::validate_dims(padding_l);
4300  memory::validate_dims(padding_r);
4303  convert_to_c(algorithm), &src_desc.data,
4304  &diff_weights_desc.data, &diff_bias_desc.data,
4305  &diff_dst_desc.data, &strides[0], &padding_l[0],
4306  &padding_r[0]),
4307  "could not create a descriptor for a deconvolution weights "
4308  "update primitive");
4309  }
4310 
4337  const memory::desc &diff_weights_desc,
4338  const memory::desc &diff_dst_desc, const memory::dims &strides,
4339  const memory::dims &padding_l, const memory::dims &padding_r) {
4340  memory::validate_dims(strides);
4341  memory::validate_dims(padding_l);
4342  memory::validate_dims(padding_r);
4344  &data, convert_to_c(algorithm),
4345  &src_desc.data, &diff_weights_desc.data,
4346  nullptr, &diff_dst_desc.data, &strides[0],
4347  &padding_l[0], &padding_r[0]),
4348  "could not create a descriptor for a deconvolution weights "
4349  "update primitive");
4350  }
4351 
4383  const memory::desc &diff_weights_desc,
4384  const memory::desc &diff_bias_desc,
4385  const memory::desc &diff_dst_desc, const memory::dims &strides,
4386  const memory::dims &dilates, const memory::dims &padding_l,
4387  const memory::dims &padding_r) {
4388  memory::validate_dims(strides);
4389  memory::validate_dims(dilates);
4390  memory::validate_dims(padding_l);
4391  memory::validate_dims(padding_r);
4394  convert_to_c(algorithm), &src_desc.data,
4395  &diff_weights_desc.data, &diff_bias_desc.data,
4396  &diff_dst_desc.data, &strides[0], &dilates[0],
4397  &padding_l[0], &padding_r[0]),
4398  "could not create a descriptor for a dilated deconvolution "
4399  "weights gradient primitive");
4400  }
4401 
4430  const memory::desc &diff_weights_desc,
4431  const memory::desc &diff_dst_desc, const memory::dims &strides,
4432  const memory::dims &dilates, const memory::dims &padding_l,
4433  const memory::dims &padding_r) {
4434  memory::validate_dims(strides);
4435  memory::validate_dims(dilates);
4436  memory::validate_dims(padding_l);
4437  memory::validate_dims(padding_r);
4440  convert_to_c(algorithm), &src_desc.data,
4441  &diff_weights_desc.data, nullptr,
4442  &diff_dst_desc.data, &strides[0], &dilates[0],
4443  &padding_l[0], &padding_r[0]),
4444  "could not create a descriptor for a dilated deconvolution "
4445  "weights gradient primitive");
4446  }
4447  };
4448 
4452  primitive_desc() = default;
4453 
4467  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4468  bool allow_empty = false)
4469  : dnnl::primitive_desc(&desc.data, nullptr, engine,
4470  hint_fwd_pd.get(), allow_empty) {}
4471 
4486  const engine &engine,
4487  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4488  bool allow_empty = false)
4489  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
4490  allow_empty) {}
4491 
4499  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4501 
4503  memory::desc src_desc() const { return base::src_desc(0); }
4504 
4507  return base::diff_weights_desc(0);
4508  }
4509 
4512 
4515  return base::diff_weights_desc(1);
4516  }
4517  };
4518 
4520  deconvolution_backward_weights() = default;
4521 
4526 };
4527 
4529 
4538 
4540 struct lrn_forward : public primitive {
4542  struct desc {
4543  dnnl_lrn_desc_t data;
4544 
4570  const memory::desc &data_desc, memory::dim local_size,
4571  float alpha, float beta, float k = 1.f) {
4574  convert_to_c(algorithm), &data_desc.data,
4575  local_size, alpha, beta, k),
4576  "could not create a descriptor for a lrn forward "
4577  "propagation primitive");
4578  }
4579  };
4580 
4584  primitive_desc() = default;
4585 
4596  bool allow_empty = false)
4597  : dnnl::primitive_desc(
4598  &desc.data, nullptr, engine, nullptr, allow_empty) {}
4599 
4611  const engine &engine, bool allow_empty = false)
4612  : dnnl::primitive_desc(
4613  &desc.data, &attr, engine, nullptr, allow_empty) {}
4614 
4622  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
4625 
4627  memory::desc src_desc() const { return base::src_desc(0); }
4628 
4630  memory::desc dst_desc() const { return base::dst_desc(0); }
4631 
4634  };
4635 
4637  lrn_forward() = default;
4638 
4643 };
4644 
4646 struct lrn_backward : public primitive {
4648  struct desc {
4649  dnnl_lrn_desc_t data;
4650 
4674  const memory::desc &diff_data_desc, memory::dim local_size,
4675  float alpha, float beta, float k = 1.f) {
4678  &diff_data_desc.data, &data_desc.data, local_size,
4679  alpha, beta, k),
4680  "could not create a descriptor for a lrn backward "
4681  "propagation primitive");
4682  }
4683  };
4684 
4688  primitive_desc() = default;
4689 
4703  const lrn_forward::primitive_desc &hint_fwd_pd,
4704  bool allow_empty = false)
4705  : dnnl::primitive_desc(&desc.data, nullptr, engine,
4706  hint_fwd_pd.get(), allow_empty) {}
4707 
4722  const engine &engine,
4723  const lrn_forward::primitive_desc &hint_fwd_pd,
4724  bool allow_empty = false)
4725  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
4726  allow_empty) {}
4727 
4735  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
4737 
4740 
4743 
4746  };
4747 
4749  lrn_backward() = default;
4750 
4755 };
4756 
4758 
4766 
4768 struct pooling_forward : public primitive {
4770  struct desc {
4771  dnnl_pooling_desc_t data;
4772 
4803  const memory::desc &src_desc, const memory::desc &dst_desc,
4804  const memory::dims &strides, const memory::dims &kernel,
4805  const memory::dims &padding_l, const memory::dims &padding_r) {
4806  memory::validate_dims(strides);
4807  memory::validate_dims(kernel);
4808  memory::validate_dims(padding_l);
4809  memory::validate_dims(padding_r);
4812  convert_to_c(algorithm), &src_desc.data,
4813  &dst_desc.data, &strides[0], &kernel[0],
4814  &padding_l[0], &padding_r[0]),
4815  "could not create a descriptor for a pooling forward "
4816  "propagation primitive");
4817  }
4818  };
4819 
4823  primitive_desc() = default;
4824 
4835  bool allow_empty = false)
4836  : dnnl::primitive_desc(
4837  &desc.data, nullptr, engine, nullptr, allow_empty) {}
4838 
4850  const engine &engine, bool allow_empty = false)
4851  : dnnl::primitive_desc(
4852  &desc.data, &attr, engine, nullptr, allow_empty) {}
4853 
4861  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
4864 
4866  memory::desc src_desc() const { return base::src_desc(0); }
4867 
4869  memory::desc dst_desc() const { return base::dst_desc(0); }
4870 
4873  };
4874 
4876  pooling_forward() = default;
4877 
4882 };
4883 
4885 struct pooling_backward : public primitive {
4887  struct desc {
4888  dnnl_pooling_desc_t data;
4889 
4915  desc(algorithm algorithm, const memory::desc &diff_src_desc,
4916  const memory::desc &diff_dst_desc, const memory::dims &strides,
4917  const memory::dims &kernel, const memory::dims &padding_l,
4918  const memory::dims &padding_r) {
4919  memory::validate_dims(strides);
4920  memory::validate_dims(kernel);
4921  memory::validate_dims(padding_l);
4922  memory::validate_dims(padding_r);
4925  convert_to_c(algorithm), &diff_src_desc.data,
4926  &diff_dst_desc.data, &strides[0], &kernel[0],
4927  &padding_l[0], &padding_r[0]),
4928  "could not create a descriptor for a pooling backward "
4929  "propagation primitive");
4930  }
4931  };
4932 
4936  primitive_desc() = default;
4937 
4951  const pooling_forward::primitive_desc &hint_fwd_pd,
4952  bool allow_empty = false)
4953  : dnnl::primitive_desc(&desc.data, nullptr, engine,
4954  hint_fwd_pd.get(), allow_empty) {}
4955 
4970  const engine &engine,
4971  const pooling_forward::primitive_desc &hint_fwd_pd,
4972  bool allow_empty = false)
4973  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
4974  allow_empty) {}
4975 
4983  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
4985 
4988 
4991 
4994  };
4995 
4997  pooling_backward() = default;
4998 
5003 };
5004 
5006 
5028 
5030 struct eltwise_forward : public primitive {
5032  struct desc {
5033  dnnl_eltwise_desc_t data;
5034 
5054  const memory::desc &data_desc, float alpha = 0,
5055  float beta = 0) {
5059  &data_desc.data, alpha, beta),
5060  "could not create a descriptor for an eltwise forward "
5061  "propagation primitive");
5062  }
5063  };
5064 
5068  primitive_desc() = default;
5069 
5081  bool allow_empty = false)
5082  : dnnl::primitive_desc(
5083  &desc.data, nullptr, engine, nullptr, allow_empty) {}
5084 
5097  const engine &engine, bool allow_empty = false)
5098  : dnnl::primitive_desc(
5099  &desc.data, &attr, engine, nullptr, allow_empty) {}
5100 
5108  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5111 
5113  memory::desc src_desc() const { return base::src_desc(0); }
5114 
5116  memory::desc dst_desc() const { return base::dst_desc(0); }
5117  };
5118 
5120  eltwise_forward() = default;
5121 
5126 };
5127 
5129 struct eltwise_backward : public primitive {
5131  struct desc {
5132  dnnl_eltwise_desc_t data;
5133 
5152  desc(algorithm algorithm, const memory::desc &diff_data_desc,
5153  const memory::desc &data_desc, float alpha = 0,
5154  float beta = 0) {
5157  dnnl::convert_to_c(algorithm), &diff_data_desc.data,
5158  &data_desc.data, alpha, beta),
5159  "could not create a descriptor for an eltwise backward "
5160  "propagation primitive");
5161  }
5162  };
5163 
5167  primitive_desc() = default;
5168 
5183  const eltwise_forward::primitive_desc &hint_fwd_pd,
5184  bool allow_empty = false)
5185  : dnnl::primitive_desc(&desc.data, nullptr, engine,
5186  hint_fwd_pd.get(), allow_empty) {}
5187 
5203  const engine &engine,
5204  const eltwise_forward::primitive_desc &hint_fwd_pd,
5205  bool allow_empty = false)
5206  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
5207  allow_empty) {}
5208 
5216  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5218 
5220  memory::desc src_desc() const { return base::src_desc(0); }
5221 
5224 
5227  };
5228 
5230  eltwise_backward() = default;
5231 
5236 };
5237 
5239 
5247 
5249 struct softmax_forward : public primitive {
5251  struct desc {
5252  dnnl_softmax_desc_t data;
5253 
5255  desc() = default;
5256 
5272  int softmax_axis) {
5275  &data_desc.data, softmax_axis),
5276  "could not create a descriptor for a softmax forward "
5277  "propagation primitive");
5278  }
5279  };
5280 
5284  primitive_desc() = default;
5285 
5297  bool allow_empty = false)
5298  : dnnl::primitive_desc(
5299  &desc.data, nullptr, engine, nullptr, allow_empty) {}
5300 
5313  const engine &engine, bool allow_empty = false)
5314  : dnnl::primitive_desc(
5315  &desc.data, &attr, engine, nullptr, allow_empty) {}
5316 
5324  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5327 
5329  memory::desc src_desc() const { return base::src_desc(0); }
5330 
5332  memory::desc dst_desc() const { return base::dst_desc(0); }
5333  };
5334 
5336  softmax_forward() = default;
5337 
5342 };
5343 
5345 struct softmax_backward : public primitive {
5347  struct desc {
5348  dnnl_softmax_desc_t data;
5349 
5351  desc() = default;
5352 
5366  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5367  int softmax_axis) {
5369  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
5370  &data_desc.data, softmax_axis),
5371  "could not create a descriptor for a softmax backward "
5372  "propagation primitive");
5373  }
5374  };
5375 
5379  primitive_desc() = default;
5380 
5395  const softmax_forward::primitive_desc &hint_fwd_pd,
5396  bool allow_empty = false)
5397  : dnnl::primitive_desc(&desc.data, nullptr, engine,
5398  hint_fwd_pd.get(), allow_empty) {}
5399 
5415  const engine &engine,
5416  const softmax_forward::primitive_desc &hint_fwd_pd,
5417  bool allow_empty = false)
5418  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
5419  allow_empty) {}
5420 
5428  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5430 
5432  memory::desc dst_desc() const { return base::dst_desc(0); }
5433 
5436 
5439  };
5440 
5442  softmax_backward() = default;
5443 
5448 };
5449 
5451 
5459 
5463  struct desc {
5465 
5467  desc() = default;
5468 
5484  int logsoftmax_axis) {
5487  &data_desc.data, logsoftmax_axis),
5488  "could not create a descriptor for a logsoftmax forward "
5489  "propagation primitive");
5490  }
5491  };
5492 
5496  primitive_desc() = default;
5497 
5509  bool allow_empty = false)
5510  : dnnl::primitive_desc(
5511  &desc.data, nullptr, engine, nullptr, allow_empty) {}
5512 
5525  const engine &engine, bool allow_empty = false)
5526  : dnnl::primitive_desc(
5527  &desc.data, &attr, engine, nullptr, allow_empty) {}
5528 
5536  : dnnl::primitive_desc(pd,
5537  // Logsoftmax and softmax share the implementation and
5538  // currently report the same primitive kind. Hence this
5539  // must be softmax and not logsoftmax.
5540  dnnl::primitive::kind::softmax,
5543 
5545  memory::desc src_desc() const { return base::src_desc(0); }
5546 
5548  memory::desc dst_desc() const { return base::dst_desc(0); }
5549  };
5550 
5552  logsoftmax_forward() = default;
5553 
5558 };
5559 
5563  struct desc {
5565 
5567  desc() = default;
5568 
5583  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5584  int logsoftmax_axis) {
5586  &diff_data_desc.data, &data_desc.data,
5587  logsoftmax_axis),
5588  "could not create a descriptor for a logsoftmax backward "
5589  "propagation primitive");
5590  }
5591  };
5592 
5596  primitive_desc() = default;
5597 
5612  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
5613  bool allow_empty = false)
5614  : dnnl::primitive_desc(&desc.data, nullptr, engine,
5615  hint_fwd_pd.get(), allow_empty) {}
5616 
5632  const engine &engine,
5633  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
5634  bool allow_empty = false)
5635  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
5636  allow_empty) {}
5637 
5645  : dnnl::primitive_desc(pd,
5646  // Logsoftmax and softmax share the implementation and
5647  // currently report the same primitive kind. Hence this
5648  // must be softmax and not logsoftmax.
5649  dnnl::primitive::kind::softmax,
5651 
5653  memory::desc dst_desc() const { return base::dst_desc(0); }
5654 
5657 
5660  };
5661 
5663  logsoftmax_backward() = default;
5664 
5669 };
5670 
5672 
5692 
5696  struct desc {
5698 
5735  desc(prop_kind prop_kind, const memory::desc &data_desc, float epsilon,
5736  normalization_flags flags) {
5739  dnnl::convert_to_c(prop_kind), &data_desc.data,
5740  epsilon, convert_to_c(flags)),
5741  "could not create a descriptor for a batch normalization "
5742  "forward propagation primitive");
5743  }
5744  };
5745 
5750  primitive_desc() = default;
5751 
5763  bool allow_empty = false)
5764  : dnnl::primitive_desc(
5765  &desc.data, nullptr, engine, nullptr, allow_empty) {}
5766 
5779  const engine &engine, bool allow_empty = false)
5780  : dnnl::primitive_desc(
5781  &desc.data, &attr, engine, nullptr, allow_empty) {}
5782 
5790  : dnnl::primitive_desc(pd,
5791  dnnl::primitive::kind::batch_normalization,
5794 
5796  memory::desc src_desc() const { return base::src_desc(0); }
5797 
5799  memory::desc dst_desc() const { return base::dst_desc(0); }
5800 
5803 
5806 
5809  memory::desc mean_desc() const { return stat_desc(mean); }
5810 
5813  memory::desc variance_desc() const { return stat_desc(var); }
5814 
5815  private:
5816  enum {
5817  mean = 1,
5818  var = 2,
5819  };
5820  memory::desc stat_desc(int kind) const {
5825  &p),
5826  "could not retrieve a descriptor from a primitive "
5827  "descriptor for batch normalization forward propagation "
5828  "primitive");
5829  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
5830  : query::dst_md,
5831  kind);
5832  }
5833  };
5834 
5836  batch_normalization_forward() = default;
5837 
5842 };
5843 
5847  struct desc {
5849 
5879  desc(prop_kind prop_kind, const memory::desc &diff_data_desc,
5880  const memory::desc &data_desc, float epsilon,
5881  normalization_flags flags) {
5884  dnnl::convert_to_c(prop_kind), &diff_data_desc.data,
5885  &data_desc.data, epsilon, convert_to_c(flags)),
5886  "could not create a descriptor for a batch normalization "
5887  "backward propagation primitive");
5888  }
5889  };
5890 
5895  primitive_desc() = default;
5896 
5912  bool allow_empty = false)
5913  : dnnl::primitive_desc(&desc.data, nullptr, engine,
5914  hint_fwd_pd.get(), allow_empty) {}
5915 
5931  const engine &engine,
5933  bool allow_empty = false)
5934  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
5935  allow_empty) {}
5936 
5944  : dnnl::primitive_desc(pd,
5945  dnnl::primitive::kind::batch_normalization,
5947  }
5948 
5950  memory::desc src_desc() const { return base::src_desc(0); }
5951 
5954 
5956  memory::desc dst_desc() const { return base::dst_desc(0); }
5957 
5960 
5963 
5966  return base::diff_weights_desc(0);
5967  }
5968 
5971 
5974  return query_md(query::src_md, 2);
5975  }
5976 
5979  };
5980 
5982  batch_normalization_backward() = default;
5983 
5988 };
5989 
5991 
6013 
6017  struct desc {
6019 
6050  const memory::desc &stat_desc, float epsilon,
6051  normalization_flags flags) {
6054  dnnl::convert_to_c(prop_kind), &data_desc.data,
6055  &stat_desc.data, epsilon, convert_to_c(flags)),
6056  "could not create a descriptor for a layer normalization "
6057  "forward propagation primitive");
6058  }
6059 
6088  desc(prop_kind prop_kind, const memory::desc &data_desc, float epsilon,
6089  normalization_flags flags) {
6092  dnnl::convert_to_c(prop_kind), &data_desc.data,
6093  nullptr, epsilon, convert_to_c(flags)),
6094  "could not create a descriptor for a layer normalization "
6095  "forward propagation primitive");
6096  }
6097  };
6098 
6103  primitive_desc() = default;
6104 
6116  bool allow_empty = false)
6117  : dnnl::primitive_desc(
6118  &desc.data, nullptr, engine, nullptr, allow_empty) {}
6119 
6132  const engine &engine, bool allow_empty = false)
6133  : dnnl::primitive_desc(
6134  &desc.data, &attr, engine, nullptr, allow_empty) {}
6135 
6143  : dnnl::primitive_desc(pd,
6144  dnnl::primitive::kind::layer_normalization,
6147 
6149  memory::desc src_desc() const { return base::src_desc(0); }
6150 
6152  memory::desc dst_desc() const { return base::dst_desc(0); }
6153 
6156 
6159 
6161  memory::desc mean_desc() const { return stat_desc(mean); }
6162 
6164  memory::desc variance_desc() const { return stat_desc(var); }
6165 
6166  private:
6167  enum {
6168  mean = 1,
6169  var = 2,
6170  };
6171  memory::desc stat_desc(int kind) const {
6176  &p),
6177  "could not retrieve a descriptor from a primitive "
6178  "descriptor for layer normalization forward propagation "
6179  "primitive");
6180  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6181  : query::dst_md,
6182  kind);
6183  }
6184  };
6185 
6187  layer_normalization_forward() = default;
6188 
6193 };
6194 
6198  struct desc {
6200 
6229  desc(prop_kind prop_kind, const memory::desc &diff_data_desc,
6230  const memory::desc &data_desc, const memory::desc &stat_desc,
6231  float epsilon, normalization_flags flags) {
6234  dnnl::convert_to_c(prop_kind), &diff_data_desc.data,
6235  &data_desc.data, &stat_desc.data, epsilon,
6236  convert_to_c(flags)),
6237  "could not create a descriptor for a batch normalization "
6238  "backward propagation primitive");
6239  }
6240 
6268  desc(prop_kind prop_kind, const memory::desc &diff_data_desc,
6269  const memory::desc &data_desc, float epsilon,
6270  normalization_flags flags) {
6273  &diff_data_desc.data, &data_desc.data,
6274  nullptr, epsilon, convert_to_c(flags)),
6275  "could not create a descriptor for a batch normalization "
6276  "backward propagation primitive");
6277  }
6278  };
6279 
6284  primitive_desc() = default;
6285 
6301  bool allow_empty = false)
6302  : dnnl::primitive_desc(&desc.data, nullptr, engine,
6303  hint_fwd_pd.get(), allow_empty) {}
6304 
6320  const engine &engine,
6322  bool allow_empty = false)
6323  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
6324  allow_empty) {}
6325 
6333  : dnnl::primitive_desc(pd,
6334  dnnl::primitive::kind::layer_normalization,
6336  }
6337 
6339  memory::desc src_desc() const { return base::src_desc(0); }
6340 
6343 
6345  memory::desc dst_desc() const { return base::dst_desc(0); }
6346 
6349 
6352 
6355  return base::diff_weights_desc(0);
6356  }
6357 
6360 
6363  return query_md(query::src_md, 2);
6364  }
6365 
6368  };
6369 
6371  layer_normalization_backward() = default;
6372 
6377 };
6378 
6380 
6388 
6392  struct desc {
6394 
6418  const memory::desc &weights_desc, const memory::desc &bias_desc,
6419  const memory::desc &dst_desc) {
6422  &src_desc.data, &weights_desc.data,
6423  &bias_desc.data, &dst_desc.data),
6424  "could not create a descriptor for an inner product "
6425  "forward propagation primitive");
6426  }
6427 
6449  const memory::desc &weights_desc,
6450  const memory::desc &dst_desc) {
6453  dnnl::convert_to_c(prop_kind), &src_desc.data,
6454  &weights_desc.data, nullptr, &dst_desc.data),
6455  "could not create a descriptor for an inner product "
6456  "forward propagation primitive");
6457  }
6458  };
6459 
6463  primitive_desc() = default;
6464 
6476  bool allow_empty = false)
6477  : dnnl::primitive_desc(
6478  &desc.data, nullptr, engine, nullptr, allow_empty) {}
6479 
6492  const engine &engine, bool allow_empty = false)
6493  : dnnl::primitive_desc(
6494  &desc.data, &attr, engine, nullptr, allow_empty) {}
6495 
6503  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6506 
6508  memory::desc src_desc() const { return base::src_desc(0); }
6509 
6512 
6514  memory::desc dst_desc() const { return base::dst_desc(0); }
6515 
6518  };
6519 
6521  inner_product_forward() = default;
6522 
6527 };
6528 
6532  struct desc {
6534 
6552  desc(const memory::desc &diff_src_desc,
6553  const memory::desc &weights_desc,
6554  const memory::desc &diff_dst_desc) {
6556  &diff_src_desc.data, &weights_desc.data,
6557  &diff_dst_desc.data),
6558  "could not create a descriptor for an inner product "
6559  "backward propagation primitive");
6560  }
6561  };
6562 
6567  primitive_desc() = default;
6568 
6583  const inner_product_forward::primitive_desc &hint_fwd_pd,
6584  bool allow_empty = false)
6585  : dnnl::primitive_desc(&desc.data, nullptr, engine,
6586  hint_fwd_pd.get(), allow_empty) {}
6587 
6603  const engine &engine,
6604  const inner_product_forward::primitive_desc &hint_fwd_pd,
6605  bool allow_empty = false)
6606  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
6607  allow_empty) {}
6608 
6616  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6618 
6621 
6624 
6627  };
6628 
6630  inner_product_backward_data() = default;
6631 
6636 };
6637 
6641  struct desc {
6643 
6663  desc(const memory::desc &src_desc,
6664  const memory::desc &diff_weights_desc,
6665  const memory::desc &diff_bias_desc,
6666  const memory::desc &diff_dst_desc) {
6669  &src_desc.data, &diff_weights_desc.data,
6670  &diff_bias_desc.data, &diff_dst_desc.data),
6671  "could not create a descriptor for an inner product "
6672  "weights gradient primitive");
6673  }
6674 
6692  desc(const memory::desc &src_desc,
6693  const memory::desc &diff_weights_desc,
6694  const memory::desc &diff_dst_desc) {
6697  &src_desc.data, &diff_weights_desc.data, nullptr,
6698  &diff_dst_desc.data),
6699  "could not create a descriptor for an inner product "
6700  "weights gradient primitive");
6701  }
6702  };
6703 
6707  primitive_desc() = default;
6708 
6723  const inner_product_forward::primitive_desc &hint_fwd_pd,
6724  bool allow_empty = false)
6725  : dnnl::primitive_desc(&desc.data, nullptr, engine,
6726  hint_fwd_pd.get(), allow_empty) {}
6727 
6743  const engine &engine,
6744  const inner_product_forward::primitive_desc &hint_fwd_pd,
6745  bool allow_empty = false)
6746  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
6747  allow_empty) {}
6748 
6756  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6758 
6760  memory::desc src_desc() const { return base::src_desc(0); }
6761 
6764  return base::diff_weights_desc(0);
6765  }
6766 
6769 
6772  return base::diff_weights_desc(1);
6773  }
6774  };
6775 
6777  inner_product_backward_weights() = default;
6778 
6783 };
6784 
6786 
6794 
6797  using primitive_desc::primitive_desc;
6798 
6800  rnn_primitive_desc_base() = default;
6801 
6810  dnnl::algorithm cell_kind)
6811  : rnn_primitive_desc_base(pd, prop_kind, prop_kind, cell_kind) {}
6812 
6816 
6822 
6826 
6830 
6834 
6840 
6844 
6850 
6854 
6858 
6864 
6868 
6872  return base::diff_weights_desc(0);
6873  }
6874 
6878  return base::diff_weights_desc(1);
6879  }
6880 
6886 
6890 
6896 
6900 
6901 protected:
6902  using rnn_base = rnn_primitive_desc_base;
6903 
6904  // (Deliberately not using doxygen comments)
6905  //
6906  // Constructs an RNN primitive descriptor base from a C API primitive
6907  // descriptor while checking that it actually describes the expected
6908  // primitive by comparing propagation and primitive kinds. Caller can
6909  // pass two options propagation kinds. This is typically used to check
6910  // that propagation kind is inference or training forward propagation.
6911  //
6912  // @param pd C API primitive descriptor.
6913  // @param prop_kind1 Expected propagation kind.
6914  // @param prop_kind2 Expected propagation kind.
6915  // @param cell_kind Expected cell kind.
6917  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
6918  dnnl::algorithm cell_kind) {
6920  dnnl_status_t rc;
6921  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
6922  error::wrap_c_api(rc,
6923  "could not retrieve a descriptor from a primitive descriptor "
6924  "for an RNN primitive");
6925 
6926  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
6927  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
6928  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
6929 
6930  bool ok = rnn_d->primitive_kind == dnnl_rnn
6931  && (rnn_d->prop_kind == c_prop_kind1
6932  || rnn_d->prop_kind == c_prop_kind2)
6933  && rnn_d->cell_kind == c_cell_kind;
6934 
6935  if (!ok)
6936  DNNL_THROW_ERROR(dnnl_invalid_arguments,
6937  "mismatch between expected and provided descriptors for an "
6938  "RNN primitive");
6939 
6940  reset_with_clone(pd);
6941  }
6942 };
6943 
6947  struct desc {
6948  dnnl_rnn_desc_t data;
6949 
7003  const memory::desc &src_layer_desc,
7004  const memory::desc &src_iter_desc,
7005  const memory::desc &weights_layer_desc,
7006  const memory::desc &weights_iter_desc,
7007  const memory::desc &bias_desc,
7008  const memory::desc &dst_layer_desc,
7009  const memory::desc &dst_iter_desc,
7010  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7011  float beta = 0.0f) {
7015  dnnl::convert_to_c(activation),
7016  dnnl::convert_to_c(direction), &src_layer_desc.data,
7017  &src_iter_desc.data, &weights_layer_desc.data,
7018  &weights_iter_desc.data, &bias_desc.data,
7019  &dst_layer_desc.data, &dst_iter_desc.data,
7020  dnnl::convert_to_c(flags), alpha, beta),
7021  "could not create a descriptor for a vanilla RNN forward "
7022  "propagation primitive");
7023  }
7024  };
7025 
7029  primitive_desc() = default;
7030 
7042  bool allow_empty = false)
7044  &desc.data, nullptr, engine, nullptr, allow_empty) {}
7045 
7058  const engine &engine, bool allow_empty = false)
7060  &desc.data, &attr, engine, nullptr, allow_empty) {}
7061 
7071  dnnl::algorithm::vanilla_rnn) {}
7072 
7075  return rnn_base::src_layer_desc();
7076  }
7077 
7080 
7084  }
7085 
7088  return rnn_base::weights_iter_desc();
7089  }
7090 
7093 
7096  return rnn_base::dst_layer_desc();
7097  }
7098 
7101 
7104  return rnn_base::workspace_desc();
7105  }
7106  };
7107 
7109  vanilla_rnn_forward() = default;
7110 
7115 };
7116 
7120  struct desc {
7121  dnnl_rnn_desc_t data;
7122 
7199  const memory::desc &src_layer_desc,
7200  const memory::desc &src_iter_desc,
7201  const memory::desc &weights_layer_desc,
7202  const memory::desc &weights_iter_desc,
7203  const memory::desc &bias_desc,
7204  const memory::desc &dst_layer_desc,
7205  const memory::desc &dst_iter_desc,
7206  const memory::desc &diff_src_layer_desc,
7207  const memory::desc &diff_src_iter_desc,
7208  const memory::desc &diff_weights_layer_desc,
7209  const memory::desc &diff_weights_iter_desc,
7210  const memory::desc &diff_bias_desc,
7211  const memory::desc &diff_dst_layer_desc,
7212  const memory::desc &diff_dst_iter_desc,
7213  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7214  float beta = 0.0f) {
7218  dnnl::convert_to_c(activation),
7219  dnnl::convert_to_c(direction), &src_layer_desc.data,
7220  &src_iter_desc.data, &weights_layer_desc.data,
7221  &weights_iter_desc.data, &bias_desc.data,
7222  &dst_layer_desc.data, &dst_iter_desc.data,
7223  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7224  &diff_weights_layer_desc.data,
7225  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7226  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7227  dnnl::convert_to_c(flags), alpha, beta),
7228  "could not create a descriptor for a vanilla RNN backward "
7229  "propagation primitive");
7230  }
7231  };
7232 
7236  primitive_desc() = default;
7237 
7252  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7253  bool allow_empty = false)
7254  : rnn_primitive_desc_base(&desc.data, nullptr, engine,
7255  hint_fwd_pd.get(), allow_empty) {}
7256 
7272  const engine &engine,
7273  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7274  bool allow_empty = false)
7275  : rnn_primitive_desc_base(&desc.data, &attr, engine,
7276  hint_fwd_pd.get(), allow_empty) {}
7277 
7286  dnnl::algorithm::vanilla_rnn) {}
7287 
7290  return rnn_base::src_layer_desc();
7291  }
7292 
7295 
7299  }
7300 
7303  return rnn_base::weights_iter_desc();
7304  }
7305 
7308 
7311  return rnn_base::dst_layer_desc();
7312  }
7313 
7316 
7319  return rnn_base::workspace_desc();
7320  }
7321 
7325  }
7326 
7330  }
7331 
7335  }
7336 
7340  }
7341 
7344  return rnn_base::diff_bias_desc();
7345  }
7346 
7350  }
7351 
7355  }
7356  };
7357 
7359  vanilla_rnn_backward() = default;
7360 
7365 };
7366 
7368 struct lstm_forward : public primitive {
7370  struct desc {
7371  dnnl_rnn_desc_t data;
7372 
7425  const memory::desc &src_layer_desc,
7426  const memory::desc &src_iter_desc,
7427  const memory::desc &src_iter_c_desc,
7428  const memory::desc &weights_layer_desc,
7429  const memory::desc &weights_iter_desc,
7430  const memory::desc &bias_desc,
7431  const memory::desc &dst_layer_desc,
7432  const memory::desc &dst_iter_desc,
7433  const memory::desc &dst_iter_c_desc,
7434  rnn_flags flags = rnn_flags::undef) {
7438  dnnl::convert_to_c(direction), &src_layer_desc.data,
7439  &src_iter_desc.data, &src_iter_c_desc.data,
7440  &weights_layer_desc.data, &weights_iter_desc.data,
7441  &bias_desc.data, &dst_layer_desc.data,
7442  &dst_iter_desc.data, &dst_iter_c_desc.data,
7443  dnnl::convert_to_c(flags)),
7444  "could not create a descriptor for an LSTM forward "
7445  "propagation primitive");
7446  }
7447  };
7448 
7452  primitive_desc() = default;
7453 
7464  bool allow_empty = false)
7466  &desc.data, nullptr, engine, nullptr, allow_empty) {}
7467 
7479  const engine &engine, bool allow_empty = false)
7481  &desc.data, &attr, engine, nullptr, allow_empty) {}
7482 
7493 
7496  return rnn_base::src_layer_desc();
7497  }
7498 
7501 
7504  return rnn_base::src_iter_c_desc();
7505  }
7506 
7510  }
7511 
7514  return rnn_base::weights_iter_desc();
7515  }
7516 
7519 
7522  return rnn_base::dst_layer_desc();
7523  }
7524 
7527 
7530  return rnn_base::dst_iter_c_desc();
7531  }
7532 
7535  return rnn_base::workspace_desc();
7536  }
7537  };
7538 
7540  lstm_forward() = default;
7541 
7546 };
7547 
7549 struct lstm_backward : public primitive {
7551  struct desc {
7552  dnnl_rnn_desc_t data;
7553 
7637  const memory::desc &src_layer_desc,
7638  const memory::desc &src_iter_desc,
7639  const memory::desc &src_iter_c_desc,
7640  const memory::desc &weights_layer_desc,
7641  const memory::desc &weights_iter_desc,
7642  const memory::desc &bias_desc,
7643  const memory::desc &dst_layer_desc,
7644  const memory::desc &dst_iter_desc,
7645  const memory::desc &dst_iter_c_desc,
7646  const memory::desc &diff_src_layer_desc,
7647  const memory::desc &diff_src_iter_desc,
7648  const memory::desc &diff_src_iter_c_desc,
7649  const memory::desc &diff_weights_layer_desc,
7650  const memory::desc &diff_weights_iter_desc,
7651  const memory::desc &diff_bias_desc,
7652  const memory::desc &diff_dst_layer_desc,
7653  const memory::desc &diff_dst_iter_desc,
7654  const memory::desc &diff_dst_iter_c_desc,
7655  rnn_flags flags = rnn_flags::undef) {
7659  dnnl::convert_to_c(direction), &src_layer_desc.data,
7660  &src_iter_desc.data, &src_iter_c_desc.data,
7661  &weights_layer_desc.data, &weights_iter_desc.data,
7662  &bias_desc.data, &dst_layer_desc.data,
7663  &dst_iter_desc.data, &dst_iter_c_desc.data,
7664  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7665  &diff_src_iter_c_desc.data,
7666  &diff_weights_layer_desc.data,
7667  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7668  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7669  &diff_dst_iter_c_desc.data,
7670  dnnl::convert_to_c(flags)),
7671  "could not create a descriptor for an LSTM backward "
7672  "propagation primitive");
7673  }
7674  };
7675 
7679  primitive_desc() = default;
7680 
7694  const lstm_forward::primitive_desc &hint_fwd_pd,
7695  bool allow_empty = false)
7696  : rnn_primitive_desc_base(&desc.data, nullptr, engine,
7697  hint_fwd_pd.get(), allow_empty) {}
7698 
7713  const engine &engine,
7714  const lstm_forward::primitive_desc &hint_fwd_pd,
7715  bool allow_empty = false)
7716  : rnn_primitive_desc_base(&desc.data, &attr, engine,
7717  hint_fwd_pd.get(), allow_empty) {}
7718 
7728 
7731  return rnn_base::src_layer_desc();
7732  }
7733 
7736 
7739  return rnn_base::src_iter_c_desc();
7740  }
7741 
7745  }
7746 
7749  return rnn_base::weights_iter_desc();
7750  }
7751 
7754 
7757  return rnn_base::dst_layer_desc();
7758  }
7759 
7762 
7765  return rnn_base::dst_iter_c_desc();
7766  }
7767 
7770  return rnn_base::workspace_desc();
7771  }
7772 
7776  }
7777 
7781  }
7782 
7786  }
7787 
7791  }
7792 
7796  }
7797 
7800  return rnn_base::diff_bias_desc();
7801  }
7802 
7806  }
7807 
7811  }
7812 
7816  }
7817  };
7818 
7820  lstm_backward() = default;
7821 
7826 };
7827 
7829 struct gru_forward : public primitive {
7831  struct desc {
7832  dnnl_rnn_desc_t data;
7833 
7879  const memory::desc &src_layer_desc,
7880  const memory::desc &src_iter_desc,
7881  const memory::desc &weights_layer_desc,
7882  const memory::desc &weights_iter_desc,
7883  const memory::desc &bias_desc,
7884  const memory::desc &dst_layer_desc,
7885  const memory::desc &dst_iter_desc,
7886  rnn_flags flags = rnn_flags::undef) {
7890  dnnl::convert_to_c(direction), &src_layer_desc.data,
7891  &src_iter_desc.data, &weights_layer_desc.data,
7892  &weights_iter_desc.data, &bias_desc.data,
7893  &dst_layer_desc.data, &dst_iter_desc.data,
7894  dnnl::convert_to_c(flags)),
7895  "could not create a descriptor for a GRU forward "
7896  "propagation primitive");
7897  }
7898  };
7899 
7903  primitive_desc() = default;
7904 
7915  bool allow_empty = false)
7917  &desc.data, nullptr, engine, nullptr, allow_empty) {}
7918 
7930  const engine &engine, bool allow_empty = false)
7932  &desc.data, &attr, engine, nullptr, allow_empty) {}
7933 
7943  dnnl::algorithm::vanilla_gru) {}
7944 
7947  return rnn_base::src_layer_desc();
7948  }
7949 
7952 
7956  }
7957 
7960  return rnn_base::weights_iter_desc();
7961  }
7962 
7965 
7968  return rnn_base::dst_layer_desc();
7969  }
7970 
7973 
7976  return rnn_base::workspace_desc();
7977  }
7978  };
7979 
7981  gru_forward() = default;
7982 
7987 };
7988 
7990 struct gru_backward : public primitive {
7992  struct desc {
7993  dnnl_rnn_desc_t data;
7994 
8062  const memory::desc &src_layer_desc,
8063  const memory::desc &src_iter_desc,
8064  const memory::desc &weights_layer_desc,
8065  const memory::desc &weights_iter_desc,
8066  const memory::desc &bias_desc,
8067  const memory::desc &dst_layer_desc,
8068  const memory::desc &dst_iter_desc,
8069  const memory::desc &diff_src_layer_desc,
8070  const memory::desc &diff_src_iter_desc,
8071  const memory::desc &diff_weights_layer_desc,
8072  const memory::desc &diff_weights_iter_desc,
8073  const memory::desc &diff_bias_desc,
8074  const memory::desc &diff_dst_layer_desc,
8075  const memory::desc &diff_dst_iter_desc,
8076  rnn_flags flags = rnn_flags::undef) {
8080  dnnl::convert_to_c(direction), &src_layer_desc.data,
8081  &src_iter_desc.data, &weights_layer_desc.data,
8082  &weights_iter_desc.data, &bias_desc.data,
8083  &dst_layer_desc.data, &dst_iter_desc.data,
8084  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8085  &diff_weights_layer_desc.data,
8086  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8087  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8088  dnnl::convert_to_c(flags)),
8089  "could not create a descriptor for a GRU backward "
8090  "propagation primitive");
8091  }
8092  };
8093 
8097  primitive_desc() = default;
8098 
8112  const gru_forward::primitive_desc &hint_fwd_pd,
8113  bool allow_empty = false)
8114  : rnn_primitive_desc_base(&desc.data, nullptr, engine,
8115  hint_fwd_pd.get(), allow_empty) {}
8116 
8131  const engine &engine,
8132  const gru_forward::primitive_desc &hint_fwd_pd,
8133  bool allow_empty = false)
8134  : rnn_primitive_desc_base(&desc.data, &attr, engine,
8135  hint_fwd_pd.get(), allow_empty) {}
8136 
8145  dnnl::algorithm::vanilla_gru) {}
8146 
8149  return rnn_base::src_layer_desc();
8150  }
8151 
8154 
8158  }
8159 
8162  return rnn_base::weights_iter_desc();
8163  }
8164 
8167 
8170  return rnn_base::dst_layer_desc();
8171  }
8172 
8175 
8178  return rnn_base::workspace_desc();
8179  }
8180 
8184  }
8185 
8189  }
8190 
8194  }
8195 
8199  }
8200 
8203  return rnn_base::diff_bias_desc();
8204  }
8205 
8209  }
8210 
8214  }
8215  };
8216 
8218  gru_backward() = default;
8219 
8224 };
8225 
8227 struct lbr_gru_forward : public primitive {
8229  struct desc {
8230  dnnl_rnn_desc_t data;
8231 
8277  const memory::desc &src_layer_desc,
8278  const memory::desc &src_iter_desc,
8279  const memory::desc &weights_layer_desc,
8280  const memory::desc &weights_iter_desc,
8281  const memory::desc &bias_desc,
8282  const memory::desc &dst_layer_desc,
8283  const memory::desc &dst_iter_desc,
8284  rnn_flags flags = rnn_flags::undef) {
8288  dnnl::convert_to_c(direction), &src_layer_desc.data,
8289  &src_iter_desc.data, &weights_layer_desc.data,
8290  &weights_iter_desc.data, &bias_desc.data,
8291  &dst_layer_desc.data, &dst_iter_desc.data,
8292  dnnl::convert_to_c(flags)),
8293  "could not create a descriptor for an LBR GRU forward "
8294  "propagation primitive");
8295  }
8296  };
8297 
8301  primitive_desc() = default;
8302 
8314  bool allow_empty = false)
8316  &desc.data, nullptr, engine, nullptr, allow_empty) {}
8317 
8330  const engine &engine, bool allow_empty = false)
8332  &desc.data, &attr, engine, nullptr, allow_empty) {}
8333 
8343  dnnl::algorithm::lbr_gru) {}
8344 
8347  return rnn_base::src_layer_desc();
8348  }
8349 
8352 
8356  }
8357 
8360  return rnn_base::weights_iter_desc();
8361  }
8362 
8365 
8368  return rnn_base::dst_layer_desc();
8369  }
8370 
8373 
8376  return rnn_base::workspace_desc();
8377  }
8378  };
8379 
8381  lbr_gru_forward() = default;
8382 
8387 };
8388 
8390 struct lbr_gru_backward : public primitive {
8392  struct desc {
8393  dnnl_rnn_desc_t data;
8394 
8463  const memory::desc &src_layer_desc,
8464  const memory::desc &src_iter_desc,
8465  const memory::desc &weights_layer_desc,
8466  const memory::desc &weights_iter_desc,
8467  const memory::desc &bias_desc,
8468  const memory::desc &dst_layer_desc,
8469  const memory::desc &dst_iter_desc,
8470  const memory::desc &diff_src_layer_desc,
8471  const memory::desc &diff_src_iter_desc,
8472  const memory::desc &diff_weights_layer_desc,
8473  const memory::desc &diff_weights_iter_desc,
8474  const memory::desc &diff_bias_desc,
8475  const memory::desc &diff_dst_layer_desc,
8476  const memory::desc &diff_dst_iter_desc,
8477  rnn_flags flags = rnn_flags::undef) {
8481  dnnl::convert_to_c(direction), &src_layer_desc.data,
8482  &src_iter_desc.data, &weights_layer_desc.data,
8483  &weights_iter_desc.data, &bias_desc.data,
8484  &dst_layer_desc.data, &dst_iter_desc.data,
8485  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8486  &diff_weights_layer_desc.data,
8487  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8488  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8489  dnnl::convert_to_c(flags)),
8490  "could not create a descriptor for an LBR GRU backward "
8491  "propagation primitive");
8492  }
8493  };
8494 
8498  primitive_desc() = default;
8499 
8514  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
8515  bool allow_empty = false)
8516  : rnn_primitive_desc_base(&desc.data, nullptr, engine,
8517  hint_fwd_pd.get(), allow_empty) {}
8518 
8534  const engine &engine,
8535  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
8536  bool allow_empty = false)
8537  : rnn_primitive_desc_base(&desc.data, &attr, engine,
8538  hint_fwd_pd.get(), allow_empty) {}
8539 
8549 
8552  return rnn_base::src_layer_desc();
8553  }
8554 
8557 
8561  }
8562 
8565  return rnn_base::weights_iter_desc();
8566  }
8567 
8570 
8573  return rnn_base::dst_layer_desc();
8574  }
8575 
8578 
8581  return rnn_base::workspace_desc();
8582  }
8583 
8587  }
8588 
8592  }
8593 
8597  }
8598 
8602  }
8603 
8606  return rnn_base::diff_bias_desc();
8607  }
8608 
8612  }
8613 
8617  }
8618  };
8619 
8621  lbr_gru_backward() = default;
8622 
8627 };
8628 
8630 
8638 
8640 struct shuffle_forward : public primitive {
8642  struct desc {
8643  dnnl_shuffle_desc_t data;
8644 
8660  desc(prop_kind prop_kind, const memory::desc &data_desc, int axis,
8661  int group_size) {
8664  &data_desc.data, axis, group_size),
8665  "could not create a descriptor for a shuffle forward "
8666  "propagation primitive");
8667  }
8668  };
8669 
8673  primitive_desc() = default;
8674 
8687  const primitive_attr &attr = primitive_attr(),
8688  bool allow_empty = false)
8689  : dnnl::primitive_desc(
8690  &desc.data, &attr, engine, nullptr, allow_empty) {}
8691 
8699  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
8702 
8704  memory::desc src_desc() const { return base::src_desc(0); }
8705 
8707  memory::desc dst_desc() const { return base::dst_desc(0); }
8708  };
8709 
8711  shuffle_forward() = default;
8712 
8717 };
8718 
8720 struct shuffle_backward : public primitive {
8723  struct desc {
8724  dnnl_shuffle_desc_t data;
8725 
8739  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
8741  &diff_data_desc.data, axis, group_size),
8742  "could not create a descriptor for a shuffle backward "
8743  "propagation primitive");
8744  }
8745  };
8746 
8750  primitive_desc() = default;
8751 
8767  const shuffle_forward::primitive_desc &hint_fwd_pd,
8768  const primitive_attr &attr = primitive_attr(),
8769  bool allow_empty = false)
8770  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
8771  allow_empty) {}
8772 
8780  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
8782 
8785 
8788  };
8789 
8791  shuffle_backward() = default;
8792 
8797 };
8798 
8800 
8808 
8810 struct binary : public primitive {
8812  struct desc {
8815 
8831  const memory::desc &src1, const memory::desc &dst) {
8834  &src0.data, &src1.data, &dst.data),
8835  "could not create a descriptor for a binary operation "
8836  "primitive");
8837  }
8838  };
8839 
8843  primitive_desc() = default;
8844 
8855  bool allow_empty = false)
8856  : dnnl::primitive_desc(
8857  &desc.data, nullptr, engine, nullptr, allow_empty) {}
8858 
8870  const engine &engine, bool allow_empty = false)
8871  : dnnl::primitive_desc(
8872  &desc.data, &attr, engine, nullptr, allow_empty) {}
8873 
8880 
8882  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
8883 
8885  memory::desc src0_desc() const { return base::src_desc(0); }
8886 
8888  memory::desc src1_desc() const { return base::src_desc(1); }
8889 
8891  memory::desc dst_desc() const { return base::dst_desc(0); }
8892  };
8893 
8895  binary() = default;
8896 
8900  binary(const primitive_desc &pd) : primitive(pd) {}
8901 };
8902 
8904 
8914 
8916 struct matmul : public primitive {
8918  struct desc {
8919  dnnl_matmul_desc_t data;
8920 
8933  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
8934  const memory::desc &dst_desc) {
8936  dnnl_matmul_desc_init(&data, &src_desc.data,
8937  &weights_desc.data, nullptr, &dst_desc.data),
8938  "could not create a descriptor for a matmul primitive");
8939  }
8940 
8955  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
8956  const memory::desc &bias_desc, const memory::desc &dst_desc) {
8957  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
8958  &weights_desc.data, &bias_desc.data,
8959  &dst_desc.data),
8960  "could not create a descriptor for a matmul primitive");
8961  }
8962  };
8963 
8967  primitive_desc() = default;
8968 
8978  bool allow_empty = false)
8979  : dnnl::primitive_desc(
8980  &desc.data, nullptr, engine, nullptr, allow_empty) {}
8981 
8992  const engine &engine, bool allow_empty = false)
8993  : dnnl::primitive_desc(
8994  &desc.data, &attr, engine, nullptr, allow_empty) {}
8995 
9002 
9005 
9008  return query_md(query::weights_md, 0);
9009  }
9010 
9013  return query_md(query::weights_md, 1);
9014  }
9015 
9018  };
9019 
9021  matmul() = default;
9022 
9025  matmul(const primitive_desc &pd) : primitive(pd) {}
9026 };
9027 
9029 
9039 
9043  struct desc {
9045 
9052  //
9068  const memory::desc &src_desc, const memory::desc &dst_desc) {
9071  convert_to_c(algorithm), nullptr,
9072  &src_desc.data, &dst_desc.data),
9073  "could not create a resampling forward descriptor");
9074  }
9075 
9091  const std::vector<float> &factors,
9092  const memory::desc &src_desc) {
9095  convert_to_c(algorithm), &factors[0],
9096  &src_desc.data, nullptr),
9097  "could not create a resampling forward descriptor");
9098  }
9099 
9106  //
9123  const std::vector<float> &factors, const memory::desc &src_desc,
9124  const memory::desc &dst_desc) {
9127  convert_to_c(algorithm), &factors[0],
9128  &src_desc.data, &dst_desc.data),
9129  "could not create a resampling forward descriptor");
9130  }
9131  };
9132 
9136  primitive_desc() = default;
9137 
9149  bool allow_empty = false)
9150  : dnnl::primitive_desc(
9151  &desc.data, nullptr, engine, nullptr, allow_empty) {}
9152 
9164  const engine &engine, bool allow_empty = false)
9165  : dnnl::primitive_desc(
9166  &desc.data, &attr, engine, nullptr, allow_empty) {}
9167 
9175  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9178 
9180  memory::desc src_desc() const { return base::src_desc(0); }
9181 
9183  memory::desc dst_desc() const { return base::dst_desc(0); }
9184  };
9185 
9187  resampling_forward() = default;
9188 
9193 };
9194 
9198  struct desc {
9200 
9215  desc(algorithm algorithm, const memory::desc &diff_src_desc,
9216  const memory::desc &diff_dst_desc) {
9218  convert_to_c(algorithm), nullptr,
9219  &diff_src_desc.data, &diff_dst_desc.data),
9220  "could not create a resampling backward data descriptor");
9221  }
9222 
9238  desc(algorithm algorithm, std::vector<float> factors,
9239  const memory::desc &diff_src_desc,
9240  const memory::desc &diff_dst_desc) {
9242  convert_to_c(algorithm), &factors[0],
9243  &diff_src_desc.data, &diff_dst_desc.data),
9244  "could not create a resampling backward data descriptor");
9245  }
9246  };
9247 
9251  primitive_desc() = default;
9252 
9266  const resampling_forward::primitive_desc &hint_fwd_pd,
9267  bool allow_empty = false)
9268  : dnnl::primitive_desc(&desc.data, nullptr, engine,
9269  hint_fwd_pd.get(), allow_empty) {}
9270 
9285  const engine &engine,
9286  const resampling_forward::primitive_desc &hint_fwd_pd,
9287  bool allow_empty = false)
9288  : dnnl::primitive_desc(&desc.data, &attr, engine, hint_fwd_pd.get(),
9289  allow_empty) {}
9290 
9298  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9300 
9303 
9306  };
9307 
9309  resampling_backward() = default;
9310 
9315 };
9316 
9318 
9320 
9326 
9329 
9331 enum class status {
9346 };
9347 
9349 inline status set_verbose(int level) {
9350  return static_cast<status>(dnnl_set_verbose(level));
9351 }
9352 
9354 inline const version_t *version() {
9355  return dnnl_version();
9356 }
9357 
9359 inline status set_jit_dump(int enable) {
9360  return static_cast<status>(dnnl_set_jit_dump(enable));
9361 }
9362 
9364 inline status set_jit_profiling_flags(unsigned flags) {
9365  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
9366 }
9367 
9369 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
9370  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
9371 }
9372 
9374 enum class cpu_isa {
9393 };
9394 
9397  return static_cast<status>(
9398  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
9399 }
9400 
9402 
9409 
9411 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
9412  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
9413  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
9414  return static_cast<status>(dnnl_sgemm(
9415  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
9416 }
9417 
9419 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
9420  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
9421  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
9422  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
9423  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
9424  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
9425 }
9426 
9428 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
9429  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
9430  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
9431  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
9432  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
9433  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
9434 }
9435 
9437 
9438 // implementation section
9439 
9442  dnnl_primitive_t result;
9444  "could not create a primitive");
9445  reset(result);
9446 }
9447 
9448 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
9449 
9450 inline void primitive::execute(
9451  stream &stream, const std::unordered_map<int, memory> &args) const {
9452  std::vector<dnnl_exec_arg_t> c_args;
9453  c_args.reserve(args.size());
9454  for (const auto &a : args)
9455  c_args.push_back({a.first, a.second.get(true)});
9456 
9457  error::wrap_c_api(dnnl_primitive_execute(get(), stream.get(),
9458  (int)c_args.size(), c_args.data()),
9459  "could not execute a primitive");
9460 }
9462 
9463 #undef DNNL_DEFINE_BITMASK_OPS
9464 
9465 } // namespace dnnl
9466 
9468 
9469 #endif
dnnl_query_time_estimate_f64
@ dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:1891
dnnl_query_reorder_dst_engine
@ dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:1903
dnnl::memory::set_data_handle
void set_data_handle(void *handle) const
Sets memory buffer.
Definition: dnnl.hpp:2238
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:7323
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:9428
dnnl::query::eltwise_d
@ eltwise_d
eltwise descriptor
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:9196
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4256
dnnl::cpu_isa::sse41
@ sse41
Intel(R) SSE4.1.
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:304
dnnl::binary::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:8882
dnnl_scratchpad_mode_library
@ dnnl_scratchpad_mode_library
The library manages scratchpad (default) The allocation policy is controlled by the DNNL_ENABLE_CONCU...
Definition: dnnl_types.h:1626
dnnl::query::diff_dst_md
@ diff_dst_md
destination grad. memory desc
dnnl::convolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3349
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:1185
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6192
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward()=default
Default constructor. Produces an empty object.
dnnl::primitive_desc_base::primitive_desc_base
primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2)
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after veri...
Definition: dnnl.hpp:2605
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7370
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:6899
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:6829
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:5447
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5432
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:7964
dnnl_s32
@ dnnl_s32
32-bit signed integer.
Definition: dnnl_types.h:72
dnnl::algorithm::binary_add
@ binary_add
Binary add.
dnnl::lstm_forward::desc::desc
desc(prop_kind prop_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:7424
dnnl::status::success
@ success
The operation was successful.
dnnl::reorder::execute
void execute(stream stream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:2777
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:4064
dnnl::lrn_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4630
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:8841
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:655
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data()=default
Default constructor. Produces an empty object.
dnnl::memory::desc::reshape
desc reshape(const memory::dims &dims) const
Constructs a memory descriptor by reshaping existing one.
Definition: dnnl.hpp:2131
dnnl::lrn_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:4569
dnnl::cpu_isa::all
@ all
Any ISA (no restrictions)
dnnl::gru_forward::desc
Descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:7831
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:2157
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:2668
dnnl_query_pooling_d
@ dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:1915
dnnl::query::num_of_inputs_s32
@ num_of_inputs_s32
number of inputs expected
dnnl::shuffle_backward
Shuffle backward propagation primitive.
Definition: dnnl.hpp:8720
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6392
dnnl::query::resampling_d
@ resampling_d
resampling descriptor
dnnl::vanilla_rnn_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7307
dnnl::prop_kind::backward
@ backward
Backward propagation (with respect to all parameters).
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:8340
dnnl_ABcde2b8a4b
@ dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:265
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:7814
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:6362
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7315
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:8212
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7478
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:4702
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:8513
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8329
dnnl::error::what
const char * what() const noexcept override
Returns the explanatory string.
Definition: dnnl.hpp:99
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:8197
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::query::pooling_d
@ pooling_d
pooling descriptor
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:353
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8299
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:3539
dnnl::stream
An execution stream.
Definition: dnnl.hpp:1391
dnnl::rnn_direction::bidirectional_concat
@ bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
dnnl::memory::desc::desc
desc(const dnnl_memory_desc_t &data)
Constructs a memory descriptor from a C API data structure.
Definition: dnnl.hpp:2108
dnnl::query::diff_src_md
@ diff_src_md
source gradient memory desc
dnnl_query_memory_consumption_s64
@ dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:1892
dnnl_s8
@ dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:74
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:419
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4869
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:821
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:9000
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_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:691
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
dnnl::query::exec_arg_md
@ exec_arg_md
memory desc of an execute argument
dnnl::gru_backward::desc::desc
desc(prop_kind prop_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:8061
dnnl_decab
@ dnnl_decab
permuted 5D tensor
Definition: dnnl_types.h:201
dnnl::softmax_backward
Softmax backward propagation primitive.
Definition: dnnl.hpp:5345
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::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5080
dnnl_batch_normalization
@ dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:687
dnnl::vanilla_rnn_backward
Vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7118
dnnl_query_logsoftmax_d
@ dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:1923
dnnl::lrn_backward::desc::desc
desc(algorithm algorithm, 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:4673
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:9419
dnnl::vanilla_rnn_backward::desc
Vanilla RNN descriptor backward propagation primitive.
Definition: dnnl.hpp:7120
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4739
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:8390
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:9004
dnnl::algorithm::eltwise_soft_relu
@ eltwise_soft_relu
Elementwise: soft_relu.
dnnl::lstm_forward::primitive_desc
Primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7450
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:4754
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:1310
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:6863
dnnl_query_reorder_src_engine
@ dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:1902
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:2734
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7954
dnnl::engine
An execution engine.
Definition: dnnl.hpp:1249
dnnl::cpu_isa::avx
@ avx
Intel(R) Advanced Vector Extensions.
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:2983
dnnl::pooling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4990
dnnl::vanilla_rnn_backward::desc::desc
desc(prop_kind prop_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:7198
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:5215
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:6526
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:1083
dnnl_softmax
@ dnnl_softmax
A softmax primitive.
Definition: dnnl_types.h:681
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:4236
dnnl::lrn_forward
Local response normalization (LRN) forward propagation primitive.
Definition: dnnl.hpp:4540
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:6763
dnnl::memory::validate_dims
static void validate_dims(const std::vector< T > &v)
Helper function that validates that an std::vector of dimensions can be safely converted to the C API...
Definition: dnnl.hpp:1566
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5131
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:9297
dnnl_query_rnn_d
@ dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:1920
DNNL_ARG_TO
#define DNNL_ARG_TO
A special mnemonic for reorder destination argument.
Definition: dnnl_types.h:1717
dnnl::status::runtime_error
@ runtime_error
Primitive or engine failed on execution.
DNNL_MAX_NDIMS
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:839
dnnl_scratchpad_mode_user
@ dnnl_scratchpad_mode_user
A user shall query and provide the scratchpad memory to primitives This mode is thread-safe as long a...
Definition: dnnl_types.h:1630
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:7789
dnnl::query::reorder_dst_engine
@ reorder_dst_engine
reorder destination engine
dnnl::primitive::kind
kind
Kinds of primitives.
Definition: dnnl.hpp:262
dnnl::gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7946
dnnl::engine::engine
engine(kind kind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:1282
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:813
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:9369
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:4934
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8156
dnnl_defcab
@ dnnl_defcab
permuted 6D tensor
Definition: dnnl_types.h:202
dnnl_aBcde16b
@ dnnl_aBcde16b
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:267
dnnl::layer_normalization_backward::layer_normalization_backward
layer_normalization_backward(const primitive_desc &pd)
Constructs a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6376
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:2055
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7526
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:7992
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:6348
dnnl::memory::desc::desc
desc(const memory::dims &dims, data_type data_type, const memory::dims &strides)
Constructs a memory descriptor by strides.
Definition: dnnl.hpp:2094
dnnl::eltwise_forward::eltwise_forward
eltwise_forward(const primitive_desc &pd)
Constructs an eltwise forward propagation primitive.
Definition: dnnl.hpp:5125
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7103
dnnl_version
const dnnl_version_t DNNL_API * dnnl_version()
Returns library version information.
dnnl::resampling_forward::desc
Descriptor for resampling forward propagation.
Definition: dnnl.hpp:9043
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5226
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1448
dnnl_eltwise_relu
@ dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:720
dnnl_acb
@ dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:187
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4053
dnnl_matmul_desc_t
A descriptor of a matrix multiplication operation.
Definition: dnnl_types.h:1502
dnnl::algorithm::eltwise_elu
@ eltwise_elu
Elementwise: parametric exponential linear unit (elu)
dnnl::primitive::kind::shuffle
@ shuffle
A shuffle primitive.
dnnl::algorithm::pooling_avg
@ pooling_avg
Average pooling exclude padding, alias for dnnl::algorithm::pooling_avg_include_padding.
dnnl::gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7959
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_eltwise_abs
@ dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:728
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:5427
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:5910
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3520
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:4466
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:4336
dnnl::query::rnn_d
@ rnn_d
rnn descriptor
dnnl_normalization_flags_t
dnnl_normalization_flags_t
Flags for batch normalization primitive.
Definition: dnnl_types.h:789
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:7809
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:8572
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:2437
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5129
dnnl::status::unimplemented
@ unimplemented
The operation failed because requested functionality is not implemented.
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:4429
dnnl_shuffle
@ dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:669
dnnl_query_shuffle_d
@ dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:1912
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:8916
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:9302
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:4721
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7748
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:7712
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:1061
dnnl::convolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3523
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3343
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:6871
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5950
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:663
dnnl::eltwise_forward
Elementwise unary operation forward propagation primitive.
Definition: dnnl.hpp:5030
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:4993
dnnl::deconvolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4506
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1383
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(int concat_dimension, const std::vector< memory::desc > &srcs, const engine &engine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for an out-of-place concatenation primitive.
Definition: dnnl.hpp:2858
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:8533
dnnl_pooling_max
@ dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:753
dnnl::primitive::kind::lrn
@ lrn
An LRN primitive.
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:5778
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:1948
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:1882
dnnl::layer_normalization_forward::desc::desc
desc(prop_kind prop_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:6049
dnnl::algorithm::eltwise_bounded_relu
@ eltwise_bounded_relu
Elementwise: bounded_relu.
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:5535
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:9174
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:8130
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::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:601
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1405
dnnl_bcdea
@ dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:197
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1389
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:7500
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:9374
dnnl_sum
@ dnnl_sum
A sum primitive.
Definition: dnnl_types.h:673
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:3781
dnnl::prop_kind::forward_training
@ forward_training
Forward data propagation (training mode).
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:8918
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:6782
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7975
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:8698
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:4582
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:8779
dnnl_backward_weights
@ dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:656
dnnl::query::layer_normalization_d
@ layer_normalization_d
layer normalization descriptor
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:2419
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:3053
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:8615
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6152
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:5414
dnnl::lbr_gru_backward::desc::desc
desc(prop_kind prop_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:8462
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1349
dnnl::memory::set_ocl_mem_object
void set_ocl_mem_object(cl_mem mem_object)
Sets the OpenCL memory object mem_object associated with the memory.
Definition: dnnl.hpp:2300
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7521
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:6705
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:6142
dnnl_gpu
@ dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1560
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 objects and writes any changes to the previously mapped buffer back.
dnnl::pooling_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:4872
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5461
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:8182
dnnl::algorithm::eltwise_abs
@ eltwise_abs
Elementwise: abs.
dnnl::sum::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2990
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5096
dnnl::algorithm::lrn_across_channels
@ lrn_across_channels
Local response normalization (LRN) across multiple channels.
dnnl::rnn_primitive_desc_base::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:6885
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5032
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:2143
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:7284
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:7549
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6017
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:5116
dnnl_query_diff_weights_md
@ dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:1932
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:7986
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:6332
dnnl::convert_to_c
dnnl_query_t convert_to_c(query query)
Converts query enum value from C++ API to C API type.
Definition: dnnl.hpp:783
dnnl_query_prop_kind
@ dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:1905
dnnl_eltwise_logistic
@ dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:738
dnnl::lbr_gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8359
dnnl::layer_normalization_backward::desc::desc
desc(prop_kind prop_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:6229
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7743
dnnl::query::inner_product_d
@ inner_product_d
inner product descriptor
dnnl::pooling_forward::pooling_forward
pooling_forward(const primitive_desc &pd)
Constructs a pooling forward propagation primitive.
Definition: dnnl.hpp:4881
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:679
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:7829
dnnl::algorithm::deconvolution_direct
@ deconvolution_direct
Direct deconvolution.
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:1254
dnnl_aBc16b
@ dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:210
dnnl::lbr_gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8605
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5962
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7082
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:7940
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7730
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:5813
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:6635
dnnl_convolution_auto
@ dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:714
dnnl::binary::binary
binary(const primitive_desc &pd)
Constructs an elementwise binary operation primitive.
Definition: dnnl.hpp:8900
dnnl_cdba
@ dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:199
dnnl_eltwise_sqrt
@ dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:730
dnnl_cpu_isa_avx512_core
@ dnnl_cpu_isa_avx512_core
Intel(R) Advanced Vector Extensions 512 for Intel(R) Xeon(R) Processor Scalable Family and Intel(R) C...
Definition: dnnl_types.h:2043
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(const memory::desc &dst, int concat_dimension, const std::vector< memory::desc > &srcs, const engine &engine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for an out-of-place concatenation primitive.
Definition: dnnl.hpp:2831
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8346
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:203
dnnl::stream::stream
stream()=default
Constructs an empty stream.
dnnl_eltwise_bounded_relu
@ dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:734
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward(const primitive_desc &pd)
Constructs an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:8626
dnnl::set_max_cpu_isa
status set_max_cpu_isa(cpu_isa isa)
Sets the maximal ISA DNNL can dispatch to on the CPU.
Definition: dnnl.hpp:9396
dnnl::sum::primitive_desc::primitive_desc
primitive_desc(const std::vector< float > &scales, const std::vector< memory::desc > &srcs, const engine &engine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for a sum primitive.
Definition: dnnl.hpp:2961
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5653
dnnl::softmax_backward::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::lstm_backward::primitive_desc
Primitive descriptor for LSTM backward propagation.
Definition: dnnl.hpp:7677
dnnl::primitive::kind::pooling
@ pooling
A pooling primitive.
dnnl::inner_product_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6626
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 LSTM backward propagation primitive.
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::memory::memory
memory(const desc &md, const engine &engine)
Constructs a memory object.
Definition: dnnl.hpp:2205
dnnl::primitive_desc_base::get_primitive_attr
primitive_attr get_primitive_attr() const
Returns the primitive attributes.
Definition: dnnl.hpp:2529
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8166
dnnl::query::reorder_src_engine
@ reorder_src_engine
reorder source engine
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:2877
dnnl_forward_inference
@ dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:646
dnnl_query_impl_info_str
@ dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:1900
dnnl_query_dst_md
@ dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:1933
dnnl_query_resampling_d
@ dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:1925
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:6857
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:949
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:386
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4987
dnnl_query_inner_product_d
@ dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:1919
dnnl::vanilla_rnn_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7079
dnnl::algorithm::pooling_avg_exclude_padding
@ pooling_avg_exclude_padding
Average pooling exclude padding.
dnnl_rnn_flags_undef
@ dnnl_rnn_flags_undef
Undefined RNN flags.
Definition: dnnl_types.h:1385
dnnl_nCdhw16c
@ dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:461
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:4485
dnnl::convert_to_c
dnnl_primitive_kind_t convert_to_c(primitive::kind kind)
Converts primitive kind enum value from C++ API to C API type.
Definition: dnnl.hpp:349
dnnl_query_convolution_d
@ dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:1910
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:8207
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9134
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:5809
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4627
dnnl::algorithm::eltwise_sqrt
@ eltwise_sqrt
Elementwise: square root.
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:2517
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:7271
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:7328
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7318
dnnl::algorithm::eltwise_log
@ eltwise_log
Elementwise: natural logarithm.
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:6722
dnnl::lrn_forward::lrn_forward
lrn_forward(const primitive_desc &pd)
Constructs an LRN forward propagation primitive.
Definition: dnnl.hpp:4642
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:196
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7092
dnnl::sum::primitive_desc
Primitive descriptor for a sum primitive.
Definition: dnnl.hpp:2908
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward()=default
Default constructor. Produces an empty object.
dnnl_bidirectional_concat
@ dnnl_bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1396
dnnl::deconvolution_backward_data::desc::desc
desc(algorithm algorithm, 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:4165
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:2765
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2472
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1210
dnnl::layer_normalization_forward
Layer normalization forward propagation primitive.
Definition: dnnl.hpp:6015
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3786
dnnl::algorithm::lbr_gru
@ lbr_gru
GRU cell with linear before reset.
dnnl::deconvolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4503
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:1119
dnnl::primitive::kind::rnn
@ rnn
A rnn primitive.
dnnl::algorithm::convolution_winograd
@ convolution_winograd
Winograd convolution.
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:1321
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7310
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:192
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:6663
dnnl_lrn_within_channel
@ dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:763
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:9249
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:2496
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:1147
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 &engine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for a sum primitive.
Definition: dnnl.hpp:2931
dnnl_primitive_attr_create
dnnl_status_t DNNL_API dnnl_primitive_attr_create(dnnl_primitive_attr_t *attr)
Creates an empty (default) primitive attributes with all the parameters set to their default values.
dnnl::eltwise_backward::eltwise_backward
eltwise_backward()=default
Default constructor. Produces an empty object.
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a GRU backward propagation primitive from a C API primitive des...
Definition: dnnl.hpp:8143
dnnl_binary_mul
@ dnnl_binary_mul
Binary mul.
Definition: dnnl_types.h:781
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5066
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6475
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:2541
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::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:6582
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:7693
dnnl::logsoftmax_forward::desc::desc
desc(prop_kind prop_kind, const memory::desc &data_desc, int logsoftmax_axis)
Constructs a descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5483
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::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:3749
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::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9148
dnnl::shuffle_forward::shuffle_forward
shuffle_forward()=default
Default constructor. Produces an empty object.
dnnl_softmax_forward_desc_init
dnnl_status_t DNNL_API dnnl_softmax_forward_desc_init(dnnl_softmax_desc_t *softmax_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int softmax_axis)
Initializes a descriptor for softmax forward propagation primitive.
dnnl_primitive_desc_clone
dnnl_status_t DNNL_API dnnl_primitive_desc_clone(dnnl_primitive_desc_t *primitive_desc, const_dnnl_primitive_desc_t existing_primitive_desc)
Clones a primitive descriptor.
dnnl_format_kind_rnn_packed
@ dnnl_format_kind_rnn_packed
Packed weights format used in RNN.
Definition: dnnl_types.h:93
dnnl_use_scaleshift
@ dnnl_use_scaleshift
Use scale and shift parameters.
Definition: dnnl_types.h:814
dnnl_eltwise_log
@ dnnl_eltwise_log
Eltwise: natural logarithm.
Definition: dnnl_types.h:749
dnnl::softmax_forward::desc::desc
desc(prop_kind prop_kind, const memory::desc &data_desc, int softmax_axis)
Constructs a descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5271
dnnl::lbr_gru_backward::primitive_desc
Primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:8496
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:4542
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5282
dnnl::algorithm::binary_mul
@ binary_mul
Binary mul.
dnnl_query_layer_normalization_d
@ dnnl_query_layer_normalization_d
layer normalization descriptor
Definition: dnnl_types.h:1918
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4742
dnnl_memory_set_data_handle
dnnl_status_t DNNL_API dnnl_memory_set_data_handle(dnnl_memory_t memory, void *handle)
Sets memory object's data handle.
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:4621
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2748
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:2745
dnnl_ABcd8b8a
@ dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:253
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:809
dnnl::engine::get_ocl_device
cl_device_id get_ocl_device() const
Returns the OpenCL device associated with the engine.
Definition: dnnl.hpp:1340
dnnl_resampling_linear
@ dnnl_resampling_linear
Linear Resampling Method.
Definition: dnnl_types.h:785
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:6620
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:4950
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2478
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8202
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:9265
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:2502
dnnl::batch_normalization_forward::desc::desc
desc(prop_kind prop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a batch normalization descriptor for forward propagation.
Definition: dnnl.hpp:5735
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6101
dnnl_forward_training
@ dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:642
dnnl::query
query
Primitive descriptor query specification.
Definition: dnnl.hpp:688
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7972
dnnl_primitive_desc_query
dnnl_status_t DNNL_API dnnl_primitive_desc_query(const_dnnl_primitive_desc_t primitive_desc, dnnl_query_t what, int index, void *result)
Queries a primitive descriptor for various pieces of information.
dnnl_bac
@ dnnl_bac
permuted 3D tensor
Definition: dnnl_types.h:193
dnnl_eltwise_square
@ dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:726
dnnl_fuse_norm_relu
@ dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:827
dnnl::algorithm::eltwise_clip
@ eltwise_clip
Eltwise: clip.
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(R) Advanced Vector Extensions 512 subset for Intel(R) Xeon Phi(TM) Processors 7235,...
Definition: dnnl_types.h:2039
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8354
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:5668
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:4260
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8372
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6508
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:5366
dnnl::query::convolution_d
@ convolution_d
convolution descriptor
dnnl_stream_destroy
dnnl_status_t DNNL_API dnnl_stream_destroy(dnnl_stream_t stream)
Destroys an execution stream.
dnnl_primitive_attr_destroy
dnnl_status_t DNNL_API dnnl_primitive_attr_destroy(dnnl_primitive_attr_t attr)
Destroys primitive attributes.
dnnl::normalization_flags::fuse_norm_relu
@ fuse_norm_relu
Fuse with ReLU.
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc(const memory &src, const memory &dst, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for reorder primitive.
Definition: dnnl.hpp:2711
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::query::num_of_outputs_s32
@ num_of_outputs_s32
number of outputs expected
dnnl::shuffle_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:8686
dnnl::rnn_primitive_desc_base::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:6821
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:2804
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::memory::memory
memory(const desc &md, const engine &engine, void *handle)
Constructs a memory object.
Definition: dnnl.hpp:2191
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:5563
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:712
dnnl::deconvolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3860
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3090
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5656
dnnl::layer_normalization_backward::desc::desc
desc(prop_kind prop_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:6268
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:5847
dnnl_ABcde4b16a4b
@ dnnl_ABcde4b16a4b
5D tensor blocked by 1st dimension with block size 16
Definition: dnnl_types.h:263
dnnl_nChw8c
@ dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:476
dnnl::batch_normalization_forward
Batch normalization forward propagation primitive.
Definition: dnnl.hpp:5694
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:1554
dnnl_binary
@ dnnl_binary
A binary primitive.
Definition: dnnl_types.h:697
dnnl_cdeba
@ dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:200
dnnl::prop_kind::forward_inference
@ forward_inference
Forward data propagation (inference mode).
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:7338
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6359
dnnl_eltwise_tanh
@ dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:722
dnnl::error::error
error(dnnl_status_t status, const char *message)
Constructs an instance of an exception class.
Definition: dnnl.hpp:95
dnnl::gru_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8169
dnnl_aBc4b
@ dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:214
dnnl::pooling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4866
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:181
dnnl::pooling_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:4802
dnnl_nCw8c
@ dnnl_nCw8c
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:485
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3310
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:6641
dnnl_memory_desc_t::dims
dnnl_dims_t dims
Dimensions in the following order:
Definition: dnnl_types.h:994
dnnl_stream_default_order
@ dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:1951
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:5762
dnnl::cpu_isa::avx512_core_vnni
@ avx512_core_vnni
Intel(R) Advanced Vector Extensions 512 with Intel(R) DL Boost Support for Intel(R) Xeon(R) Processor...
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:5249
dnnl::algorithm::resampling_nearest
@ resampling_nearest
Nearest Neighbor resampling method.
dnnl_pooling
@ dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:683
dnnl::batch_normalization_backward
Batch normalization backward propagation primitive.
Definition: dnnl.hpp:5845
dnnl_acdb
@ dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:190
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6491
dnnl_query_lrn_d
@ dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:1916
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:652
dnnl::batch_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5796
dnnl::inner_product_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6623
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1180
dnnl_cpu_isa_avx512_core_bf16
@ dnnl_cpu_isa_avx512_core_bf16
Intel(R) Advanced Vector Extensions 512 with Intel(R) DL Boost and Bfloat16 Support for Intel(R) Xeon...
Definition: dnnl_types.h:2053
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:7251
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:5182
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:7114
dnnl_iterator_ends
@ dnnl_iterator_ends
Primitive iterator passed over last primitive descriptor.
Definition: dnnl_types.h:49
dnnl::stream::flags::default_order
@ default_order
Default order execution.
dnnl::query::scratchpad_md
@ scratchpad_md
scratchpad memory desc
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1572
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:4734
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8229
dnnl_primitive_attr_set_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_set_scales(dnnl_primitive_attr_t attr, int arg, dnnl_dim_t count, int mask, const float *scales)
Sets primitive attributes scaling factors for primitive operations for a given memory argument.
dnnl::engine::get_ocl_context
cl_context get_ocl_context() const
Returns the OpenCL context associated with the engine.
Definition: dnnl.hpp:1331
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 for engine and with flags.
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::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:3733
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5956
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::rnn_primitive_desc_base::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:6877
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:5583
dnnl::pooling_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:4821
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:1354
dnnl_nCdhw8c
@ dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:467
dnnl_pooling_avg
@ dnnl_pooling_avg
Average pooling (alias for dnnl_pooling_avg_exclude_padding)
Definition: dnnl_types.h:759
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:5323
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:4382
dnnl_vanilla_rnn
@ dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:765
dnnl::query::weights_md
@ weights_md
weights memory descriptor desc
dnnl::cpu_isa::avx2
@ avx2
Intel(R) Advanced Vector Extensions 2.
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::convolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3174
dnnl_unidirectional
@ dnnl_unidirectional
Alias for dnnl_unidirectional_left2right.
Definition: dnnl_types.h:1401
dnnl::inner_product_forward::desc::desc
desc(prop_kind prop_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:6448
dnnl::primitive::kind::inner_product
@ inner_product
An inner product primitive.
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:7534
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7529
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4023
dnnl::lstm_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7769
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6351
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9041
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2209
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:8707
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:6889
dnnl_aBcd4b
@ dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:236
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:6639
dnnl::primitive::execute
void execute(stream &stream, const std::unordered_map< int, memory > &args) const
Executes computations specified by the primitive in a specified stream.
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:8854
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6161
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:9314
dnnl::primitive::kind::layer_normalization
@ layer_normalization
A layer normalization 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:6825
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1646
dnnl_query_matmul_d
@ dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:1924
dnnl::memory::unmap_data
void unmap_data(void *mapped_ptr) const
Unmaps the previously mapped data for the memory.
Definition: dnnl.hpp:2281
dnnl::deconvolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:4002
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9163
dnnl::gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7951
dnnl_query_binary_d
@ dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:1922
dnnl_lbr_gru
@ dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:777
dnnl::status::not_required
@ not_required
Queried element is not required for given primitive.
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::prop_kind::backward_weights
@ backward_weights
Backward weights propagation.
dnnl::query::dst_md
@ dst_md
destination memory desc
dnnl_forward
@ dnnl_forward
Forward data propagation (alias for dnnl_forward_training).
Definition: dnnl_types.h:650
dnnl::resampling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9183
dnnl_f32
@ dnnl_f32
32-bit/single-precision floating point.
Definition: dnnl_types.h:70
dnnl::query::batch_normalization_d
@ batch_normalization_d
batch normalization descriptor
dnnl_acbdef
@ dnnl_acbdef
permuted 6D tensor
Definition: dnnl_types.h:189
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:547
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:6530
dnnl_use_global_stats
@ dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:801
dnnl::stream::stream
stream(const engine &engine, flags flags=flags::default_flags)
Constructs a stream for the specified engine and with behavior controlled by the specified flags.
Definition: dnnl.hpp:1416
dnnl::query::binary_d
@ binary_d
binary descriptor
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:4849
dnnl::query::undef
@ undef
no query
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9025
dnnl_lrn_across_channels
@ dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:761
dnnl::batch_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:5970
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:5789
dnnl_concat
@ dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:671
dnnl::inner_product_forward
Inner product forward propagation primitive.
Definition: dnnl.hpp:6390
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4244
dnnl_query_diff_dst_md
@ dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:1934
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:5561
dnnl_aBcdef16b
@ dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:297
dnnl_layer_normalization
@ dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:689
dnnl::query::workspace_md
@ workspace_md
workspace memory desc
dnnl::gru_backward::primitive_desc
Primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8095
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4070
dnnl_set_max_cpu_isa
dnnl_status_t DNNL_API dnnl_set_max_cpu_isa(dnnl_cpu_isa_t isa)
Sets the maximal ISA DNNL 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:8610
dnnl_memory_desc_t::data_type
dnnl_data_type_t data_type
Data type of the tensor elements.
Definition: dnnl_types.h:997
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::status::iterator_ends
@ iterator_ends
Primitive iterator passed over last primitive descriptor.
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:6692
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:7333
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:8546
dnnl_primitive
dnnl::query::src_md
@ src_md
source memory desc
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:4498
dnnl::algorithm::convolution_direct
@ convolution_direct
Direct convolution.
dnnl::deconvolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4247
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:8766
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:7489
dnnl::convolution_forward::convolution_forward
convolution_forward()=default
Default constructor. Produces an empty object.
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:4633
dnnl::algorithm::eltwise_logistic
@ eltwise_logistic
Elementwise: logistic.
dnnl_cpu_isa_all
@ dnnl_cpu_isa_all
Any ISA (no restrictions)
Definition: dnnl_types.h:2022
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::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:1909
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7463
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7289
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:1067
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3296
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:6833
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:871
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_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:8177
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:5113
dnnl::algorithm::eltwise_tanh
@ eltwise_tanh
Elementwise: hyperbolic tangent non-linearity (tanh)
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_abcd
@ dnnl_abcd
plain 4D tensor
Definition: dnnl_types.h:180
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:8869
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:7294
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6198
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8161
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:3502
dnnl_u8
@ dnnl_u8
8-bit unsigned integer.
Definition: dnnl_types.h:76
dnnl_query_workspace_md
@ dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:1935
dnnl::lstm_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7495
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9017
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5220
dnnl_format_tag_last
@ dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:351
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:9192
dnnl::inner_product_forward::desc::desc
desc(prop_kind prop_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:6417
dnnl_query_deconvolution_d
@ dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:1911
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8313
dnnl_logsoftmax
@ dnnl_logsoftmax
A logsoftmax primitive.
Definition: dnnl_types.h:699
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:3337
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_deconvolution_direct
@ dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:716
dnnl::gru_forward::desc::desc
desc(prop_kind prop_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:7878
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:6853
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:4203
dnnl::lbr_gru_forward::desc::desc
desc(prop_kind prop_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:8276
dnnl::handle::handle
handle(T t, bool weak=false)
Constructs a handle wrapper object from a C API handle.
Definition: dnnl.hpp:162
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:667
dnnl::matmul::primitive_desc
Primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:8965
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:5748
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9012
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:1248
dnnl::eltwise_backward::desc::desc
desc(algorithm algorithm, 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:5152
dnnl::eltwise_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, const memory::desc &data_desc, float alpha=0, float beta=0)
Constructs a descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5053
dnnl_stream_default_flags
@ dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:1957
dnnl::cpu_isa::avx512_mic
@ avx512_mic
Intel(R) Advanced Vector Extensions 512 subset for Intel(R) Xeon Phi(TM) Processors x200 Series.
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:1114
dnnl::convolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3127
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7738
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:5893
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5548
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:2806
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:654
dnnl::normalization_flags::use_scale_shift
@ use_scale_shift
Use scale and shift parameters.
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:191
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:8991
dnnl_version_t
Structure containing version information as per Semantic Versioning
Definition: dnnl_types.h:1990
dnnl::vanilla_rnn_forward::desc::desc
desc(prop_kind prop_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:7002
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1279
dnnl::query::memory_consumption_s64
@ memory_consumption_s64
memory consumption (bytes)
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:2490
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:2484
dnnl::layer_normalization_backward
Layer normalization backward propagation primitive.
Definition: dnnl.hpp:6196
dnnl::batch_normalization_backward::desc::desc
desc(prop_kind prop_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:5879
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 GRU forward propagation primitive.
Definition: dnnl.hpp:7901
dnnl::prop_kind::backward_bias
@ backward_bias
Backward bias propagation.
dnnl_set_verbose
dnnl_status_t DNNL_API dnnl_set_verbose(int level)
Configures verbose output to stdout.
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a logsoftmax backward propagation primitive from a C API primit...
Definition: dnnl.hpp:5644
dnnl::cpu_isa::avx512_core
@ avx512_core
Intel(R) Advanced Vector Extensions 512 for Intel(R) Xeon(R) Processor Scalable Family and Intel(R) C...
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:7353
dnnl::algorithm::eltwise_swish
@ eltwise_swish
Elementwise: x*sigmoid(a*x)
dnnl::softmax_forward::softmax_forward
softmax_forward()=default
Default constructor. Produces an empty object.
dnnl_eltwise_desc_t
A descriptor of a element-wise operation.
Definition: dnnl_types.h:1136
dnnl::convolution_backward_data::desc::desc
desc(algorithm algorithm, 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:3400
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:2446
dnnl::primitive_desc_base::primitive_desc_base
primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind)
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after veri...
Definition: dnnl.hpp:2588
dnnl_aBcd16b
@ dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:230
dnnl::algorithm::lrn_within_channel
@ lrn_within_channel
LRN within a single channel.
dnnl_resampling_nearest
@ dnnl_resampling_nearest
Nearest Neighbor Resampling Method.
Definition: dnnl_types.h:783
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:6849
dnnl::primitive_desc::primitive_desc
primitive_desc(const_dnnl_op_desc_t desc, const primitive_attr *attr, const engine &engine, const_dnnl_primitive_desc_t hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor.
Definition: dnnl.hpp:3035
dnnl::scratchpad_mode::user
@ user
A user shall query and provide the scratchpad memory to primitives This mode is thread-safe as long a...
dnnl::layer_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6155
dnnl_rnn
@ dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:693
dnnl::vanilla_rnn_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7100
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3789
dnnl::convolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3794
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:9364
dnnl_query_num_of_outputs_s32
@ dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:1889
dnnl::binary::primitive_desc::src1_desc
memory::desc src1_desc() const
Returns the memory descriptor for source #1.
Definition: dnnl.hpp:8888
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:4768
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel(R) SSE4.1.
Definition: dnnl_types.h:2025
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:9411
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:4610
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:2369
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:9331
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:8392
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:6342
dnnl_abdec
@ dnnl_abdec
permuted 5D tensor
Definition: dnnl_types.h:186
dnnl_cpu_isa_avx2
@ dnnl_cpu_isa_avx2
Intel(R) Advanced Vector Extensions 2.
Definition: dnnl_types.h:2031
dnnl_cpu_isa_avx512_core_vnni
@ dnnl_cpu_isa_avx512_core_vnni
Intel(R) Advanced Vector Extensions 512 with Intel(R) DL Boost Support for Intel(R) Xeon(R) Processor...
Definition: dnnl_types.h:2048
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:4223
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:3368
dnnl_memory_desc_t::ndims
int ndims
Number of dimensions.
Definition: dnnl_types.h:979
dnnl::layer_normalization_forward::desc::desc
desc(prop_kind prop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization forward propagation primitive.
Definition: dnnl.hpp:6088
dnnl_aBc8b
@ dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:221
dnnl::rnn_primitive_desc_base::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:6843
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:3768
dnnl::handle::get
T get(bool allow_empty=false) const
Returns the underlying C API handle.
Definition: dnnl.hpp:178
dnnl::primitive_desc_base::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:2466
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:1312
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:2670
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:8784
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:8810
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:4648
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4079
dnnl::convolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:3617
dnnl::binary::desc::desc
desc(algorithm algorithm, const memory::desc &src0, const memory::desc &src1, const memory::desc &dst)
Constructs a descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:8830
dnnl::inner_product_backward_data::desc
Descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6532
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:751
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::pooling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:4834
dnnl::lbr_gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8577
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::error
DNNL exception class.
Definition: dnnl.hpp:87
dnnl::layer_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6158
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3326
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:5394
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_pooling_avg_include_padding
@ dnnl_pooling_avg_include_padding
Average pooling include padding.
Definition: dnnl_types.h:755
dnnl::cpu_isa::avx512_core_bf16
@ avx512_core_bf16
Intel(R) Advanced Vector Extensions 512 with Intel(R) DL Boost and Bfloat16 Support for Intel(R) Xeon...
dnnl::layer_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6164
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:8192
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:2149
dnnl_set_jit_profiling_jitdumpdir
dnnl_status_t DNNL_API dnnl_set_jit_profiling_jitdumpdir(const char *dir)
Sets JIT dump output path.
dnnl::post_ops::append_eltwise
void append_eltwise(float scale, algorithm algorithm, float alpha, float beta)
Appends an elementwise post-op.
Definition: dnnl.hpp:884
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:8955
dnnl::convolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3225
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1555
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:7068
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:6768
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7761
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:4450
dnnl_deconvolution
@ dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:677
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:964
dnnl_aBcde4b
@ dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:274
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 pointer to host-side buffer with a copy of its contents.
dnnl::prop_kind::forward
@ forward
Forward data propagation, alias for dnnl::prop_kind::forward_training.
dnnl::shuffle_forward::desc::desc
desc(prop_kind prop_kind, const memory::desc &data_desc, int axis, int group_size)
Constructs a descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:8660
dnnl::algorithm::eltwise_relu
@ eltwise_relu
Elementwise: ReLU.
dnnl::layer_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6339
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:7799
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:4885
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4241
dnnl_stream_out_of_order
@ dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:1955
dnnl::inner_product_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6511
dnnl::algorithm::resampling_linear
@ resampling_linear
Linear (Bilinear, Trilinear) resampling method.
dnnl::primitive_desc
A base class for descriptors of all primitives that have an operation descriptor and that support ite...
Definition: dnnl.hpp:3008
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:7825
dnnl::normalization_flags::use_global_stats
@ use_global_stats
Use global statistics.
dnnl_batch_normalization_backward_desc_init
dnnl_status_t DNNL_API dnnl_batch_normalization_backward_desc_init(dnnl_batch_normalization_desc_t *bnrm_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, float epsilon, unsigned flags)
Initializes a descriptor for a batch normalization backward propagation primitive.
dnnl_lbr_gru_forward_desc_init
dnnl_status_t DNNL_API dnnl_lbr_gru_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, unsigned flags)
Initializes a descriptor for LBR GRU forward propagation primitive.
dnnl::binary::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:8891
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:169
dnnl::softmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5332
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5508
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:8600
dnnl_convolution
@ dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:675
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:7348
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:1395
dnnl::lstm_backward::desc::desc
desc(prop_kind prop_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:7636
dnnl::engine::get_count
static size_t get_count(kind kind)
Returns the number of engines of a certain kind.
Definition: dnnl.hpp:1273
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:6867
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:5202
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:5978
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:4969
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:7725
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:4982
dnnl::post_ops::append_sum
void append_sum(float scale=1.)
Appends an accumulation (sum) post-op.
Definition: dnnl.hpp:855
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:8739
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:4745
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:5223
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6354
dnnl::rnn_direction::bidirectional_sum
@ bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
dnnl_primitive_attr
An opaque structure for primitive descriptor attributes.
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:6771
dnnl::algorithm::deconvolution_winograd
@ deconvolution_winograd
Winograd deconvolution.
dnnl::rnn_direction::unidirectional_right2left
@ unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
dnnl_lrn
@ dnnl_lrn
An LRN primitive.
Definition: dnnl_types.h:685
dnnl::vanilla_rnn_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7343
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::algorithm::eltwise_exp
@ eltwise_exp
Elementwise: exponent.
dnnl_query_src_md
@ dnnl_query_src_md
source memory desc
Definition: dnnl_types.h:1929
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::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::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:6299
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:8595
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:8187
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5659
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:934
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5002
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:8642
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:8704
dnnl::deconvolution_backward_data::desc::desc
desc(algorithm algorithm, 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:4122
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2884
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1608
dnnl::primitive_attr
Primitive attributes.
Definition: dnnl.hpp:918
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:5341
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8580
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6514
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8556
dnnl::resampling_backward::desc::desc
desc(algorithm algorithm, 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:9238
dnnl_data_type_undef
@ dnnl_data_type_undef
Undefined data type, used for empty memory descriptors.
Definition: dnnl_types.h:64
dnnl::shuffle_backward::shuffle_backward
shuffle_backward(const primitive_desc &pd)
Constructs a shuffle backward propagation primitive.
Definition: dnnl.hpp:8796
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6565
dnnl_query_engine
@ dnnl_query_engine
execution engine
Definition: dnnl_types.h:1885
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_query_softmax_d
@ dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:1914
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1524
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:8375
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3371
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::shuffle_backward::desc
Descriptor for a shuffle primitive backward propagation primitive.
Definition: dnnl.hpp:8723
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5329
dnnl::query::softmax_d
@ softmax_d
softmax descriptor
dnnl_cpu
@ dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1558
dnnl::memory
Memory object.
Definition: dnnl.hpp:1553
dnnl::convolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:3712
dnnl_post_ops
An opaque structure for a chain of post operations.
dnnl::rnn_primitive_desc_base::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:6895
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:1037
dnnl_query_undef
@ dnnl_query_undef
no query
Definition: dnnl_types.h:1883
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:7914
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:747
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:106
dnnl::eltwise_backward::eltwise_backward
eltwise_backward(const primitive_desc &pd)
Constructs an eltwise backward propagation primitive.
Definition: dnnl.hpp:5235
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:6602
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:2455
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7756
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::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:3482
dnnl::batch_normalization_backward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:5973
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::algorithm::eltwise_linear
@ eltwise_linear
Elementwise: linear.
dnnl::set_verbose
status set_verbose(int level)
Configures verbose output to stdout.
Definition: dnnl.hpp:9349
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4037
dnnl::batch_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5799
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6461
dnnl::handle
DNNL C API handle wrapper class.
Definition: dnnl.hpp:129
dnnl::pooling_backward::pooling_backward
pooling_backward()=default
Default constructor. Produces an empty object.
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5296
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:2410
dnnl::algorithm::convolution_auto
@ convolution_auto
Convolution algorithm (either direct or Winograd) is chosen just in time.
dnnl_primitive_destroy
dnnl_status_t DNNL_API dnnl_primitive_destroy(dnnl_primitive_t primitive)
Destroys a primitive.
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7508
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:6755
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:5696
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:8878
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_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:7297
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:8559
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:6815
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:3535
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:6742
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5959
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::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8227
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9305
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:5987
dnnl::convolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:3573
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:977
dnnl_backward_bias
@ dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:658
dnnl::vanilla_rnn_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7087
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7503
dnnl_matmul
@ dnnl_matmul
A matrix multiplication primitive.
Definition: dnnl_types.h:701
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:1020
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:3811
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5557
dnnl::handle::operator!=
bool operator!=(const handle &other) const
Inequality operator.
Definition: dnnl.hpp:213
dnnl::convolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:3355
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2020
dnnl::inner_product_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:6517
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:2176
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:6319
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:4887
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:8671
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward()=default
Default constructor. Produces an empty object.
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4076
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:6947
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:8814
dnnl_nChw4c
@ dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:473
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:7774
dnnl::lbr_gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8569
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6760
dnnl::post_ops::get_params_eltwise
void get_params_eltwise(int index, float &scale, algorithm &algorithm, float &alpha, float &beta) const
Returns parameters of an elementwise post-up.
Definition: dnnl.hpp:898
dnnl_engine_destroy
dnnl_status_t DNNL_API dnnl_engine_destroy(dnnl_engine_t engine)
Destroys an engine.
dnnl.h
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:2553
dnnl_bacd
@ dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:194
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:6282
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:2511
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:470
dnnl::shuffle_backward::primitive_desc
Primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:8748
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:4186
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:864
dnnl_query_eltwise_d
@ dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:1913
dnnl::algorithm::vanilla_lstm
@ vanilla_lstm
LSTM cell.
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:3800
dnnl::algorithm::pooling_max
@ pooling_max
Max pooling.
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:8812
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4262
dnnl::concat::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:2881
dnnl_cba
@ dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:198
dnnl::rnn_primitive_desc_base::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:6839
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 DNNL C API handle.
Definition: dnnl.hpp:113
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc(int idx) const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2428
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:8111
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:8585
dnnl_query_num_of_inputs_s32
@ dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:1888
dnnl::status::invalid_arguments
@ invalid_arguments
The operation failed because of incorrect function arguments.
dnnl::memory::dims
std::vector< dim > dims
Vector of dimensions.
Definition: dnnl.hpp:1558
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5377
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4092
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5805
dnnl_acbde
@ dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:188
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:7804
dnnl::deconvolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3905
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_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:1130
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7074
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7967
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:2052
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3346
dnnl::primitive
Base class for all computational primitives.
Definition: dnnl.hpp:255
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:707
dnnl_deconvolution_winograd
@ dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:718
dnnl_cpu_isa_avx512_mic
@ dnnl_cpu_isa_avx512_mic
Intel(R) Advanced Vector Extensions 512 subset for Intel(R) Xeon Phi(TM) Processors x200 Series.
Definition: dnnl_types.h:2035
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:4595
dnnl::query::lrn_d
@ lrn_d
lrn descriptor
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5524
dnnl::layer_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6345
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward()=default
Default constructor. Produces an empty object.
dnnl_memory_desc_init_by_strides
dnnl_status_t DNNL_API dnnl_memory_desc_init_by_strides(dnnl_memory_desc_t *memory_desc, int ndims, const dnnl_dims_t dims, dnnl_data_type_t data_type, const dnnl_dims_t strides)
Initializes a memory descriptor using dimensions and strides.
dnnl_success
@ dnnl_success
The operation was successful.
Definition: dnnl_types.h:41
dnnl::memory::get_engine
engine get_engine() const
Returns the associated engine.
Definition: dnnl.hpp:2217
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1590
dnnl_eltwise_exp
@ dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:740
dnnl_abcdef
@ dnnl_abcdef
plain 6D tensor
Definition: dnnl_types.h:182
dnnl::convolution_forward::convolution_forward
convolution_forward(const primitive_desc &pd)
Constructs a convolution forward propagation primitive.
Definition: dnnl.hpp:3364
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:2168
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:8640
dnnl::query::logsoftmax_d
@ logsoftmax_d
logsoftmax descriptor
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward(const primitive_desc &pd)
Constructs an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8386
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::algorithm::vanilla_gru
@ vanilla_gru
GRU cell.
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:3092
dnnl::resampling_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:9090
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:8933
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:2162
dnnl::rnn_primitive_desc_base::rnn_primitive_desc_base
rnn_primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::prop_kind prop_kind, dnnl::algorithm cell_kind)
Constructs an RNN primitive descriptor base from a C API primitive descriptor while checking that it ...
Definition: dnnl.hpp:6809
dnnl_bidirectional_sum
@ dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1399
dnnl::lstm_forward::lstm_forward
lstm_forward(const primitive_desc &pd)
Constructs an LSTM forward propagation primitive.
Definition: dnnl.hpp:7545
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:7794
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7518
dnnl_eltwise_linear
@ dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:732
dnnl_nCw16c
@ dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:479
dnnl
DNNL namespace.
Definition: dnnl.hpp:77
dnnl_vanilla_gru
@ dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:769
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:8364
dnnl::query::shuffle_d
@ shuffle_d
shuffle descriptor
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5312
dnnl_abc
@ dnnl_abc
plain 3D tensor
Definition: dnnl_types.h:179
dnnl_stream
dnnl::matmul::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:9007
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:3541
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:4094
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8367
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1477
dnnl::memory::desc::submemory_desc
desc submemory_desc(const memory::dims &dims, const memory::dims &offsets) const
Constructs a memory descriptor for a region inside an area described by this memory descriptor.
Definition: dnnl.hpp:2117
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:8564
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:2740
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::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::memory::get_data_handle
void * get_data_handle() const
Returns the underlying memory buffer.
Definition: dnnl.hpp:2227
dnnl_convolution_direct
@ dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:710
dnnl_post_ops_get_kind
dnnl_primitive_kind_t DNNL_API dnnl_post_ops_get_kind(const_dnnl_post_ops_t post_ops, int index)
Returns the kind of a post-op entry.
dnnl::sum::sum
sum(const primitive_desc &pd)
Constructs a sum primitive.
Definition: dnnl.hpp:2998
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:2892
dnnl_query_diff_src_md
@ dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:1930
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7057
dnnl::algorithm::eltwise_gelu
@ eltwise_gelu
Elementwise: gelu.
dnnl::vanilla_rnn_forward
Vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:6945
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8551
dnnl::algorithm::eltwise_square
@ eltwise_square
Elementwise: square.
dnnl::stream::get_ocl_command_queue
cl_command_queue get_ocl_command_queue() const
Returns the underlying OpenCL queue object.
Definition: dnnl.hpp:1438
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7364
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:8787
dnnl::algorithm::vanilla_rnn
@ vanilla_rnn
RNN cell.
dnnl::convolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3275
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4088
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:9354
dnnl_forward_scoring
@ dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:648
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:284
dnnl::reorder::reorder
reorder(const primitive_desc &pd)
Constructs a reorder primitive.
Definition: dnnl.hpp:2756
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:8977
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:6502
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:6552
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:826
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8351
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:454
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3465
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7764
dnnl_prop_kind_undef
@ dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:639
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::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:5953
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:360
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:4514
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::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:8590
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:1886
dnnl_unidirectional_left2right
@ dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1391
dnnl::query::time_estimate_f64
@ time_estimate_f64
runtime estimation (seconds), unimplemented
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, 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:5611
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:4770
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:2729
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5165
dnnl::resampling_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:9067
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5463
dnnl::resampling_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:9122
dnnl_eltwise_elu
@ dnnl_eltwise_elu
Eltwise: parametric exponential linear unit (elu)
Definition: dnnl_types.h:724
dnnl::binary::primitive_desc::src0_desc
memory::desc src0_desc() const
Returns the memory descriptor for source #0.
Definition: dnnl.hpp:8885
dnnl::stream::flags::in_order
@ in_order
In-order execution.
dnnl::memory::map_data
T * map_data() const
Maps the data of the memory.
Definition: dnnl.hpp:2263
dnnl::cpu_isa::avx512_mic_4ops
@ avx512_mic_4ops
Intel(R) Advanced Vector Extensions 512 subset for Intel(R) Xeon Phi(TM) Processors 7235,...
dnnl::convolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3526
dnnl::status::out_of_memory
@ out_of_memory
The operation failed due to an out-of-memory condition.
dnnl::binary::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward(const primitive_desc &pd)
Constructs a batch normalization forward propagation primitive.
Definition: dnnl.hpp:5841
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:7779
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:8716
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:2987
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:482
dnnl::primitive_attr::get_scratchpad_mode
scratchpad_mode get_scratchpad_mode() const
Returns the scratchpad mode.
Definition: dnnl.hpp:938
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::deconvolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:4293
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:2059
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::convolution_backward_data::desc::desc
desc(algorithm algorithm, 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:3444
dnnl_vanilla_lstm
@ dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:767
dnnl_any_engine
@ dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1556
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:6796
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:922
dnnl::pooling_backward::desc::desc
desc(algorithm algorithm, 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:4915
dnnl_nCdhw4c
@ dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:464
dnnl::lrn_backward::primitive_desc
Primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:4686
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:703
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7368
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:6615
dnnl::primitive_desc_base::primitive_desc_base
primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::primitive::kind prim_kind)
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after veri...
Definition: dnnl.hpp:2573
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6115
dnnl::query::matmul_d
@ matmul_d
matmul descriptor
dnnl_cpu_isa_avx
@ dnnl_cpu_isa_avx
Intel(R) Advanced Vector Extensions.
Definition: dnnl_types.h:2028
dnnl_bca
@ dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:195
dnnl::primitive_desc_base::get_engine
engine get_engine() const
Returns the engine of the primitive descriptor.
Definition: dnnl.hpp:2356
dnnl::query::diff_weights_md
@ diff_weights_md
weights grad. memory desc
dnnl::query::op_d
@ op_d
op descriptor
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:636
dnnl::gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8148
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:2359
dnnl_query_scratchpad_md
@ dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:1936
dnnl::prop_kind::forward_scoring
@ forward_scoring
Forward data propagation, alias for dnnl::prop_kind::forward_inference.
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7513
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:5802
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:2390
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:5631
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:5965
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::resampling_backward::desc::desc
desc(algorithm algorithm, 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:9215
dnnl_eltwise_gelu
@ dnnl_eltwise_gelu
Eltwise: gelu.
Definition: dnnl_types.h:745
dnnl::convolution_backward_weights::desc::desc
desc(algorithm algorithm, 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:3664
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7041
dnnl::deconvolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4073
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:1931
dnnl::layer_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6367
dnnl::prop_kind::backward_data
@ backward_data
Backward data propagation.
dnnl::query::engine
@ engine
execution engine
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:4525
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:2349
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5347
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_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:1917
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::resampling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:9284
dnnl::resampling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9180
dnnl::memory::desc::desc
desc(const memory::dims &dims, data_type data_type, format_tag format_tag)
Constructs a memory descriptor.
Definition: dnnl.hpp:2072
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:3515
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:7551
dnnl::inner_product_backward_weights::inner_product_backward_weights
inner_product_backward_weights()=default
Default constructor. Produces an empty object.
dnnl::set_jit_dump
status set_jit_dump(int enable)
Configures dumping of JIT-generated code.
Definition: dnnl.hpp:9359
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8174
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5438
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7095
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:3825
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:4646
dnnl::primitive::kind::eltwise
@ eltwise
An element-wise primitive.
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5545
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::softmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5435
const_dnnl_op_desc_t
const typedef void * const_dnnl_op_desc_t
A pointer to any of the operation descriptors (constant variant).
Definition: dnnl_types.h:1049
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5251
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:665
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:7784
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for a RNN backward propagation primitive.
Definition: dnnl.hpp:7234
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:2906
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5494
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::rnn_direction::unidirectional
@ unidirectional
Alias for dnnl::rnn_direction::unidirectional_left2right.
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward()=default
Default constructor. Produces an empty object.
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, 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:5930
dnnl_eltwise_soft_relu
@ dnnl_eltwise_soft_relu
Eltwise: soft_relu.
Definition: dnnl_types.h:736
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())
Constructs a primitive descriptor for reorder primitive.
Definition: dnnl.hpp:2691
dnnl::gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8153
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7027
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:4860
DNNL_ARG_FROM
#define DNNL_ARG_FROM
A special mnemonic for reorder source argument.
Definition: dnnl_types.h:1696
dnnl_unidirectional_right2left
@ dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1393
dnnl_aBcd8b
@ dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:248
dnnl::gru_backward::gru_backward
gru_backward(const primitive_desc &pd)
Constructs a GRU backward propagation primitive.
Definition: dnnl.hpp:8223
dnnl::algorithm::pooling_avg_include_padding
@ pooling_avg_include_padding
Average pooling include padding.
dnnl::deconvolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4511
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6149
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:7929
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:5594
dnnl_query_scratchpad_engine
@ dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:1897
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:1218
dnnl_runtime_error
@ dnnl_runtime_error
Primitive or engine failed on execution.
Definition: dnnl_types.h:51
dnnl::query::deconvolution_d
@ deconvolution_d
deconvolution descriptor
dnnl_post_ops_get_params_eltwise
dnnl_status_t DNNL_API dnnl_post_ops_get_params_eltwise(const_dnnl_post_ops_t post_ops, int index, float *scale, dnnl_alg_kind_t *alg_kind, float *alpha, float *beta)
Returns the parameters of an elementwise post-up.
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9198
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:7990
dnnl_query_exec_arg_md
@ dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:1937
dnnl::lstm_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7753
dnnl::deconvolution_forward::desc::desc
desc(prop_kind prop_kind, algorithm algorithm, 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:3954
dnnl::lstm_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7735
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &desc, const primitive_attr &attr, const engine &engine, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6131
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:3827
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:5943
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:757
dnnl_binary_add
@ dnnl_binary_add
Binary add.
Definition: dnnl_types.h:779
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:5107
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7302
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.