oneAPI Deep Neural Network Library (oneDNN)  1.6.0
Performance library for Deep Learning
dnnl.hpp
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright 2016-2020 Intel Corporation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *******************************************************************************/
16 
19 
20 #ifndef DNNL_HPP
21 #define DNNL_HPP
22 
23 #include "dnnl_config.h"
24 
26 #include <algorithm>
27 #include <cstdlib>
28 #include <iterator>
29 #include <memory>
30 #include <string>
31 #include <vector>
32 #include <unordered_map>
33 
34 #include "dnnl.h"
35 
36 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
37 #include "dnnl_threadpool_iface.hpp"
38 #endif
39 
40 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
41 #include <CL/cl.h>
42 #endif
43 
45 // __cpp_exceptions is referred from
46 // https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html
47 // gcc < 5 does not define __cpp_exceptions but __EXCEPTIONS,
48 // Microsoft C++ Compiler does not provide an option to disable exceptions
49 #ifndef DNNL_ENABLE_EXCEPTIONS
50 #if __cpp_exceptions || __EXCEPTIONS \
51  || (defined(_MSC_VER) && !defined(__clang__))
52 #define DNNL_ENABLE_EXCEPTIONS 1
53 #else
54 #define DNNL_ENABLE_EXCEPTIONS 0
55 #endif
56 #endif
57 
58 #if defined(__GNUC__) || defined(__clang__)
59 #define DNNL_TRAP() __builtin_trap()
60 #elif defined(__INTEL_COMPILER) || defined(_MSC_VER)
61 #define DNNL_TRAP() __debugbreak()
62 #else
63 #error "unknown compiler"
64 #endif
65 
66 #if DNNL_ENABLE_EXCEPTIONS
67 #define DNNL_THROW_ERROR(status, msg) throw error(status, msg)
68 #else
69 #include <cstdio>
70 #define DNNL_THROW_ERROR(status, msg) \
71  do { \
72  fputs(msg, stderr); \
73  DNNL_TRAP(); \
74  } while (0)
75 #endif
76 
79 
81 namespace dnnl {
82 
86 
91 struct error : public std::exception {
93  const char *message;
94 
99  error(dnnl_status_t status, const char *message)
100  : status(status), message(message) {}
101 
103  const char *what() const noexcept override { return message; }
104 
110  static void wrap_c_api(dnnl_status_t status, const char *message) {
111  if (status != dnnl_success) DNNL_THROW_ERROR(status, message);
112  }
113 };
114 
116 template <typename T>
117 void validate_container_size(const T &v, const char *error_message,
118  int min_size = 1, int max_size = -1) {
119  const int size = (int)v.size();
120  if (size < min_size || (max_size >= 0 && size > max_size))
121  DNNL_THROW_ERROR(dnnl_invalid_arguments, error_message);
122 }
124 
126 template <typename T>
127 struct handle_traits {};
128 
142 template <typename T, typename traits = handle_traits<T>>
143 struct handle {
144 private:
145  static dnnl_status_t dummy_destructor(T) { return dnnl_success; }
146  std::shared_ptr<typename std::remove_pointer<T>::type> data_ {0};
147 
148 protected:
149  bool operator==(const T other) const { return other == data_.get(); }
150  bool operator!=(const T other) const { return !(*this == other); }
151 
152 public:
160  handle() = default;
161 
163  handle(const handle<T, traits> &) = default;
167  handle(handle<T, traits> &&) = default;
170 
176  explicit handle(T t, bool weak = false) { reset(t, weak); }
177 
183  void reset(T t, bool weak = false) {
184  data_.reset(t, weak ? &dummy_destructor : traits::destructor);
185  }
186 
192  T get(bool allow_empty = false) const {
193  T result = data_.get();
194  if (allow_empty == false && result == nullptr)
195  DNNL_THROW_ERROR(
196  dnnl_invalid_arguments, "object is not initialized");
197  return result;
198  }
199 
204  explicit operator T() const { return get(true); }
205 
209  explicit operator bool() const { return get(true) != nullptr; }
210 
217  bool operator==(const handle<T, traits> &other) const {
218  return other.data_.get() == data_.get();
219  }
220 
227  bool operator!=(const handle &other) const { return !(*this == other); }
228 };
229 
231 template <>
232 struct handle_traits<dnnl_memory_t> {
233  static dnnl_status_t destructor(dnnl_memory_t p) {
234  return dnnl_memory_destroy(p);
235  }
236 };
237 
238 template <>
239 struct handle_traits<dnnl_primitive_desc_t> {
240  static dnnl_status_t destructor(dnnl_primitive_desc_t p) {
241  return dnnl_primitive_desc_destroy(p);
242  }
243 };
244 
245 template <>
246 struct handle_traits<dnnl_primitive_t> {
247  static dnnl_status_t destructor(dnnl_primitive_t p) {
248  return dnnl_primitive_destroy(p);
249  }
250 };
251 
252 template <>
253 struct handle_traits<dnnl_primitive_desc_iterator_t> {
254  static dnnl_status_t destructor(dnnl_primitive_desc_iterator_t p) {
256  }
257 };
259 
261 
262 struct stream;
263 struct memory;
264 struct primitive_desc;
265 
270 
274 
276 struct primitive : public handle<dnnl_primitive_t> {
278  enum class kind {
288  sum = dnnl_sum,
300  lrn = dnnl_lrn,
308  rnn = dnnl_rnn,
317  };
318 
319  using handle::handle;
320 
322  primitive() = default;
323 
328 
333 
339 
343  inline kind get_kind() const;
344 
357  void execute(const stream &astream,
358  const std::unordered_map<int, memory> &args) const;
359 };
360 
366  return static_cast<dnnl_primitive_kind_t>(akind);
367 }
368 
372  "could not get a primitive descriptor from a primitive");
373  return pd;
374 }
375 
378  // TODO (Roma): the code below is only needed because get_primitive_desc
379  // returns a C type.
382  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
383  "could not get a primitive kind from a primitive descriptor");
384  return static_cast<dnnl::primitive::kind>(kind);
385 }
386 
388 
400 
402 enum class scratchpad_mode {
425 };
426 
432  return static_cast<dnnl_scratchpad_mode_t>(mode);
433 }
434 
436 enum class prop_kind {
460 };
461 
467  return static_cast<dnnl_prop_kind_t>(akind);
468 }
469 
471 enum class algorithm {
473  undef = dnnl_alg_kind_undef,
573 };
574 
579  return static_cast<dnnl_alg_kind_t>(aalgorithm);
580 }
581 
583 
586 
588 enum class normalization_flags : unsigned {
594 
603 
610 
616 };
617 
622  return static_cast<dnnl_normalization_flags_t>(flags);
623 }
624 
626 
629 
631 enum class rnn_flags : unsigned {
634 };
635 
640  return static_cast<dnnl_rnn_flags_t>(flags);
641 }
642 
643 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
644  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
645  return static_cast<enum_name>( \
646  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
647  } \
648 \
649  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
650  return static_cast<enum_name>( \
651  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
652  } \
653 \
654  inline enum_name operator^(enum_name lhs, enum_name rhs) { \
655  return static_cast<enum_name>( \
656  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
657  } \
658 \
659  inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
660  lhs = static_cast<enum_name>( \
661  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
662  return lhs; \
663  } \
664 \
665  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
666  lhs = static_cast<enum_name>( \
667  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
668  return lhs; \
669  } \
670 \
671  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
672  lhs = static_cast<enum_name>( \
673  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
674  return lhs; \
675  } \
676 \
677  inline enum_name operator~(enum_name rhs) { \
678  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
679  }
680 
681 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
682 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
683 
684 enum class rnn_direction {
698 };
699 
704  return static_cast<dnnl_rnn_direction_t>(dir);
705 }
706 
708 
711 
718 enum class query {
721 
726 
731 
738 
743 
748 
751 
754 
787 
806 };
807 
812  return static_cast<dnnl_query_t>(aquery);
813 }
814 
816 
818 
829 
831 template <>
832 struct handle_traits<dnnl_engine_t> {
833  static dnnl_status_t destructor(dnnl_engine_t p) {
834  return dnnl_engine_destroy(p);
835  }
836 };
838 
840 struct engine : public handle<dnnl_engine_t> {
841  friend struct primitive;
842  friend struct reorder;
843 
845  enum class kind {
849  cpu = dnnl_cpu,
851  gpu = dnnl_gpu,
852  };
853 
854  using handle::handle;
855 
858  engine() = default;
859 
864  static size_t get_count(kind akind) {
865  return dnnl_engine_get_count(convert_to_c(akind));
866  }
867 
873  engine(kind akind, size_t index) {
876  dnnl_engine_create(&engine, convert_to_c(akind), index),
877  "could not create an engine");
878  reset(engine);
879  }
880 
881 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
882  engine(kind akind, cl_device_id device, cl_context context) {
889  dnnl_engine_t c_engine;
890  error::wrap_c_api(dnnl_engine_create_ocl(&c_engine, convert_to_c(akind),
891  device, context),
892  "could not create an engine");
893  reset(c_engine);
894  }
895 #endif
896 
902  dnnl_engine_t c_engine;
905  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
906  "could not get an engine from a primitive_desc");
907  reset(c_engine, true);
908  }
909 
912  kind get_kind() const {
915  "could not get kind of an engine");
916  return static_cast<engine::kind>(kind);
917  }
918 
919 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
920  cl_context get_ocl_context() const {
923  cl_context context = nullptr;
925  "could not get an OpenCL context from an engine");
926  return context;
927  }
928 
931  cl_device_id get_ocl_device() const {
932  cl_device_id device = nullptr;
934  "could not get an OpenCL device from an engine");
935  return device;
936  }
937 #endif
938 
944  template <typename primitive_desc>
945  static engine query(const primitive_desc &pd) {
946  return query(pd, dnnl::query::engine);
947  }
948 
949 private:
950  static dnnl_engine_kind_t convert_to_c(kind akind) {
951  return static_cast<dnnl_engine_kind_t>(akind);
952  }
953 
954  template <typename primitive_desc>
955  static engine query(const primitive_desc &pd, dnnl::query what) {
956  dnnl_engine_t c_engine;
958  dnnl::convert_to_c(what), 0, &c_engine),
959  "could not get an engine from a primitive_desc");
960  return engine(c_engine, true);
961  }
962 };
963 
969  return static_cast<dnnl_engine_kind_t>(akind);
970 }
971 
973 
981 
983 template <>
984 struct handle_traits<dnnl_stream_t> {
985  static dnnl_status_t destructor(dnnl_stream_t p) {
986  return dnnl_stream_destroy(p);
987  }
988 };
989 template <>
990 struct handle_traits<dnnl_stream_attr_t> {
991  static dnnl_status_t destructor(dnnl_stream_attr_t p) {
992  return dnnl_stream_attr_destroy(p);
993  }
994 };
996 
998 struct stream_attr : public handle<dnnl_stream_attr_t> {
999  using handle::handle;
1000 
1002  stream_attr() = default;
1003 
1009  dnnl_stream_attr_t attr;
1011  "could not create stream attributes");
1012  reset(attr);
1013  }
1014 
1015 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
1016  void set_threadpool(threadpool_iface *threadpool) {
1024  error::wrap_c_api(dnnl_stream_attr_set_threadpool(get(), threadpool),
1025  "could not set stream threadpool attribute");
1026  }
1027 
1034  threadpool_iface *tp;
1035  error::wrap_c_api(dnnl_stream_attr_get_threadpool(get(), (void **)&tp),
1036  "could not set stream threadpool attribute");
1037  return tp;
1038  }
1039 #endif
1040 };
1041 
1043 struct stream : public handle<dnnl_stream_t> {
1044  using handle::handle;
1045 
1047  enum class flags : unsigned {
1057  };
1058 
1061  stream() = default;
1062 
1069  stream(const engine &aengine, flags aflags = flags::default_flags,
1070  const stream_attr &attr = stream_attr()) {
1073  static_cast<dnnl_stream_flags_t>(aflags),
1074  attr.get(true)),
1075  "could not create a stream");
1076  reset(stream);
1077  }
1078 
1079 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1080  stream(const engine &aengine, cl_command_queue queue) {
1086  error::wrap_c_api(dnnl_stream_create_ocl(&stream, aengine.get(), queue),
1087  "could not create a stream");
1088  reset(stream);
1089  }
1090 
1093  cl_command_queue get_ocl_command_queue() const {
1094  cl_command_queue queue = nullptr;
1096  "could not get an OpenCL command queue from a stream");
1097  return queue;
1098  }
1099 #endif
1100 
1105  dnnl_stream_wait(get()), "could not wait on a stream");
1106  return *this;
1107  }
1108 };
1109 
1110 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1111 
1112 
1177 
1184 struct memory : public handle<dnnl_memory_t> {
1186  typedef dnnl_dim_t dim;
1189  typedef std::vector<dim> dims;
1190 
1197  template <typename T>
1198  static void validate_dims(const std::vector<T> &v, int min_size = 0) {
1199  validate_container_size(
1200  v, "dimensions are invalid", min_size, DNNL_MAX_NDIMS);
1201  }
1202 
1204  enum class data_type {
1208  f16 = dnnl_f16,
1210  bf16 = dnnl_bf16,
1212  f32 = dnnl_f32,
1214  s32 = dnnl_s32,
1216  s8 = dnnl_s8,
1218  u8 = dnnl_u8,
1219  };
1220 
1222  enum class format_kind {
1227  any = dnnl_format_kind_any,
1231  blocked = dnnl_blocked,
1233  wino = dnnl_format_kind_wino,
1235  packed = dnnl_format_kind_rnn_packed,
1236  };
1237 
1278  enum class format_tag {
1283  any = dnnl_format_tag_any,
1284 
1286  a = dnnl_a,
1287 
1289  ab = dnnl_ab,
1291  ba = dnnl_ba,
1292 
1294  abc = dnnl_abc,
1296  acb = dnnl_acb,
1298  bac = dnnl_bac,
1300  bca = dnnl_bca,
1302  cba = dnnl_cba,
1303 
1305  abcd = dnnl_abcd,
1307  abdc = dnnl_abdc,
1309  acdb = dnnl_acdb,
1311  bacd = dnnl_bacd,
1313  bcda = dnnl_bcda,
1315  cdba = dnnl_cdba,
1317  dcab = dnnl_dcab,
1318 
1320  abcde = dnnl_abcde,
1322  abdec = dnnl_abdec,
1324  acbde = dnnl_acbde,
1326  acdeb = dnnl_acdeb,
1328  bacde = dnnl_bacde,
1330  bcdea = dnnl_bcdea,
1332  cdeba = dnnl_cdeba,
1334  decab = dnnl_decab,
1336  abcdef = dnnl_abcdef,
1338  acbdef = dnnl_acbdef,
1340  defcab = dnnl_defcab,
1341 
1343  x = a,
1345  nc = ab,
1347  cn = ba,
1349  tn = ab,
1351  nt = ba,
1353  ncw = abc,
1355  nwc = acb,
1357  nchw = abcd,
1359  nhwc = acdb,
1361  chwn = bcda,
1363  ncdhw = abcde,
1365  ndhwc = acdeb,
1366 
1368  oi = ab,
1370  io = ba,
1372  oiw = abc,
1374  owi = acb,
1376  wio = cba,
1378  iwo = bca,
1380  oihw = abcd,
1382  hwio = cdba,
1384  ohwi = acdb,
1386  ihwo = bcda,
1388  iohw = bacd,
1390  oidhw = abcde,
1392  dhwio = cdeba,
1394  odhwi = acdeb,
1396  iodhw = bacde,
1398  idhwo = bcdea,
1399 
1401  goiw = abcd,
1403  wigo = dcab,
1405  goihw = abcde,
1407  hwigo = decab,
1409  giohw = acbde,
1411  goidhw = abcdef,
1413  giodhw = acbdef,
1415  dhwigo = defcab,
1416 
1418  tnc = abc,
1420  ntc = bac,
1423  ldnc = abcd,
1430  ldigo = abcde,
1437  ldgoi = abdec,
1440  ldio = abcd,
1443  ldoi = abdc,
1450  ldgo = abcd,
1451 
1452  // Opaque blocked formats
1453 
1454  Abc16a = dnnl_Abc16a,
1455  ABc16a16b = dnnl_ABc16a16b,
1456  ABc4a4b = dnnl_ABc4a4b,
1457  aBc16b = dnnl_aBc16b,
1458  aBc32b = dnnl_aBc32b,
1459  ABc16b16a = dnnl_ABc16b16a,
1460  Abc4a = dnnl_Abc4a,
1461  aBc4b = dnnl_aBc4b,
1462  ABc4b16a4b = dnnl_ABc4b16a4b,
1463  ABc2b8a4b = dnnl_ABc2b8a4b,
1464  ABc16b16a4b = dnnl_ABc16b16a4b,
1465  ABc16b16a2b = dnnl_ABc16b16a2b,
1466  ABc4b4a = dnnl_ABc4b4a,
1467  ABc8a16b2a = dnnl_ABc8a16b2a,
1468  ABc8a8b = dnnl_ABc8a8b,
1469  ABc8a4b = dnnl_ABc8a4b,
1470  aBc8b = dnnl_aBc8b,
1471  ABc8b16a2b = dnnl_ABc8b16a2b,
1472  ABc8b8a = dnnl_ABc8b8a,
1473  Abcd8a = dnnl_Abcd8a,
1474  Abcd16a = dnnl_Abcd16a,
1475  Abcd32a = dnnl_Abcd32a,
1476  ABcd16a16b = dnnl_ABcd16a16b,
1477  aBcd16b = dnnl_aBcd16b,
1478  aBcd32b = dnnl_aBcd32b,
1479  ABcd16b16a = dnnl_ABcd16b16a,
1480  aBCd16b16c = dnnl_aBCd16b16c,
1481  aBCd16c16b = dnnl_aBCd16c16b,
1482  Abcd4a = dnnl_Abcd4a,
1483  aBcd4b = dnnl_aBcd4b,
1484  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1485  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1486  ABcd4b4a = dnnl_ABcd4b4a,
1487  ABcd4a4b = dnnl_ABcd4a4b,
1488  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1489  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1490  ABcd16b16a4b = dnnl_ABcd16b16a4b,
1491  ABcd16b16a2b = dnnl_ABcd16b16a2b,
1492  aBCd16c16b4c = dnnl_aBCd16c16b4c,
1493  aBCd16c16b2c = dnnl_aBCd16c16b2c,
1494  aBCd4c4b = dnnl_aBCd4c4b,
1495  aBCd4b4c = dnnl_aBCd4b4c,
1496  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1497  ABcd8a8b = dnnl_ABcd8a8b,
1498  ABcd8a4b = dnnl_ABcd8a4b,
1500  aBcd8b = dnnl_aBcd8b,
1501  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1502  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1504  ABcd8b8a = dnnl_ABcd8b8a,
1505  aBCd8b8c = dnnl_aBCd8b8c,
1506  aBCd8b4c = dnnl_aBCd8b4c,
1507  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1508  aBCd8c8b = dnnl_aBCd8c8b,
1509  Abcde16a = dnnl_Abcde16a,
1510  Abcde32a = dnnl_Abcde32a,
1511  ABcde16a16b = dnnl_ABcde16a16b,
1512  aBcde16b = dnnl_aBcde16b,
1513  aBcde32b = dnnl_aBcde32b,
1514  ABcde16b16a = dnnl_ABcde16b16a,
1515  aBCde16b16c = dnnl_aBCde16b16c,
1516  aBCde16c16b = dnnl_aBCde16c16b,
1517  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1518  Abcde4a = dnnl_Abcde4a,
1519  aBcde4b = dnnl_aBcde4b,
1520  ABcde4b4a = dnnl_ABcde4b4a,
1521  ABcde4a4b = dnnl_ABcde4a4b,
1522  aBCde4b4c = dnnl_aBCde4b4c,
1523  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1524  aBCde16c16b4c = dnnl_aBCde16c16b4c,
1525  aBCde16c16b2c = dnnl_aBCde16c16b2c,
1526  aBCde4c4b = dnnl_aBCde4c4b,
1527  Abcde8a = dnnl_Abcde8a,
1528  ABcde8a8b = dnnl_ABcde8a8b,
1529  ABcde8a4b = dnnl_ABcde8a4b,
1530  aBcde8b = dnnl_aBcde8b,
1531  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1532  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1533  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1534  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1535  ABcde8b8a = dnnl_ABcde8b8a,
1536  aBCde8b8c = dnnl_aBCde8b8c,
1537  aBCde8b4c = dnnl_aBCde8b4c,
1538  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1539  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1540  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1541  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1542  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1543  aBCde8c8b = dnnl_aBCde8c8b,
1544  aBcdef16b = dnnl_aBcdef16b,
1545  aBCdef16b16c = dnnl_aBCdef16b16c,
1546  aBCdef16c16b = dnnl_aBCdef16c16b,
1547  aBcdef4b = dnnl_aBcdef4b,
1548  aBCdef2c8b4c = dnnl_aBCdef2c8b4c,
1549  aBCdef4c4b = dnnl_aBCdef4c4b,
1550  aBCdef4b4c = dnnl_aBCdef4b4c,
1551  aBCdef8b8c = dnnl_aBCdef8b8c,
1552  aBCdef8b4c = dnnl_aBCdef8b4c,
1553  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1554  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1555  aBCdef8c8b = dnnl_aBCdef8c8b,
1556  aBdc16b = dnnl_aBdc16b,
1557  aBdc4b = dnnl_aBdc4b,
1558  aBdc8b = dnnl_aBdc8b,
1559  aBdec16b = dnnl_aBdec16b,
1560  aBdec4b = dnnl_aBdec4b,
1561  aBdec8b = dnnl_aBdec8b,
1562  aBdefc16b = dnnl_aBdefc16b,
1563  aCBdef16c16b = dnnl_aCBdef16c16b,
1564  aCBdef16b16c = dnnl_aCBdef16b16c,
1565  aBdefc4b = dnnl_aBdefc4b,
1566  aBdefc8b = dnnl_aBdefc8b,
1567  Acb16a = dnnl_Acb16a,
1568  Acb4a = dnnl_Acb4a,
1569  Acb8a = dnnl_Acb8a,
1570  aCBd16b16c = dnnl_aCBd16b16c,
1571  aCBd16c16b = dnnl_aCBd16c16b,
1572  aCBde16b16c = dnnl_aCBde16b16c,
1573  aCBde16c16b = dnnl_aCBde16c16b,
1574  Acdb16a = dnnl_Acdb16a,
1575  Acdb4a = dnnl_Acdb4a,
1576  Acdb8a = dnnl_Acdb8a,
1577  Acdeb16a = dnnl_Acdeb16a,
1578  Acdeb4a = dnnl_Acdeb4a,
1579  Acdeb8a = dnnl_Acdeb8a,
1580  BAc16a16b = dnnl_BAc16a16b,
1581  BAc16b16a = dnnl_BAc16b16a,
1582  BAcd16a16b = dnnl_BAcd16a16b,
1583  BAcd16b16a = dnnl_BAcd16b16a,
1584  ABcd32a32b = dnnl_ABcd32a32b,
1585  BAcde16b16a = dnnl_BAcde16b16a,
1586  BAcde16a16b = dnnl_BAcde16a16b,
1587  aBdec32b = dnnl_aBdec32b,
1588  Abcdef16a = dnnl_Abcdef16a,
1589  Abcdef32a = dnnl_Abcdef32a,
1590  Acdb32a = dnnl_Acdb32a,
1591  aBCd2b4c2b = dnnl_aBCd2b4c2b,
1592  aBCde2b4c2b = dnnl_aBCde2b4c2b,
1593  aBCdef2b4c2b = dnnl_aBCdef2b4c2b,
1594  aBCd2c4b2c = dnnl_aBCd2c4b2c,
1595  aBCde2c4b2c = dnnl_aBCde2c4b2c,
1596  aBCdef2c4b2c = dnnl_aBCdef2c4b2c,
1597  aBCd4b8c2b = dnnl_aBCd4b8c2b,
1598  aBCde4b8c2b = dnnl_aBCde4b8c2b,
1599  aBCdef4b8c2b = dnnl_aBCdef4b8c2b,
1600  aBCd4c8b2c = dnnl_aBCd4c8b2c,
1601  aBCde4c8b2c = dnnl_aBCde4c8b2c,
1602  aBCdef4c8b2c = dnnl_aBCdef4c8b2c,
1603 
1604  format_tag_last = dnnl_format_tag_last,
1605 
1606  nCdhw16c = dnnl_nCdhw16c,
1607  nCdhw4c = dnnl_nCdhw4c,
1608  nCdhw8c = dnnl_nCdhw8c,
1609  nChw16c = dnnl_nChw16c,
1610  nChw4c = dnnl_nChw4c,
1611  nChw8c = dnnl_nChw8c,
1612  nCw16c = dnnl_nCw16c,
1613  nCw4c = dnnl_nCw4c,
1614  nCw8c = dnnl_nCw8c,
1615  NCw16n16c = dnnl_NCw16n16c,
1616  NChw16n16c = dnnl_NChw16n16c,
1617  NCdhw16n16c = dnnl_NCdhw16n16c,
1618  NCdhw32n32c = dnnl_NCdhw32n32c,
1619  NChw32n32c = dnnl_NChw32n32c,
1620  IOhw16i16o = dnnl_IOhw16i16o,
1621  Ohwi32o = dnnl_Ohwi32o,
1622  IOdhw16i16o = dnnl_IOdhw16i16o,
1623  gIOhw16i16o = dnnl_gIOhw16i16o,
1624  gOhwi32o = dnnl_gOhwi32o,
1625  Goidhw16g = dnnl_Goidhw16g,
1626  IOw16o16i = dnnl_IOw16o16i,
1627  OIw16i16o = dnnl_OIw16i16o,
1628  IOw16i16o = dnnl_IOw16i16o,
1629  gIOw16i16o = dnnl_gIOw16i16o,
1630  OIw16o16i = dnnl_OIw16o16i,
1631  Oiw16o = dnnl_Oiw16o,
1632  OIw4i16o4i = dnnl_OIw4i16o4i,
1633  OIw2i8o4i = dnnl_OIw2i8o4i,
1634  OIw4i4o = dnnl_OIw4i4o,
1635  OIw4o4i = dnnl_OIw4o4i,
1636  Oiw4o = dnnl_Oiw4o,
1637  OIw8i16o2i = dnnl_OIw8i16o2i,
1638  OIw8i8o = dnnl_OIw8i8o,
1639  OIw8o16i2o = dnnl_OIw8o16i2o,
1640  OIw8o8i = dnnl_OIw8o8i,
1641  OIw8o4i = dnnl_OIw8o4i,
1642  Owi16o = dnnl_Owi16o,
1643  OwI16o2i = dnnl_OwI16o2i,
1644  Owi4o = dnnl_Owi4o,
1645  Owi8o = dnnl_Owi8o,
1646  IOhw16o16i = dnnl_IOhw16o16i,
1647  Ohwi16o = dnnl_Ohwi16o,
1648  OhwI16o2i = dnnl_OhwI16o2i,
1649  Ohwi4o = dnnl_Ohwi4o,
1650  Ohwi8o = dnnl_Ohwi8o,
1651  OIhw16i16o = dnnl_OIhw16i16o,
1652  OIhw16o16i = dnnl_OIhw16o16i,
1653  Oihw16o = dnnl_Oihw16o,
1654  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1655  OIhw4i4o = dnnl_OIhw4i4o,
1656  OIhw4o4i = dnnl_OIhw4o4i,
1657  Oihw4o = dnnl_Oihw4o,
1658  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1659  OIhw8i8o = dnnl_OIhw8i8o,
1660  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1661  OIhw8o8i = dnnl_OIhw8o8i,
1662  OIhw8o4i = dnnl_OIhw8o4i,
1663  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1664  IOdhw16o16i = dnnl_IOdhw16o16i,
1665  Odhwi16o = dnnl_Odhwi16o,
1666  OdhwI16o2i = dnnl_OdhwI16o2i,
1667  Odhwi4o = dnnl_Odhwi4o,
1668  Odhwi8o = dnnl_Odhwi8o,
1669  OIdhw16i16o = dnnl_OIdhw16i16o,
1670  OIdhw16o16i = dnnl_OIdhw16o16i,
1671  Oidhw16o = dnnl_Oidhw16o,
1672  OIdhw4i4o = dnnl_OIdhw4i4o,
1673  OIdhw4o4i = dnnl_OIdhw4o4i,
1674  Oidhw4o = dnnl_Oidhw4o,
1675  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1676  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1677  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1678  OIdhw8i8o = dnnl_OIdhw8i8o,
1679  OIdhw8o8i = dnnl_OIdhw8o8i,
1680  OIdhw8o4i = dnnl_OIdhw8o4i,
1681  gIOw16o16i = dnnl_gIOw16o16i,
1682  gOIw16i16o = dnnl_gOIw16i16o,
1683  gOIw16o16i = dnnl_gOIw16o16i,
1684  gOiw16o = dnnl_gOiw16o,
1685  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1686  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1687  gOIw4i4o = dnnl_gOIw4i4o,
1688  gOIw4o4i = dnnl_gOIw4o4i,
1689  gOiw4o = dnnl_gOiw4o,
1690  gOIw8i16o2i = dnnl_gOIw8i16o2i,
1691  gOIw8i8o = dnnl_gOIw8i8o,
1692  gOIw8o16i2o = dnnl_gOIw8o16i2o,
1693  gOIw8o8i = dnnl_gOIw8o8i,
1694  gOIw8o4i = dnnl_gOIw8o4i,
1695  gOwi16o = dnnl_gOwi16o,
1696  gOwI16o2i = dnnl_gOwI16o2i,
1697  gOwi4o = dnnl_gOwi4o,
1698  gOwi8o = dnnl_gOwi8o,
1699  Goiw8g = dnnl_Goiw8g,
1700  Goiw16g = dnnl_Goiw16g,
1701  gIOhw16o16i = dnnl_gIOhw16o16i,
1702  gOhwi16o = dnnl_gOhwi16o,
1703  gOhwI16o2i = dnnl_gOhwI16o2i,
1704  gOhwi4o = dnnl_gOhwi4o,
1705  gOhwi8o = dnnl_gOhwi8o,
1706  Goihw16g = dnnl_Goihw16g,
1707  gOIhw16i16o = dnnl_gOIhw16i16o,
1708  gOIhw16o16i = dnnl_gOIhw16o16i,
1709  gOihw16o = dnnl_gOihw16o,
1710  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1711  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1712  gOIhw4i4o = dnnl_gOIhw4i4o,
1713  gOIhw4o4i = dnnl_gOIhw4o4i,
1714  gOihw4o = dnnl_gOihw4o,
1715  Goihw8g = dnnl_Goihw8g,
1716  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1717  gOIhw8i8o = dnnl_gOIhw8i8o,
1718  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1719  OIw4o8i8o4i = dnnl_OIw4o8i8o4i,
1720  OIdhw4o8i8o4i = dnnl_OIdhw4o8i8o4i,
1721  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1722  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1723  gOIw4o8i8o4i = dnnl_gOIw4o8i8o4i,
1724  gOIdhw4o8i8o4i = dnnl_gOIdhw4o8i8o4i,
1725  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1726  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1727  OIhw16i16o4i = dnnl_OIhw16i16o4i,
1728  OIhw16i16o2i = dnnl_OIhw16i16o2i,
1729  gOIhw16i16o4i = dnnl_gOIhw16i16o4i,
1730  gOIhw16i16o2i = dnnl_gOIhw16i16o2i,
1731  gOIhw8o8i = dnnl_gOIhw8o8i,
1732  gOIhw8o4i = dnnl_gOIhw8o4i,
1733  gIOdhw16i16o = dnnl_gIOdhw16i16o,
1734  gIOdhw16o16i = dnnl_gIOdhw16o16i,
1735  gOdhwi16o = dnnl_gOdhwi16o,
1736  gOdhwI16o2i = dnnl_gOdhwI16o2i,
1737  gOdhwi4o = dnnl_gOdhwi4o,
1738  gOdhwi8o = dnnl_gOdhwi8o,
1739  gOIdhw16i16o = dnnl_gOIdhw16i16o,
1740  gOIdhw16o16i = dnnl_gOIdhw16o16i,
1741  gOidhw16o = dnnl_gOidhw16o,
1742  gOIdhw4i4o = dnnl_gOIdhw4i4o,
1743  gOIdhw4o4i = dnnl_gOIdhw4o4i,
1744  gOidhw4o = dnnl_gOidhw4o,
1745  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1746  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
1747  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
1748  gOIdhw8i8o = dnnl_gOIdhw8i8o,
1749  gOIdhw8o8i = dnnl_gOIdhw8o8i,
1750  gOIdhw8o4i = dnnl_gOIdhw8o4i,
1751  gOIw2i4o2i = dnnl_gOIw2i4o2i,
1752  gOIhw2i4o2i = dnnl_gOIhw2i4o2i,
1753  gOIdhw2i4o2i = dnnl_gOIdhw2i4o2i,
1754  gOIw2o4i2o = dnnl_gOIw2o4i2o,
1755  gOIhw2o4i2o = dnnl_gOIhw2o4i2o,
1756  gOIdhw2o4i2o = dnnl_gOIdhw2o4i2o,
1757  gOIw4i8o2i = dnnl_gOIw4i8o2i,
1758  gOIhw4i8o2i = dnnl_gOIhw4i8o2i,
1759  gOIdhw4i8o2i = dnnl_gOIdhw4i8o2i,
1760  gOIw4o8i2o = dnnl_gOIw4o8i2o,
1761  gOIhw4o8i2o = dnnl_gOIhw4o8i2o,
1762  gOIdhw4o8i2o = dnnl_gOIdhw4o8i2o,
1763  };
1764 
1766  struct desc {
1767  friend struct memory;
1770 
1773  desc() : data() {}
1774 
1790  desc(const dims &adims, data_type adata_type, format_tag aformat_tag,
1791  bool allow_empty = false)
1792  : data() {
1793  validate_dims(adims);
1795  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1796  convert_to_c(aformat_tag));
1797  if (!allow_empty)
1799  "could not construct a memory descriptor using a "
1800  "format tag");
1801  }
1802 
1818  desc(const dims &adims, data_type adata_type, const dims &strides,
1819  bool allow_empty = false)
1820  : data() {
1821  validate_dims(adims);
1822  if (!strides.empty()) validate_dims(strides, (int)adims.size());
1824  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1825  strides.empty() ? nullptr : &strides[0]);
1826  if (!allow_empty)
1828  "could not construct a memory descriptor using "
1829  "strides");
1830  }
1831 
1835  desc(const dnnl_memory_desc_t &data) : data(data) {}
1836 
1839  //
1848  desc submemory_desc(const dims &adims, const dims &offsets,
1849  bool allow_empty = false) const {
1850  validate_dims(adims, data.ndims);
1851  validate_dims(offsets, data.ndims);
1854  &sub_md, &data, adims.data(), offsets.data());
1855  if (!allow_empty)
1856  error::wrap_c_api(status, "could not construct a sub-memory");
1857  return desc(sub_md);
1858  }
1859 
1904  desc reshape(const dims &adims, bool allow_empty = false) const {
1905  if (data.ndims) validate_dims(adims, 1);
1908  &out_md, &data, (int)adims.size(), adims.data());
1909  if (!allow_empty)
1911  status, "could not reshape a memory descriptor");
1912  return desc(out_md);
1913  }
1914 
1951  desc permute_axes(const std::vector<int> &permutation,
1952  bool allow_empty = false) const {
1953  validate_dims(permutation, data.ndims);
1956  &out_md, &data, permutation.data());
1957  if (!allow_empty)
1959  "could not permute axes of a memory descriptor");
1960  return desc(out_md);
1961  }
1962 
1967  memory::dims dims() const {
1968  return memory::dims(data.dims, data.dims + data.ndims);
1969  }
1970 
1974  return static_cast<memory::data_type>(data.data_type);
1975  }
1976 
1981  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
1982 
1986  bool is_zero() const { return data.ndims == 0; }
1987 
1992  bool operator==(const desc &other) const {
1993  return dnnl_memory_desc_equal(&data, &other.data) != 0;
1994  }
1995 
2000  bool operator!=(const desc &other) const { return !operator==(other); }
2001 
2005  explicit operator bool() const { return data.ndims != 0; }
2006  };
2007 
2012  memory() = default;
2013 
2034  memory(const desc &md, const engine &aengine, void *handle) {
2035  dnnl_memory_t result;
2037  dnnl_memory_create(&result, &md.data, aengine.get(), handle),
2038  "could not create a memory object");
2039  reset(result);
2040  }
2041 
2048  memory(const desc &md, const engine &aengine)
2049  : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
2050 
2052  desc get_desc() const {
2053  const dnnl_memory_desc_t *cdesc;
2055  "could not get a memory descriptor from a memory object");
2056  return desc(*cdesc);
2057  }
2058 
2060  engine get_engine() const {
2061  dnnl_engine_t c_engine;
2062  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2063  "could not get an engine from a memory object");
2064  return engine(c_engine, true);
2065  }
2066 
2070  void *get_data_handle() const {
2071  void *handle;
2073  "could not get a native handle from a memory object");
2074  return handle;
2075  }
2076 
2103  void set_data_handle(void *handle, const stream &astream) const {
2105  get(), handle, astream.get(true)),
2106  "could not set native handle of a memory object");
2107  }
2108 
2117  void set_data_handle(void *handle) const {
2119  dnnl_memory_set_data_handle_v2(get(), handle, nullptr),
2120  "could not set native handle of a memory object");
2121  }
2122 
2143  template <typename T = void>
2144  T *map_data() const {
2145  void *mapped_ptr;
2146  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2147  "could not map memory object data");
2148  return static_cast<T *>(mapped_ptr);
2149  }
2150 
2160  void unmap_data(void *mapped_ptr) const {
2161  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2162  "could not unmap memory object data");
2163  }
2164 
2165 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
2166  cl_mem get_ocl_mem_object() const {
2168  cl_mem mem_object;
2170  "could not get OpenCL buffer object from a memory object");
2171  return mem_object;
2172  }
2173 
2181  void set_ocl_mem_object(cl_mem mem_object) {
2183  "could not set OpenCL buffer object from a memory object");
2184  }
2185 #endif
2186 
2187  static dnnl_data_type_t convert_to_c(data_type adata_type) {
2188  return static_cast<dnnl_data_type_t>(adata_type);
2189  }
2190  static dnnl_format_tag_t convert_to_c(format_tag format) {
2191  return static_cast<dnnl_format_tag_t>(format);
2192  }
2193 };
2194 
2195 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2196  return a == memory::convert_to_c(b);
2197 }
2198 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2199  return !(a == b);
2200 }
2201 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2202  return b == a;
2203 }
2204 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2205  return !(a == b);
2206 }
2207 
2208 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2209  return a == memory::convert_to_c(b);
2210 }
2211 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2212  return !(a == b);
2213 }
2214 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2215  return b == a;
2216 }
2217 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2218  return !(a == b);
2219 }
2220 
2222 
2230 
2232 template <>
2233 struct handle_traits<dnnl_post_ops_t> {
2234  static dnnl_status_t destructor(dnnl_post_ops_t p) {
2235  return dnnl_post_ops_destroy(p);
2236  }
2237 };
2239 
2247 struct post_ops : public handle<dnnl_post_ops_t> {
2249 
2252  dnnl_post_ops_t result;
2254  dnnl_post_ops_create(&result), "could not create post-ops");
2255  reset(result);
2256  }
2257 
2259  int len() const { return dnnl_post_ops_len(get()); }
2260 
2264  primitive::kind kind(int index) const {
2266  "post-ops index is out of range");
2267  return static_cast<primitive::kind>(
2268  dnnl_post_ops_get_kind(get(), index));
2269  }
2270 
2301  void append_sum(float scale = 1.f,
2303  if (data_type == memory::data_type::undef)
2305  "could not append a sum post-op");
2306  else
2308  memory::convert_to_c(data_type)),
2309  "could not append a sum post-op");
2310  }
2311 
2316  void get_params_sum(int index, float &scale) const {
2318  "could not get parameters of a sum post-op");
2319  }
2320 
2327  int index, float &scale, memory::data_type &data_type) const {
2328  dnnl_data_type_t c_data_type;
2330  get(), index, &scale, &c_data_type),
2331  "could not get parameters of a sum post-op");
2332  data_type = static_cast<memory::data_type>(c_data_type);
2333  }
2334 
2349  float scale, algorithm aalgorithm, float alpha, float beta) {
2351  convert_to_c(aalgorithm), alpha, beta),
2352  "could not append an elementwise post-op");
2353  }
2354 
2362  void get_params_eltwise(int index, float &scale, algorithm &aalgorithm,
2363  float &alpha, float &beta) const {
2364  dnnl_alg_kind_t c_alg;
2366  get(), index, &scale, &c_alg, &alpha, &beta),
2367  "could not get parameters of an elementwise post-op");
2368  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2369  }
2370 
2399  void append_dw_k3s1p1(memory::data_type weights_data_type,
2400  memory::data_type bias_data_type, memory::data_type dst_data_type,
2401  int mask, const std::vector<float> &scales) {
2402 
2404  memory::convert_to_c(weights_data_type),
2405  memory::convert_to_c(bias_data_type),
2406  memory::convert_to_c(dst_data_type),
2407  scales.size(), mask, &scales[0]),
2408  "could not append depthwise post-op");
2409  }
2410 
2425  void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type,
2426  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2427  int &mask, std::vector<float> &scales) const {
2428 
2429  dnnl_data_type_t c_weights_data_type;
2430  dnnl_data_type_t c_bias_data_type;
2431  dnnl_data_type_t c_dst_data_type;
2432  dnnl_dim_t count;
2433  int c_mask;
2434  const float *c_scales;
2436  &c_weights_data_type, &c_bias_data_type,
2437  &c_dst_data_type, &count, &c_mask, &c_scales),
2438  "could not get parameters of depthwise post-op");
2439 
2440  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2441  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2442  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2443  scales.resize(count);
2444 
2445  mask = c_mask;
2446  for (dnnl_dim_t c = 0; c < count; ++c)
2447  scales[c] = c_scales[c];
2448  return;
2449  }
2450 
2484  void append_dw_k3s2p1(memory::data_type weights_data_type,
2485  memory::data_type bias_data_type, memory::data_type dst_data_type,
2486  int mask, const std::vector<float> &scales) {
2487 
2489  memory::convert_to_c(weights_data_type),
2490  memory::convert_to_c(bias_data_type),
2491  memory::convert_to_c(dst_data_type),
2492  scales.size(), mask, &scales[0]),
2493  "could not append depthwise post-op");
2494  }
2495 
2510  void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type,
2511  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2512  int &mask, std::vector<float> &scales) const {
2513 
2514  dnnl_data_type_t c_weights_data_type;
2515  dnnl_data_type_t c_bias_data_type;
2516  dnnl_data_type_t c_dst_data_type;
2517  dnnl_dim_t count;
2518  int c_mask;
2519  const float *c_scales;
2521  &c_weights_data_type, &c_bias_data_type,
2522  &c_dst_data_type, &count, &c_mask, &c_scales),
2523  "could not get parameters of depthwise post-op");
2524 
2525  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2526  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2527  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2528  scales.resize(count);
2529 
2530  mask = c_mask;
2531  for (dnnl_dim_t c = 0; c < count; ++c)
2532  scales[c] = c_scales[c];
2533  return;
2534  }
2535 };
2536 
2538 template <>
2539 struct handle_traits<dnnl_primitive_attr_t> {
2540  static dnnl_status_t destructor(dnnl_primitive_attr_t p) {
2541  return dnnl_primitive_attr_destroy(p);
2542  }
2543 };
2545 
2549 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
2551 
2554  dnnl_primitive_attr_t result;
2556  "could not create primitive attribute");
2557  reset(result);
2558  }
2559 
2566  : handle<dnnl_primitive_attr_t>(attr) {}
2567 
2570  dnnl_scratchpad_mode_t result;
2573  "could not get scratchpad mode primitive attribute");
2574  return scratchpad_mode(result);
2575  }
2576 
2582  get(), dnnl::convert_to_c(mode)),
2583  "could not set scratchpad mode primitive attribute");
2584  }
2585 
2595  void get_output_scales(int &mask, std::vector<float> &scales) const {
2596  dnnl_dim_t count;
2597  int c_mask;
2598  const float *c_scales;
2600  get(), &count, &c_mask, &c_scales),
2601  "could not get output scales primitive attribute");
2602  scales.resize(count);
2603 
2604  mask = c_mask;
2605  for (dnnl_dim_t c = 0; c < count; ++c)
2606  scales[c] = c_scales[c];
2607  }
2608 
2651  void set_output_scales(int mask, const std::vector<float> &scales) {
2654  get(), (dnnl_dim_t)scales.size(), mask, scales.data()),
2655  "could not set output scales primitive attribute");
2656  }
2657 
2669  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
2670  dnnl_dim_t count;
2671  int c_mask;
2672  const float *c_scales;
2674  get(), arg, &count, &c_mask, &c_scales),
2675  "could not get scales primitive attributes");
2676  scales.resize(count);
2677 
2678  mask = c_mask;
2679  for (dnnl_dim_t c = 0; c < count; ++c)
2680  scales[c] = c_scales[c];
2681  }
2682 
2699  void set_scales(int arg, int mask, const std::vector<float> &scales) {
2702  (dnnl_dim_t)scales.size(), mask, scales.data()),
2703  "could not set scales primitive attribute");
2704  }
2705 
2717  int arg, int &mask, std::vector<int32_t> &zero_points) const {
2718  dnnl_dim_t count;
2719  int c_mask;
2720  const int32_t *c_zero_points;
2722  get(), arg, &count, &c_mask, &c_zero_points),
2723  "could not get zero points primitive attribute");
2724  zero_points.resize(count);
2725 
2726  mask = c_mask;
2727  for (dnnl_dim_t c = 0; c < count; ++c)
2728  zero_points[c] = c_zero_points[c];
2729  }
2730 
2752  int arg, int mask, const std::vector<int32_t> &zero_points) {
2754  (dnnl_dim_t)zero_points.size(), mask,
2755  zero_points.data()),
2756  "could not set zero points primitive attribute");
2757  }
2758 
2762  const post_ops get_post_ops() const {
2763  post_ops result;
2764  const_dnnl_post_ops_t c_result;
2766  "could not get post-ops primitive attribute");
2767  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
2768  return result;
2769  }
2770 
2779  void set_post_ops(const post_ops ops) {
2781  "could not set post-ops primitive attribute");
2782  }
2783 
2817  void set_rnn_data_qparams(float scale, float shift) {
2820  "could not set RNN data quantization parameters primitive "
2821  "attribute");
2822  }
2823 
2850  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
2852  (int)scales.size(), mask, scales.data()),
2853  "could not set RNN weights quantization parameters primitive "
2854  "attribute");
2855  }
2856 };
2857 
2859 
2862 
2864 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
2866 
2868  primitive_desc_base() = default;
2869 
2872  engine get_engine() const { return engine::query(*this); }
2873 
2876  const char *impl_info_str() const {
2877  const char *res;
2879  get(), dnnl_query_impl_info_str, 0, &res),
2880  "could not retrieve implementation info string from a "
2881  "primitive descriptor");
2882  return res;
2883  }
2884 
2889  memory::dim res;
2891  get(), dnnl::convert_to_c(what), 0, &res);
2892  return status == dnnl_success ? res : 0;
2893  }
2894 
2909  memory::desc query_md(query what, int idx = 0) const {
2910  std::vector<query> valid_q {query::src_md, query::diff_src_md,
2914  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
2915  [=](query q) { return what == q; }))
2916  DNNL_THROW_ERROR(dnnl_invalid_arguments,
2917  "memory descriptor query is invalid");
2918 
2920  get(), dnnl::convert_to_c(what), idx);
2921  return cdesc ? memory::desc(*cdesc) : memory::desc();
2922  }
2923 
2929  memory::desc src_desc(int idx) const {
2930  return query_md(query::src_md, idx);
2931  }
2932 
2938  memory::desc dst_desc(int idx) const {
2939  return query_md(query::dst_md, idx);
2940  }
2941 
2947  memory::desc weights_desc(int idx) const {
2948  return query_md(query::weights_md, idx);
2949  }
2950 
2956  memory::desc diff_src_desc(int idx) const {
2957  return query_md(query::diff_src_md, idx);
2958  }
2959 
2965  memory::desc diff_dst_desc(int idx) const {
2966  return query_md(query::diff_dst_md, idx);
2967  }
2968 
2975  return query_md(query::diff_weights_md, idx);
2976  }
2977 
2978  // Separate versions without the index argument for documentation
2979  // purposes.
2980 
2985  memory::desc src_desc() const { return src_desc(0); }
2986 
2991  memory::desc dst_desc() const { return dst_desc(0); }
2992 
2997  memory::desc weights_desc() const { return weights_desc(0); }
2998 
3004 
3010 
3016 
3022  return query_md(query::workspace_md, 0);
3023  }
3024 
3031  return query_md(query::scratchpad_md, 0);
3032  }
3033 
3037  dnnl_engine_t c_engine;
3040  0, &c_engine),
3041  "could not retrieve scratchpad engine from a primitive "
3042  "descriptor");
3043  return engine(c_engine, true);
3044  }
3045 
3049  const_dnnl_primitive_attr_t const_c_attr;
3051  "could not get attributes from a primitive descriptor");
3052  dnnl_primitive_attr_t c_attr;
3053  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
3054  "could not clone primitive attributes");
3055  return primitive_attr(c_attr);
3056  }
3057 
3061  dnnl_primitive_kind_t kind;
3063  dnnl_query_primitive_kind, 0, (void *)&kind),
3064  "could not get primitive kind from a primitive descriptor");
3065  return static_cast<dnnl::primitive::kind>(kind);
3066  }
3067 
3068 protected:
3073  dnnl_primitive_desc_t new_pd;
3075  "could not clone a primitive descriptor");
3076  reset(new_pd);
3077  }
3078 
3094  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
3095 
3108  dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
3109  : primitive_desc_base(pd, prim_kind, aprop_kind, aprop_kind) {}
3110 
3125  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
3126  dnnl::prop_kind prop_kind2) {
3127  // It is OK to pass an empty primitive descriptor
3128  if (pd == nullptr) return;
3129 
3130  dnnl_status_t rc;
3131 
3132  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
3133  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
3134  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
3135 
3136  // Check that primitive kind matches
3137  dnnl_primitive_kind_t pd_kind;
3139  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
3141  rc, "could not get primitive kind from a primitive descriptor");
3142  if (pd_kind != c_prim_kind)
3143  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3144  "primitive descriptor operation kind mismatch");
3145 
3146  // Check that propagation kind matches
3147  dnnl_prop_kind_t pd_prop_kind;
3149  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
3150 
3151  // Something went wrong
3152  if (rc != dnnl_success && rc != dnnl_unimplemented)
3153  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3154  "could not get propagation kind from the primitive "
3155  "descriptor");
3156 
3157  // Everything is fine
3158  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
3159  || (rc == dnnl_success
3160  && (pd_prop_kind == c_prop_kind1
3161  || pd_prop_kind == c_prop_kind2))) {
3162  reset_with_clone(pd);
3163  return;
3164  }
3165 
3166  // We could get the propagation kind but there is a mismatch
3167  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3168  "primitive descriptor propagation kind mismatch");
3169  }
3170 
3171  using base = primitive_desc_base;
3172 };
3173 
3175 
3184 
3186 struct reorder : public primitive {
3190 
3192  primitive_desc() = default;
3193 
3211  primitive_desc(const engine &src_engine, const memory::desc &src_md,
3212  const engine &dst_engine, const memory::desc &dst_md,
3213  const primitive_attr &attr = primitive_attr(),
3214  bool allow_empty = false) {
3215  dnnl_primitive_desc_t result;
3217  &src_md.data, src_engine.get(), &dst_md.data,
3218  dst_engine.get(), attr.get());
3219  if (!allow_empty)
3221  "could not create a primitive descriptor for a reorder "
3222  "primitive");
3224  }
3225 
3237  primitive_desc(const memory &src, const memory &dst,
3238  const primitive_attr &attr = primitive_attr(),
3239  bool allow_empty = false) {
3240  dnnl_primitive_desc_t result;
3241  auto src_md = src.get_desc();
3242  auto dst_md = dst.get_desc();
3244  &src_md.data, src.get_engine().get(), &dst_md.data,
3245  dst.get_engine().get(), attr.get());
3246  if (!allow_empty)
3248  "could not create a primitive descriptor for a reorder "
3249  "primitive");
3251  }
3252 
3259 
3264  }
3265 
3270  }
3271 
3273  memory::desc src_desc() const { return base::src_desc(0); }
3274 
3276  memory::desc dst_desc() const { return base::dst_desc(0); }
3277  };
3278 
3280  reorder() = default;
3281 
3284  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
3285 
3293  reorder(const memory &src, const memory &dst,
3294  const primitive_attr &attr = primitive_attr())
3295  : primitive(primitive_desc(src, dst, attr).get()) {}
3296 
3297  using primitive::execute;
3298 
3305  void execute(const stream &astream, memory &src, memory &dst) const {
3306  primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
3307  }
3308 };
3309 
3311 
3319 
3321 inline std::vector<dnnl_memory_desc_t> convert_to_c(
3322  const std::vector<memory::desc> &mems) {
3323  std::vector<dnnl_memory_desc_t> c_mems;
3324  c_mems.reserve(mems.size());
3325  for (const auto &s : mems)
3326  c_mems.push_back(s.data);
3327  return c_mems;
3328 }
3330 
3332 struct concat : public primitive {
3336 
3338  primitive_desc() = default;
3339 
3350  primitive_desc(const memory::desc &dst, int concat_dimension,
3351  const std::vector<memory::desc> &srcs, const engine &aengine,
3352  const primitive_attr &attr = primitive_attr()) {
3353  auto c_srcs = convert_to_c(srcs);
3354 
3355  dnnl_primitive_desc_t result;
3358  (int)c_srcs.size(), concat_dimension, c_srcs.data(),
3359  attr.get(), aengine.get()),
3360  "could not create a primitive descriptor for a concat "
3361  "primitive");
3362  reset(result);
3363  }
3364 
3377  primitive_desc(int concat_dimension,
3378  const std::vector<memory::desc> &srcs, const engine &aengine,
3379  const primitive_attr &attr = primitive_attr()) {
3380  auto c_api_srcs = convert_to_c(srcs);
3381 
3382  dnnl_primitive_desc_t result;
3384  dnnl_concat_primitive_desc_create(&result, nullptr,
3385  (int)c_api_srcs.size(), concat_dimension,
3386  c_api_srcs.data(), attr.get(), aengine.get()),
3387  "could not create a primitive descriptor for a concat "
3388  "primitive");
3389  reset(result);
3390  }
3391 
3398 
3400  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3401 
3403  memory::desc dst_desc() const { return base::dst_desc(0); }
3404  };
3405 
3407  concat() = default;
3408 
3411  concat(const primitive_desc &pd) : primitive(pd.get()) {}
3412 };
3413 
3415 
3423 
3425 struct sum : public primitive {
3429 
3431  primitive_desc() = default;
3432 
3442  const std::vector<float> &scales,
3443  const std::vector<memory::desc> &srcs, const engine &aengine,
3444  const primitive_attr &attr = primitive_attr()) {
3445  validate_container_size(scales,
3446  "counts of scales and sources are not equal",
3447  (int)srcs.size(), (int)srcs.size());
3448 
3449  auto c_api_srcs = convert_to_c(srcs);
3450 
3451  dnnl_primitive_desc_t result;
3453  dnnl_sum_primitive_desc_create(&result, &dst.data,
3454  (int)c_api_srcs.size(), scales.data(),
3455  c_api_srcs.data(), attr.get(), aengine.get()),
3456  "could not create a primitive descriptor for a sum "
3457  "primitive");
3458  reset(result);
3459  }
3460 
3471  primitive_desc(const std::vector<float> &scales,
3472  const std::vector<memory::desc> &srcs, const engine &aengine,
3473  const primitive_attr &attr = primitive_attr()) {
3474  validate_container_size(scales,
3475  "counts of scales and sources are not equal",
3476  (int)srcs.size(), (int)srcs.size());
3477 
3478  auto c_api_srcs = convert_to_c(srcs);
3479  dnnl_primitive_desc_t result;
3481  dnnl_sum_primitive_desc_create(&result, nullptr,
3482  (int)c_api_srcs.size(), scales.data(),
3483  c_api_srcs.data(), attr.get(), aengine.get()),
3484  "could not create a primitive descriptor for a sum "
3485  "primitive");
3486  reset(result);
3487  }
3488 
3495 
3497  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3498 
3500  memory::desc dst_desc() const { return base::dst_desc(0); }
3501  };
3502 
3504  sum() = default;
3505 
3508  sum(const primitive_desc &pd) : primitive(pd.get()) {}
3509 };
3510 
3512 
3515 
3520 
3521  primitive_desc() = default;
3522 
3546  const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd,
3547  bool allow_empty = false)
3548  : allow_empty_(allow_empty) {
3549  dnnl_primitive_desc_iterator_t iterator = nullptr;
3551  desc, attr ? attr->get() : nullptr, aengine.get(), hint_fwd_pd);
3552  if (!allow_empty)
3554  status, "could not create a primitive descriptor iterator");
3555  pd_iterator.reset(iterator);
3556  fetch_impl();
3557  }
3558 
3563  bool next_impl() {
3565  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3566  if (status == dnnl_iterator_ends) return false;
3568  status, "could not advance a primitive descriptor iterator");
3569  fetch_impl();
3570  return true;
3571  }
3572 
3573 private:
3574  bool allow_empty_ = false;
3576  void fetch_impl() {
3578  pd_iterator.get(allow_empty_));
3579  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3581  "could not fetch a primitive descriptor from a primitive "
3582  "descriptor iterator");
3583  reset(pd);
3584  }
3585 };
3586 
3588 
3598 
3602  struct desc {
3604 
3635  desc(prop_kind aprop_kind, algorithm aalgorithm,
3636  const memory::desc &src_desc, const memory::desc &weights_desc,
3637  const memory::desc &bias_desc, const memory::desc &dst_desc,
3638  const memory::dims &strides, const memory::dims &padding_l,
3639  const memory::dims &padding_r) {
3640  memory::validate_dims(strides, src_desc.data.ndims - 2);
3641  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3642  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3645  dnnl::convert_to_c(aprop_kind),
3646  convert_to_c(aalgorithm), &src_desc.data,
3647  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3648  &strides[0], &padding_l[0], &padding_r[0]),
3649  "could not create a descriptor for a convolution forward "
3650  "propagation primitive");
3651  }
3652 
3681  desc(prop_kind aprop_kind, algorithm aalgorithm,
3682  const memory::desc &src_desc, const memory::desc &weights_desc,
3683  const memory::desc &dst_desc, const memory::dims &strides,
3684  const memory::dims &padding_l, const memory::dims &padding_r) {
3685  memory::validate_dims(strides, src_desc.data.ndims - 2);
3686  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3687  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3690  dnnl::convert_to_c(aprop_kind),
3691  convert_to_c(aalgorithm), &src_desc.data,
3692  &weights_desc.data, nullptr, &dst_desc.data,
3693  &strides[0], &padding_l[0], &padding_r[0]),
3694  "could not create a descriptor for a convolution forward "
3695  "propagation primitive");
3696  }
3697 
3730  desc(prop_kind aprop_kind, algorithm aalgorithm,
3731  const memory::desc &src_desc, const memory::desc &weights_desc,
3732  const memory::desc &bias_desc, const memory::desc &dst_desc,
3733  const memory::dims &strides, const memory::dims &dilates,
3734  const memory::dims &padding_l, const memory::dims &padding_r) {
3735  memory::validate_dims(strides, src_desc.data.ndims - 2);
3736  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3737  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3738  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3740  dnnl::convert_to_c(aprop_kind),
3741  convert_to_c(aalgorithm), &src_desc.data,
3742  &weights_desc.data, &bias_desc.data,
3743  &dst_desc.data, &strides[0], &dilates[0],
3744  &padding_l[0], &padding_r[0]),
3745  "could not create a descriptor for a dilated convolution "
3746  "forward propagation primitive");
3747  }
3748 
3779  desc(prop_kind aprop_kind, algorithm aalgorithm,
3780  const memory::desc &src_desc, const memory::desc &weights_desc,
3781  const memory::desc &dst_desc, const memory::dims &strides,
3782  const memory::dims &dilates, const memory::dims &padding_l,
3783  const memory::dims &padding_r) {
3784  memory::validate_dims(strides, src_desc.data.ndims - 2);
3785  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3786  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3787  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3789  dnnl::convert_to_c(aprop_kind),
3790  convert_to_c(aalgorithm), &src_desc.data,
3791  &weights_desc.data, nullptr,
3792  &dst_desc.data, &strides[0], &dilates[0],
3793  &padding_l[0], &padding_r[0]),
3794  "could not create a descriptor for a dilated convolution "
3795  "forward propagation primitive");
3796  }
3797  };
3798 
3802  primitive_desc() = default;
3803 
3814  primitive_desc(const desc &adesc, const engine &aengine,
3815  bool allow_empty = false)
3816  : dnnl::primitive_desc(
3817  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
3818 
3830  primitive_desc(const desc &adesc, const primitive_attr &attr,
3831  const engine &aengine, bool allow_empty = false)
3832  : dnnl::primitive_desc(
3833  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
3834 
3842  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
3845 
3847  memory::desc src_desc() const { return base::src_desc(0); }
3848 
3851 
3853  memory::desc dst_desc() const { return base::dst_desc(0); }
3854 
3860  };
3861 
3863  convolution_forward() = default;
3864 
3869 };
3870 
3873 
3875  struct desc {
3877 
3903  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
3904  const memory::desc &weights_desc,
3905  const memory::desc &diff_dst_desc, const memory::dims &strides,
3906  const memory::dims &padding_l, const memory::dims &padding_r) {
3907  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
3908  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
3909  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
3912  convert_to_c(aalgorithm), &diff_src_desc.data,
3913  &weights_desc.data, &diff_dst_desc.data,
3914  &strides[0], &padding_l[0], &padding_r[0]),
3915  "could not create a descriptor for a convolution backward "
3916  "propagation primitive");
3917  }
3918 
3946  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
3947  const memory::desc &weights_desc,
3948  const memory::desc &diff_dst_desc, const memory::dims &strides,
3949  const memory::dims &dilates, const memory::dims &padding_l,
3950  const memory::dims &padding_r) {
3951  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
3952  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
3953  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
3954  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
3957  convert_to_c(aalgorithm), &diff_src_desc.data,
3958  &weights_desc.data, &diff_dst_desc.data,
3959  &strides[0], &dilates[0], &padding_l[0],
3960  &padding_r[0]),
3961  "could not create a descriptor for a dilated convolution "
3962  "backward propagation primitive");
3963  }
3964  };
3965 
3969  primitive_desc() = default;
3970 
3984  primitive_desc(const desc &adesc, const engine &aengine,
3985  const convolution_forward::primitive_desc &hint_fwd_pd,
3986  bool allow_empty = false)
3987  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
3988  hint_fwd_pd.get(), allow_empty) {}
3989 
4004  primitive_desc(const desc &adesc, const primitive_attr &attr,
4005  const engine &aengine,
4006  const convolution_forward::primitive_desc &hint_fwd_pd,
4007  bool allow_empty = false)
4008  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4009  hint_fwd_pd.get(), allow_empty) {}
4010 
4018  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4020 
4023 
4026 
4029  };
4030 
4033 
4038 };
4039 
4043  struct desc {
4045 
4073  desc(algorithm aalgorithm, const memory::desc &src_desc,
4074  const memory::desc &diff_weights_desc,
4075  const memory::desc &diff_bias_desc,
4076  const memory::desc &diff_dst_desc, const memory::dims &strides,
4077  const memory::dims &padding_l, const memory::dims &padding_r) {
4078  memory::validate_dims(strides, src_desc.data.ndims - 2);
4079  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4080  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4083  convert_to_c(aalgorithm), &src_desc.data,
4084  &diff_weights_desc.data, &diff_bias_desc.data,
4085  &diff_dst_desc.data, &strides[0], &padding_l[0],
4086  &padding_r[0]),
4087  "could not create a descriptor for a convolution weights "
4088  "update primitive");
4089  }
4090 
4116  desc(algorithm aalgorithm, const memory::desc &src_desc,
4117  const memory::desc &diff_weights_desc,
4118  const memory::desc &diff_dst_desc, const memory::dims &strides,
4119  const memory::dims &padding_l, const memory::dims &padding_r) {
4120  memory::validate_dims(strides, src_desc.data.ndims - 2);
4121  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4122  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4124  convert_to_c(aalgorithm), &src_desc.data,
4125  &diff_weights_desc.data, nullptr,
4126  &diff_dst_desc.data, &strides[0],
4127  &padding_l[0], &padding_r[0]),
4128  "could not create a descriptor for a convolution weights "
4129  "update primitive");
4130  }
4131 
4161  desc(algorithm aalgorithm, const memory::desc &src_desc,
4162  const memory::desc &diff_weights_desc,
4163  const memory::desc &diff_bias_desc,
4164  const memory::desc &diff_dst_desc, const memory::dims &strides,
4165  const memory::dims &dilates, const memory::dims &padding_l,
4166  const memory::dims &padding_r) {
4167  memory::validate_dims(strides, src_desc.data.ndims - 2);
4168  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4169  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4170  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4173  convert_to_c(aalgorithm), &src_desc.data,
4174  &diff_weights_desc.data, &diff_bias_desc.data,
4175  &diff_dst_desc.data, &strides[0], &dilates[0],
4176  &padding_l[0], &padding_r[0]),
4177  "could not create a descriptor for a dilated convolution "
4178  "weights gradient primitive");
4179  }
4180 
4208  desc(algorithm aalgorithm, const memory::desc &src_desc,
4209  const memory::desc &diff_weights_desc,
4210  const memory::desc &diff_dst_desc, const memory::dims &strides,
4211  const memory::dims &dilates, const memory::dims &padding_l,
4212  const memory::dims &padding_r) {
4213  memory::validate_dims(strides, src_desc.data.ndims - 2);
4214  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4215  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4216  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4219  convert_to_c(aalgorithm), &src_desc.data,
4220  &diff_weights_desc.data, nullptr,
4221  &diff_dst_desc.data, &strides[0], &dilates[0],
4222  &padding_l[0], &padding_r[0]),
4223  "could not create a descriptor for a dilated convolution "
4224  "weights gradient primitive");
4225  }
4226  };
4227 
4231  primitive_desc() = default;
4232 
4245  primitive_desc(const desc &adesc, const engine &aengine,
4246  const convolution_forward::primitive_desc &hint_fwd_pd,
4247  bool allow_empty = false)
4248  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4249  hint_fwd_pd.get(), allow_empty) {}
4250 
4264  primitive_desc(const desc &adesc, const primitive_attr &attr,
4265  const engine &aengine,
4266  const convolution_forward::primitive_desc &hint_fwd_pd,
4267  bool allow_empty = false)
4268  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4269  hint_fwd_pd.get(), allow_empty) {}
4270 
4278  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4280 
4282  memory::desc src_desc() const { return base::src_desc(0); }
4283 
4286  return base::diff_weights_desc(0);
4287  }
4288 
4291 
4297  return base::diff_weights_desc(1);
4298  }
4299  };
4300 
4303 
4308 };
4309 
4311 //
4319 
4323  struct desc {
4325 
4355  desc(prop_kind aprop_kind, algorithm aalgorithm,
4356  const memory::desc &src_desc, const memory::desc &weights_desc,
4357  const memory::desc &bias_desc, const memory::desc &dst_desc,
4358  const memory::dims &strides, const memory::dims &padding_l,
4359  const memory::dims &padding_r) {
4360  memory::validate_dims(strides, src_desc.data.ndims - 2);
4361  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4362  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4365  dnnl::convert_to_c(aprop_kind),
4366  convert_to_c(aalgorithm), &src_desc.data,
4367  &weights_desc.data, &bias_desc.data, &dst_desc.data,
4368  &strides[0], &padding_l[0], &padding_r[0]),
4369  "could not create a descriptor for a deconvolution forward "
4370  "propagation primitive");
4371  }
4372 
4400  desc(prop_kind aprop_kind, algorithm aalgorithm,
4401  const memory::desc &src_desc, const memory::desc &weights_desc,
4402  const memory::desc &dst_desc, const memory::dims &strides,
4403  const memory::dims &padding_l, const memory::dims &padding_r) {
4404  memory::validate_dims(strides, src_desc.data.ndims - 2);
4405  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4406  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4409  dnnl::convert_to_c(aprop_kind),
4410  convert_to_c(aalgorithm), &src_desc.data,
4411  &weights_desc.data, nullptr, &dst_desc.data,
4412  &strides[0], &padding_l[0], &padding_r[0]),
4413  "could not create a descriptor for a deconvolution forward "
4414  "propagation primitive");
4415  }
4416 
4448  desc(prop_kind aprop_kind, algorithm aalgorithm,
4449  const memory::desc &src_desc, const memory::desc &weights_desc,
4450  const memory::desc &bias_desc, const memory::desc &dst_desc,
4451  const memory::dims &strides, const memory::dims &dilates,
4452  const memory::dims &padding_l, const memory::dims &padding_r) {
4453  memory::validate_dims(strides, src_desc.data.ndims - 2);
4454  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4455  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4456  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4458  &data, dnnl::convert_to_c(aprop_kind),
4459  convert_to_c(aalgorithm), &src_desc.data,
4460  &weights_desc.data, &bias_desc.data,
4461  &dst_desc.data, &strides[0], &dilates[0],
4462  &padding_l[0], &padding_r[0]),
4463  "could not create a descriptor for a dilated deconvolution "
4464  "forward propagation primitive");
4465  }
4466 
4496  desc(prop_kind aprop_kind, algorithm aalgorithm,
4497  const memory::desc &src_desc, const memory::desc &weights_desc,
4498  const memory::desc &dst_desc, const memory::dims &strides,
4499  const memory::dims &dilates, const memory::dims &padding_l,
4500  const memory::dims &padding_r) {
4501  memory::validate_dims(strides, src_desc.data.ndims - 2);
4502  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4503  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4504  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4506  &data, dnnl::convert_to_c(aprop_kind),
4507  convert_to_c(aalgorithm), &src_desc.data,
4508  &weights_desc.data, nullptr,
4509  &dst_desc.data, &strides[0], &dilates[0],
4510  &padding_l[0], &padding_r[0]),
4511  "could not create a descriptor for a dilated deconvolution "
4512  "forward propagation primitive");
4513  }
4514  };
4515 
4519  primitive_desc() = default;
4520 
4531  primitive_desc(const desc &adesc, const engine &aengine,
4532  bool allow_empty = false)
4533  : dnnl::primitive_desc(
4534  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4535 
4547  primitive_desc(const desc &adesc, const primitive_attr &attr,
4548  const engine &aengine, bool allow_empty = false)
4549  : dnnl::primitive_desc(
4550  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4551 
4559  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4562 
4564  memory::desc src_desc() const { return base::src_desc(0); }
4565 
4568 
4570  memory::desc dst_desc() const { return base::dst_desc(0); }
4571 
4574  };
4575 
4578 
4583 };
4584 
4588  struct desc {
4590 
4615  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4616  const memory::desc &weights_desc,
4617  const memory::desc &diff_dst_desc, const memory::dims &strides,
4618  const memory::dims &padding_l, const memory::dims &padding_r) {
4619  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4620  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4621  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4624  convert_to_c(aalgorithm), &diff_src_desc.data,
4625  &weights_desc.data, &diff_dst_desc.data,
4626  &strides[0], &padding_l[0], &padding_r[0]),
4627  "could not create a descriptor for a deconvolution "
4628  "backward propagation primitive");
4629  }
4630 
4657  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4658  const memory::desc &weights_desc,
4659  const memory::desc &diff_dst_desc, const memory::dims &strides,
4660  const memory::dims &dilates, const memory::dims &padding_l,
4661  const memory::dims &padding_r) {
4662  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4663  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4664  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4665  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4668  convert_to_c(aalgorithm), &diff_src_desc.data,
4669  &weights_desc.data, &diff_dst_desc.data,
4670  &strides[0], &dilates[0], &padding_l[0],
4671  &padding_r[0]),
4672  "could not create a descriptor for a dilated deconvolution "
4673  "backward propagation primitive");
4674  }
4675  };
4676 
4680  primitive_desc() = default;
4681 
4695  primitive_desc(const desc &adesc, const engine &aengine,
4696  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4697  bool allow_empty = false)
4698  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4699  hint_fwd_pd.get(), allow_empty) {}
4700 
4715  primitive_desc(const desc &adesc, const primitive_attr &attr,
4716  const engine &aengine,
4717  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4718  bool allow_empty = false)
4719  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4720  hint_fwd_pd.get(), allow_empty) {}
4721 
4729  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4731 
4734 
4737 
4740  };
4741 
4744 
4749 };
4750 
4754  struct desc {
4756 
4783  desc(algorithm aalgorithm, const memory::desc &src_desc,
4784  const memory::desc &diff_weights_desc,
4785  const memory::desc &diff_bias_desc,
4786  const memory::desc &diff_dst_desc, const memory::dims &strides,
4787  const memory::dims &padding_l, const memory::dims &padding_r) {
4788  memory::validate_dims(strides, src_desc.data.ndims - 2);
4789  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4790  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4793  convert_to_c(aalgorithm), &src_desc.data,
4794  &diff_weights_desc.data, &diff_bias_desc.data,
4795  &diff_dst_desc.data, &strides[0], &padding_l[0],
4796  &padding_r[0]),
4797  "could not create a descriptor for a deconvolution weights "
4798  "update primitive");
4799  }
4800 
4825  desc(algorithm aalgorithm, const memory::desc &src_desc,
4826  const memory::desc &diff_weights_desc,
4827  const memory::desc &diff_dst_desc, const memory::dims &strides,
4828  const memory::dims &padding_l, const memory::dims &padding_r) {
4829  memory::validate_dims(strides, src_desc.data.ndims - 2);
4830  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4831  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4833  &data, convert_to_c(aalgorithm),
4834  &src_desc.data, &diff_weights_desc.data,
4835  nullptr, &diff_dst_desc.data, &strides[0],
4836  &padding_l[0], &padding_r[0]),
4837  "could not create a descriptor for a deconvolution weights "
4838  "update primitive");
4839  }
4840 
4869  desc(algorithm aalgorithm, const memory::desc &src_desc,
4870  const memory::desc &diff_weights_desc,
4871  const memory::desc &diff_bias_desc,
4872  const memory::desc &diff_dst_desc, const memory::dims &strides,
4873  const memory::dims &dilates, const memory::dims &padding_l,
4874  const memory::dims &padding_r) {
4875  memory::validate_dims(strides, src_desc.data.ndims - 2);
4876  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4877  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4878  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4881  convert_to_c(aalgorithm), &src_desc.data,
4882  &diff_weights_desc.data, &diff_bias_desc.data,
4883  &diff_dst_desc.data, &strides[0], &dilates[0],
4884  &padding_l[0], &padding_r[0]),
4885  "could not create a descriptor for a dilated deconvolution "
4886  "weights gradient primitive");
4887  }
4888 
4915  desc(algorithm aalgorithm, const memory::desc &src_desc,
4916  const memory::desc &diff_weights_desc,
4917  const memory::desc &diff_dst_desc, const memory::dims &strides,
4918  const memory::dims &dilates, const memory::dims &padding_l,
4919  const memory::dims &padding_r) {
4920  memory::validate_dims(strides, src_desc.data.ndims - 2);
4921  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4922  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4923  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4926  convert_to_c(aalgorithm), &src_desc.data,
4927  &diff_weights_desc.data, nullptr,
4928  &diff_dst_desc.data, &strides[0], &dilates[0],
4929  &padding_l[0], &padding_r[0]),
4930  "could not create a descriptor for a dilated deconvolution "
4931  "weights gradient primitive");
4932  }
4933  };
4934 
4938  primitive_desc() = default;
4939 
4953  primitive_desc(const desc &adesc, const engine &aengine,
4954  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4955  bool allow_empty = false)
4956  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4957  hint_fwd_pd.get(), allow_empty) {}
4958 
4973  primitive_desc(const desc &adesc, const primitive_attr &attr,
4974  const engine &aengine,
4975  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4976  bool allow_empty = false)
4977  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4978  hint_fwd_pd.get(), allow_empty) {}
4979 
4987  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4989 
4991  memory::desc src_desc() const { return base::src_desc(0); }
4992 
4995  return base::diff_weights_desc(0);
4996  }
4997 
5000 
5003  return base::diff_weights_desc(1);
5004  }
5005  };
5006 
5009 
5014 };
5015 
5017 
5026 
5028 struct lrn_forward : public primitive {
5030  struct desc {
5031  dnnl_lrn_desc_t data;
5032 
5046  desc(prop_kind aprop_kind, algorithm aalgorithm,
5047  const memory::desc &data_desc, memory::dim local_size,
5048  float alpha, float beta, float k = 1.f) {
5050  dnnl::convert_to_c(aprop_kind),
5051  convert_to_c(aalgorithm), &data_desc.data,
5052  local_size, alpha, beta, k),
5053  "could not create a descriptor for a lrn forward "
5054  "propagation primitive");
5055  }
5056  };
5057 
5061  primitive_desc() = default;
5062 
5072  primitive_desc(const desc &adesc, const engine &aengine,
5073  bool allow_empty = false)
5074  : dnnl::primitive_desc(
5075  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5076 
5087  primitive_desc(const desc &adesc, const primitive_attr &attr,
5088  const engine &aengine, bool allow_empty = false)
5089  : dnnl::primitive_desc(
5090  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5091 
5099  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5102 
5104  memory::desc src_desc() const { return base::src_desc(0); }
5105 
5107  memory::desc dst_desc() const { return base::dst_desc(0); }
5108 
5111  };
5112 
5114  lrn_forward() = default;
5115 
5120 };
5121 
5123 struct lrn_backward : public primitive {
5125  struct desc {
5126  dnnl_lrn_desc_t data;
5127 
5140  desc(algorithm aalgorithm, const memory::desc &data_desc,
5141  const memory::desc &diff_data_desc, memory::dim local_size,
5142  float alpha, float beta, float k = 1.f) {
5144  dnnl_lrn_backward_desc_init(&data, convert_to_c(aalgorithm),
5145  &diff_data_desc.data, &data_desc.data, local_size,
5146  alpha, beta, k),
5147  "could not create a descriptor for a lrn backward "
5148  "propagation primitive");
5149  }
5150  };
5151 
5155  primitive_desc() = default;
5156 
5169  primitive_desc(const desc &adesc, const engine &aengine,
5170  const lrn_forward::primitive_desc &hint_fwd_pd,
5171  bool allow_empty = false)
5172  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5173  hint_fwd_pd.get(), allow_empty) {}
5174 
5188  primitive_desc(const desc &adesc, const primitive_attr &attr,
5189  const engine &aengine,
5190  const lrn_forward::primitive_desc &hint_fwd_pd,
5191  bool allow_empty = false)
5192  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5193  hint_fwd_pd.get(), allow_empty) {}
5194 
5202  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5204 
5207 
5210 
5213  };
5214 
5216  lrn_backward() = default;
5217 
5222 };
5223 
5225 
5233 
5235 struct pooling_forward : public primitive {
5237  struct desc {
5238  dnnl_pooling_desc_t data;
5239 
5264  desc(prop_kind aprop_kind, algorithm aalgorithm,
5265  const memory::desc &src_desc, const memory::desc &dst_desc,
5266  const memory::dims &strides, const memory::dims &kernel,
5267  const memory::dims &padding_l, const memory::dims &padding_r) {
5268  memory::validate_dims(strides, src_desc.data.ndims - 2);
5269  memory::validate_dims(kernel, src_desc.data.ndims - 2);
5270  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5271  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5273  dnnl::convert_to_c(aprop_kind),
5274  convert_to_c(aalgorithm), &src_desc.data,
5275  &dst_desc.data, &strides[0], &kernel[0],
5276  &padding_l[0], &padding_r[0]),
5277  "could not create a descriptor for a pooling forward "
5278  "propagation primitive");
5279  }
5280  };
5281 
5285  primitive_desc() = default;
5286 
5296  primitive_desc(const desc &adesc, const engine &aengine,
5297  bool allow_empty = false)
5298  : dnnl::primitive_desc(
5299  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5300 
5311  primitive_desc(const desc &adesc, const primitive_attr &attr,
5312  const engine &aengine, bool allow_empty = false)
5313  : dnnl::primitive_desc(
5314  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5315 
5323  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5326 
5328  memory::desc src_desc() const { return base::src_desc(0); }
5329 
5331  memory::desc dst_desc() const { return base::dst_desc(0); }
5332 
5335  };
5336 
5338  pooling_forward() = default;
5339 
5344 };
5345 
5347 struct pooling_backward : public primitive {
5349  struct desc {
5350  dnnl_pooling_desc_t data;
5351 
5373  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
5374  const memory::desc &diff_dst_desc, const memory::dims &strides,
5375  const memory::dims &kernel, const memory::dims &padding_l,
5376  const memory::dims &padding_r) {
5377  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
5378  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
5379  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
5380  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
5383  convert_to_c(aalgorithm), &diff_src_desc.data,
5384  &diff_dst_desc.data, &strides[0], &kernel[0],
5385  &padding_l[0], &padding_r[0]),
5386  "could not create a descriptor for a pooling backward "
5387  "propagation primitive");
5388  }
5389  };
5390 
5394  primitive_desc() = default;
5395 
5408  primitive_desc(const desc &adesc, const engine &aengine,
5409  const pooling_forward::primitive_desc &hint_fwd_pd,
5410  bool allow_empty = false)
5411  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5412  hint_fwd_pd.get(), allow_empty) {}
5413 
5427  primitive_desc(const desc &adesc, const primitive_attr &attr,
5428  const engine &aengine,
5429  const pooling_forward::primitive_desc &hint_fwd_pd,
5430  bool allow_empty = false)
5431  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5432  hint_fwd_pd.get(), allow_empty) {}
5433 
5441  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5443 
5446 
5449 
5452  };
5453 
5455  pooling_backward() = default;
5456 
5461 };
5462 
5464 
5485 
5487 struct eltwise_forward : public primitive {
5489  struct desc {
5490  dnnl_eltwise_desc_t data;
5491 
5504  desc(prop_kind aprop_kind, algorithm aalgorithm,
5505  const memory::desc &data_desc, float alpha = 0,
5506  float beta = 0) {
5508  dnnl::convert_to_c(aprop_kind),
5509  dnnl::convert_to_c(aalgorithm),
5510  &data_desc.data, alpha, beta),
5511  "could not create a descriptor for an eltwise forward "
5512  "propagation primitive");
5513  }
5514  };
5515 
5519  primitive_desc() = default;
5520 
5531  primitive_desc(const desc &adesc, const engine &aengine,
5532  bool allow_empty = false)
5533  : dnnl::primitive_desc(
5534  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5535 
5547  primitive_desc(const desc &adesc, const primitive_attr &attr,
5548  const engine &aengine, bool allow_empty = false)
5549  : dnnl::primitive_desc(
5550  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5551 
5559  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5562 
5564  memory::desc src_desc() const { return base::src_desc(0); }
5565 
5567  memory::desc dst_desc() const { return base::dst_desc(0); }
5568  };
5569 
5571  eltwise_forward() = default;
5572 
5577 };
5578 
5580 struct eltwise_backward : public primitive {
5582  struct desc {
5583  dnnl_eltwise_desc_t data;
5584 
5596  desc(algorithm aalgorithm, const memory::desc &diff_data_desc,
5597  const memory::desc &data_desc, float alpha = 0,
5598  float beta = 0) {
5601  dnnl::convert_to_c(aalgorithm),
5602  &diff_data_desc.data, &data_desc.data, alpha, beta),
5603  "could not create a descriptor for an eltwise backward "
5604  "propagation primitive");
5605  }
5606  };
5607 
5611  primitive_desc() = default;
5612 
5626  primitive_desc(const desc &adesc, const engine &aengine,
5627  const eltwise_forward::primitive_desc &hint_fwd_pd,
5628  bool allow_empty = false)
5629  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5630  hint_fwd_pd.get(), allow_empty) {}
5631 
5646  primitive_desc(const desc &adesc, const primitive_attr &attr,
5647  const engine &aengine,
5648  const eltwise_forward::primitive_desc &hint_fwd_pd,
5649  bool allow_empty = false)
5650  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5651  hint_fwd_pd.get(), allow_empty) {}
5652 
5660  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5662 
5664  memory::desc src_desc() const { return base::src_desc(0); }
5665 
5668 
5671  };
5672 
5674  eltwise_backward() = default;
5675 
5680 };
5681 
5683 
5691 
5693 struct softmax_forward : public primitive {
5695  struct desc {
5696  dnnl_softmax_desc_t data;
5697 
5699  desc() = default;
5700 
5709  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5710  int softmax_axis) {
5712  dnnl::convert_to_c(aprop_kind),
5713  &data_desc.data, softmax_axis),
5714  "could not create a descriptor for a softmax forward "
5715  "propagation primitive");
5716  }
5717  };
5718 
5722  primitive_desc() = default;
5723 
5734  primitive_desc(const desc &adesc, const engine &aengine,
5735  bool allow_empty = false)
5736  : dnnl::primitive_desc(
5737  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5738 
5750  primitive_desc(const desc &adesc, const primitive_attr &attr,
5751  const engine &aengine, bool allow_empty = false)
5752  : dnnl::primitive_desc(
5753  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5754 
5762  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5765 
5767  memory::desc src_desc() const { return base::src_desc(0); }
5768 
5770  memory::desc dst_desc() const { return base::dst_desc(0); }
5771  };
5772 
5774  softmax_forward() = default;
5775 
5780 };
5781 
5783 struct softmax_backward : public primitive {
5785  struct desc {
5786  dnnl_softmax_desc_t data;
5787 
5789  desc() = default;
5790 
5798  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5799  int softmax_axis) {
5801  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
5802  &data_desc.data, softmax_axis),
5803  "could not create a descriptor for a softmax backward "
5804  "propagation primitive");
5805  }
5806  };
5807 
5811  primitive_desc() = default;
5812 
5826  primitive_desc(const desc &adesc, const engine &aengine,
5827  const softmax_forward::primitive_desc &hint_fwd_pd,
5828  bool allow_empty = false)
5829  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5830  hint_fwd_pd.get(), allow_empty) {}
5831 
5846  primitive_desc(const desc &adesc, const primitive_attr &attr,
5847  const engine &aengine,
5848  const softmax_forward::primitive_desc &hint_fwd_pd,
5849  bool allow_empty = false)
5850  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5851  hint_fwd_pd.get(), allow_empty) {}
5852 
5860  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5862 
5864  memory::desc dst_desc() const { return base::dst_desc(0); }
5865 
5868 
5871  };
5872 
5874  softmax_backward() = default;
5875 
5880 };
5881 
5883 
5891 
5895  struct desc {
5897 
5899  desc() = default;
5900 
5909  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5910  int logsoftmax_axis) {
5912  dnnl::convert_to_c(aprop_kind),
5913  &data_desc.data, logsoftmax_axis),
5914  "could not create a descriptor for a logsoftmax forward "
5915  "propagation primitive");
5916  }
5917  };
5918 
5922  primitive_desc() = default;
5923 
5934  primitive_desc(const desc &adesc, const engine &aengine,
5935  bool allow_empty = false)
5936  : dnnl::primitive_desc(
5937  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5938 
5950  primitive_desc(const desc &adesc, const primitive_attr &attr,
5951  const engine &aengine, bool allow_empty = false)
5952  : dnnl::primitive_desc(
5953  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5954 
5962  : dnnl::primitive_desc(pd,
5963  // Logsoftmax and softmax share the implementation and
5964  // currently report the same primitive kind. Hence this
5965  // must be softmax and not logsoftmax.
5966  dnnl::primitive::kind::softmax,
5969 
5971  memory::desc src_desc() const { return base::src_desc(0); }
5972 
5974  memory::desc dst_desc() const { return base::dst_desc(0); }
5975  };
5976 
5978  logsoftmax_forward() = default;
5979 
5984 };
5985 
5989  struct desc {
5991 
5993  desc() = default;
5994 
6002  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
6003  int logsoftmax_axis) {
6005  &diff_data_desc.data, &data_desc.data,
6006  logsoftmax_axis),
6007  "could not create a descriptor for a logsoftmax backward "
6008  "propagation primitive");
6009  }
6010  };
6011 
6015  primitive_desc() = default;
6016 
6030  primitive_desc(const desc &adesc, const engine &aengine,
6031  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6032  bool allow_empty = false)
6033  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6034  hint_fwd_pd.get(), allow_empty) {}
6035 
6050  primitive_desc(const desc &adesc, const primitive_attr &attr,
6051  const engine &aengine,
6052  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6053  bool allow_empty = false)
6054  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6055  hint_fwd_pd.get(), allow_empty) {}
6056 
6064  : dnnl::primitive_desc(pd,
6065  // Logsoftmax and softmax share the implementation and
6066  // currently report the same primitive kind. Hence this
6067  // must be softmax and not logsoftmax.
6068  dnnl::primitive::kind::softmax,
6070 
6072  memory::desc dst_desc() const { return base::dst_desc(0); }
6073 
6076 
6079  };
6080 
6082  logsoftmax_backward() = default;
6083 
6088 };
6089 
6091 
6111 
6115  struct desc {
6117 
6132  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6133  normalization_flags flags) {
6136  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6137  epsilon, convert_to_c(flags)),
6138  "could not create a descriptor for a batch normalization "
6139  "forward propagation primitive");
6140  }
6141  };
6142 
6147  primitive_desc() = default;
6148 
6159  primitive_desc(const desc &adesc, const engine &aengine,
6160  bool allow_empty = false)
6161  : dnnl::primitive_desc(
6162  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6163 
6175  primitive_desc(const desc &adesc, const primitive_attr &attr,
6176  const engine &aengine, bool allow_empty = false)
6177  : dnnl::primitive_desc(
6178  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6179 
6187  : dnnl::primitive_desc(pd,
6188  dnnl::primitive::kind::batch_normalization,
6191 
6193  memory::desc src_desc() const { return base::src_desc(0); }
6194 
6196  memory::desc dst_desc() const { return base::dst_desc(0); }
6197 
6200 
6203 
6206  memory::desc mean_desc() const { return stat_desc(mean); }
6207 
6210  memory::desc variance_desc() const { return stat_desc(var); }
6211 
6212  private:
6213  enum {
6214  mean = 1,
6215  var = 2,
6216  };
6217  memory::desc stat_desc(int kind) const {
6222  &p),
6223  "could not retrieve a descriptor from a primitive "
6224  "descriptor for batch normalization forward propagation "
6225  "primitive");
6226  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6227  : query::dst_md,
6228  kind);
6229  }
6230  };
6231 
6234 
6239 };
6240 
6244  struct desc {
6246 
6259  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6260  const memory::desc &data_desc, float epsilon,
6261  normalization_flags flags) {
6263  dnnl::convert_to_c(aprop_kind),
6264  &diff_data_desc.data, &data_desc.data,
6265  epsilon, convert_to_c(flags)),
6266  "could not create a descriptor for a batch normalization "
6267  "backward propagation primitive");
6268  }
6269  };
6270 
6275  primitive_desc() = default;
6276 
6290  primitive_desc(const desc &adesc, const engine &aengine,
6292  bool allow_empty = false)
6293  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6294  hint_fwd_pd.get(), allow_empty) {}
6295 
6310  primitive_desc(const desc &adesc, const primitive_attr &attr,
6311  const engine &aengine,
6313  bool allow_empty = false)
6314  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6315  hint_fwd_pd.get(), allow_empty) {}
6316 
6324  : dnnl::primitive_desc(pd,
6325  dnnl::primitive::kind::batch_normalization,
6327  }
6328 
6330  memory::desc src_desc() const { return base::src_desc(0); }
6331 
6334 
6336  memory::desc dst_desc() const { return base::dst_desc(0); }
6337 
6340 
6343 
6346  return base::diff_weights_desc(0);
6347  }
6348 
6351 
6354  return query_md(query::src_md, 2);
6355  }
6356 
6359  };
6360 
6363 
6368 };
6369 
6371 
6393 
6397  struct desc {
6399 
6411  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6412  const memory::desc &stat_desc, float epsilon,
6413  normalization_flags flags) {
6416  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6417  &stat_desc.data, epsilon, convert_to_c(flags)),
6418  "could not create a descriptor for a layer normalization "
6419  "forward propagation primitive");
6420  }
6421 
6432  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6433  normalization_flags flags) {
6436  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6437  nullptr, epsilon, convert_to_c(flags)),
6438  "could not create a descriptor for a layer normalization "
6439  "forward propagation primitive");
6440  }
6441  };
6442 
6447  primitive_desc() = default;
6448 
6459  primitive_desc(const desc &adesc, const engine &aengine,
6460  bool allow_empty = false)
6461  : dnnl::primitive_desc(
6462  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6463 
6475  primitive_desc(const desc &adesc, const primitive_attr &attr,
6476  const engine &aengine, bool allow_empty = false)
6477  : dnnl::primitive_desc(
6478  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6479 
6487  : dnnl::primitive_desc(pd,
6488  dnnl::primitive::kind::layer_normalization,
6491 
6493  memory::desc src_desc() const { return base::src_desc(0); }
6494 
6496  memory::desc dst_desc() const { return base::dst_desc(0); }
6497 
6500 
6503 
6505  memory::desc mean_desc() const { return stat_desc(mean); }
6506 
6508  memory::desc variance_desc() const { return stat_desc(var); }
6509 
6510  private:
6511  enum {
6512  mean = 1,
6513  var = 2,
6514  };
6515  memory::desc stat_desc(int kind) const {
6520  &p),
6521  "could not retrieve a descriptor from a primitive "
6522  "descriptor for layer normalization forward propagation "
6523  "primitive");
6524  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6525  : query::dst_md,
6526  kind);
6527  }
6528  };
6529 
6532 
6537 };
6538 
6542  struct desc {
6544 
6558  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6559  const memory::desc &data_desc, const memory::desc &stat_desc,
6560  float epsilon, normalization_flags flags) {
6563  dnnl::convert_to_c(aprop_kind),
6564  &diff_data_desc.data, &data_desc.data,
6565  &stat_desc.data, epsilon, convert_to_c(flags)),
6566  "could not create a descriptor for a batch normalization "
6567  "backward propagation primitive");
6568  }
6569 
6582  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6583  const memory::desc &data_desc, float epsilon,
6584  normalization_flags flags) {
6586  dnnl::convert_to_c(aprop_kind),
6587  &diff_data_desc.data, &data_desc.data,
6588  nullptr, epsilon, convert_to_c(flags)),
6589  "could not create a descriptor for a batch normalization "
6590  "backward propagation primitive");
6591  }
6592  };
6593 
6598  primitive_desc() = default;
6599 
6613  primitive_desc(const desc &adesc, const engine &aengine,
6615  bool allow_empty = false)
6616  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6617  hint_fwd_pd.get(), allow_empty) {}
6618 
6633  primitive_desc(const desc &adesc, const primitive_attr &attr,
6634  const engine &aengine,
6636  bool allow_empty = false)
6637  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6638  hint_fwd_pd.get(), allow_empty) {}
6639 
6647  : dnnl::primitive_desc(pd,
6648  dnnl::primitive::kind::layer_normalization,
6650  }
6651 
6653  memory::desc src_desc() const { return base::src_desc(0); }
6654 
6657 
6659  memory::desc dst_desc() const { return base::dst_desc(0); }
6660 
6663 
6666 
6669  return base::diff_weights_desc(0);
6670  }
6671 
6674 
6677  return query_md(query::src_md, 2);
6678  }
6679 
6682  };
6683 
6686 
6691 };
6692 
6694 
6702 
6706  struct desc {
6708 
6723  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6724  const memory::desc &weights_desc, const memory::desc &bias_desc,
6725  const memory::desc &dst_desc) {
6727  dnnl::convert_to_c(aprop_kind),
6728  &src_desc.data, &weights_desc.data,
6729  &bias_desc.data, &dst_desc.data),
6730  "could not create a descriptor for an inner product "
6731  "forward propagation primitive");
6732  }
6733 
6747  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6748  const memory::desc &weights_desc,
6749  const memory::desc &dst_desc) {
6752  dnnl::convert_to_c(aprop_kind), &src_desc.data,
6753  &weights_desc.data, nullptr, &dst_desc.data),
6754  "could not create a descriptor for an inner product "
6755  "forward propagation primitive");
6756  }
6757  };
6758 
6762  primitive_desc() = default;
6763 
6774  primitive_desc(const desc &adesc, const engine &aengine,
6775  bool allow_empty = false)
6776  : dnnl::primitive_desc(
6777  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6778 
6790  primitive_desc(const desc &adesc, const primitive_attr &attr,
6791  const engine &aengine, bool allow_empty = false)
6792  : dnnl::primitive_desc(
6793  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6794 
6802  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6805 
6807  memory::desc src_desc() const { return base::src_desc(0); }
6808 
6811 
6813  memory::desc dst_desc() const { return base::dst_desc(0); }
6814 
6817  };
6818 
6821 
6826 };
6827 
6831  struct desc {
6833 
6844  desc(const memory::desc &diff_src_desc,
6845  const memory::desc &weights_desc,
6846  const memory::desc &diff_dst_desc) {
6848  &diff_src_desc.data, &weights_desc.data,
6849  &diff_dst_desc.data),
6850  "could not create a descriptor for an inner product "
6851  "backward propagation primitive");
6852  }
6853  };
6854 
6859  primitive_desc() = default;
6860 
6874  primitive_desc(const desc &adesc, const engine &aengine,
6875  const inner_product_forward::primitive_desc &hint_fwd_pd,
6876  bool allow_empty = false)
6877  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6878  hint_fwd_pd.get(), allow_empty) {}
6879 
6894  primitive_desc(const desc &adesc, const primitive_attr &attr,
6895  const engine &aengine,
6896  const inner_product_forward::primitive_desc &hint_fwd_pd,
6897  bool allow_empty = false)
6898  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6899  hint_fwd_pd.get(), allow_empty) {}
6900 
6908  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6910 
6913 
6916 
6919  };
6920 
6923 
6928 };
6929 
6933  struct desc {
6935 
6947  desc(const memory::desc &src_desc,
6948  const memory::desc &diff_weights_desc,
6949  const memory::desc &diff_bias_desc,
6950  const memory::desc &diff_dst_desc) {
6953  &src_desc.data, &diff_weights_desc.data,
6954  &diff_bias_desc.data, &diff_dst_desc.data),
6955  "could not create a descriptor for an inner product "
6956  "weights gradient primitive");
6957  }
6958 
6969  desc(const memory::desc &src_desc,
6970  const memory::desc &diff_weights_desc,
6971  const memory::desc &diff_dst_desc) {
6974  &src_desc.data, &diff_weights_desc.data, nullptr,
6975  &diff_dst_desc.data),
6976  "could not create a descriptor for an inner product "
6977  "weights gradient primitive");
6978  }
6979  };
6980 
6984  primitive_desc() = default;
6985 
6999  primitive_desc(const desc &adesc, const engine &aengine,
7000  const inner_product_forward::primitive_desc &hint_fwd_pd,
7001  bool allow_empty = false)
7002  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7003  hint_fwd_pd.get(), allow_empty) {}
7004 
7019  primitive_desc(const desc &adesc, const primitive_attr &attr,
7020  const engine &aengine,
7021  const inner_product_forward::primitive_desc &hint_fwd_pd,
7022  bool allow_empty = false)
7023  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7024  hint_fwd_pd.get(), allow_empty) {}
7025 
7033  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7035 
7037  memory::desc src_desc() const { return base::src_desc(0); }
7038 
7041  return base::diff_weights_desc(0);
7042  }
7043 
7046 
7049  return base::diff_weights_desc(1);
7050  }
7051  };
7052 
7055 
7060 };
7061 
7063 
7071 
7074  using primitive_desc::primitive_desc;
7075 
7078 
7087  dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
7088  : rnn_primitive_desc_base(pd, aprop_kind, aprop_kind, cell_kind) {}
7089 
7094  }
7095 
7102  }
7103 
7108  }
7109 
7114  }
7115 
7120  }
7121 
7126  }
7127 
7132  }
7133 
7140  }
7141 
7146  }
7147 
7154  }
7155 
7160  }
7161 
7166  }
7167 
7174  }
7175 
7180  }
7181 
7186  }
7187 
7192  }
7193 
7197  return base::query_md(
7199  }
7200 
7204  return base::query_md(
7206  }
7207 
7214  }
7215 
7220  }
7221 
7228  }
7229 
7234  }
7235 
7236 protected:
7237  using rnn_base = rnn_primitive_desc_base;
7238 
7239  // (Deliberately not using doxygen comments)
7240  //
7241  // Constructs an RNN primitive descriptor base from a C API primitive
7242  // descriptor while checking that it actually describes the expected
7243  // primitive by comparing propagation and primitive kinds. Caller can
7244  // pass two options propagation kinds. This is typically used to check
7245  // that propagation kind is inference or training forward propagation.
7246  //
7247  // @param pd C API primitive descriptor.
7248  // @param prop_kind1 Expected propagation kind.
7249  // @param prop_kind2 Expected propagation kind.
7250  // @param cell_kind Expected cell kind.
7252  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
7253  dnnl::algorithm cell_kind) {
7255  dnnl_status_t rc;
7256  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
7257  error::wrap_c_api(rc,
7258  "could not retrieve a descriptor from a primitive descriptor "
7259  "for an RNN primitive");
7260 
7261  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
7262  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
7263  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
7264 
7265  bool ok = rnn_d->primitive_kind == dnnl_rnn
7266  && (rnn_d->prop_kind == c_prop_kind1
7267  || rnn_d->prop_kind == c_prop_kind2)
7268  && rnn_d->cell_kind == c_cell_kind;
7269 
7270  if (!ok)
7271  DNNL_THROW_ERROR(dnnl_invalid_arguments,
7272  "mismatch between expected and provided descriptors for an "
7273  "RNN primitive");
7274 
7275  reset_with_clone(pd);
7276  }
7277 };
7278 
7282  struct desc {
7283  dnnl_rnn_desc_t data;
7284 
7325  desc(prop_kind aprop_kind, algorithm activation,
7326  rnn_direction direction, const memory::desc &src_layer_desc,
7327  const memory::desc &src_iter_desc,
7328  const memory::desc &weights_layer_desc,
7329  const memory::desc &weights_iter_desc,
7330  const memory::desc &bias_desc,
7331  const memory::desc &dst_layer_desc,
7332  const memory::desc &dst_iter_desc,
7333  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7334  float beta = 0.0f) {
7337  dnnl::convert_to_c(aprop_kind),
7338  dnnl::convert_to_c(activation),
7339  dnnl::convert_to_c(direction), &src_layer_desc.data,
7340  &src_iter_desc.data, &weights_layer_desc.data,
7341  &weights_iter_desc.data, &bias_desc.data,
7342  &dst_layer_desc.data, &dst_iter_desc.data,
7343  dnnl::convert_to_c(flags), alpha, beta),
7344  "could not create a descriptor for a vanilla RNN forward "
7345  "propagation primitive");
7346  }
7347  };
7348 
7352  primitive_desc() = default;
7353 
7364  primitive_desc(const desc &adesc, const engine &aengine,
7365  bool allow_empty = false)
7367  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7368 
7380  primitive_desc(const desc &adesc, const primitive_attr &attr,
7381  const engine &aengine, bool allow_empty = false)
7383  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7384 
7394  dnnl::algorithm::vanilla_rnn) {}
7395 
7398  return rnn_base::src_layer_desc();
7399  }
7400 
7403 
7407  }
7408 
7411  return rnn_base::weights_iter_desc();
7412  }
7413 
7416 
7419  return rnn_base::dst_layer_desc();
7420  }
7421 
7424 
7427  return rnn_base::workspace_desc();
7428  }
7429  };
7430 
7432  vanilla_rnn_forward() = default;
7433 
7438 };
7439 
7443  struct desc {
7444  dnnl_rnn_desc_t data;
7445 
7498  desc(prop_kind aprop_kind, algorithm activation,
7499  rnn_direction direction, const memory::desc &src_layer_desc,
7500  const memory::desc &src_iter_desc,
7501  const memory::desc &weights_layer_desc,
7502  const memory::desc &weights_iter_desc,
7503  const memory::desc &bias_desc,
7504  const memory::desc &dst_layer_desc,
7505  const memory::desc &dst_iter_desc,
7506  const memory::desc &diff_src_layer_desc,
7507  const memory::desc &diff_src_iter_desc,
7508  const memory::desc &diff_weights_layer_desc,
7509  const memory::desc &diff_weights_iter_desc,
7510  const memory::desc &diff_bias_desc,
7511  const memory::desc &diff_dst_layer_desc,
7512  const memory::desc &diff_dst_iter_desc,
7513  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7514  float beta = 0.0f) {
7517  dnnl::convert_to_c(aprop_kind),
7518  dnnl::convert_to_c(activation),
7519  dnnl::convert_to_c(direction), &src_layer_desc.data,
7520  &src_iter_desc.data, &weights_layer_desc.data,
7521  &weights_iter_desc.data, &bias_desc.data,
7522  &dst_layer_desc.data, &dst_iter_desc.data,
7523  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7524  &diff_weights_layer_desc.data,
7525  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7526  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7527  dnnl::convert_to_c(flags), alpha, beta),
7528  "could not create a descriptor for a vanilla RNN backward "
7529  "propagation primitive");
7530  }
7531  };
7532 
7536  primitive_desc() = default;
7537 
7551  primitive_desc(const desc &adesc, const engine &aengine,
7552  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7553  bool allow_empty = false)
7554  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
7555  hint_fwd_pd.get(), allow_empty) {}
7556 
7571  primitive_desc(const desc &adesc, const primitive_attr &attr,
7572  const engine &aengine,
7573  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7574  bool allow_empty = false)
7575  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
7576  hint_fwd_pd.get(), allow_empty) {}
7577 
7586  dnnl::algorithm::vanilla_rnn) {}
7587 
7590  return rnn_base::src_layer_desc();
7591  }
7592 
7595 
7599  }
7600 
7603  return rnn_base::weights_iter_desc();
7604  }
7605 
7608 
7611  return rnn_base::dst_layer_desc();
7612  }
7613 
7616 
7619  return rnn_base::workspace_desc();
7620  }
7621 
7625  }
7626 
7630  }
7631 
7635  }
7636 
7640  }
7641 
7644  return rnn_base::diff_bias_desc();
7645  }
7646 
7650  }
7651 
7655  }
7656  };
7657 
7660 
7665 };
7666 
7668 struct lstm_forward : public primitive {
7670  struct desc {
7671  dnnl_rnn_desc_t data;
7672 
7721  desc(prop_kind aprop_kind, rnn_direction direction,
7722  const memory::desc &src_layer_desc,
7723  const memory::desc &src_iter_desc,
7724  const memory::desc &src_iter_c_desc,
7725  const memory::desc &weights_layer_desc,
7726  const memory::desc &weights_iter_desc,
7727  const memory::desc &weights_peephole_desc,
7728  const memory::desc &weights_projection_desc,
7729  const memory::desc &bias_desc,
7730  const memory::desc &dst_layer_desc,
7731  const memory::desc &dst_iter_desc,
7732  const memory::desc &dst_iter_c_desc,
7733  rnn_flags flags = rnn_flags::undef) {
7736  dnnl::convert_to_c(aprop_kind),
7737  dnnl::convert_to_c(direction), &src_layer_desc.data,
7738  &src_iter_desc.data, &src_iter_c_desc.data,
7739  &weights_layer_desc.data, &weights_iter_desc.data,
7740  &weights_peephole_desc.data,
7741  &weights_projection_desc.data, &bias_desc.data,
7742  &dst_layer_desc.data, &dst_iter_desc.data,
7743  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7744  "could not create a descriptor for an LSTM forward "
7745  "propagation primitive");
7746  }
7747 
7789  desc(prop_kind aprop_kind, rnn_direction direction,
7790  const memory::desc &src_layer_desc,
7791  const memory::desc &src_iter_desc,
7792  const memory::desc &src_iter_c_desc,
7793  const memory::desc &weights_layer_desc,
7794  const memory::desc &weights_iter_desc,
7795  const memory::desc &weights_peephole_desc,
7796  const memory::desc &bias_desc,
7797  const memory::desc &dst_layer_desc,
7798  const memory::desc &dst_iter_desc,
7799  const memory::desc &dst_iter_c_desc,
7800  rnn_flags flags = rnn_flags::undef) {
7803  dnnl::convert_to_c(aprop_kind),
7804  dnnl::convert_to_c(direction), &src_layer_desc.data,
7805  &src_iter_desc.data, &src_iter_c_desc.data,
7806  &weights_layer_desc.data, &weights_iter_desc.data,
7807  &weights_peephole_desc.data, &bias_desc.data,
7808  &dst_layer_desc.data, &dst_iter_desc.data,
7809  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7810  "could not create a descriptor for an LSTM forward "
7811  "propagation primitive");
7812  }
7813 
7850  desc(prop_kind aprop_kind, rnn_direction direction,
7851  const memory::desc &src_layer_desc,
7852  const memory::desc &src_iter_desc,
7853  const memory::desc &src_iter_c_desc,
7854  const memory::desc &weights_layer_desc,
7855  const memory::desc &weights_iter_desc,
7856  const memory::desc &bias_desc,
7857  const memory::desc &dst_layer_desc,
7858  const memory::desc &dst_iter_desc,
7859  const memory::desc &dst_iter_c_desc,
7860  rnn_flags flags = rnn_flags::undef) {
7863  dnnl::convert_to_c(aprop_kind),
7864  dnnl::convert_to_c(direction), &src_layer_desc.data,
7865  &src_iter_desc.data, &src_iter_c_desc.data,
7866  &weights_layer_desc.data, &weights_iter_desc.data,
7867  &bias_desc.data, &dst_layer_desc.data,
7868  &dst_iter_desc.data, &dst_iter_c_desc.data,
7869  dnnl::convert_to_c(flags)),
7870  "could not create a descriptor for an LSTM forward "
7871  "propagation primitive");
7872  }
7873  };
7874 
7878  primitive_desc() = default;
7879 
7889  primitive_desc(const desc &adesc, const engine &aengine,
7890  bool allow_empty = false)
7892  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7893 
7904  primitive_desc(const desc &adesc, const primitive_attr &attr,
7905  const engine &aengine, bool allow_empty = false)
7907  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7908 
7919 
7922  return rnn_base::src_layer_desc();
7923  }
7924 
7927 
7930  return rnn_base::src_iter_c_desc();
7931  }
7932 
7936  }
7937 
7940  return rnn_base::weights_iter_desc();
7941  }
7942 
7946  }
7947 
7951  }
7952 
7955 
7958  return rnn_base::dst_layer_desc();
7959  }
7960 
7963 
7966  return rnn_base::dst_iter_c_desc();
7967  }
7968 
7971  return rnn_base::workspace_desc();
7972  }
7973  };
7974 
7976  lstm_forward() = default;
7977 
7982 };
7983 
7985 struct lstm_backward : public primitive {
7987  struct desc {
7988  dnnl_rnn_desc_t data;
7989 
8065  desc(prop_kind aprop_kind, rnn_direction direction,
8066  const memory::desc &src_layer_desc,
8067  const memory::desc &src_iter_desc,
8068  const memory::desc &src_iter_c_desc,
8069  const memory::desc &weights_layer_desc,
8070  const memory::desc &weights_iter_desc,
8071  const memory::desc &weights_peephole_desc,
8072  const memory::desc &weights_projection_desc,
8073  const memory::desc &bias_desc,
8074  const memory::desc &dst_layer_desc,
8075  const memory::desc &dst_iter_desc,
8076  const memory::desc &dst_iter_c_desc,
8077  const memory::desc &diff_src_layer_desc,
8078  const memory::desc &diff_src_iter_desc,
8079  const memory::desc &diff_src_iter_c_desc,
8080  const memory::desc &diff_weights_layer_desc,
8081  const memory::desc &diff_weights_iter_desc,
8082  const memory::desc &diff_weights_peephole_desc,
8083  const memory::desc &diff_weights_projection_desc,
8084  const memory::desc &diff_bias_desc,
8085  const memory::desc &diff_dst_layer_desc,
8086  const memory::desc &diff_dst_iter_desc,
8087  const memory::desc &diff_dst_iter_c_desc,
8088  rnn_flags flags = rnn_flags::undef) {
8091  dnnl::convert_to_c(aprop_kind),
8092  dnnl::convert_to_c(direction), &src_layer_desc.data,
8093  &src_iter_desc.data, &src_iter_c_desc.data,
8094  &weights_layer_desc.data, &weights_iter_desc.data,
8095  &weights_peephole_desc.data,
8096  &weights_projection_desc.data, &bias_desc.data,
8097  &dst_layer_desc.data, &dst_iter_desc.data,
8098  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8099  &diff_src_iter_desc.data,
8100  &diff_src_iter_c_desc.data,
8101  &diff_weights_layer_desc.data,
8102  &diff_weights_iter_desc.data,
8103  &diff_weights_peephole_desc.data,
8104  &diff_weights_projection_desc.data,
8105  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8106  &diff_dst_iter_desc.data,
8107  &diff_dst_iter_c_desc.data,
8108  dnnl::convert_to_c(flags)),
8109  "could not create a descriptor for an LSTM backward "
8110  "propagation primitive");
8111  }
8112 
8177  desc(prop_kind aprop_kind, rnn_direction direction,
8178  const memory::desc &src_layer_desc,
8179  const memory::desc &src_iter_desc,
8180  const memory::desc &src_iter_c_desc,
8181  const memory::desc &weights_layer_desc,
8182  const memory::desc &weights_iter_desc,
8183  const memory::desc &weights_peephole_desc,
8184  const memory::desc &bias_desc,
8185  const memory::desc &dst_layer_desc,
8186  const memory::desc &dst_iter_desc,
8187  const memory::desc &dst_iter_c_desc,
8188  const memory::desc &diff_src_layer_desc,
8189  const memory::desc &diff_src_iter_desc,
8190  const memory::desc &diff_src_iter_c_desc,
8191  const memory::desc &diff_weights_layer_desc,
8192  const memory::desc &diff_weights_iter_desc,
8193  const memory::desc &diff_weights_peephole_desc,
8194  const memory::desc &diff_bias_desc,
8195  const memory::desc &diff_dst_layer_desc,
8196  const memory::desc &diff_dst_iter_desc,
8197  const memory::desc &diff_dst_iter_c_desc,
8198  rnn_flags flags = rnn_flags::undef) {
8201  dnnl::convert_to_c(aprop_kind),
8202  dnnl::convert_to_c(direction), &src_layer_desc.data,
8203  &src_iter_desc.data, &src_iter_c_desc.data,
8204  &weights_layer_desc.data, &weights_iter_desc.data,
8205  &weights_peephole_desc.data, &bias_desc.data,
8206  &dst_layer_desc.data, &dst_iter_desc.data,
8207  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8208  &diff_src_iter_desc.data,
8209  &diff_src_iter_c_desc.data,
8210  &diff_weights_layer_desc.data,
8211  &diff_weights_iter_desc.data,
8212  &diff_weights_peephole_desc.data,
8213  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8214  &diff_dst_iter_desc.data,
8215  &diff_dst_iter_c_desc.data,
8216  dnnl::convert_to_c(flags)),
8217  "could not create a descriptor for an LSTM backward "
8218  "propagation primitive");
8219  }
8220 
8276  desc(prop_kind aprop_kind, rnn_direction direction,
8277  const memory::desc &src_layer_desc,
8278  const memory::desc &src_iter_desc,
8279  const memory::desc &src_iter_c_desc,
8280  const memory::desc &weights_layer_desc,
8281  const memory::desc &weights_iter_desc,
8282  const memory::desc &bias_desc,
8283  const memory::desc &dst_layer_desc,
8284  const memory::desc &dst_iter_desc,
8285  const memory::desc &dst_iter_c_desc,
8286  const memory::desc &diff_src_layer_desc,
8287  const memory::desc &diff_src_iter_desc,
8288  const memory::desc &diff_src_iter_c_desc,
8289  const memory::desc &diff_weights_layer_desc,
8290  const memory::desc &diff_weights_iter_desc,
8291  const memory::desc &diff_bias_desc,
8292  const memory::desc &diff_dst_layer_desc,
8293  const memory::desc &diff_dst_iter_desc,
8294  const memory::desc &diff_dst_iter_c_desc,
8295  rnn_flags flags = rnn_flags::undef) {
8298  dnnl::convert_to_c(aprop_kind),
8299  dnnl::convert_to_c(direction), &src_layer_desc.data,
8300  &src_iter_desc.data, &src_iter_c_desc.data,
8301  &weights_layer_desc.data, &weights_iter_desc.data,
8302  &bias_desc.data, &dst_layer_desc.data,
8303  &dst_iter_desc.data, &dst_iter_c_desc.data,
8304  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8305  &diff_src_iter_c_desc.data,
8306  &diff_weights_layer_desc.data,
8307  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8308  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8309  &diff_dst_iter_c_desc.data,
8310  dnnl::convert_to_c(flags)),
8311  "could not create a descriptor for an LSTM backward "
8312  "propagation primitive");
8313  }
8314  };
8315 
8319  primitive_desc() = default;
8320 
8333  primitive_desc(const desc &adesc, const engine &aengine,
8334  const lstm_forward::primitive_desc &hint_fwd_pd,
8335  bool allow_empty = false)
8336  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8337  hint_fwd_pd.get(), allow_empty) {}
8338 
8352  primitive_desc(const desc &adesc, const primitive_attr &attr,
8353  const engine &aengine,
8354  const lstm_forward::primitive_desc &hint_fwd_pd,
8355  bool allow_empty = false)
8356  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8357  hint_fwd_pd.get(), allow_empty) {}
8358 
8368 
8371  return rnn_base::src_layer_desc();
8372  }
8373 
8376 
8379  return rnn_base::src_iter_c_desc();
8380  }
8381 
8385  }
8386 
8389  return rnn_base::weights_iter_desc();
8390  }
8391 
8395  }
8396 
8400  }
8401 
8404 
8407  return rnn_base::dst_layer_desc();
8408  }
8409 
8412 
8415  return rnn_base::dst_iter_c_desc();
8416  }
8417 
8420  return rnn_base::workspace_desc();
8421  }
8422 
8426  }
8427 
8431  }
8432 
8436  }
8437 
8441  }
8442 
8446  }
8447 
8451  }
8452 
8456  }
8457 
8460  return rnn_base::diff_bias_desc();
8461  }
8462 
8466  }
8467 
8471  }
8472 
8476  }
8477  };
8478 
8480  lstm_backward() = default;
8481 
8486 };
8487 
8489 struct gru_forward : public primitive {
8491  struct desc {
8492  dnnl_rnn_desc_t data;
8493 
8526  desc(prop_kind aprop_kind, rnn_direction direction,
8527  const memory::desc &src_layer_desc,
8528  const memory::desc &src_iter_desc,
8529  const memory::desc &weights_layer_desc,
8530  const memory::desc &weights_iter_desc,
8531  const memory::desc &bias_desc,
8532  const memory::desc &dst_layer_desc,
8533  const memory::desc &dst_iter_desc,
8534  rnn_flags flags = rnn_flags::undef) {
8537  dnnl::convert_to_c(aprop_kind),
8538  dnnl::convert_to_c(direction), &src_layer_desc.data,
8539  &src_iter_desc.data, &weights_layer_desc.data,
8540  &weights_iter_desc.data, &bias_desc.data,
8541  &dst_layer_desc.data, &dst_iter_desc.data,
8542  dnnl::convert_to_c(flags)),
8543  "could not create a descriptor for a GRU forward "
8544  "propagation primitive");
8545  }
8546  };
8547 
8551  primitive_desc() = default;
8552 
8562  primitive_desc(const desc &adesc, const engine &aengine,
8563  bool allow_empty = false)
8565  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8566 
8577  primitive_desc(const desc &adesc, const primitive_attr &attr,
8578  const engine &aengine, bool allow_empty = false)
8580  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8581 
8591  dnnl::algorithm::vanilla_gru) {}
8592 
8595  return rnn_base::src_layer_desc();
8596  }
8597 
8600 
8604  }
8605 
8608  return rnn_base::weights_iter_desc();
8609  }
8610 
8613 
8616  return rnn_base::dst_layer_desc();
8617  }
8618 
8621 
8624  return rnn_base::workspace_desc();
8625  }
8626  };
8627 
8629  gru_forward() = default;
8630 
8635 };
8636 
8638 struct gru_backward : public primitive {
8640  struct desc {
8641  dnnl_rnn_desc_t data;
8642 
8687  desc(prop_kind aprop_kind, rnn_direction direction,
8688  const memory::desc &src_layer_desc,
8689  const memory::desc &src_iter_desc,
8690  const memory::desc &weights_layer_desc,
8691  const memory::desc &weights_iter_desc,
8692  const memory::desc &bias_desc,
8693  const memory::desc &dst_layer_desc,
8694  const memory::desc &dst_iter_desc,
8695  const memory::desc &diff_src_layer_desc,
8696  const memory::desc &diff_src_iter_desc,
8697  const memory::desc &diff_weights_layer_desc,
8698  const memory::desc &diff_weights_iter_desc,
8699  const memory::desc &diff_bias_desc,
8700  const memory::desc &diff_dst_layer_desc,
8701  const memory::desc &diff_dst_iter_desc,
8702  rnn_flags flags = rnn_flags::undef) {
8705  dnnl::convert_to_c(aprop_kind),
8706  dnnl::convert_to_c(direction), &src_layer_desc.data,
8707  &src_iter_desc.data, &weights_layer_desc.data,
8708  &weights_iter_desc.data, &bias_desc.data,
8709  &dst_layer_desc.data, &dst_iter_desc.data,
8710  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8711  &diff_weights_layer_desc.data,
8712  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8713  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8714  dnnl::convert_to_c(flags)),
8715  "could not create a descriptor for a GRU backward "
8716  "propagation primitive");
8717  }
8718  };
8719 
8723  primitive_desc() = default;
8724 
8737  primitive_desc(const desc &adesc, const engine &aengine,
8738  const gru_forward::primitive_desc &hint_fwd_pd,
8739  bool allow_empty = false)
8740  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8741  hint_fwd_pd.get(), allow_empty) {}
8742 
8756  primitive_desc(const desc &adesc, const primitive_attr &attr,
8757  const engine &aengine,
8758  const gru_forward::primitive_desc &hint_fwd_pd,
8759  bool allow_empty = false)
8760  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8761  hint_fwd_pd.get(), allow_empty) {}
8762 
8771  dnnl::algorithm::vanilla_gru) {}
8772 
8775  return rnn_base::src_layer_desc();
8776  }
8777 
8780 
8784  }
8785 
8788  return rnn_base::weights_iter_desc();
8789  }
8790 
8793 
8796  return rnn_base::dst_layer_desc();
8797  }
8798 
8801 
8804  return rnn_base::workspace_desc();
8805  }
8806 
8810  }
8811 
8815  }
8816 
8820  }
8821 
8825  }
8826 
8829  return rnn_base::diff_bias_desc();
8830  }
8831 
8835  }
8836 
8840  }
8841  };
8842 
8844  gru_backward() = default;
8845 
8850 };
8851 
8853 struct lbr_gru_forward : public primitive {
8855  struct desc {
8856  dnnl_rnn_desc_t data;
8857 
8891  desc(prop_kind aprop_kind, rnn_direction direction,
8892  const memory::desc &src_layer_desc,
8893  const memory::desc &src_iter_desc,
8894  const memory::desc &weights_layer_desc,
8895  const memory::desc &weights_iter_desc,
8896  const memory::desc &bias_desc,
8897  const memory::desc &dst_layer_desc,
8898  const memory::desc &dst_iter_desc,
8899  rnn_flags flags = rnn_flags::undef) {
8902  dnnl::convert_to_c(aprop_kind),
8903  dnnl::convert_to_c(direction), &src_layer_desc.data,
8904  &src_iter_desc.data, &weights_layer_desc.data,
8905  &weights_iter_desc.data, &bias_desc.data,
8906  &dst_layer_desc.data, &dst_iter_desc.data,
8907  dnnl::convert_to_c(flags)),
8908  "could not create a descriptor for an LBR GRU forward "
8909  "propagation primitive");
8910  }
8911  };
8912 
8916  primitive_desc() = default;
8917 
8928  primitive_desc(const desc &adesc, const engine &aengine,
8929  bool allow_empty = false)
8931  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8932 
8944  primitive_desc(const desc &adesc, const primitive_attr &attr,
8945  const engine &aengine, bool allow_empty = false)
8947  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8948 
8958  dnnl::algorithm::lbr_gru) {}
8959 
8962  return rnn_base::src_layer_desc();
8963  }
8964 
8967 
8971  }
8972 
8975  return rnn_base::weights_iter_desc();
8976  }
8977 
8980 
8983  return rnn_base::dst_layer_desc();
8984  }
8985 
8988 
8991  return rnn_base::workspace_desc();
8992  }
8993  };
8994 
8996  lbr_gru_forward() = default;
8997 
9002 };
9003 
9005 struct lbr_gru_backward : public primitive {
9007  struct desc {
9008  dnnl_rnn_desc_t data;
9009 
9055  desc(prop_kind aprop_kind, rnn_direction direction,
9056  const memory::desc &src_layer_desc,
9057  const memory::desc &src_iter_desc,
9058  const memory::desc &weights_layer_desc,
9059  const memory::desc &weights_iter_desc,
9060  const memory::desc &bias_desc,
9061  const memory::desc &dst_layer_desc,
9062  const memory::desc &dst_iter_desc,
9063  const memory::desc &diff_src_layer_desc,
9064  const memory::desc &diff_src_iter_desc,
9065  const memory::desc &diff_weights_layer_desc,
9066  const memory::desc &diff_weights_iter_desc,
9067  const memory::desc &diff_bias_desc,
9068  const memory::desc &diff_dst_layer_desc,
9069  const memory::desc &diff_dst_iter_desc,
9070  rnn_flags flags = rnn_flags::undef) {
9073  dnnl::convert_to_c(aprop_kind),
9074  dnnl::convert_to_c(direction), &src_layer_desc.data,
9075  &src_iter_desc.data, &weights_layer_desc.data,
9076  &weights_iter_desc.data, &bias_desc.data,
9077  &dst_layer_desc.data, &dst_iter_desc.data,
9078  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9079  &diff_weights_layer_desc.data,
9080  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9081  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9082  dnnl::convert_to_c(flags)),
9083  "could not create a descriptor for an LBR GRU backward "
9084  "propagation primitive");
9085  }
9086  };
9087 
9091  primitive_desc() = default;
9092 
9106  primitive_desc(const desc &adesc, const engine &aengine,
9107  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9108  bool allow_empty = false)
9109  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9110  hint_fwd_pd.get(), allow_empty) {}
9111 
9126  primitive_desc(const desc &adesc, const primitive_attr &attr,
9127  const engine &aengine,
9128  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9129  bool allow_empty = false)
9130  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9131  hint_fwd_pd.get(), allow_empty) {}
9132 
9142 
9145  return rnn_base::src_layer_desc();
9146  }
9147 
9150 
9154  }
9155 
9158  return rnn_base::weights_iter_desc();
9159  }
9160 
9163 
9166  return rnn_base::dst_layer_desc();
9167  }
9168 
9171 
9174  return rnn_base::workspace_desc();
9175  }
9176 
9180  }
9181 
9185  }
9186 
9190  }
9191 
9195  }
9196 
9199  return rnn_base::diff_bias_desc();
9200  }
9201 
9205  }
9206 
9210  }
9211  };
9212 
9214  lbr_gru_backward() = default;
9215 
9220 };
9221 
9223 
9231 
9233 struct shuffle_forward : public primitive {
9235  struct desc {
9236  dnnl_shuffle_desc_t data;
9237 
9247  desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis,
9248  int group_size) {
9250  dnnl::convert_to_c(aprop_kind),
9251  &data_desc.data, axis, group_size),
9252  "could not create a descriptor for a shuffle forward "
9253  "propagation primitive");
9254  }
9255  };
9256 
9260  primitive_desc() = default;
9261 
9273  primitive_desc(const desc &adesc, const engine &aengine,
9274  const primitive_attr &attr = primitive_attr(),
9275  bool allow_empty = false)
9276  : dnnl::primitive_desc(
9277  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9278 
9286  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9289 
9291  memory::desc src_desc() const { return base::src_desc(0); }
9292 
9294  memory::desc dst_desc() const { return base::dst_desc(0); }
9295  };
9296 
9298  shuffle_forward() = default;
9299 
9304 };
9305 
9307 struct shuffle_backward : public primitive {
9310  struct desc {
9311  dnnl_shuffle_desc_t data;
9312 
9320  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
9322  &diff_data_desc.data, axis, group_size),
9323  "could not create a descriptor for a shuffle backward "
9324  "propagation primitive");
9325  }
9326  };
9327 
9331  primitive_desc() = default;
9332 
9347  primitive_desc(const desc &adesc, const engine &aengine,
9348  const shuffle_forward::primitive_desc &hint_fwd_pd,
9349  const primitive_attr &attr = primitive_attr(),
9350  bool allow_empty = false)
9351  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9352  hint_fwd_pd.get(), allow_empty) {}
9353 
9361  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9363 
9366 
9369  };
9370 
9372  shuffle_backward() = default;
9373 
9378 };
9379 
9381 
9389 
9391 struct binary : public primitive {
9393  struct desc {
9396 
9398  desc() = default;
9399 
9407  desc(algorithm aalgorithm, const memory::desc &src0,
9408  const memory::desc &src1, const memory::desc &dst) {
9411  &src0.data, &src1.data, &dst.data),
9412  "could not create a descriptor for a binary operation "
9413  "primitive");
9414  }
9415  };
9416 
9420  primitive_desc() = default;
9421 
9431  primitive_desc(const desc &adesc, const engine &aengine,
9432  bool allow_empty = false)
9433  : dnnl::primitive_desc(
9434  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9435 
9446  primitive_desc(const desc &adesc, const primitive_attr &attr,
9447  const engine &aengine, bool allow_empty = false)
9448  : dnnl::primitive_desc(
9449  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9450 
9457 
9459  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
9460 
9462  memory::desc src0_desc() const { return base::src_desc(0); }
9463 
9465  memory::desc src1_desc() const { return base::src_desc(1); }
9466 
9468  memory::desc dst_desc() const { return base::dst_desc(0); }
9469  };
9470 
9472  binary() = default;
9473 
9477  binary(const primitive_desc &pd) : primitive(pd) {}
9478 };
9479 
9481 
9491 
9493 struct matmul : public primitive {
9495  struct desc {
9496  dnnl_matmul_desc_t data;
9497 
9503  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9504  const memory::desc &dst_desc) {
9506  dnnl_matmul_desc_init(&data, &src_desc.data,
9507  &weights_desc.data, nullptr, &dst_desc.data),
9508  "could not create a descriptor for a matmul primitive");
9509  }
9510 
9517  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9518  const memory::desc &bias_desc, const memory::desc &dst_desc) {
9519  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
9520  &weights_desc.data, &bias_desc.data,
9521  &dst_desc.data),
9522  "could not create a descriptor for a matmul primitive");
9523  }
9524  };
9525 
9529  primitive_desc() = default;
9530 
9539  primitive_desc(const desc &adesc, const engine &aengine,
9540  bool allow_empty = false)
9541  : dnnl::primitive_desc(
9542  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9543 
9553  primitive_desc(const desc &adesc, const primitive_attr &attr,
9554  const engine &aengine, bool allow_empty = false)
9555  : dnnl::primitive_desc(
9556  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9557 
9564 
9567 
9570  return query_md(query::weights_md, 0);
9571  }
9572 
9575  return query_md(query::weights_md, 1);
9576  }
9577 
9580  };
9581 
9583  matmul() = default;
9584 
9587  matmul(const primitive_desc &pd) : primitive(pd) {}
9588 };
9589 
9591 
9601 
9605  struct desc {
9607 
9623  desc(prop_kind aprop_kind, algorithm aalgorithm,
9624  const memory::desc &src_desc, const memory::desc &dst_desc) {
9626  dnnl::convert_to_c(aprop_kind),
9627  convert_to_c(aalgorithm), nullptr,
9628  &src_desc.data, &dst_desc.data),
9629  "could not create a resampling forward descriptor");
9630  }
9631 
9643  desc(prop_kind aprop_kind, algorithm aalgorithm,
9644  const std::vector<float> &factors,
9645  const memory::desc &src_desc) {
9646  memory::validate_dims(factors, src_desc.data.ndims - 2);
9648  dnnl::convert_to_c(aprop_kind),
9649  convert_to_c(aalgorithm), &factors[0],
9650  &src_desc.data, nullptr),
9651  "could not create a resampling forward descriptor");
9652  }
9653 
9670  desc(prop_kind aprop_kind, algorithm aalgorithm,
9671  const std::vector<float> &factors, const memory::desc &src_desc,
9672  const memory::desc &dst_desc) {
9673  if (!factors.empty())
9674  memory::validate_dims(factors, src_desc.data.ndims - 2);
9676  dnnl::convert_to_c(aprop_kind),
9677  convert_to_c(aalgorithm), factors.data(),
9678  &src_desc.data, &dst_desc.data),
9679  "could not create a resampling forward descriptor");
9680  }
9681  };
9682 
9686  primitive_desc() = default;
9687 
9698  primitive_desc(const desc &adesc, const engine &aengine,
9699  bool allow_empty = false)
9700  : dnnl::primitive_desc(
9701  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9702 
9714  primitive_desc(const desc &adesc, const primitive_attr &attr,
9715  const engine &aengine, bool allow_empty = false)
9716  : dnnl::primitive_desc(
9717  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9718 
9726  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9729 
9731  memory::desc src_desc() const { return base::src_desc(0); }
9732 
9734  memory::desc dst_desc() const { return base::dst_desc(0); }
9735  };
9736 
9738  resampling_forward() = default;
9739 
9744 };
9745 
9749  struct desc {
9751 
9760  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
9761  const memory::desc &diff_dst_desc) {
9763  convert_to_c(aalgorithm), nullptr,
9764  &diff_src_desc.data, &diff_dst_desc.data),
9765  "could not create a resampling backward data descriptor");
9766  }
9767 
9777  desc(algorithm aalgorithm, const std::vector<float> &factors,
9778  const memory::desc &diff_src_desc,
9779  const memory::desc &diff_dst_desc) {
9780  if (!factors.empty())
9781  memory::validate_dims(factors, diff_src_desc.data.ndims - 2);
9783  convert_to_c(aalgorithm), factors.data(),
9784  &diff_src_desc.data, &diff_dst_desc.data),
9785  "could not create a resampling backward data descriptor");
9786  }
9787  };
9788 
9792  primitive_desc() = default;
9793 
9807  primitive_desc(const desc &adesc, const engine &aengine,
9808  const resampling_forward::primitive_desc &hint_fwd_pd,
9809  bool allow_empty = false)
9810  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
9811  hint_fwd_pd.get(), allow_empty) {}
9812 
9827  primitive_desc(const desc &adesc, const primitive_attr &attr,
9828  const engine &aengine,
9829  const resampling_forward::primitive_desc &hint_fwd_pd,
9830  bool allow_empty = false)
9831  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9832  hint_fwd_pd.get(), allow_empty) {}
9833 
9841  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9843 
9846 
9849  };
9850 
9852  resampling_backward() = default;
9853 
9858 };
9859 
9861 
9863 
9869 
9872 
9874 enum class status {
9889 };
9890 
9892 inline status set_verbose(int level) {
9893  return static_cast<status>(dnnl_set_verbose(level));
9894 }
9895 
9897 inline const version_t *version() {
9898  return dnnl_version();
9899 }
9900 
9902 inline status set_jit_dump(int enable) {
9903  return static_cast<status>(dnnl_set_jit_dump(enable));
9904 }
9905 
9907 inline status set_jit_profiling_flags(unsigned flags) {
9908  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
9909 }
9910 
9912 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
9913  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
9914 }
9915 
9917 enum class cpu_isa {
9938 };
9939 
9942  return static_cast<status>(
9943  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
9944 }
9945 
9948  return static_cast<cpu_isa>(dnnl_get_effective_cpu_isa());
9949 }
9950 
9952 
9958 
9962  int result = 0;
9964  "could not get primitive cache capacity");
9965  return result;
9966 }
9967 
9969 inline void set_primitive_cache_capacity(int capacity) {
9971  "could not set primitive cache capacity");
9972 }
9973 
9975 
9982 
9984 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
9985  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
9986  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
9987  return static_cast<status>(dnnl_sgemm(
9988  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
9989 }
9990 
9992 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
9993  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
9994  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
9995  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
9996  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
9997  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
9998 }
9999 
10001 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10002  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10003  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10004  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10005  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
10006  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10007 }
10008 
10009 #if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL
10010 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10012  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10013  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc,
10014  dnnl::threadpool_iface *tp) {
10015  return static_cast<status>(dnnl_sgemm_tp(
10016  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, tp));
10017 }
10019 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10020  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10021  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10022  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10023  dnnl::threadpool_iface *tp) {
10024  return static_cast<status>(dnnl_gemm_u8s8s32_tp(transa, transb, offsetc, M,
10025  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10026 }
10027 
10029 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10030  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10031  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10032  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10033  dnnl::threadpool_iface *tp) {
10034  return static_cast<status>(dnnl_gemm_s8s8s32_tp(transa, transb, offsetc, M,
10035  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10036 }
10037 #endif
10038 
10040 
10041 // implementation section
10042 
10045  dnnl_primitive_t result;
10047  "could not create a primitive");
10048  reset(result);
10049 }
10050 
10051 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
10052 
10053 inline void primitive::execute(const stream &astream,
10054  const std::unordered_map<int, memory> &args) const {
10055  std::vector<dnnl_exec_arg_t> c_args;
10056  c_args.reserve(args.size());
10057  for (const auto &a : args)
10058  c_args.push_back({a.first, a.second.get(true)});
10059 
10060  error::wrap_c_api(dnnl_primitive_execute(get(), astream.get(),
10061  (int)c_args.size(), c_args.data()),
10062  "could not execute a primitive");
10063 }
10064 
10066 
10067 #undef DNNL_DEFINE_BITMASK_OPS
10068 
10069 } // namespace dnnl
10070 
10072 
10073 #endif
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6874
dnnl_query_time_estimate_f64
@ dnnl_query_time_estimate_f64
runtime estimation (seconds)
Definition: dnnl_types.h:2102
dnnl_query_reorder_dst_engine
@ dnnl_query_reorder_dst_engine
destination engine
Definition: dnnl_types.h:2114
dnnl::memory::set_data_handle
void set_data_handle(void *handle) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2117
dnnl_memory_set_ocl_mem_object
dnnl_status_t DNNL_API dnnl_memory_set_ocl_mem_object(dnnl_memory_t memory, cl_mem mem_object)
Sets OpenCL memory object associated with a memory object.
dnnl::handle::handle
handle(handle< T, traits > &&)=default
Move constructor.
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_backward::primitive_desc::diff_src_layer_desc
memory::desc diff_src_layer_desc() const
Returns diff source layer memory descriptor.
Definition: dnnl.hpp:7623
dnnl::primitive::primitive
primitive(const primitive_desc &pd)
Constructs a primitive from a primitive descriptor.
dnnl::gemm_s8s8s32
status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A, dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo, float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co)
Performs integer matrix-matrix multiply on 8-bit signed matrix A, 8-bit signed matrix B,...
Definition: dnnl.hpp:10001
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:9747
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4748
dnnl::cpu_isa::sse41
@ sse41
Intel Streaming SIMD Extensions 4.1 (Intel 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:349
dnnl::binary::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:9459
dnnl_scratchpad_mode_library
@ dnnl_scratchpad_mode_library
The library manages the scratchpad allocation according to the policy specified by the DNNL_ENABLE_CO...
Definition: dnnl_types.h:1808
dnnl::query::diff_dst_md
@ diff_dst_md
destination gradient (diff) memory desc
dnnl::convolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3853
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:2817
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6536
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_backward::desc::desc
desc(prop_kind aprop_kind, algorithm activation, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, rnn_flags flags=rnn_flags::undef, float alpha=0.0f, float beta=0.0f)
Constructs a descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7498
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:3124
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7670
dnnl_stream_attr_t
struct dnnl_stream_attr * dnnl_stream_attr_t
An execution stream attributes handle.
Definition: dnnl_types.h:2185
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:7232
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:7112
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:5879
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5864
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:8612
dnnl_s32
@ dnnl_s32
32-bit signed integer.
Definition: dnnl_types.h:72
dnnl::algorithm::binary_add
@ binary_add
Binary add.
dnnl::status::success
@ success
The operation was successful.
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a deconvolution forward propagation primitive from a C API prim...
Definition: dnnl.hpp:4558
dnnl_eltwise_round
@ dnnl_eltwise_round
Eltwise: round.
Definition: dnnl_types.h:888
dnnl::lrn_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5107
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9418
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:685
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_eltwise_relu_use_dst_for_bwd
@ dnnl_eltwise_relu_use_dst_for_bwd
Eltwise: ReLU (dst for backward)
Definition: dnnl_types.h:890
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data()=default
Default constructor. Produces an empty object.
dnnl::primitive::execute
void execute(const stream &astream, const std::unordered_map< int, memory > &args) const
Executes computations specified by the primitive in a specified stream.
dnnl::cpu_isa::all
@ all
Any ISA (excepting those listed as initial support)
dnnl::gru_forward::desc
Descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8491
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:1981
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:3186
dnnl_query_pooling_d
@ dnnl_query_pooling_d
pooling descriptor
Definition: dnnl_types.h:2126
dnnl::query::num_of_inputs_s32
@ num_of_inputs_s32
number of inputs expected
dnnl::shuffle_backward
Shuffle backward propagation primitive.
Definition: dnnl.hpp:9307
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6706
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:7607
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:8955
dnnl_ABcde2b8a4b
@ dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:289
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:8474
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:6676
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7615
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:8838
dnnl::error::what
const char * what() const noexcept override
Returns the explanatory string.
Definition: dnnl.hpp:103
dnnl::gru_backward::primitive_desc::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:8823
dnnl_pooling_backward_desc_init
dnnl_status_t DNNL_API dnnl_pooling_backward_desc_init(dnnl_pooling_desc_t *pool_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t kernel, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for pooling backward propagation primitive.
dnnl::engine::kind::any
@ any
An unspecified engine.
dnnl::post_ops::get_params_dw_k3s2p1
void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type, memory::data_type &bias_data_type, memory::data_type &dst_data_type, int &mask, std::vector< float > &scales) const
Returns the parameters of an depthwise post-op with stride 2.
Definition: dnnl.hpp:2510
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:369
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8914
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:4041
dnnl::stream
An execution stream.
Definition: dnnl.hpp:1043
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:1835
dnnl::post_ops::get_params_dw_k3s1p1
void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type, memory::data_type &bias_data_type, memory::data_type &dst_data_type, int &mask, std::vector< float > &scales) const
Returns the parameters of an depthwise post-op with stride 1.
Definition: dnnl.hpp:2425
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4531
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution forward propagation primitive without bias.
Definition: dnnl.hpp:4400
dnnl::query::diff_src_md
@ diff_src_md
source gradient (diff) memory desc
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4245
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const softmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5826
dnnl_aBCde2b4c2b
@ dnnl_aBCde2b4c2b
5D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:337
dnnl::inner_product_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc)
Constructs a descriptor for an inner product forward propagation primitive with bias.
Definition: dnnl.hpp:6723
dnnl_query_memory_consumption_s64
@ dnnl_query_memory_consumption_s64
memory consumption – extra
Definition: dnnl_types.h:2103
dnnl_s8
@ dnnl_s8
8-bit signed integer.
Definition: dnnl_types.h:74
dnnl::prop_kind
prop_kind
Propagation kind.
Definition: dnnl.hpp:436
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5331
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:2259
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:9562
dnnl_dilated_deconvolution_forward_desc_init
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_forward_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated deconvolution forward propagation primitive.
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9431
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:816
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_decab
@ dnnl_decab
permuted 5D tensor
Definition: dnnl_types.h:204
dnnl::softmax_backward
Softmax backward propagation primitive.
Definition: dnnl.hpp:5783
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_primitive_desc_iterator
An opaque structure to describe a primitive descriptor iterator.
dnnl_batch_normalization
@ dnnl_batch_normalization
A batch normalization primitive.
Definition: dnnl_types.h:812
dnnl::vanilla_rnn_backward
Vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7441
dnnl::rnn_primitive_desc_base::rnn_primitive_desc_base
rnn_primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
Constructs an RNN primitive descriptor base from a C API primitive descriptor while checking that it ...
Definition: dnnl.hpp:7086
dnnl_query_logsoftmax_d
@ dnnl_query_logsoftmax_d
logsoftmax descriptor
Definition: dnnl_types.h:2134
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:9992
dnnl::vanilla_rnn_backward::desc
Descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7443
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5206
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9005
DNNL_ARG_DST_ITER_C
#define DNNL_ARG_DST_ITER_C
A special mnemonic for LSTM output recurrent cell state vector.
Definition: dnnl_types.h:1914
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:9566
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:7876
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:5221
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution forward propagation primitive without bias.
Definition: dnnl.hpp:3779
DNNL_ARG_WEIGHTS_ITER
#define DNNL_ARG_WEIGHTS_ITER
A special mnemonic for RNN weights applied to the recurrent input.
Definition: dnnl_types.h:1932
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const eltwise_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5626
dnnl_lstm_forward_desc_init
dnnl_status_t DNNL_API dnnl_lstm_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, unsigned flags)
Initializes a descriptor for LSTM forward propagation primitive.
dnnl::engine::engine
engine(const handle< dnnl_primitive_desc_t > &pd)
Constructs an engine based on a primitive from the primitive descriptor pd by querying its engine.
Definition: dnnl.hpp:901
dnnl::inner_product_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc)
Constructs a descriptor for an inner product forward propagation primitive without bias.
Definition: dnnl.hpp:6747
dnnl_get_effective_cpu_isa
dnnl_cpu_isa_t DNNL_API dnnl_get_effective_cpu_isa(void)
Gets the maximal ISA the library can dispatch to on the CPU.
dnnl_status_t
dnnl_status_t
Status values returned by the library functions.
Definition: dnnl_types.h:39
dnnl::rnn_primitive_desc_base::diff_src_iter_desc
memory::desc diff_src_iter_desc() const
Returns diff source iteration memory descriptor.
Definition: dnnl.hpp:7172
dnnl_query_reorder_src_engine
@ dnnl_query_reorder_src_engine
source engine
Definition: dnnl_types.h:2113
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:3262
dnnl::memory::memory
memory(const desc &md, const engine &aengine)
Constructs a memory object.
Definition: dnnl.hpp:2048
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8602
DNNL_ARG_WEIGHTS_PROJECTION
#define DNNL_ARG_WEIGHTS_PROJECTION
A special mnemonic for RNN weights applied to the projection weights.
Definition: dnnl_types.h:1944
dnnl::engine
An execution engine.
Definition: dnnl.hpp:840
dnnl::cpu_isa::avx
@ avx
Intel Advanced Vector Extensions (Intel AVX)
dnnl::batch_normalization_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a batch normalization descriptor for forward propagation.
Definition: dnnl.hpp:6132
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:3493
dnnl::algorithm::eltwise_tanh_use_dst_for_bwd
@ eltwise_tanh_use_dst_for_bwd
Elementwise: hyperbolic tangent non-linearity (tanh) (dst for backward)
dnnl::pooling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5448
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:5659
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:6825
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:2716
dnnl_memory_get_ocl_mem_object
dnnl_status_t DNNL_API dnnl_memory_get_ocl_mem_object(const_dnnl_memory_t memory, cl_mem *mem_object)
Returns an OpenCL memory object associated with a memory object.
dnnl_softmax
@ dnnl_softmax
A softmax primitive.
Definition: dnnl_types.h:806
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:4728
dnnl_normalization_flags_none
@ dnnl_normalization_flags_none
Use no normalization flags.
Definition: dnnl_types.h:951
dnnl::lrn_forward
Local response normalization (LRN) forward propagation primitive.
Definition: dnnl.hpp:5028
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:7040
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5582
dnnl_post_ops_get_params_dw_k3s2p1
dnnl_status_t DNNL_API dnnl_post_ops_get_params_dw_k3s2p1(const_dnnl_post_ops_t post_ops, int index, dnnl_data_type_t *weights_data_type, dnnl_data_type_t *bias_data_type, dnnl_data_type_t *dst_data_type, dnnl_dim_t *count, int *mask, const float **scales)
Returns the parameters of an depthwise post-op with stride 2.
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a resampling backward propagation primitive from a C API primit...
Definition: dnnl.hpp:9840
dnnl_query_rnn_d
@ dnnl_query_rnn_d
rnn descriptor
Definition: dnnl_types.h:2131
DNNL_ARG_TO
#define DNNL_ARG_TO
A special mnemonic for reorder destination argument.
Definition: dnnl_types.h:1900
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:1002
dnnl_scratchpad_mode_user
@ dnnl_scratchpad_mode_user
The user manages the scratchpad allocation by querying and providing the scratchpad memory to primiti...
Definition: dnnl_types.h:1813
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:8439
dnnl::query::reorder_dst_engine
@ reorder_dst_engine
reorder destination engine
dnnl::primitive::kind
kind
Kinds of primitives supported by the library.
Definition: dnnl.hpp:278
dnnl::gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8594
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:2251
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:9912
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5392
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8782
dnnl_defcab
@ dnnl_defcab
permuted 6D tensor
Definition: dnnl_types.h:205
dnnl_aBcde16b
@ dnnl_aBcde16b
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:291
dnnl::layer_normalization_backward::layer_normalization_backward
layer_normalization_backward(const primitive_desc &pd)
Constructs a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6690
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1769
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7962
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8640
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8928
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc(const memory &src, const memory &dst, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for reorder primitive.
Definition: dnnl.hpp:3237
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:6662
dnnl::eltwise_forward::eltwise_forward
eltwise_forward(const primitive_desc &pd)
Constructs an eltwise forward propagation primitive.
Definition: dnnl.hpp:5576
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:7426
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:9605
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5670
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1103
dnnl_eltwise_relu
@ dnnl_eltwise_relu
Eltwise: ReLU.
Definition: dnnl_types.h:849
dnnl_acb
@ dnnl_acb
permuted 3D tensor
Definition: dnnl_types.h:188
dnnl_matmul_desc_t
A descriptor of a matrix multiplication operation.
Definition: dnnl_types.h:1685
dnnl::algorithm::eltwise_elu
@ eltwise_elu
Elementwise: 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:8607
dnnl::concat::concat
concat()=default
Default constructor. Produces an empty object.
dnnl_memory_desc_get_size
size_t DNNL_API dnnl_memory_desc_get_size(const dnnl_memory_desc_t *memory_desc)
Returns the size of a memory descriptor.
dnnl::rnn_primitive_desc_base::diff_weights_peephole_desc
memory::desc diff_weights_peephole_desc() const
Returns diff weights peephole memory descriptor.
Definition: dnnl.hpp:7196
dnnl_eltwise_abs
@ dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:857
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:5859
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4022
dnnl::post_ops::append_sum
void append_sum(float scale=1.f, memory::data_type data_type=memory::data_type::undef)
Appends an accumulation (sum) post-op.
Definition: dnnl.hpp:2301
dnnl::normalization_flags::none
@ none
Use no normalization flags.
dnnl::query::rnn_d
@ rnn_d
rnn descriptor
dnnl_normalization_flags_t
dnnl_normalization_flags_t
Flags for normalization primitives.
Definition: dnnl_types.h:942
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:8469
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:9165
dnnl_eltwise_sqrt_use_dst_for_bwd
@ dnnl_eltwise_sqrt_use_dst_for_bwd
Eltwise: square root (dst for backward)
Definition: dnnl_types.h:896
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9698
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:2956
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5580
dnnl::status::unimplemented
@ unimplemented
The operation failed because requested functionality is not implemented.
dnnl::lstm_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_src_iter_c_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_weights_peephole_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, const memory::desc &diff_dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs an LSTM (with or without peephole) descriptor for backward propagation using prop_kind,...
Definition: dnnl.hpp:8177
dnnl_shuffle
@ dnnl_shuffle
A shuffle primitive.
Definition: dnnl_types.h:794
dnnl_query_shuffle_d
@ dnnl_query_shuffle_d
shuffle descriptor
Definition: dnnl_types.h:2123
dnnl::memory::desc::permute_axes
desc permute_axes(const std::vector< int > &permutation, bool allow_empty=false) const
Constructs a memory descriptor by permuting axes in an existing one.
Definition: dnnl.hpp:1951
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:9493
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:9845
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8388
dnnl::rnn_primitive_desc_base::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7124
dnnl_convolution_desc_t
A descriptor of a convolution operation.
Definition: dnnl_types.h:1224
dnnl::convolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4025
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3984
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3847
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:7184
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6330
dnnl_primitive_kind_t
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:788
dnnl::eltwise_forward
Elementwise unary operation forward propagation primitive.
Definition: dnnl.hpp:5487
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5451
dnnl::convolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4004
dnnl_memory_desc_permute_axes
dnnl_status_t DNNL_API dnnl_memory_desc_permute_axes(dnnl_memory_desc_t *out_memory_desc, const dnnl_memory_desc_t *in_memory_desc, const int *permutation)
Initializes a memory descriptor by permuting axes in an existing one.
dnnl::deconvolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4994
dnnl_rnn_flags_t
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1555
dnnl_pooling_max
@ dnnl_pooling_max
Max pooling.
Definition: dnnl_types.h:902
dnnl::primitive::kind::lrn
@ lrn
An LRN primitive.
dnnl_engine_get_kind
dnnl_status_t DNNL_API dnnl_engine_get_kind(dnnl_engine_t engine, dnnl_engine_kind_t *kind)
Returns the kind of an engine.
dnnl_memory_desc_reshape
dnnl_status_t DNNL_API dnnl_memory_desc_reshape(dnnl_memory_desc_t *out_memory_desc, const dnnl_memory_desc_t *in_memory_desc, int ndims, const dnnl_dims_t dims)
Initializes a memory descriptor by reshaping an existing one.
dnnl_stream_flags_t
dnnl_stream_flags_t
Stream flags.
Definition: dnnl_types.h:2162
dnnl_query_t
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:2093
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:5961
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:9725
dnnl::post_ops::append_dw_k3s2p1
void append_dw_k3s2p1(memory::data_type weights_data_type, memory::data_type bias_data_type, memory::data_type dst_data_type, int mask, const std::vector< float > &scales)
Appends a depthwise post-op convolution with stride 2.
Definition: dnnl.hpp:2484
dnnl_logsoftmax_forward_desc_init
dnnl_status_t DNNL_API dnnl_logsoftmax_forward_desc_init(dnnl_logsoftmax_desc_t *logsoftmax_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int logsoftmax_axis)
Initializes a descriptor for logsoftmax forward propagation primitive.
dnnl_bf16
@ dnnl_bf16
non-standard 16-bit (bfloat16 w/ 7 bit mantissa) floating point.
Definition: dnnl_types.h:68
dnnl::memory::desc::submemory_desc
desc submemory_desc(const dims &adims, const dims &offsets, bool allow_empty=false) const
Constructs a memory descriptor for a region inside an area described by this memory descriptor.
Definition: dnnl.hpp:1848
dnnl::stream_attr::set_threadpool
void set_threadpool(threadpool_iface *threadpool)
Sets the threadpool attribute.
Definition: dnnl.hpp:1023
dnnl::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:631
dnnl_rnn_desc_t
A descriptor for an RNN operation.
Definition: dnnl_types.h:1577
dnnl_bcdea
@ dnnl_bcdea
permuted 5D tensor
Definition: dnnl_types.h:199
dnnl_rnn_direction_t
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1561
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:7926
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:9917
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5950
dnnl_sum
@ dnnl_sum
A sum primitive.
Definition: dnnl_types.h:798
dnnl::engine::get_count
static size_t get_count(kind akind)
Returns the number of engines of a certain kind.
Definition: dnnl.hpp:864
dnnl::memory::set_data_handle
void set_data_handle(void *handle, const stream &astream) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2103
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:4277
dnnl::prop_kind::forward_training
@ forward_training
Forward data propagation (training mode).
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:9495
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:7059
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8623
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:9285
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5059
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:9360
dnnl_backward_weights
@ dnnl_backward_weights
Backward weights propagation.
Definition: dnnl_types.h:781
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:2938
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:3563
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:9208
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6496
dnnl_inner_product_desc_t
A descriptor of an inner product operation.
Definition: dnnl_types.h:1521
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:2181
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7957
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:6982
dnnl_post_ops_append_dw_k3s2p1
dnnl_status_t DNNL_API dnnl_post_ops_append_dw_k3s2p1(dnnl_post_ops_t post_ops, dnnl_data_type_t weights_data_type, dnnl_data_type_t bias_data_type, dnnl_data_type_t dst_data_type, dnnl_dim_t count, int mask, const float *scales)
Appends a depthwise post-op convolution with stride 2.
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a layer normalization forward propagation primitive from a C AP...
Definition: dnnl.hpp:6486
dnnl_gpu
@ dnnl_gpu
GPU engine.
Definition: dnnl_types.h:1743
dnnl::primitive::primitive
primitive()=default
Default constructor. Constructs an empty object.
dnnl_memory_unmap_data
dnnl_status_t DNNL_API dnnl_memory_unmap_data(const_dnnl_memory_t memory, void *mapped_ptr)
Unmaps a memory object and writes back any changes made to the previously mapped memory buffer.
dnnl::pooling_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5334
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5893
dnnl::gru_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8687
dnnl::lstm_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &weights_projection_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_src_iter_c_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_weights_peephole_desc, const memory::desc &diff_weights_projection_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, const memory::desc &diff_dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs an LSTM (with or without peephole and with or without projection) descriptor for backward ...
Definition: dnnl.hpp:8065
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:8808
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:3500
dnnl::resampling_backward::desc::desc
desc(algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for resampling backward propagation primitive.
Definition: dnnl.hpp:9777
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:7212
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &src_desc, const memory::desc &dst_desc)
Constructs a descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9670
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5489
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:1967
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:7584
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:7985
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6397
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:5567
dnnl_query_diff_weights_md
@ dnnl_query_diff_weights_md
weights grad. memory desc
Definition: dnnl_types.h:2143
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const resampling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9807
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:8634
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:6646
dnnl_query_prop_kind
@ dnnl_query_prop_kind
propagation kind
Definition: dnnl_types.h:2116
dnnl_eltwise_logistic
@ dnnl_eltwise_logistic
Eltwise: logistic.
Definition: dnnl_types.h:867
dnnl::lbr_gru_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8974
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8383
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:5343
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:804
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:8489
dnnl::algorithm::deconvolution_direct
@ deconvolution_direct
Direct deconvolution.
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:845
dnnl_aBc16b
@ dnnl_aBc16b
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:214
dnnl::lbr_gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:9198
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6342
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7405
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:8588
dnnl::lstm_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &weights_projection_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for an LSTM (with or without peephole and with or without projection) forward...
Definition: dnnl.hpp:7721
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8370
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6210
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:6927
dnnl_convolution_auto
@ dnnl_convolution_auto
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:843
dnnl::binary::binary
binary(const primitive_desc &pd)
Constructs an elementwise binary operation primitive.
Definition: dnnl.hpp:9477
dnnl_cdba
@ dnnl_cdba
permuted 4D tensor
Definition: dnnl_types.h:201
dnnl_eltwise_sqrt
@ dnnl_eltwise_sqrt
Eltwise: square root.
Definition: dnnl_types.h:859
dnnl_cpu_isa_avx512_core
@ dnnl_cpu_isa_avx512_core
Intel AVX-512 subset for Intel Xeon Scalable processor family and Intel Core processor family.
Definition: dnnl_types.h:2267
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8961
dnnl::lstm_backward::lstm_backward
lstm_backward()=default
Default constructor. Produces an empty object.
dnnl::handle::operator==
bool operator==(const handle< T, traits > &other) const
Equality operator.
Definition: dnnl.hpp:217
dnnl::stream::stream
stream()=default
Constructs an empty stream.
dnnl_eltwise_bounded_relu
@ dnnl_eltwise_bounded_relu
Eltwise: bounded_relu.
Definition: dnnl_types.h:863
dnnl::lbr_gru_backward::lbr_gru_backward
lbr_gru_backward(const primitive_desc &pd)
Constructs an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9219
dnnl::memory::validate_dims
static void validate_dims(const std::vector< T > &v, int min_size=0)
Helper function that validates that an std::vector of dimensions can be safely converted to the C API...
Definition: dnnl.hpp:1198
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution forward propagation primitive without bias.
Definition: dnnl.hpp:3681
dnnl::binary::desc::desc
desc(algorithm aalgorithm, const memory::desc &src0, const memory::desc &src1, const memory::desc &dst)
Constructs a descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9407
dnnl::set_max_cpu_isa
status set_max_cpu_isa(cpu_isa isa)
Sets the maximal ISA the library can dispatch to on the CPU.
Definition: dnnl.hpp:9941
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6072
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6175
dnnl::softmax_backward::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::lstm_backward::primitive_desc
Primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8317
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:6918
dnnl_lstm_backward_desc_init
dnnl_status_t DNNL_API dnnl_lstm_backward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_src_iter_c_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, const dnnl_memory_desc_t *diff_dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM backward propagation primitive.
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive_desc_base::get_primitive_attr
primitive_attr get_primitive_attr() const
Returns the primitive attributes.
Definition: dnnl.hpp:3048
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8792
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:3396
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5072
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const lbr_gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9106
dnnl_forward_inference
@ dnnl_forward_inference
Forward data propagation (inference mode).
Definition: dnnl_types.h:771
dnnl::deconvolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4615
dnnl_query_impl_info_str
@ dnnl_query_impl_info_str
for creating scratchpad memory
Definition: dnnl_types.h:2111
dnnl_query_dst_md
@ dnnl_query_dst_md
destination memory desc
Definition: dnnl_types.h:2144
dnnl_query_resampling_d
@ dnnl_query_resampling_d
resampling descriptor
Definition: dnnl_types.h:2136
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:7164
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:2580
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:402
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5445
dnnl_query_inner_product_d
@ dnnl_query_inner_product_d
inner product descriptor
Definition: dnnl_types.h:2130
dnnl::vanilla_rnn_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7402
DNNL_ARG_DIFF_WEIGHTS_LAYER
#define DNNL_ARG_DIFF_WEIGHTS_LAYER
A special mnemonic for diff of RNN weights applied to the layer input.
Definition: dnnl_types.h:2012
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:1557
dnnl_nCdhw16c
@ dnnl_nCdhw16c
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:532
dnnl_query_convolution_d
@ dnnl_query_convolution_d
convolution descriptor
Definition: dnnl_types.h:2121
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:8833
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9684
dnnl::gru_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8526
dnnl_cpu_isa_avx512_core_amx
@ dnnl_cpu_isa_avx512_core_amx
Intel AVX-512, Intel DL Boost and bfloat16 support and Intel AMX with 8-bit integer and bfloat16 supp...
Definition: dnnl_types.h:2282
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6206
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5104
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:3036
DNNL_ARG_DIFF_WEIGHTS_PEEPHOLE
#define DNNL_ARG_DIFF_WEIGHTS_PEEPHOLE
A special mnemonic for diff of RNN weights applied to the peephole weights.
Definition: dnnl_types.h:2024
dnnl_aBCdef2c8b4c
@ dnnl_aBCdef2c8b4c
6D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:344
dnnl_lstm_backward_desc_init_v2
dnnl_status_t DNNL_API dnnl_lstm_backward_desc_init_v2(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_src_iter_c_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_weights_peephole_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, const dnnl_memory_desc_t *diff_dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole) backward propagation primitive.
dnnl::lstm_backward::primitive_desc::diff_weights_projection_desc
memory::desc diff_weights_projection_desc() const
Returns diff weights projection memory descriptor.
Definition: dnnl.hpp:8454
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:7628
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7618
dnnl::algorithm::eltwise_sqrt_use_dst_for_bwd
@ eltwise_sqrt_use_dst_for_bwd
Elementwise: square root (dst for backward)
dnnl::algorithm::eltwise_log
@ eltwise_log
Elementwise: natural logarithm.
dnnl::lrn_forward::lrn_forward
lrn_forward(const primitive_desc &pd)
Constructs an LRN forward propagation primitive.
Definition: dnnl.hpp:5119
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:198
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const batch_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6310
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7415
dnnl_stream_create_v2
dnnl_status_t DNNL_API dnnl_stream_create_v2(dnnl_stream_t *stream, dnnl_engine_t engine, unsigned flags, const_dnnl_stream_attr_t attr)
Creates an execution stream.
dnnl::sum::primitive_desc
Primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3427
dnnl::lstm_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7850
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward()=default
Default constructor. Produces an empty object.
dnnl_eltwise_gelu_tanh
@ dnnl_eltwise_gelu_tanh
Eltwise: gelu.
Definition: dnnl_types.h:874
dnnl_engine_create_ocl
dnnl_status_t DNNL_API dnnl_engine_create_ocl(dnnl_engine_t *engine, dnnl_engine_kind_t kind, cl_device_id device, cl_context context)
Creates an engine associated with an OpenCL device and an OpenCL context.
dnnl_bidirectional_concat
@ dnnl_bidirectional_concat
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1568
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:3293
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:2991
dnnl_pooling_desc_t
A descriptor of a pooling operation.
Definition: dnnl_types.h:1382
dnnl::layer_normalization_forward
Layer normalization forward propagation primitive.
Definition: dnnl.hpp:6395
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4282
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:4991
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:2751
dnnl::primitive::kind::rnn
@ rnn
An RNN primitive.
DNNL_ARG_DIFF_DST_ITER_C
#define DNNL_ARG_DIFF_DST_ITER_C
A special mnemonic for gradient (diff) of RNN input recurrent cell state vector.
Definition: dnnl_types.h:2000
dnnl::stream_attr
A container for stream attributes.
Definition: dnnl.hpp:998
dnnl::algorithm::convolution_winograd
@ convolution_winograd
Winograd convolution.
dnnl::layer_normalization_backward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization backward propagation primitive.
Definition: dnnl.hpp:6582
dnnl::reorder::primitive_desc::primitive_desc
primitive_desc(const engine &src_engine, const memory::desc &src_md, const engine &dst_engine, const memory::desc &dst_md, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for reorder primitive.
Definition: dnnl.hpp:3211
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:912
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7610
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3830
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution forward propagation primitive with bias.
Definition: dnnl.hpp:3730
dnnl_aBcd32b
@ dnnl_aBcd32b
4D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:246
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:193
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:6947
dnnl_lrn_within_channel
@ dnnl_lrn_within_channel
LRN within a single channel.
Definition: dnnl_types.h:912
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:9790
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3015
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:2779
dnnl::algorithm::eltwise_gelu_tanh
@ eltwise_gelu_tanh
Elementwise: tanh-based gelu.
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:8769
dnnl_lstm_backward_desc_init_v3
dnnl_status_t DNNL_API dnnl_lstm_backward_desc_init_v3(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *weights_projection_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, const dnnl_memory_desc_t *diff_src_layer_desc, const dnnl_memory_desc_t *diff_src_iter_desc, const dnnl_memory_desc_t *diff_src_iter_c_desc, const dnnl_memory_desc_t *diff_weights_layer_desc, const dnnl_memory_desc_t *diff_weights_iter_desc, const dnnl_memory_desc_t *diff_weights_peephole_desc, const dnnl_memory_desc_t *diff_weights_projection_desc, const dnnl_memory_desc_t *diff_bias_desc, const dnnl_memory_desc_t *diff_dst_layer_desc, const dnnl_memory_desc_t *diff_dst_iter_desc, const dnnl_memory_desc_t *diff_dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole and with or with out recurrent project...
dnnl_binary_mul
@ dnnl_binary_mul
Binary mul.
Definition: dnnl_types.h:930
dnnl::post_ops::append_dw_k3s1p1
void append_dw_k3s1p1(memory::data_type weights_data_type, memory::data_type bias_data_type, memory::data_type dst_data_type, int mask, const std::vector< float > &scales)
Appends a depthwise post-op convolution with stride 1.
Definition: dnnl.hpp:2399
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5517
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:3060
dnnl::rnn_direction::unidirectional_left2right
@ unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
dnnl_primitive_attr_get_zero_points
dnnl_status_t DNNL_API dnnl_primitive_attr_get_zero_points(const_dnnl_primitive_attr_t attr, int arg, dnnl_dim_t *count, int *mask, const int32_t **zero_points)
Returns count, correspondence zero point mask, and a pointer to a constant int32_t array of zero_poin...
dnnl_format_tag_undef
@ dnnl_format_tag_undef
Undefined memory format tag.
Definition: dnnl_types.h:166
dnnl_binary_min
@ dnnl_binary_min
Binary min.
Definition: dnnl_types.h:934
dnnl_post_ops_get_params_sum_v2
dnnl_status_t DNNL_API dnnl_post_ops_get_params_sum_v2(const_dnnl_post_ops_t post_ops, int index, float *scale, dnnl_data_type_t *data_type)
Returns the parameters of an accumulation (sum) post-op with a data type parameter.
dnnl::primitive::kind::resampling
@ resampling
A resampling primitive.
dnnl_primitive_attr_set_output_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_set_output_scales(dnnl_primitive_attr_t attr, dnnl_dim_t count, int mask, const float *scales)
Sets output scaling factors correspondence mask and values.
dnnl_primitive_desc_iterator_create
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_create(dnnl_primitive_desc_iterator_t *iterator, const_dnnl_op_desc_t op_desc, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine, const_dnnl_primitive_desc_t hint_forward_primitive_desc)
Creates a primitive descriptor iterator.
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const std::vector< float > &factors, const memory::desc &src_desc)
Constructs a descriptor for a resampling forward propagation primitive using source memory descriptor...
Definition: dnnl.hpp:9643
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:977
dnnl_eltwise_log
@ dnnl_eltwise_log
Eltwise: natural logarithm.
Definition: dnnl_types.h:880
dnnl::lbr_gru_backward::primitive_desc
Primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9089
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5030
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5720
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:2129
dnnl::vanilla_rnn_forward::desc::desc
desc(prop_kind aprop_kind, algorithm activation, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, rnn_flags flags=rnn_flags::undef, float alpha=0.0f, float beta=0.0f)
Constructs a descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7325
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5209
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:5098
dnnl::deconvolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution backward propagation primitive.
Definition: dnnl.hpp:4657
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6790
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3276
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::get_primitive_cache_capacity
int get_primitive_cache_capacity()
Returns the number of primitives that can be held in the primitive cache at the same time.
Definition: dnnl.hpp:9961
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3273
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:2247
dnnl_ABcd8b8a
@ dnnl_ABcd8b8a
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:273
dnnl::engine::get_ocl_device
cl_device_id get_ocl_device() const
Returns the OpenCL device associated with the engine.
Definition: dnnl.hpp:931
dnnl_resampling_linear
@ dnnl_resampling_linear
Linear Resampling Method.
Definition: dnnl_types.h:938
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:6912
dnnl::algorithm::binary_max
@ binary_max
Binary max.
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2997
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8828
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:3021
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6445
dnnl_forward_training
@ dnnl_forward_training
Forward data propagation (training mode).
Definition: dnnl_types.h:767
dnnl::query
query
Primitive descriptor query specification.
Definition: dnnl.hpp:718
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8620
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:194
dnnl_eltwise_square
@ dnnl_eltwise_square
Eltwise: square.
Definition: dnnl_types.h:855
dnnl_fuse_norm_relu
@ dnnl_fuse_norm_relu
Fuse with ReLU.
Definition: dnnl_types.h:990
dnnl_bacde
@ dnnl_bacde
permuted 5D tensor
Definition: dnnl_types.h:196
DNNL_ARG_DIFF_WEIGHTS_ITER
#define DNNL_ARG_DIFF_WEIGHTS_ITER
A special mnemonic for diff of RNN weights applied to the recurrent input.
Definition: dnnl_types.h:2018
dnnl::algorithm::eltwise_clip
@ eltwise_clip
Elementwise: 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 AVX-512 subset for Intel Xeon Phi processors 7235, 7285, 7295 Series.
Definition: dnnl_types.h:2263
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8969
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6087
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:4752
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8987
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6807
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:5798
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_ARG_DIFF_BIAS
#define DNNL_ARG_DIFF_BIAS
Gradient (diff) of the bias tensor argument.
Definition: dnnl_types.h:2033
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 normalization with ReLU.
dnnl::algorithm::eltwise_round
@ eltwise_round
Elementwise: round.
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::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8333
DNNL_ARG_WEIGHTS_PEEPHOLE
#define DNNL_ARG_WEIGHTS_PEEPHOLE
A special mnemonic for RNN weights applied to the peephole weights.
Definition: dnnl_types.h:1938
dnnl::rnn_primitive_desc_base::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7100
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:3332
dnnl_gru_forward_desc_init
dnnl_status_t DNNL_API dnnl_gru_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, unsigned flags)
Initializes a descriptor for GRU forward propagation primitive.
dnnl_gemm_s8s8s32
dnnl_status_t DNNL_API dnnl_gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A, dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo, float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co)
Performs integer matrix-matrix multiply on 8-bit signed matrix A, 8-bit signed matrix B,...
dnnl_format_kind_wino
@ dnnl_format_kind_wino
Weights format used in 8bit Winograd convolution.
Definition: dnnl_types.h:91
dnnl::logsoftmax_backward::desc
Descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:5989
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:841
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3600
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6075
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6244
dnnl_ABcde4b16a4b
@ dnnl_ABcde4b16a4b
5D tensor blocked by 1st dimension with block size 16
Definition: dnnl_types.h:287
dnnl_nChw8c
@ dnnl_nChw8c
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:550
dnnl::batch_normalization_forward
Batch normalization forward propagation primitive.
Definition: dnnl.hpp:6113
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:1737
dnnl_binary
@ dnnl_binary
A binary primitive.
Definition: dnnl_types.h:822
dnnl_cdeba
@ dnnl_cdeba
permuted 5D tensor
Definition: dnnl_types.h:203
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:7638
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6673
dnnl_eltwise_tanh
@ dnnl_eltwise_tanh
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:851
dnnl::error::error
error(dnnl_status_t status, const char *message)
Constructs an instance of an exception class.
Definition: dnnl.hpp:99
dnnl::gru_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8795
dnnl_aBc4b
@ dnnl_aBc4b
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:220
dnnl::pooling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5328
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_stream_attr_create
dnnl_status_t DNNL_API dnnl_stream_attr_create(dnnl_stream_attr_t *attr, dnnl_engine_kind_t kind)
Creates execution stream attributes for a stream that runs on an engine of a particular kind.
dnnl_abcde
@ dnnl_abcde
plain 5D tensor
Definition: dnnl_types.h:181
dnnl_nCw8c
@ dnnl_nCw8c
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:562
dnnl::layer_normalization_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization forward propagation primitive.
Definition: dnnl.hpp:6432
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:6933
dnnl_memory_desc_t::dims
dnnl_dims_t dims
Dimensions in the following order:
Definition: dnnl_types.h:1157
dnnl_stream_default_order
@ dnnl_stream_default_order
Default order execution.
Definition: dnnl_types.h:2165
dnnl::cpu_isa::avx512_core_vnni
@ avx512_core_vnni
Intel AVX-512 and Intel Deep Learning Boost (Intel DL Boost) support for Intel Xeon Scalable processo...
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:5693
dnnl::algorithm::resampling_nearest
@ resampling_nearest
Nearest Neighbor resampling method.
dnnl_pooling
@ dnnl_pooling
A pooling primitive.
Definition: dnnl_types.h:808
dnnl::batch_normalization_backward
Batch normalization backward propagation primitive.
Definition: dnnl.hpp:6242
dnnl_acdb
@ dnnl_acdb
permuted 4D tensor
Definition: dnnl_types.h:191
dnnl_query_lrn_d
@ dnnl_query_lrn_d
lrn descriptor
Definition: dnnl_types.h:2127
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:777
dnnl::batch_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6193
dnnl::inner_product_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6915
dnnl_softmax_desc_t
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1352
dnnl::algorithm::undef
@ undef
Undefined algorithm.
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6475
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lbr_gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9126
dnnl_cpu_isa_avx512_core_bf16
@ dnnl_cpu_isa_avx512_core_bf16
Intel AVX-512, Intel DL Boost and bfloat16 support for Intel Xeon Scalable processor family and Intel...
Definition: dnnl_types.h:2277
dnnl::pooling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &kernel, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for pooling forward propagation primitive.
Definition: dnnl.hpp:5264
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:7437
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::pooling_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &kernel, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for pooling backward propagation primitive.
Definition: dnnl.hpp:5373
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1204
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8756
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4695
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:5201
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lrn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5188
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8855
dnnl_primitive_attr_set_scales
dnnl_status_t DNNL_API dnnl_primitive_attr_set_scales(dnnl_primitive_attr_t attr, int arg, dnnl_dim_t count, int mask, const float *scales)
Sets primitive attributes scaling factors for primitive operations for a given memory argument.
dnnl::engine::get_ocl_context
cl_context get_ocl_context() const
Returns the OpenCL context associated with the engine.
Definition: dnnl.hpp:922
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7364
dnnl_sgemm
dnnl_status_t DNNL_API dnnl_sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda, const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc)
Performs single-precision matrix-matrix multiply.
dnnl::lstm_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const lstm_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8352
dnnl::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4229
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6336
dnnl::lstm_forward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7944
dnnl::lbr_gru_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9055
dnnl_stream_wait
dnnl_status_t DNNL_API dnnl_stream_wait(dnnl_stream_t stream)
Waits for all primitives in the execution stream to finish computations.
dnnl_memory_set_data_handle_v2
dnnl_status_t DNNL_API dnnl_memory_set_data_handle_v2(dnnl_memory_t memory, void *handle, dnnl_stream_t stream)
Sets the underlying memory buffer.
dnnl::rnn_primitive_desc_base::diff_weights_iter_desc
memory::desc diff_weights_iter_desc() const
Returns diff weights iteration memory descriptor.
Definition: dnnl.hpp:7190
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:6002
DNNL_ARG_SRC_ITER_C
#define DNNL_ARG_SRC_ITER_C
A special mnemonic for RNN input recurrent cell state vector.
Definition: dnnl_types.h:1891
dnnl::pooling_forward::primitive_desc
Primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5283
dnnl_sum_primitive_desc_create
dnnl_status_t DNNL_API dnnl_sum_primitive_desc_create(dnnl_primitive_desc_t *sum_primitive_desc, const dnnl_memory_desc_t *dst_desc, int n, const float *scales, const dnnl_memory_desc_t *src_descs, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine)
Creates a primitive descriptor for an (out-of-place) sum primitive.
dnnl::engine::query
static engine query(const primitive_desc &pd)
Returns the engine of a primitive descriptor.
Definition: dnnl.hpp:945
dnnl_nCdhw8c
@ dnnl_nCdhw8c
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:538
dnnl_pooling_avg
@ dnnl_pooling_avg
Average pooling (alias for dnnl_pooling_avg_exclude_padding)
Definition: dnnl_types.h:908
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:5761
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const layer_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6633
dnnl_vanilla_rnn
@ dnnl_vanilla_rnn
RNN cell.
Definition: dnnl_types.h:914
dnnl::query::weights_md
@ weights_md
weights memory descriptor desc
DNNL_ARG_DIFF_SRC_ITER
#define DNNL_ARG_DIFF_SRC_ITER
A special mnemonic for gradient (diff) of RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1973
dnnl::cpu_isa::avx2
@ avx2
Intel Advanced Vector Extensions 2 (Intel AVX2)
dnnl_primitive_desc_get_attr
dnnl_status_t DNNL_API dnnl_primitive_desc_get_attr(const_dnnl_primitive_desc_t primitive_desc, const_dnnl_primitive_attr_t *attr)
Returns a constant reference to the attributes of a primitive descriptor.
dnnl_unidirectional
@ dnnl_unidirectional
Alias for dnnl_unidirectional_left2right.
Definition: dnnl_types.h:1573
dnnl::primitive::kind::inner_product
@ inner_product
An inner product primitive.
DNNL_ARG_DIFF_DST_ITER
#define DNNL_ARG_DIFF_DST_ITER
A special mnemonic for gradient (diff) of RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1994
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:7970
dnnl_abdc
@ dnnl_abdc
permuted 4D tensor
Definition: dnnl_types.h:186
dnnl_eltwise_pow
@ dnnl_eltwise_pow
Eltwise: pow.
Definition: dnnl_types.h:884
dnnl::set_primitive_cache_capacity
void set_primitive_cache_capacity(int capacity)
Sets a number of primitives that can be held in the primitive cache at a time.
Definition: dnnl.hpp:9969
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7965
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4517
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9553
dnnl::lstm_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8419
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6665
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9603
dnnl::cpu_isa::avx512_core_amx
@ avx512_core_amx
Intel AVX-512, Intel DL Boost and bfloat16 support and Intel AMX with 8-bit integer and bfloat16 supp...
dnnl::resampling_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &diff_dst_desc)
Constructs a descriptor for a resampling backward propagation primitive using source and destination ...
Definition: dnnl.hpp:9760
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2052
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9294
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:7218
dnnl_aBcd4b
@ dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:248
dnnl::convert_to_c
dnnl_engine_kind_t convert_to_c(engine::kind akind)
Converts engine kind enum value from C++ API to C API type.
Definition: dnnl.hpp:968
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:6931
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6505
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:9857
dnnl::primitive::kind::layer_normalization
@ layer_normalization
A layer normalization primitive.
dnnl_lstm_forward_desc_init_v2
dnnl_status_t DNNL_API dnnl_lstm_forward_desc_init_v2(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole) forward propagation primitive.
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::rnn_primitive_desc_base::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source recurrent cell state memory descriptor.
Definition: dnnl.hpp:7106
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1278
dnnl_query_matmul_d
@ dnnl_query_matmul_d
matrix multiplication (matmul) descriptor
Definition: dnnl_types.h:2135
dnnl::memory::unmap_data
void unmap_data(void *mapped_ptr) const
Unmaps a memory object and writes back any changes made to the previously mapped memory buffer.
Definition: dnnl.hpp:2160
DNNL_ARG_DIFF_DST_LAYER
#define DNNL_ARG_DIFF_DST_LAYER
A special mnemonic for gradient (diff) of RNN output vector.
Definition: dnnl_types.h:1988
dnnl::gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8599
DNNL_ARG_SRC_LAYER
#define DNNL_ARG_SRC_LAYER
A special mnemonic for RNN input vector.
Definition: dnnl_types.h:1876
dnnl_primitive_desc_t
struct dnnl_primitive_desc * dnnl_primitive_desc_t
A primitive descriptor handle.
Definition: dnnl_types.h:1780
dnnl::stream_attr::stream_attr
stream_attr(engine::kind akind)
Constructs stream attributes for a stream that runs on an engine of a particular kind.
Definition: dnnl.hpp:1008
dnnl_query_binary_d
@ dnnl_query_binary_d
binary descriptor
Definition: dnnl_types.h:2133
dnnl_lbr_gru
@ dnnl_lbr_gru
GRU cell with linear before reset.
Definition: dnnl_types.h:926
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:775
dnnl::resampling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9734
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:190
dnnl::lrn_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &data_desc, memory::dim local_size, float alpha, float beta, float k=1.f)
Constructs a descriptor for a LRN forward propagation primitive.
Definition: dnnl.hpp:5046
dnnl::convolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const convolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4264
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:588
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:6829
dnnl_use_global_stats
@ dnnl_use_global_stats
Use global statistics.
Definition: dnnl_types.h:964
dnnl::query::binary_d
@ binary_d
binary descriptor
dnnl::query::undef
@ undef
no query
dnnl::convolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution forward propagation primitive with bias.
Definition: dnnl.hpp:3635
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9587
dnnl_lrn_across_channels
@ dnnl_lrn_across_channels
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:910
dnnl::batch_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6350
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:6186
dnnl_concat
@ dnnl_concat
A (out-of-place) concat primitive.
Definition: dnnl_types.h:796
dnnl::inner_product_forward
Inner product forward propagation primitive.
Definition: dnnl.hpp:6704
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4736
dnnl_query_diff_dst_md
@ dnnl_query_diff_dst_md
destination grad. memory desc
Definition: dnnl_types.h:2145
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:5987
dnnl_aBcdef16b
@ dnnl_aBcdef16b
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:339
dnnl_layer_normalization
@ dnnl_layer_normalization
A layer normalization primitive.
Definition: dnnl_types.h:814
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:8721
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4564
dnnl_set_max_cpu_isa
dnnl_status_t DNNL_API dnnl_set_max_cpu_isa(dnnl_cpu_isa_t isa)
Sets the maximal ISA the library can dispatch to on the CPU.
dnnl::lbr_gru_backward::primitive_desc::diff_dst_layer_desc
memory::desc diff_dst_layer_desc() const
Returns diff destination layer memory descriptor.
Definition: dnnl.hpp:9203
dnnl_memory_desc_t::data_type
dnnl_data_type_t data_type
Data type of the tensor elements.
Definition: dnnl_types.h:1160
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:6969
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const pooling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5408
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:7633
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:9139
DNNL_ARG_BIAS
#define DNNL_ARG_BIAS
Bias tensor argument.
Definition: dnnl_types.h:1947
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:4986
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:4739
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:7915
dnnl::convolution_forward::convolution_forward
convolution_forward()=default
Default constructor. Produces an empty object.
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6459
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5110
dnnl::stream::stream
stream(const engine &aengine, flags aflags=flags::default_flags, const stream_attr &attr=stream_attr())
Constructs a stream for the specified engine and with behavior controlled by the specified flags.
Definition: dnnl.hpp:1069
dnnl::algorithm::eltwise_logistic
@ eltwise_logistic
Elementwise: logistic.
dnnl_cpu_isa_all
@ dnnl_cpu_isa_all
Any ISA (excepting those listed as initial support)
Definition: dnnl_types.h:2246
dnnl_reorder_primitive_desc_create
dnnl_status_t DNNL_API dnnl_reorder_primitive_desc_create(dnnl_primitive_desc_t *reorder_primitive_desc, const dnnl_memory_desc_t *src_desc, dnnl_engine_t src_engine, const dnnl_memory_desc_t *dst_desc, dnnl_engine_t dst_engine, const_dnnl_primitive_attr_t attr)
Creates a primitive descriptor for a reorder primitive.
dnnl::lstm_forward::primitive_desc::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:7949
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:2120
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7589
dnnl::shuffle_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const shuffle_forward::primitive_desc &hint_fwd_pd, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9347
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:2699
dnnl::convert_to_c
dnnl_primitive_kind_t convert_to_c(primitive::kind akind)
Converts primitive kind enum value from C++ API to C API type.
Definition: dnnl.hpp:365
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3800
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:7118
dnnl_dim_t
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:1034
dnnl_memory_get_memory_desc
dnnl_status_t DNNL_API dnnl_memory_get_memory_desc(const_dnnl_memory_t memory, const dnnl_memory_desc_t **memory_desc)
Returns the memory descriptor for a memory object.
dnnl::layer_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const layer_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6613
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:8803
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:5564
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_post_ops_append_dw_k3s1p1
dnnl_status_t DNNL_API dnnl_post_ops_append_dw_k3s1p1(dnnl_post_ops_t post_ops, dnnl_data_type_t weights_data_type, dnnl_data_type_t bias_data_type, dnnl_data_type_t dst_data_type, dnnl_dim_t count, int mask, const float *scales)
Appends a depthwise post-op convolution with stride 1.
dnnl::softmax_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, int softmax_axis)
Constructs a descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5709
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:7594
dnnl::memory::desc::desc
desc(const dims &adims, data_type adata_type, const dims &strides, bool allow_empty=false)
Constructs a memory descriptor by strides.
Definition: dnnl.hpp:1818
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6542
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8787
dnnl_u8
@ dnnl_u8
8-bit unsigned integer.
Definition: dnnl_types.h:76
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const logsoftmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6050
dnnl_query_workspace_md
@ dnnl_query_workspace_md
workspace memory desc
Definition: dnnl_types.h:2146
dnnl::lstm_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7921
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9579
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5664
dnnl_format_tag_last
@ dnnl_format_tag_last
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:410
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:9743
dnnl_query_deconvolution_d
@ dnnl_query_deconvolution_d
deconvolution descriptor
Definition: dnnl_types.h:2122
DNNL_ARG_DST_ITER
#define DNNL_ARG_DST_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1908
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7904
dnnl_logsoftmax
@ dnnl_logsoftmax
A logsoftmax primitive.
Definition: dnnl_types.h:824
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:3841
dnnl::lbr_gru_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8891
dnnl_format_tag_any
@ dnnl_format_tag_any
Undefined memory format tag.
Definition: dnnl_types.h:169
dnnl::engine::kind::gpu
@ gpu
GPU engine.
DNNL_ARG_DIFF_WEIGHTS_PROJECTION
#define DNNL_ARG_DIFF_WEIGHTS_PROJECTION
A special mnemonic for diff of RNN weights applied to the projection weights.
Definition: dnnl_types.h:2030
dnnl_deconvolution_direct
@ dnnl_deconvolution_direct
Direct deconvolution.
Definition: dnnl_types.h:845
dnnl::primitive_desc_base::primitive_desc_base
primitive_desc_base(dnnl_primitive_desc_t pd, dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
Constructs a primitive descriptor base object from a clone of a C API primitive descriptor after veri...
Definition: dnnl.hpp:3107
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:7158
dnnl::handle::handle
handle(T t, bool weak=false)
Constructs a handle wrapper object from a C API handle.
Definition: dnnl.hpp:176
dnnl_memory_desc_equal
int DNNL_API dnnl_memory_desc_equal(const dnnl_memory_desc_t *lhs, const dnnl_memory_desc_t *rhs)
Compares two memory descriptors.
dnnl_reorder
@ dnnl_reorder
A reorder primitive.
Definition: dnnl_types.h:792
dnnl::matmul::primitive_desc
Primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9527
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6145
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9574
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:1420
dnnl_stream_default_flags
@ dnnl_stream_default_flags
Default stream configuration.
Definition: dnnl_types.h:2171
dnnl::cpu_isa::avx512_mic
@ avx512_mic
Intel Advanced Vector Extensions 512 (Intel AVX-512) subset for Intel Xeon Phi processors x200 Series...
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution weights update primitive.
Definition: dnnl.hpp:4953
DNNL_ARG_WEIGHTS_LAYER
#define DNNL_ARG_WEIGHTS_LAYER
A special mnemonic for RNN weights applied to the layer input.
Definition: dnnl_types.h:1926
dnnl_shuffle_desc_t
A descriptor of a shuffle operation.
Definition: dnnl_types.h:1277
dnnl::logsoftmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const logsoftmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6030
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8378
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution weights gradient primitive with bias.
Definition: dnnl.hpp:4161
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6273
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5974
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:3334
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:779
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:192
dnnl_version_t
Structure containing version information as per Semantic Versioning
Definition: dnnl_types.h:2214
dnnl_batch_normalization_desc_t
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1451
dnnl::query::memory_consumption_s64
@ memory_consumption_s64
memory required for scratchpad (bytes)
dnnl::primitive_desc_base::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:3009
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3003
dnnl_eltwise_exp_use_dst_for_bwd
@ dnnl_eltwise_exp_use_dst_for_bwd
Eltwise: exp (dst for backward)
Definition: dnnl_types.h:900
dnnl::layer_normalization_backward
Layer normalization backward propagation primitive.
Definition: dnnl.hpp:6540
dnnl::scratchpad_mode::library
@ library
The library manages the scratchpad allocation according to the policy specified by the DNNL_ENABLE_CO...
dnnl::resampling_forward::resampling_forward
resampling_forward()=default
Default constructor. Produces an empty object.
dnnl::gru_forward::primitive_desc
Primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8549
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:6063
dnnl::cpu_isa::avx512_core
@ avx512_core
Intel AVX-512 subset for Intel Xeon Scalable processor family and Intel Core processor family.
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:7653
dnnl::algorithm::eltwise_swish
@ eltwise_swish
Elementwise: swish ( )
dnnl::softmax_forward::softmax_forward
softmax_forward()=default
Default constructor. Produces an empty object.
dnnl_post_ops_append_sum_v2
dnnl_status_t DNNL_API dnnl_post_ops_append_sum_v2(dnnl_post_ops_t post_ops, float scale, dnnl_data_type_t data_type)
Appends an accumulation v2 (sum) to post-ops.
dnnl_eltwise_desc_t
A descriptor of a element-wise operation.
Definition: dnnl_types.h:1299
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:2965
dnnl_aBcd16b
@ dnnl_aBcd16b
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:240
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:936
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:7152
dnnl::batch_normalization_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const batch_normalization_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6290
dnnl::scratchpad_mode::user
@ user
The user manages the scratchpad allocation by querying and providing the scratchpad memory to primiti...
dnnl::layer_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6499
dnnl_rnn
@ dnnl_rnn
A rnn primitive.
Definition: dnnl_types.h:818
dnnl::vanilla_rnn_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7423
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4285
dnnl::handle::operator=
handle< T, traits > & operator=(handle< T, traits > &&)=default
Move assignment operator.
dnnl::memory::data_type::undef
@ undef
Undefined data type (used for empty memory descriptors).
dnnl::convolution_backward_weights::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4290
dnnl_aBc32b
@ dnnl_aBc32b
3D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:218
dnnl::lstm_backward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8393
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:9907
dnnl::layer_normalization_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization forward propagation primitive.
Definition: dnnl.hpp:6411
dnnl::memory::desc::reshape
desc reshape(const dims &adims, bool allow_empty=false) const
Constructs a memory descriptor by reshaping an existing one.
Definition: dnnl.hpp:1904
dnnl_query_num_of_outputs_s32
@ dnnl_query_num_of_outputs_s32
number of outputs expected
Definition: dnnl_types.h:2100
dnnl::binary::primitive_desc::src1_desc
memory::desc src1_desc() const
Returns the memory descriptor for source #1.
Definition: dnnl.hpp:9465
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:5235
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel Streaming SIMD Extensions 4.1 (Intel SSE4.1)
Definition: dnnl_types.h:2249
dnnl_aBCd2b4c2b
@ dnnl_aBCd2b4c2b
4D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:285
dnnl_engine_get_ocl_device
dnnl_status_t DNNL_API dnnl_engine_get_ocl_device(dnnl_engine_t engine, cl_device_id *device)
Returns the OpenCL device associated with an engine.
dnnl::sgemm
status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N, dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda, const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc)
Performs single-precision matrix-matrix multiply.
Definition: dnnl.hpp:9984
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:2888
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:9874
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9007
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:6656
dnnl_abdec
@ dnnl_abdec
permuted 5D tensor
Definition: dnnl_types.h:187
dnnl_cpu_isa_avx2
@ dnnl_cpu_isa_avx2
Intel Advanced Vector Extensions 2 (Intel AVX2)
Definition: dnnl_types.h:2255
dnnl_cpu_isa_avx512_core_vnni
@ dnnl_cpu_isa_avx512_core_vnni
Intel AVX-512 and Intel Deep Learning Boost (Intel DL Boost) support for Intel Xeon Scalable processo...
Definition: dnnl_types.h:2272
dnnl_post_ops_get_params_dw_k3s1p1
dnnl_status_t DNNL_API dnnl_post_ops_get_params_dw_k3s1p1(const_dnnl_post_ops_t post_ops, int index, dnnl_data_type_t *weights_data_type, dnnl_data_type_t *bias_data_type, dnnl_data_type_t *dst_data_type, dnnl_dim_t *count, int *mask, const float **scales)
Returns the parameters of an depthwise post-op with stride 1.
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(int concat_dimension, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for an out-of-place concatenation primitive.
Definition: dnnl.hpp:3377
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:3872
dnnl_memory_desc_t::ndims
int ndims
Number of dimensions.
Definition: dnnl_types.h:1142
dnnl_aBc8b
@ dnnl_aBc8b
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:230
dnnl::rnn_primitive_desc_base::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7144
dnnl::handle::get
T get(bool allow_empty=false) const
Returns the underlying C API handle.
Definition: dnnl.hpp:192
dnnl::primitive_desc_base::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:2985
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:1484
dnnl::get_effective_cpu_isa
cpu_isa get_effective_cpu_isa()
Gets the maximal ISA the library can dispatch to on the CPU.
Definition: dnnl.hpp:9947
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:3188
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:9365
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:9391
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5125
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution weights gradient primitive without bias.
Definition: dnnl.hpp:4825
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4573
dnnl_stream_create_ocl
dnnl_status_t DNNL_API dnnl_stream_create_ocl(dnnl_stream_t *stream, dnnl_engine_t engine, cl_command_queue queue)
Creates an execution stream for a given engine associated with an OpenCL command queue.
dnnl::inner_product_backward_data::desc
Descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6831
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:882
dnnl::layer_normalization_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::stream_attr::stream_attr
stream_attr()=default
Constructs default (empty) stream attributes.
dnnl_engine_get_count
size_t DNNL_API dnnl_engine_get_count(dnnl_engine_kind_t kind)
Returns the number of engines of a particular kind.
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9170
dnnl_engine_create
dnnl_status_t DNNL_API dnnl_engine_create(dnnl_engine_t *engine, dnnl_engine_kind_t kind, size_t index)
Creates an engine.
dnnl_eltwise_logistic_use_dst_for_bwd
@ dnnl_eltwise_logistic_use_dst_for_bwd
Eltwise: logistic (dst for backward)
Definition: dnnl_types.h:898
dnnl::error
oneDNN exception class.
Definition: dnnl.hpp:91
dnnl::layer_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6502
dnnl::resampling_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &dst_desc)
Constructs a descriptor for a resampling forward propagation primitive using source and destination m...
Definition: dnnl.hpp:9623
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:904
dnnl::cpu_isa::avx512_core_bf16
@ avx512_core_bf16
Intel AVX-512, Intel DL Boost and bfloat16 support for Intel Xeon Scalable processor family and Intel...
dnnl::layer_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6508
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:8818
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:1973
dnnl_set_jit_profiling_jitdumpdir
dnnl_status_t DNNL_API dnnl_set_jit_profiling_jitdumpdir(const char *dir)
Sets JIT dump output path.
dnnl::matmul::desc::desc
desc(const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc)
Constructs a descriptor for a matmul primitive.
Definition: dnnl.hpp:9517
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1186
dnnl::deconvolution_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4715
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:7391
dnnl::concat::primitive_desc::primitive_desc
primitive_desc(const memory::desc &dst, int concat_dimension, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for an out-of-place concatenation primitive.
Definition: dnnl.hpp:3350
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:7045
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8411
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:4936
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5311
dnnl_deconvolution
@ dnnl_deconvolution
A deconvolution primitive.
Definition: dnnl_types.h:802
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:2595
dnnl_aBcde4b
@ dnnl_aBcde4b
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:300
dnnl::lrn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5087
dnnl_memory_map_data
dnnl_status_t DNNL_API dnnl_memory_map_data(const_dnnl_memory_t memory, void **mapped_ptr)
Maps a memory object and returns a host-side pointer to a memory buffer with a copy of its contents.
dnnl::prop_kind::forward
@ forward
Forward data propagation, alias for dnnl::prop_kind::forward_training.
dnnl::algorithm::eltwise_relu
@ eltwise_relu
Elementwise: rectified linear unit (ReLU)
dnnl::layer_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6653
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:8459
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:5347
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4733
dnnl_stream_out_of_order
@ dnnl_stream_out_of_order
Out-of-order execution.
Definition: dnnl_types.h:2169
dnnl::inner_product_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6810
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:3518
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:8485
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:9468
dnnl::handle::reset
void reset(T t, bool weak=false)
Resets the handle wrapper objects to wrap a new C API handle.
Definition: dnnl.hpp:183
dnnl::softmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5770
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product weights update primitive.
Definition: dnnl.hpp:6999
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:9193
dnnl::rnn_primitive_desc_base::diff_weights_projection_desc
memory::desc diff_weights_projection_desc() const
Returns diff weights projection memory descriptor.
Definition: dnnl.hpp:7203
dnnl_convolution
@ dnnl_convolution
A convolution primitive.
Definition: dnnl_types.h:800
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:7648
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:1047
dnnl::rnn_primitive_desc_base::diff_src_iter_c_desc
memory::desc diff_src_iter_c_desc() const
Returns diff source recurrent cell state memory descriptor.
Definition: dnnl.hpp:7178
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:6358
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:8365
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:5440
dnnl_stream_get_ocl_command_queue
dnnl_status_t DNNL_API dnnl_stream_get_ocl_command_queue(dnnl_stream_t stream, cl_command_queue *queue)
Returns the OpenCL command queue associated with an execution stream.
dnnl::shuffle_backward::desc::desc
desc(const memory::desc &diff_data_desc, int axis, int group_size)
Constructs a descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9320
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:5212
dnnl::binary::desc::desc
desc()=default
Default constructor. Produces an empty object.
dnnl::resampling_backward::resampling_backward
resampling_backward()=default
Default constructor. Produces an empty object.
dnnl::eltwise_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:5667
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6668
dnnl::rnn_direction::bidirectional_sum
@ bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution weights gradient primitive with bias.
Definition: dnnl.hpp:4869
dnnl_primitive_attr
An opaque structure for primitive descriptor attributes.
dnnl_set_primitive_cache_capacity
dnnl_status_t DNNL_API dnnl_set_primitive_cache_capacity(int capacity)
Sets a number of primitives that can be held in the primitive cache at a time.
dnnl::inner_product_backward_weights::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns the diff bias memory descriptor.
Definition: dnnl.hpp:7048
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::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution forward propagation primitive with bias.
Definition: dnnl.hpp:4448
dnnl_lrn
@ dnnl_lrn
An LRN primitive.
Definition: dnnl_types.h:810
dnnl::vanilla_rnn_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:7643
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:2140
dnnl_primitive_attr_set_rnn_data_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_data_qparams(dnnl_primitive_attr_t attr, const float scale, const float shift)
Set quantization scale and shift parameters for RNN data tensors.
dnnl::rnn_primitive_desc_base::rnn_primitive_desc_base
rnn_primitive_desc_base()=default
Default constructor. Produces an empty object.
dnnl::convolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for dilated convolution backward propagation primitive.
Definition: dnnl.hpp:3946
dnnl::primitive::kind::convolution
@ convolution
A convolution primitive.
dnnl_primitive_attr_get_post_ops
dnnl_status_t DNNL_API dnnl_primitive_attr_get_post_ops(const_dnnl_primitive_attr_t attr, const_dnnl_post_ops_t *post_ops)
Returns primitive attributes post-ops.
dnnl::post_ops::get_params_sum
void get_params_sum(int index, float &scale, memory::data_type &data_type) const
Returns the parameters of an accumulation (sum) post-op.
Definition: dnnl.hpp:2326
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:9188
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:8813
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6078
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:2565
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5460
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9235
dnnl::reorder::execute
void execute(const stream &astream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:3305
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9291
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3403
dnnl_scratchpad_mode_t
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1791
dnnl::algorithm::eltwise_pow
@ eltwise_pow
Elementwise: pow.
dnnl::primitive_attr
Primitive attributes.
Definition: dnnl.hpp:2549
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:5779
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9173
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::inner_product_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product weights update primitive.
Definition: dnnl.hpp:7019
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6813
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9149
dnnl_stream_attr_destroy
dnnl_status_t DNNL_API dnnl_stream_attr_destroy(dnnl_stream_attr_t attr)
Destroys execution stream attributes.
dnnl_data_type_undef
@ dnnl_data_type_undef
Undefined data type, used for empty memory descriptors.
Definition: dnnl_types.h:64
dnnl::shuffle_backward::shuffle_backward
shuffle_backward(const primitive_desc &pd)
Constructs a shuffle backward propagation primitive.
Definition: dnnl.hpp:9377
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6857
dnnl_get_primitive_cache_capacity
dnnl_status_t DNNL_API dnnl_get_primitive_cache_capacity(int *capacity)
Returns the number of primitives that can be held in the primitive cache at the same time.
dnnl_query_engine
@ dnnl_query_engine
execution engine
Definition: dnnl_types.h:2096
dnnl_dilated_deconvolution_backward_data_desc_init
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_backward_data_desc_init(dnnl_deconvolution_desc_t *deconv_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *diff_dst_desc, const dnnl_dims_t strides, const dnnl_dims_t dilates, const dnnl_dims_t padding_l, const dnnl_dims_t padding_r)
Initializes a descriptor for a dilated deconvolution backward propagation primitive.
DNNL_ARG_DIFF_SRC_LAYER
#define DNNL_ARG_DIFF_SRC_LAYER
A special mnemonic for gradient (diff) of RNN input vector.
Definition: dnnl_types.h:1967
dnnl_query_softmax_d
@ dnnl_query_softmax_d
softmax descriptor
Definition: dnnl_types.h:2125
dnnl_resampling_desc_t
A descriptor of resampling operation.
Definition: dnnl_types.h:1707
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:8990
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3875
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl_eltwise_elu_use_dst_for_bwd
@ dnnl_eltwise_elu_use_dst_for_bwd
Eltwise: exponential linear unit (elu) (dst for backward)
Definition: dnnl_types.h:894
dnnl::shuffle_backward::desc
Descriptor for a shuffle primitive backward propagation primitive.
Definition: dnnl.hpp:9310
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5767
dnnl::query::softmax_d
@ softmax_d
softmax descriptor
dnnl_cpu
@ dnnl_cpu
CPU engine.
Definition: dnnl_types.h:1741
dnnl::memory
Memory object.
Definition: dnnl.hpp:1184
dnnl_engine_get_ocl_context
dnnl_status_t DNNL_API dnnl_engine_get_ocl_context(dnnl_engine_t engine, cl_context *context)
Returns the OpenCL context associated with an engine.
dnnl_post_ops
An opaque structure for a chain of post operations.
dnnl::rnn_primitive_desc_base::diff_dst_iter_desc
memory::desc diff_dst_iter_desc() const
Returns diff destination iteration memory descriptor.
Definition: dnnl.hpp:7226
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:2669
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution weights gradient primitive with bias.
Definition: dnnl.hpp:4783
dnnl_query_undef
@ dnnl_query_undef
no query
Definition: dnnl_types.h:2094
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:878
dnnl::error::wrap_c_api
static void wrap_c_api(dnnl_status_t status, const char *message)
A convenience function for wrapping calls to C API functions.
Definition: dnnl.hpp:110
dnnl::eltwise_backward::eltwise_backward
eltwise_backward(const primitive_desc &pd)
Constructs an eltwise backward propagation primitive.
Definition: dnnl.hpp:5679
dnnl::binary::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9446
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8577
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:2974
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8406
dnnl::prop_kind::undef
@ undef
Undefined propagation kind.
dnnl::inner_product_forward::inner_product_forward
inner_product_forward()=default
Default constructor. Produces an empty object.
dnnl::batch_normalization_backward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6353
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::primitive::primitive
primitive(const_dnnl_primitive_desc_t c_pd)
Constructs a primitive from a C API primitive descriptor.
dnnl::set_verbose
status set_verbose(int level)
Configures verbose output to stdout.
Definition: dnnl.hpp:9892
DNNL_ARG_DIFF_SRC_ITER_C
#define DNNL_ARG_DIFF_SRC_ITER_C
A special mnemonic for gradient (diff) of RNN input recurrent cell state vector.
Definition: dnnl_types.h:1979
dnnl::batch_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6196
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6760
dnnl::handle
oneDNN C API handle wrapper class.
Definition: dnnl.hpp:143
dnnl::lrn_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &data_desc, const memory::desc &diff_data_desc, memory::dim local_size, float alpha, float beta, float k=1.f)
Constructs a descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5140
dnnl::pooling_backward::pooling_backward
pooling_backward()=default
Default constructor. Produces an empty object.
dnnl::shuffle_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const primitive_attr &attr=primitive_attr(), bool allow_empty=false)
Constructs a primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9273
dnnl::lstm_backward::primitive_desc::diff_weights_peephole_desc
memory::desc diff_weights_peephole_desc() const
Returns diff weights peephole memory descriptor.
Definition: dnnl.hpp:8449
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:2929
dnnl::threadpool_iface
Abstract threadpool interface.
Definition: dnnl_threadpool_iface.hpp:41
dnnl::algorithm::convolution_auto
@ convolution_auto
Convolution algorithm that is chosen to be either direct or Winograd automatically.
dnnl_primitive_destroy
dnnl_status_t DNNL_API dnnl_primitive_destroy(dnnl_primitive_t primitive)
Destroys a primitive.
dnnl::sum::primitive_desc::primitive_desc
primitive_desc(const memory::desc &dst, const std::vector< float > &scales, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3441
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7934
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:7032
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6115
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:9455
dnnl_memory_create
dnnl_status_t DNNL_API dnnl_memory_create(dnnl_memory_t *memory, const dnnl_memory_desc_t *memory_desc, dnnl_engine_t engine, void *handle)
Creates a memory object.
dnnl_eltwise_gelu_erf
@ dnnl_eltwise_gelu_erf
Eltwise: erf-based gelu.
Definition: dnnl_types.h:886
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:7597
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:9152
dnnl::deconvolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution weights gradient primitive without bias.
Definition: dnnl.hpp:4915
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7092
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:4037
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const resampling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9827
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6339
dnnl_shuffle_forward_desc_init
dnnl_status_t DNNL_API dnnl_shuffle_forward_desc_init(dnnl_shuffle_desc_t *shuffle_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int axis, dnnl_dim_t group_size)
Initializes a descriptor for shuffle forward propagation primitive.
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4547
dnnl::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8853
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9848
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6367
dnnl_memory_desc_t
Memory descriptor.
Definition: dnnl_types.h:1140
dnnl_backward_bias
@ dnnl_backward_bias
Backward bias propagation.
Definition: dnnl_types.h:783
dnnl::vanilla_rnn_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7410
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:7929
dnnl::memory::memory
memory(const desc &md, const engine &aengine, void *handle)
Constructs a memory object.
Definition: dnnl.hpp:2034
dnnl_matmul
@ dnnl_matmul
A matrix multiplication primitive.
Definition: dnnl_types.h:826
dnnl::rnn_primitive_desc_base::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:7130
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:2651
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:4307
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const softmax_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5846
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5983
dnnl::handle::operator!=
bool operator!=(const handle &other) const
Inequality operator.
Definition: dnnl.hpp:227
dnnl::convolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:3859
dnnl::logsoftmax_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, int logsoftmax_axis)
Constructs a descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5909
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2244
DNNL_ARG_SRC_ITER
#define DNNL_ARG_SRC_ITER
A special mnemonic for RNN input recurrent hidden state vector.
Definition: dnnl_types.h:1885
dnnl::inner_product_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:6816
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:2000
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5349
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9258
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution weights gradient primitive without bias.
Definition: dnnl.hpp:4116
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution weights gradient primitive with bias.
Definition: dnnl.hpp:4073
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward()=default
Default constructor. Produces an empty object.
dnnl::inner_product_backward_data::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const inner_product_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:6894
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4570
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7282
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:9395
dnnl::gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a GRU forward propagation primitive.
Definition: dnnl.hpp:8562
dnnl_nChw4c
@ dnnl_nChw4c
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:547
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:8424
dnnl::lbr_gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:9162
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7037
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:3072
dnnl_bacd
@ dnnl_bacd
permuted 4D tensor
Definition: dnnl_types.h:195
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:6596
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:3030
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:544
dnnl::shuffle_backward::primitive_desc
Primitive descriptor for a shuffle backward propagation primitive.
Definition: dnnl.hpp:9329
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:4678
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:2316
dnnl_query_eltwise_d
@ dnnl_query_eltwise_d
eltwise descriptor
Definition: dnnl_types.h:2124
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:4296
dnnl::algorithm::pooling_max
@ pooling_max
Max pooling.
dnnl::engine::engine
engine(kind akind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:873
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9393
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4754
dnnl_binary_max
@ dnnl_binary_max
Binary max.
Definition: dnnl_types.h:932
dnnl::concat::primitive_desc::src_desc
memory::desc src_desc(int idx=0) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3400
dnnl_cba
@ dnnl_cba
permuted 3D tensor
Definition: dnnl_types.h:200
dnnl::rnn_primitive_desc_base::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7138
dnnl_lrn_backward_desc_init
dnnl_status_t DNNL_API dnnl_lrn_backward_desc_init(dnnl_lrn_desc_t *lrn_desc, dnnl_alg_kind_t alg_kind, const dnnl_memory_desc_t *diff_data_desc, const dnnl_memory_desc_t *data_desc, dnnl_dim_t local_size, float alpha, float beta, float k)
Initializes a descriptor for LRN backward propagation primitive.
dnnl::handle_traits
A class that provides the destructor for a oneDNN C API handle.
Definition: dnnl.hpp:127
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc(int idx) const
Returns a weights memory descriptor.
Definition: dnnl.hpp:2947
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:9178
dnnl_query_num_of_inputs_s32
@ dnnl_query_num_of_inputs_s32
number of inputs expected
Definition: dnnl_types.h:2099
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:1189
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5809
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4586
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6202
dnnl_acbde
@ dnnl_acbde
permuted 5D tensor
Definition: dnnl_types.h:189
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:8464
dnnl_post_ops_get_params_sum
dnnl_status_t DNNL_API dnnl_post_ops_get_params_sum(const_dnnl_post_ops_t post_ops, int index, float *scale)
Returns the parameters of an accumulation (sum) post-op.
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5750
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:2762
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7397
dnnl_dcab
@ dnnl_dcab
permuted 4D tensor
Definition: dnnl_types.h:202
dnnl::inner_product_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6774
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8615
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:1766
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3850
dnnl::primitive
Base class for all computational primitives.
Definition: dnnl.hpp:276
dnnl::lstm_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7889
dnnl_alg_kind_t
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:836
dnnl_deconvolution_winograd
@ dnnl_deconvolution_winograd
Winograd deconvolution.
Definition: dnnl_types.h:847
const_dnnl_op_desc_t
const void * const_dnnl_op_desc_t
A pointer to any of the operation descriptors (constant variant).
Definition: dnnl_types.h:1212
dnnl_cpu_isa_avx512_mic
@ dnnl_cpu_isa_avx512_mic
Intel Advanced Vector Extensions 512 (Intel AVX-512) subset for Intel Xeon Phi processors x200 Series...
Definition: dnnl_types.h:2259
dnnl::query::lrn_d
@ lrn_d
lrn descriptor
dnnl::layer_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6659
dnnl::pooling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a pooling forward propagation primitive.
Definition: dnnl.hpp:5296
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:2060
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1222
dnnl_eltwise_exp
@ dnnl_eltwise_exp
Eltwise: exponent.
Definition: dnnl_types.h:869
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:3868
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:1992
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:9233
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:9001
dnnl::resampling_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9714
dnnl_primitive_attr_set_zero_points
dnnl_status_t DNNL_API dnnl_primitive_attr_set_zero_points(dnnl_primitive_attr_t attr, int arg, dnnl_dim_t count, int mask, const int32_t *zero_points)
Sets primitive attributes zero points for primitive operations for a given memory argument.
dnnl::matmul::matmul
matmul()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_forward::lbr_gru_forward
lbr_gru_forward()=default
Default constructor. Produces an empty object.
dnnl_aBCdef2b4c2b
@ dnnl_aBCdef2b4c2b
6D tensor blocked by 3rd dimension with block size 4
Definition: dnnl_types.h:347
dnnl_lstm_forward_desc_init_v3
dnnl_status_t DNNL_API dnnl_lstm_forward_desc_init_v3(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *src_iter_c_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *weights_peephole_desc, const dnnl_memory_desc_t *weights_projection_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, const dnnl_memory_desc_t *dst_iter_c_desc, unsigned flags)
Initializes a descriptor for an LSTM (with or without peephole and with or without recurrent projecti...
dnnl::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:3602
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:9503
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:1986
dnnl_bidirectional_sum
@ dnnl_bidirectional_sum
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1571
dnnl::lstm_forward::lstm_forward
lstm_forward(const primitive_desc &pd)
Constructs an LSTM forward propagation primitive.
Definition: dnnl.hpp:7981
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:8444
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7954
dnnl_eltwise_linear
@ dnnl_eltwise_linear
Eltwise: linear.
Definition: dnnl_types.h:861
dnnl_nCw16c
@ dnnl_nCw16c
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:556
dnnl
oneDNN namespace
Definition: dnnl.hpp:81
dnnl_vanilla_gru
@ dnnl_vanilla_gru
GRU cell.
Definition: dnnl_types.h:918
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:8979
dnnl::query::shuffle_d
@ shuffle_d
shuffle descriptor
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:9569
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4043
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:4588
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8982
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5547
dnnl_binary_desc_t
A descriptor of a binary operation.
Definition: dnnl_types.h:1659
dnnl::pooling_forward::pooling_forward
pooling_forward()=default
Default constructor. Produces an empty object.
dnnl::algorithm::eltwise_relu_use_dst_for_bwd
@ eltwise_relu_use_dst_for_bwd
Elementwise: rectified linar unit (ReLU) (dst for backward)
dnnl::lbr_gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:9157
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:3268
dnnl::primitive::kind::batch_normalization
@ batch_normalization
A batch normalization primitive.
dnnl_primitive_attr_clone
dnnl_status_t DNNL_API dnnl_primitive_attr_clone(dnnl_primitive_attr_t *attr, const_dnnl_primitive_attr_t existing_attr)
Clones primitive attributes.
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const vanilla_rnn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7551
dnnl::pooling_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const pooling_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5427
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:2070
dnnl_convolution_direct
@ dnnl_convolution_direct
Direct convolution.
Definition: dnnl_types.h:839
dnnl::convolution_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3814
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:3508
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:3411
dnnl_query_diff_src_md
@ dnnl_query_diff_src_md
source gradient memory desc
Definition: dnnl_types.h:2141
dnnl::post_ops::get_params_eltwise
void get_params_eltwise(int index, float &scale, algorithm &aalgorithm, float &alpha, float &beta) const
Returns parameters of an elementwise post-up.
Definition: dnnl.hpp:2362
dnnl::algorithm::eltwise_gelu
@ eltwise_gelu
Elementwise: gelu alias for dnnl::algorithm::eltwise_gelu_tanh.
dnnl::vanilla_rnn_forward
Vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7280
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9144
dnnl::lbr_gru_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a LBR GRU forward propagation primitive.
Definition: dnnl.hpp:8944
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:1093
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7664
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9368
dnnl::algorithm::vanilla_rnn
@ vanilla_rnn
RNN cell.
dnnl::eltwise_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &data_desc, float alpha=0, float beta=0)
Constructs a descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5504
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4582
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:9897
dnnl_forward_scoring
@ dnnl_forward_scoring
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:773
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:315
dnnl::reorder::reorder
reorder(const primitive_desc &pd)
Constructs a reorder primitive.
Definition: dnnl.hpp:3284
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:6801
dnnl::memory::desc::desc
desc(const dims &adims, data_type adata_type, format_tag aformat_tag, bool allow_empty=false)
Constructs a memory descriptor.
Definition: dnnl.hpp:1790
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:6844
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:2264
dnnl::primitive_desc::primitive_desc
primitive_desc(const_dnnl_op_desc_t desc, const primitive_attr *attr, const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor.
Definition: dnnl.hpp:3545
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8966
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:471
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3967
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8414
dnnl_prop_kind_undef
@ dnnl_prop_kind_undef
Undefined propagation type.
Definition: dnnl_types.h:764
dnnl_resampling_forward_desc_init
dnnl_status_t DNNL_API dnnl_resampling_forward_desc_init(dnnl_resampling_desc_t *resampling_desc, dnnl_prop_kind_t prop_kind, dnnl_alg_kind_t alg_kind, const float *factors, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *dst_desc)
Initializes a descriptor for a resampling forward propagation primitive.
dnnl::layer_normalization_backward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags)
Constructs a descriptor for layer normalization backward propagation primitive.
Definition: dnnl.hpp:6558
dnnl::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6333
dnnl::resampling_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::primitive::get_kind
kind get_kind() const
Returns the kind of the primitive.
Definition: dnnl.hpp:376
dnnl_matmul_desc_init
dnnl_status_t DNNL_API dnnl_matmul_desc_init(dnnl_matmul_desc_t *matmul_desc, const dnnl_memory_desc_t *src_desc, const dnnl_memory_desc_t *weights_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_desc)
Initializes a matrix multiplication descriptor.
dnnl::deconvolution_backward_weights::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns the diff bias memory descriptor.
Definition: dnnl.hpp:5002
dnnl_blocked
@ dnnl_blocked
A tensor in a generic format described by the stride and blocking values in each dimension.
Definition: dnnl_types.h:89
dnnl::softmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5734
dnnl::lstm_forward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &weights_peephole_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs a descriptor for an LSTM (with or without peephole) forward propagation primitive.
Definition: dnnl.hpp:7789
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:9183
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:2097
dnnl_unidirectional_left2right
@ dnnl_unidirectional_left2right
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1563
dnnl::query::time_estimate_f64
@ time_estimate_f64
runtime estimation (seconds), unimplemented
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:5237
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:3257
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5609
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5895
dnnl_eltwise_elu
@ dnnl_eltwise_elu
Eltwise: exponential linear unit (elu)
Definition: dnnl_types.h:853
dnnl::binary::primitive_desc::src0_desc
memory::desc src0_desc() const
Returns the memory descriptor for source #0.
Definition: dnnl.hpp:9462
dnnl::stream::flags::in_order
@ in_order
In-order execution.
dnnl::memory::map_data
T * map_data() const
Maps a memory object and returns a host-side pointer to a memory buffer with a copy of its contents.
Definition: dnnl.hpp:2144
dnnl::cpu_isa::avx512_mic_4ops
@ avx512_mic_4ops
Intel AVX-512 subset for Intel Xeon Phi processors 7235, 7285, 7295 Series.
dnnl::convolution_backward_data::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:4028
dnnl::status::out_of_memory
@ out_of_memory
The operation failed due to an out-of-memory condition.
dnnl::stream_attr::get_threadpool
threadpool_iface * get_threadpool()
Returns the threadpool attribute.
Definition: dnnl.hpp:1033
dnnl::binary::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::algorithm::eltwise_logistic_use_dst_for_bwd
@ eltwise_logistic_use_dst_for_bwd
Elementwise: logistic (dst for backward)
dnnl::batch_normalization_forward::batch_normalization_forward
batch_normalization_forward(const primitive_desc &pd)
Constructs a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6238
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:8429
dnnl::concat::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::algorithm::binary_min
@ binary_min
Binary min.
dnnl::shuffle_forward::shuffle_forward
shuffle_forward(const primitive_desc &pd)
Constructs a shuffle forward propagation primitive.
Definition: dnnl.hpp:9303
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:3497
dnnl::vanilla_rnn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const vanilla_rnn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7571
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:559
dnnl::primitive_attr::get_scratchpad_mode
scratchpad_mode get_scratchpad_mode() const
Returns the scratchpad mode.
Definition: dnnl.hpp:2569
dnnl_primitive_attr_set_rnn_weights_qparams
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_weights_qparams(dnnl_primitive_attr_t attr, dnnl_dim_t count, int mask, const float *scales)
Sets quantization scaling factors for RNN weights tensors.
dnnl_aBcde32b
@ dnnl_aBcde32b
5D tensor blocked by 2nd dimension with block size 32
Definition: dnnl_types.h:298
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:1773
dnnl::stream::flags::out_of_order
@ out_of_order
Out-of-order execution.
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights()=default
Default constructor. Produces an empty object.
dnnl_primitive_desc_destroy
dnnl_status_t DNNL_API dnnl_primitive_desc_destroy(dnnl_primitive_desc_t primitive_desc)
Destroys a primitive descriptor.
dnnl::post_ops::append_eltwise
void append_eltwise(float scale, algorithm aalgorithm, float alpha, float beta)
Appends an elementwise post-op.
Definition: dnnl.hpp:2348
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7380
dnnl_vanilla_lstm
@ dnnl_vanilla_lstm
LSTM cell.
Definition: dnnl_types.h:916
dnnl_any_engine
@ dnnl_any_engine
An unspecified engine.
Definition: dnnl_types.h:1739
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:7073
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:2553
dnnl_nCdhw4c
@ dnnl_nCdhw4c
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:535
dnnl::lrn_backward::primitive_desc
Primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5153
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:828
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7668
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:6907
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:3092
dnnl::query::matmul_d
@ matmul_d
matmul descriptor
dnnl_cpu_isa_avx
@ dnnl_cpu_isa_avx
Intel Advanced Vector Extensions (Intel AVX)
Definition: dnnl_types.h:2252
dnnl_bca
@ dnnl_bca
permuted 3D tensor
Definition: dnnl_types.h:197
dnnl::primitive_desc_base::get_engine
engine get_engine() const
Returns the engine of the primitive descriptor.
Definition: dnnl.hpp:2872
dnnl::query::diff_weights_md
@ diff_weights_md
weights gradient (diff) memory desc
dnnl::query::op_d
@ op_d
operation descriptor
dnnl_prop_kind_t
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:761
dnnl::algorithm::eltwise_exp_use_dst_for_bwd
@ eltwise_exp_use_dst_for_bwd
Elementwise: exponent (dst for backward)
dnnl::gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8774
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:2876
dnnl_query_scratchpad_md
@ dnnl_query_scratchpad_md
scratchpad memory desc
Definition: dnnl_types.h:2147
dnnl::prop_kind::forward_scoring
@ forward_scoring
Forward data propagation, alias for dnnl::prop_kind::forward_inference.
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &bias_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a deconvolution forward propagation primitive with bias.
Definition: dnnl.hpp:4355
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7939
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6199
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:2909
dnnl::eltwise_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5531
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6345
dnnl::batch_normalization_backward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Constructs a batch normalization descriptor for backward propagation.
Definition: dnnl.hpp:6259
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::algorithm::eltwise_elu_use_dst_for_bwd
@ eltwise_elu_use_dst_for_bwd
Elementwise: exponential linear unit (ELU) (dst for backward)
dnnl_eltwise_gelu
@ dnnl_eltwise_gelu
Eltwise: tanh-based gelu (alias for dnnl_eltwise_gelu_tanh)
Definition: dnnl_types.h:876
dnnl::deconvolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4567
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:2142
dnnl::layer_normalization_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6681
dnnl::prop_kind::backward_data
@ backward_data
Backward data propagation.
dnnl::query::engine
@ engine
execution engine
dnnl::sum::primitive_desc::primitive_desc
primitive_desc(const std::vector< float > &scales, const std::vector< memory::desc > &srcs, const engine &aengine, const primitive_attr &attr=primitive_attr())
Constructs a primitive descriptor for a sum primitive.
Definition: dnnl.hpp:3471
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:5013
dnnl::matmul::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a matmul primitive.
Definition: dnnl.hpp:9539
dnnl::lrn_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const lrn_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5169
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:2864
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5785
dnnl::reorder::reorder
reorder()=default
Default constructor. Produces an empty object.
dnnl::lbr_gru_backward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::vanilla_rnn_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::deconvolution_forward::desc::desc
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &weights_desc, const memory::desc &dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated deconvolution forward propagation primitive without bias.
Definition: dnnl.hpp:4496
dnnl::batch_normalization_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6159
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:2128
dnnl::gru_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, const gru_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8737
dnnl_post_ops_create
dnnl_status_t DNNL_API dnnl_post_ops_create(dnnl_post_ops_t *post_ops)
Creates empty post-ops sequence.
dnnl_eltwise_tanh_use_dst_for_bwd
@ dnnl_eltwise_tanh_use_dst_for_bwd
Eltwise: hyperbolic tangent non-linearity (tanh) (dst for backward)
Definition: dnnl_types.h:892
dnnl::resampling_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9731
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:4017
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:7987
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:9902
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8800
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5870
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7418
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:4321
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:5123
dnnl::primitive::kind::eltwise
@ eltwise
An element-wise primitive.
dnnl::lstm_backward::desc::desc
desc(prop_kind aprop_kind, rnn_direction direction, const memory::desc &src_layer_desc, const memory::desc &src_iter_desc, const memory::desc &src_iter_c_desc, const memory::desc &weights_layer_desc, const memory::desc &weights_iter_desc, const memory::desc &bias_desc, const memory::desc &dst_layer_desc, const memory::desc &dst_iter_desc, const memory::desc &dst_iter_c_desc, const memory::desc &diff_src_layer_desc, const memory::desc &diff_src_iter_desc, const memory::desc &diff_src_iter_c_desc, const memory::desc &diff_weights_layer_desc, const memory::desc &diff_weights_iter_desc, const memory::desc &diff_bias_desc, const memory::desc &diff_dst_layer_desc, const memory::desc &diff_dst_iter_desc, const memory::desc &diff_dst_iter_c_desc, rnn_flags flags=rnn_flags::undef)
Constructs an LSTM descriptor for backward propagation using prop_kind, direction,...
Definition: dnnl.hpp:8276
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5971
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:5867
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5695
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:790
dnnl::shuffle_forward::desc::desc
desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis, int group_size)
Constructs a descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9247
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:8434
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for an RNN backward propagation primitive.
Definition: dnnl.hpp:7534
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:3425
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5920
dnnl_vanilla_rnn_forward_desc_init
dnnl_status_t DNNL_API dnnl_vanilla_rnn_forward_desc_init(dnnl_rnn_desc_t *rnn_desc, dnnl_prop_kind_t prop_kind, const dnnl_alg_kind_t activation, const dnnl_rnn_direction_t direction, const dnnl_memory_desc_t *src_layer_desc, const dnnl_memory_desc_t *src_iter_desc, const dnnl_memory_desc_t *weights_layer_desc, const dnnl_memory_desc_t *weights_iter_desc, const dnnl_memory_desc_t *bias_desc, const dnnl_memory_desc_t *dst_layer_desc, const dnnl_memory_desc_t *dst_iter_desc, unsigned flags, float alpha, float beta)
Initializes a descriptor for vanilla RNN forward propagation primitive.
dnnl::primitive::kind::deconvolution
@ deconvolution
A deconvolution primitive.
dnnl::lstm_backward::primitive_desc::weights_projection_desc
memory::desc weights_projection_desc() const
Returns weights projection memory descriptor.
Definition: dnnl.hpp:8398
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_eltwise_soft_relu
@ dnnl_eltwise_soft_relu
Eltwise: soft_relu.
Definition: dnnl_types.h:865
dnnl::handle::handle
handle(const handle< T, traits > &)=default
Copy constructor.
dnnl::gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8779
dnnl::eltwise_backward::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_data_desc, const memory::desc &data_desc, float alpha=0, float beta=0)
Constructs a descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5596
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7350
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:5322
DNNL_ARG_FROM
#define DNNL_ARG_FROM
A special mnemonic for reorder source argument.
Definition: dnnl_types.h:1879
dnnl_unidirectional_right2left
@ dnnl_unidirectional_right2left
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1565
dnnl::logsoftmax_forward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const engine &aengine, bool allow_empty=false)
Constructs a primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:5934
dnnl_aBcd8b
@ dnnl_aBcd8b
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:267
dnnl::gru_backward::gru_backward
gru_backward(const primitive_desc &pd)
Constructs a GRU backward propagation primitive.
Definition: dnnl.hpp:8849
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:4999
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6493
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:6013
dnnl_query_scratchpad_engine
@ dnnl_query_scratchpad_engine
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:2108
dnnl::convolution_backward_data::desc::desc
desc(algorithm aalgorithm, const memory::desc &diff_src_desc, const memory::desc &weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:3903
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:2850
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_ARG_DST_LAYER
#define DNNL_ARG_DST_LAYER
A special mnemonic for RNN output vector. An alias for DNNL_ARG_DST_0.
Definition: dnnl_types.h:1902
dnnl::convolution_backward_weights::desc::desc
desc(algorithm aalgorithm, const memory::desc &src_desc, const memory::desc &diff_weights_desc, const memory::desc &diff_dst_desc, const memory::dims &strides, const memory::dims &dilates, const memory::dims &padding_l, const memory::dims &padding_r)
Constructs a descriptor for a dilated convolution weights gradient primitive without bias.
Definition: dnnl.hpp:4208
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9749
dnnl::deconvolution_backward_weights::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const deconvolution_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for a deconvolution weights update primitive.
Definition: dnnl.hpp:4973
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:8638
dnnl::eltwise_backward::primitive_desc::primitive_desc
primitive_desc(const desc &adesc, const primitive_attr &attr, const engine &aengine, const eltwise_forward::primitive_desc &hint_fwd_pd, bool allow_empty=false)
Constructs a primitive descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5646
dnnl_query_exec_arg_md
@ dnnl_query_exec_arg_md
memory desc of an execute argument
Definition: dnnl_types.h:2148
dnnl::lstm_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8403
dnnl::memory::memory
memory()=default
Default constructor.
dnnl::lstm_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8375
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4323
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:6323
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:906
dnnl_binary_add
@ dnnl_binary_add
Binary add.
Definition: dnnl_types.h:928
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:5558
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7602
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.
dnnl::algorithm::eltwise_gelu_erf
@ eltwise_gelu_erf
Elementwise: erf-based gelu.