oneAPI Deep Neural Network Library (oneDNN)  1.95.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 
44 #if DNNL_WITH_SYCL
45 #include <CL/sycl.hpp>
46 #endif
47 
49 
50 // __cpp_exceptions is referred from
51 // https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_exceptions.html
52 // gcc < 5 does not define __cpp_exceptions but __EXCEPTIONS,
53 // Microsoft C++ Compiler does not provide an option to disable exceptions
54 #ifndef DNNL_ENABLE_EXCEPTIONS
55 #if __cpp_exceptions || __EXCEPTIONS \
56  || (defined(_MSC_VER) && !defined(__clang__))
57 #define DNNL_ENABLE_EXCEPTIONS 1
58 #else
59 #define DNNL_ENABLE_EXCEPTIONS 0
60 #endif
61 #endif
62 
63 #if defined(__GNUC__) || defined(__clang__)
64 #define DNNL_TRAP() __builtin_trap()
65 #elif defined(__INTEL_COMPILER) || defined(_MSC_VER)
66 #define DNNL_TRAP() __debugbreak()
67 #else
68 #error "unknown compiler"
69 #endif
70 
71 #if DNNL_ENABLE_EXCEPTIONS
72 #define DNNL_THROW_ERROR(status, msg) throw error(status, msg)
73 #else
74 #include <cstdio>
75 #define DNNL_THROW_ERROR(status, msg) \
76  do { \
77  fputs(msg, stderr); \
78  DNNL_TRAP(); \
79  } while (0)
80 #endif
81 
84 
86 namespace dnnl {
87 
91 
96 struct error : public std::exception {
98  const char *message;
99 
104  error(dnnl_status_t status, const char *message)
105  : status(status), message(message) {}
106 
108  const char *what() const noexcept override { return message; }
109 
115  static void wrap_c_api(dnnl_status_t status, const char *message) {
116  if (status != dnnl_success) DNNL_THROW_ERROR(status, message);
117  }
118 };
119 
121 template <typename T>
122 void validate_container_size(const T &v, const char *error_message,
123  int min_size = 1, int max_size = -1) {
124  const int size = (int)v.size();
125  if (size < min_size || (max_size >= 0 && size > max_size))
126  DNNL_THROW_ERROR(dnnl_invalid_arguments, error_message);
127 }
129 
131 template <typename T>
132 struct handle_traits {};
133 
147 template <typename T, typename traits = handle_traits<T>>
148 struct handle {
149 private:
150  static dnnl_status_t dummy_destructor(T) { return dnnl_success; }
151  std::shared_ptr<typename std::remove_pointer<T>::type> data_ {0};
152 
153 protected:
154  bool operator==(const T other) const { return other == data_.get(); }
155  bool operator!=(const T other) const { return !(*this == other); }
156 
157 public:
165  handle() = default;
166 
168  handle(const handle<T, traits> &) = default;
172  handle(handle<T, traits> &&) = default;
175 
181  explicit handle(T t, bool weak = false) { reset(t, weak); }
182 
188  void reset(T t, bool weak = false) {
189  data_.reset(t, weak ? &dummy_destructor : traits::destructor);
190  }
191 
197  T get(bool allow_empty = false) const {
198  T result = data_.get();
199  if (allow_empty == false && result == nullptr)
200  DNNL_THROW_ERROR(
201  dnnl_invalid_arguments, "object is not initialized");
202  return result;
203  }
204 
209  explicit operator T() const { return get(true); }
210 
214  explicit operator bool() const { return get(true) != nullptr; }
215 
222  bool operator==(const handle<T, traits> &other) const {
223  return other.data_.get() == data_.get();
224  }
225 
232  bool operator!=(const handle &other) const { return !(*this == other); }
233 };
234 
236 template <>
237 struct handle_traits<dnnl_memory_t> {
238  static dnnl_status_t destructor(dnnl_memory_t p) {
239  return dnnl_memory_destroy(p);
240  }
241 };
242 
243 template <>
244 struct handle_traits<dnnl_primitive_desc_t> {
245  static dnnl_status_t destructor(dnnl_primitive_desc_t p) {
246  return dnnl_primitive_desc_destroy(p);
247  }
248 };
249 
250 template <>
251 struct handle_traits<dnnl_primitive_t> {
252  static dnnl_status_t destructor(dnnl_primitive_t p) {
253  return dnnl_primitive_destroy(p);
254  }
255 };
256 
257 template <>
258 struct handle_traits<dnnl_primitive_desc_iterator_t> {
259  static dnnl_status_t destructor(dnnl_primitive_desc_iterator_t p) {
261  }
262 };
264 
266 
267 struct stream;
268 struct memory;
269 struct primitive_desc;
270 
275 
279 
281 struct primitive : public handle<dnnl_primitive_t> {
283  enum class kind {
293  sum = dnnl_sum,
305  lrn = dnnl_lrn,
313  rnn = dnnl_rnn,
322  };
323 
324  using handle::handle;
325 
327  primitive() = default;
328 
333 
338 
344 
348  inline kind get_kind() const;
349 
362  void execute(const stream &astream,
363  const std::unordered_map<int, memory> &args) const;
364 
365 #ifdef DNNL_SYCL_DPCPP
366  cl::sycl::event DNNL_API execute_sycl(const stream &astream,
381  const std::unordered_map<int, memory> &args,
382  const std::vector<cl::sycl::event> &deps = {}) const;
383 #endif
384 };
385 
391  return static_cast<dnnl_primitive_kind_t>(akind);
392 }
393 
397  "could not get a primitive descriptor from a primitive");
398  return pd;
399 }
400 
403  // TODO (Roma): the code below is only needed because get_primitive_desc
404  // returns a C type.
407  pd, dnnl_query_primitive_kind, 0, (void *)&kind),
408  "could not get a primitive kind from a primitive descriptor");
409  return static_cast<dnnl::primitive::kind>(kind);
410 }
411 
413 
425 
427 enum class scratchpad_mode {
450 };
451 
457  return static_cast<dnnl_scratchpad_mode_t>(mode);
458 }
459 
461 enum class prop_kind {
485 };
486 
492  return static_cast<dnnl_prop_kind_t>(akind);
493 }
494 
496 enum class algorithm {
498  undef = dnnl_alg_kind_undef,
598 };
599 
604  return static_cast<dnnl_alg_kind_t>(aalgorithm);
605 }
606 
608 
611 
613 enum class normalization_flags : unsigned {
619 
628 
635 
641 };
642 
647  return static_cast<dnnl_normalization_flags_t>(flags);
648 }
649 
651 
654 
656 enum class rnn_flags : unsigned {
659 };
660 
665  return static_cast<dnnl_rnn_flags_t>(flags);
666 }
667 
668 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
669  inline enum_name operator|(enum_name lhs, enum_name rhs) { \
670  return static_cast<enum_name>( \
671  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
672  } \
673 \
674  inline enum_name operator&(enum_name lhs, enum_name rhs) { \
675  return static_cast<enum_name>( \
676  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
677  } \
678 \
679  inline enum_name operator^(enum_name lhs, enum_name rhs) { \
680  return static_cast<enum_name>( \
681  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
682  } \
683 \
684  inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
685  lhs = static_cast<enum_name>( \
686  static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
687  return lhs; \
688  } \
689 \
690  inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
691  lhs = static_cast<enum_name>( \
692  static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
693  return lhs; \
694  } \
695 \
696  inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
697  lhs = static_cast<enum_name>( \
698  static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
699  return lhs; \
700  } \
701 \
702  inline enum_name operator~(enum_name rhs) { \
703  return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
704  }
705 
706 DNNL_DEFINE_BITMASK_OPS(normalization_flags)
707 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
708 
709 enum class rnn_direction {
723 };
724 
729  return static_cast<dnnl_rnn_direction_t>(dir);
730 }
731 
733 
736 
743 enum class query {
746 
751 
756 
763 
768 
773 
776 
779 
812 
831 };
832 
837  return static_cast<dnnl_query_t>(aquery);
838 }
839 
841 
843 
854 
856 template <>
857 struct handle_traits<dnnl_engine_t> {
858  static dnnl_status_t destructor(dnnl_engine_t p) {
859  return dnnl_engine_destroy(p);
860  }
861 };
863 
865 struct engine : public handle<dnnl_engine_t> {
866  friend struct primitive;
867  friend struct reorder;
868 
870  enum class kind {
874  cpu = dnnl_cpu,
876  gpu = dnnl_gpu,
877  };
878 
879  using handle::handle;
880 
883  engine() = default;
884 
889  static size_t get_count(kind akind) {
890  return dnnl_engine_get_count(convert_to_c(akind));
891  }
892 
898  engine(kind akind, size_t index) {
901  dnnl_engine_create(&engine, convert_to_c(akind), index),
902  "could not create an engine");
903  reset(engine);
904  }
905 
906 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
907  engine(kind akind, cl_device_id device, cl_context context) {
914  dnnl_engine_t c_engine;
915  error::wrap_c_api(dnnl_engine_create_ocl(&c_engine, convert_to_c(akind),
916  device, context),
917  "could not create an engine");
918  reset(c_engine);
919  }
920 #endif
921 
922 #if DNNL_WITH_SYCL
923  DNNL_API engine(kind akind, const cl::sycl::device &dev,
929  const cl::sycl::context &ctx);
930 #endif
931 
937  dnnl_engine_t c_engine;
940  dnnl::convert_to_c(dnnl::query::engine), 0, &c_engine),
941  "could not get an engine from a primitive_desc");
942  reset(c_engine, true);
943  }
944 
947  kind get_kind() const {
950  "could not get kind of an engine");
951  return static_cast<engine::kind>(kind);
952  }
953 
954 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
955  cl_context get_ocl_context() const {
958  cl_context context = nullptr;
960  "could not get an OpenCL context from an engine");
961  return context;
962  }
963 
966  cl_device_id get_ocl_device() const {
967  cl_device_id device = nullptr;
969  "could not get an OpenCL device from an engine");
970  return device;
971  }
972 #endif
973 
974 #if DNNL_WITH_SYCL
975  cl::sycl::context DNNL_API get_sycl_context() const;
977 
979  cl::sycl::device DNNL_API get_sycl_device() const;
980 #endif
981 
987  template <typename primitive_desc>
988  static engine query(const primitive_desc &pd) {
989  return query(pd, dnnl::query::engine);
990  }
991 
992 private:
993  static dnnl_engine_kind_t convert_to_c(kind akind) {
994  return static_cast<dnnl_engine_kind_t>(akind);
995  }
996 
997  template <typename primitive_desc>
998  static engine query(const primitive_desc &pd, dnnl::query what) {
999  dnnl_engine_t c_engine;
1001  dnnl::convert_to_c(what), 0, &c_engine),
1002  "could not get an engine from a primitive_desc");
1003  return engine(c_engine, true);
1004  }
1005 };
1006 
1012  return static_cast<dnnl_engine_kind_t>(akind);
1013 }
1014 
1016 
1024 
1026 template <>
1027 struct handle_traits<dnnl_stream_t> {
1028  static dnnl_status_t destructor(dnnl_stream_t p) {
1029  return dnnl_stream_destroy(p);
1030  }
1031 };
1032 template <>
1033 struct handle_traits<dnnl_stream_attr_t> {
1034  static dnnl_status_t destructor(dnnl_stream_attr_t p) {
1035  return dnnl_stream_attr_destroy(p);
1036  }
1037 };
1039 
1041 struct stream_attr : public handle<dnnl_stream_attr_t> {
1042  using handle::handle;
1043 
1045  stream_attr() = default;
1046 
1052  dnnl_stream_attr_t attr;
1054  "could not create stream attributes");
1055  reset(attr);
1056  }
1057 
1058 #if DNNL_CPU_THREADING_RUNTIME == DNNL_RUNTIME_THREADPOOL
1059  void set_threadpool(threadpool_iface *threadpool) {
1067  error::wrap_c_api(dnnl_stream_attr_set_threadpool(get(), threadpool),
1068  "could not set stream threadpool attribute");
1069  }
1070 
1077  threadpool_iface *tp;
1078  error::wrap_c_api(dnnl_stream_attr_get_threadpool(get(), (void **)&tp),
1079  "could not set stream threadpool attribute");
1080  return tp;
1081  }
1082 #endif
1083 };
1084 
1086 struct stream : public handle<dnnl_stream_t> {
1087  using handle::handle;
1088 
1090  enum class flags : unsigned {
1100  };
1101 
1104  stream() = default;
1105 
1112  stream(const engine &aengine, flags aflags = flags::default_flags,
1113  const stream_attr &attr = stream_attr()) {
1116  static_cast<dnnl_stream_flags_t>(aflags),
1117  attr.get(true)),
1118  "could not create a stream");
1119  reset(stream);
1120  }
1121 
1122 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1123  stream(const engine &aengine, cl_command_queue queue) {
1129  error::wrap_c_api(dnnl_stream_create_ocl(&stream, aengine.get(), queue),
1130  "could not create a stream");
1131  reset(stream);
1132  }
1133 
1136  cl_command_queue get_ocl_command_queue() const {
1137  cl_command_queue queue = nullptr;
1139  "could not get an OpenCL command queue from a stream");
1140  return queue;
1141  }
1142 #endif
1143 
1144 #if DNNL_WITH_SYCL
1145  DNNL_API stream(const engine &aengine, cl::sycl::queue &queue);
1150 
1153  cl::sycl::queue DNNL_API get_sycl_queue() const;
1154 #endif
1155 
1160  dnnl_stream_wait(get()), "could not wait on a stream");
1161  return *this;
1162  }
1163 };
1164 
1165 DNNL_DEFINE_BITMASK_OPS(stream::flags)
1166 
1167 
1234 
1241 struct memory : public handle<dnnl_memory_t> {
1243  typedef dnnl_dim_t dim;
1246  typedef std::vector<dim> dims;
1247 
1254  template <typename T>
1255  static void validate_dims(const std::vector<T> &v, int min_size = 0) {
1256  validate_container_size(
1257  v, "dimensions are invalid", min_size, DNNL_MAX_NDIMS);
1258  }
1259 
1261  enum class data_type {
1265  f16 = dnnl_f16,
1267  bf16 = dnnl_bf16,
1269  f32 = dnnl_f32,
1271  s32 = dnnl_s32,
1273  s8 = dnnl_s8,
1275  u8 = dnnl_u8,
1276  };
1277 
1279  enum class format_kind {
1284  any = dnnl_format_kind_any,
1288  blocked = dnnl_blocked,
1290  wino = dnnl_format_kind_wino,
1292  packed = dnnl_format_kind_rnn_packed,
1293  };
1294 
1335  enum class format_tag {
1340  any = dnnl_format_tag_any,
1341 
1343  a = dnnl_a,
1344 
1346  ab = dnnl_ab,
1348  ba = dnnl_ba,
1349 
1351  abc = dnnl_abc,
1353  acb = dnnl_acb,
1355  bac = dnnl_bac,
1357  bca = dnnl_bca,
1359  cba = dnnl_cba,
1360 
1362  abcd = dnnl_abcd,
1364  abdc = dnnl_abdc,
1366  acdb = dnnl_acdb,
1368  bacd = dnnl_bacd,
1370  bcda = dnnl_bcda,
1372  cdba = dnnl_cdba,
1374  dcab = dnnl_dcab,
1375 
1377  abcde = dnnl_abcde,
1379  abdec = dnnl_abdec,
1381  acbde = dnnl_acbde,
1383  acdeb = dnnl_acdeb,
1385  bacde = dnnl_bacde,
1387  bcdea = dnnl_bcdea,
1389  cdeba = dnnl_cdeba,
1391  decab = dnnl_decab,
1393  abcdef = dnnl_abcdef,
1395  acbdef = dnnl_acbdef,
1397  defcab = dnnl_defcab,
1398 
1400  x = a,
1402  nc = ab,
1404  cn = ba,
1406  tn = ab,
1408  nt = ba,
1410  ncw = abc,
1412  nwc = acb,
1414  nchw = abcd,
1416  nhwc = acdb,
1418  chwn = bcda,
1420  ncdhw = abcde,
1422  ndhwc = acdeb,
1423 
1425  oi = ab,
1427  io = ba,
1429  oiw = abc,
1431  owi = acb,
1433  wio = cba,
1435  iwo = bca,
1437  oihw = abcd,
1439  hwio = cdba,
1441  ohwi = acdb,
1443  ihwo = bcda,
1445  iohw = bacd,
1447  oidhw = abcde,
1449  dhwio = cdeba,
1451  odhwi = acdeb,
1453  iodhw = bacde,
1455  idhwo = bcdea,
1456 
1458  goiw = abcd,
1460  wigo = dcab,
1462  goihw = abcde,
1464  hwigo = decab,
1466  giohw = acbde,
1468  goidhw = abcdef,
1470  giodhw = acbdef,
1472  dhwigo = defcab,
1473 
1475  tnc = abc,
1477  ntc = bac,
1480  ldnc = abcd,
1487  ldigo = abcde,
1494  ldgoi = abdec,
1497  ldio = abcd,
1500  ldoi = abdc,
1507  ldgo = abcd,
1508 
1509  // Opaque blocked formats
1510 
1511  Abc16a = dnnl_Abc16a,
1512  ABc16a16b = dnnl_ABc16a16b,
1513  ABc4a4b = dnnl_ABc4a4b,
1514  aBc16b = dnnl_aBc16b,
1515  aBc32b = dnnl_aBc32b,
1516  ABc16b16a = dnnl_ABc16b16a,
1517  Abc4a = dnnl_Abc4a,
1518  aBc4b = dnnl_aBc4b,
1519  ABc4b16a4b = dnnl_ABc4b16a4b,
1520  ABc2b8a4b = dnnl_ABc2b8a4b,
1521  ABc16b16a4b = dnnl_ABc16b16a4b,
1522  ABc16b16a2b = dnnl_ABc16b16a2b,
1523  ABc4b4a = dnnl_ABc4b4a,
1524  ABc8a16b2a = dnnl_ABc8a16b2a,
1525  ABc8a8b = dnnl_ABc8a8b,
1526  ABc8a4b = dnnl_ABc8a4b,
1527  aBc8b = dnnl_aBc8b,
1528  ABc8b16a2b = dnnl_ABc8b16a2b,
1529  ABc8b8a = dnnl_ABc8b8a,
1530  Abcd8a = dnnl_Abcd8a,
1531  Abcd16a = dnnl_Abcd16a,
1532  Abcd32a = dnnl_Abcd32a,
1533  ABcd16a16b = dnnl_ABcd16a16b,
1534  aBcd16b = dnnl_aBcd16b,
1535  aBcd32b = dnnl_aBcd32b,
1536  ABcd16b16a = dnnl_ABcd16b16a,
1537  aBCd16b16c = dnnl_aBCd16b16c,
1538  aBCd16c16b = dnnl_aBCd16c16b,
1539  Abcd4a = dnnl_Abcd4a,
1540  aBcd4b = dnnl_aBcd4b,
1541  ABcd4b16a4b = dnnl_ABcd4b16a4b,
1542  ABcd2b8a4b = dnnl_ABcd2b8a4b,
1543  ABcd4b4a = dnnl_ABcd4b4a,
1544  ABcd4a4b = dnnl_ABcd4a4b,
1545  aBCd4c16b4c = dnnl_aBCd4c16b4c,
1546  aBCd2c8b4c = dnnl_aBCd2c8b4c,
1547  ABcd16b16a4b = dnnl_ABcd16b16a4b,
1548  ABcd16b16a2b = dnnl_ABcd16b16a2b,
1549  aBCd16c16b4c = dnnl_aBCd16c16b4c,
1550  aBCd16c16b2c = dnnl_aBCd16c16b2c,
1551  aBCd4c4b = dnnl_aBCd4c4b,
1552  aBCd4b4c = dnnl_aBCd4b4c,
1553  ABcd8a16b2a = dnnl_ABcd8a16b2a,
1554  ABcd8a8b = dnnl_ABcd8a8b,
1555  ABcd8a4b = dnnl_ABcd8a4b,
1557  aBcd8b = dnnl_aBcd8b,
1558  ABcd8b16a2b = dnnl_ABcd8b16a2b,
1559  aBCd8b16c2b = dnnl_aBCd8b16c2b,
1561  ABcd8b8a = dnnl_ABcd8b8a,
1562  aBCd8b8c = dnnl_aBCd8b8c,
1563  aBCd8b4c = dnnl_aBCd8b4c,
1564  aBCd8c16b2c = dnnl_aBCd8c16b2c,
1565  aBCd8c8b = dnnl_aBCd8c8b,
1566  Abcde16a = dnnl_Abcde16a,
1567  Abcde32a = dnnl_Abcde32a,
1568  ABcde16a16b = dnnl_ABcde16a16b,
1569  aBcde16b = dnnl_aBcde16b,
1570  aBcde32b = dnnl_aBcde32b,
1571  ABcde16b16a = dnnl_ABcde16b16a,
1572  aBCde16b16c = dnnl_aBCde16b16c,
1573  aBCde16c16b = dnnl_aBCde16c16b,
1574  aBCde2c8b4c = dnnl_aBCde2c8b4c,
1575  Abcde4a = dnnl_Abcde4a,
1576  aBcde4b = dnnl_aBcde4b,
1577  ABcde4b4a = dnnl_ABcde4b4a,
1578  ABcde4a4b = dnnl_ABcde4a4b,
1579  aBCde4b4c = dnnl_aBCde4b4c,
1580  aBCde4c16b4c = dnnl_aBCde4c16b4c,
1581  aBCde16c16b4c = dnnl_aBCde16c16b4c,
1582  aBCde16c16b2c = dnnl_aBCde16c16b2c,
1583  aBCde4c4b = dnnl_aBCde4c4b,
1584  Abcde8a = dnnl_Abcde8a,
1585  ABcde8a8b = dnnl_ABcde8a8b,
1586  ABcde8a4b = dnnl_ABcde8a4b,
1587  aBcde8b = dnnl_aBcde8b,
1588  ABcde8b16a2b = dnnl_ABcde8b16a2b,
1589  ABcde4b16a4b = dnnl_ABcde4b16a4b,
1590  ABcde2b8a4b = dnnl_ABcde2b8a4b,
1591  aBCde8b16c2b = dnnl_aBCde8b16c2b,
1592  ABcde8b8a = dnnl_ABcde8b8a,
1593  aBCde8b8c = dnnl_aBCde8b8c,
1594  aBCde8b4c = dnnl_aBCde8b4c,
1595  ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1596  ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1597  aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1598  aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1599  aBCde8c16b2c = dnnl_aBCde8c16b2c,
1600  aBCde8c8b = dnnl_aBCde8c8b,
1601  aBcdef16b = dnnl_aBcdef16b,
1602  aBCdef16b16c = dnnl_aBCdef16b16c,
1603  aBCdef16c16b = dnnl_aBCdef16c16b,
1604  aBcdef4b = dnnl_aBcdef4b,
1605  aBCdef2c8b4c = dnnl_aBCdef2c8b4c,
1606  aBCdef4c4b = dnnl_aBCdef4c4b,
1607  aBCdef4b4c = dnnl_aBCdef4b4c,
1608  aBCdef8b8c = dnnl_aBCdef8b8c,
1609  aBCdef8b4c = dnnl_aBCdef8b4c,
1610  aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1611  aBCdef4c16b4c = dnnl_aBCdef4c16b4c,
1612  aBCdef8c8b = dnnl_aBCdef8c8b,
1613  aBdc16b = dnnl_aBdc16b,
1614  aBdc4b = dnnl_aBdc4b,
1615  aBdc8b = dnnl_aBdc8b,
1616  aBdec16b = dnnl_aBdec16b,
1617  aBdec4b = dnnl_aBdec4b,
1618  aBdec8b = dnnl_aBdec8b,
1619  aBdefc16b = dnnl_aBdefc16b,
1620  aCBdef16c16b = dnnl_aCBdef16c16b,
1621  aCBdef16b16c = dnnl_aCBdef16b16c,
1622  aBdefc4b = dnnl_aBdefc4b,
1623  aBdefc8b = dnnl_aBdefc8b,
1624  Acb16a = dnnl_Acb16a,
1625  Acb4a = dnnl_Acb4a,
1626  Acb8a = dnnl_Acb8a,
1627  aCBd16b16c = dnnl_aCBd16b16c,
1628  aCBd16c16b = dnnl_aCBd16c16b,
1629  aCBde16b16c = dnnl_aCBde16b16c,
1630  aCBde16c16b = dnnl_aCBde16c16b,
1631  Acdb16a = dnnl_Acdb16a,
1632  Acdb4a = dnnl_Acdb4a,
1633  Acdb8a = dnnl_Acdb8a,
1634  Acdeb16a = dnnl_Acdeb16a,
1635  Acdeb4a = dnnl_Acdeb4a,
1636  Acdeb8a = dnnl_Acdeb8a,
1637  BAc16a16b = dnnl_BAc16a16b,
1638  BAc16b16a = dnnl_BAc16b16a,
1639  BAcd16a16b = dnnl_BAcd16a16b,
1640  BAcd16b16a = dnnl_BAcd16b16a,
1641  ABcd32a32b = dnnl_ABcd32a32b,
1642  BAcde16b16a = dnnl_BAcde16b16a,
1643  BAcde16a16b = dnnl_BAcde16a16b,
1644  aBdec32b = dnnl_aBdec32b,
1645  Abcdef16a = dnnl_Abcdef16a,
1646  Abcdef32a = dnnl_Abcdef32a,
1647  Acdb32a = dnnl_Acdb32a,
1648  aBCd2b4c2b = dnnl_aBCd2b4c2b,
1649  aBCde2b4c2b = dnnl_aBCde2b4c2b,
1650  aBCdef2b4c2b = dnnl_aBCdef2b4c2b,
1651  aBCd2c4b2c = dnnl_aBCd2c4b2c,
1652  aBCde2c4b2c = dnnl_aBCde2c4b2c,
1653  aBCdef2c4b2c = dnnl_aBCdef2c4b2c,
1654  aBCd4b8c2b = dnnl_aBCd4b8c2b,
1655  aBCde4b8c2b = dnnl_aBCde4b8c2b,
1656  aBCdef4b8c2b = dnnl_aBCdef4b8c2b,
1657  aBCd4c8b2c = dnnl_aBCd4c8b2c,
1658  aBCde4c8b2c = dnnl_aBCde4c8b2c,
1659  aBCdef4c8b2c = dnnl_aBCdef4c8b2c,
1660 
1661  format_tag_last = dnnl_format_tag_last,
1662 
1663  nCdhw16c = dnnl_nCdhw16c,
1664  nCdhw4c = dnnl_nCdhw4c,
1665  nCdhw8c = dnnl_nCdhw8c,
1666  nChw16c = dnnl_nChw16c,
1667  nChw4c = dnnl_nChw4c,
1668  nChw8c = dnnl_nChw8c,
1669  nCw16c = dnnl_nCw16c,
1670  nCw4c = dnnl_nCw4c,
1671  nCw8c = dnnl_nCw8c,
1672  NCw16n16c = dnnl_NCw16n16c,
1673  NChw16n16c = dnnl_NChw16n16c,
1674  NCdhw16n16c = dnnl_NCdhw16n16c,
1675  NCdhw32n32c = dnnl_NCdhw32n32c,
1676  NChw32n32c = dnnl_NChw32n32c,
1677  IOhw16i16o = dnnl_IOhw16i16o,
1678  Ohwi32o = dnnl_Ohwi32o,
1679  IOdhw16i16o = dnnl_IOdhw16i16o,
1680  gIOhw16i16o = dnnl_gIOhw16i16o,
1681  gOhwi32o = dnnl_gOhwi32o,
1682  Goidhw16g = dnnl_Goidhw16g,
1683  IOw16o16i = dnnl_IOw16o16i,
1684  OIw16i16o = dnnl_OIw16i16o,
1685  IOw16i16o = dnnl_IOw16i16o,
1686  gIOw16i16o = dnnl_gIOw16i16o,
1687  OIw16o16i = dnnl_OIw16o16i,
1688  Oiw16o = dnnl_Oiw16o,
1689  OIw4i16o4i = dnnl_OIw4i16o4i,
1690  OIw2i8o4i = dnnl_OIw2i8o4i,
1691  OIw4i4o = dnnl_OIw4i4o,
1692  OIw4o4i = dnnl_OIw4o4i,
1693  Oiw4o = dnnl_Oiw4o,
1694  OIw8i16o2i = dnnl_OIw8i16o2i,
1695  OIw8i8o = dnnl_OIw8i8o,
1696  OIw8o16i2o = dnnl_OIw8o16i2o,
1697  OIw8o8i = dnnl_OIw8o8i,
1698  OIw8o4i = dnnl_OIw8o4i,
1699  Owi16o = dnnl_Owi16o,
1700  OwI16o2i = dnnl_OwI16o2i,
1701  Owi4o = dnnl_Owi4o,
1702  Owi8o = dnnl_Owi8o,
1703  IOhw16o16i = dnnl_IOhw16o16i,
1704  Ohwi16o = dnnl_Ohwi16o,
1705  OhwI16o2i = dnnl_OhwI16o2i,
1706  Ohwi4o = dnnl_Ohwi4o,
1707  Ohwi8o = dnnl_Ohwi8o,
1708  OIhw16i16o = dnnl_OIhw16i16o,
1709  OIhw16o16i = dnnl_OIhw16o16i,
1710  Oihw16o = dnnl_Oihw16o,
1711  OIhw4i16o4i = dnnl_OIhw4i16o4i,
1712  OIhw4i4o = dnnl_OIhw4i4o,
1713  OIhw4o4i = dnnl_OIhw4o4i,
1714  Oihw4o = dnnl_Oihw4o,
1715  OIhw8i16o2i = dnnl_OIhw8i16o2i,
1716  OIhw8i8o = dnnl_OIhw8i8o,
1717  OIhw8o16i2o = dnnl_OIhw8o16i2o,
1718  OIhw8o8i = dnnl_OIhw8o8i,
1719  OIhw8o4i = dnnl_OIhw8o4i,
1720  OIhw2i8o4i = dnnl_OIhw2i8o4i,
1721  IOdhw16o16i = dnnl_IOdhw16o16i,
1722  Odhwi16o = dnnl_Odhwi16o,
1723  OdhwI16o2i = dnnl_OdhwI16o2i,
1724  Odhwi4o = dnnl_Odhwi4o,
1725  Odhwi8o = dnnl_Odhwi8o,
1726  OIdhw16i16o = dnnl_OIdhw16i16o,
1727  OIdhw16o16i = dnnl_OIdhw16o16i,
1728  Oidhw16o = dnnl_Oidhw16o,
1729  OIdhw4i4o = dnnl_OIdhw4i4o,
1730  OIdhw4o4i = dnnl_OIdhw4o4i,
1731  Oidhw4o = dnnl_Oidhw4o,
1732  OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1733  OIdhw4i16o4i = dnnl_OIdhw4i16o4i,
1734  OIdhw2i8o4i = dnnl_OIdhw2i8o4i,
1735  OIdhw8i8o = dnnl_OIdhw8i8o,
1736  OIdhw8o8i = dnnl_OIdhw8o8i,
1737  OIdhw8o4i = dnnl_OIdhw8o4i,
1738  gIOw16o16i = dnnl_gIOw16o16i,
1739  gOIw16i16o = dnnl_gOIw16i16o,
1740  gOIw16o16i = dnnl_gOIw16o16i,
1741  gOiw16o = dnnl_gOiw16o,
1742  gOIw4i16o4i = dnnl_gOIw4i16o4i,
1743  gOIw2i8o4i = dnnl_gOIw2i8o4i,
1744  gOIw4i4o = dnnl_gOIw4i4o,
1745  gOIw4o4i = dnnl_gOIw4o4i,
1746  gOiw4o = dnnl_gOiw4o,
1747  gOIw8i16o2i = dnnl_gOIw8i16o2i,
1748  gOIw8i8o = dnnl_gOIw8i8o,
1749  gOIw8o16i2o = dnnl_gOIw8o16i2o,
1750  gOIw8o8i = dnnl_gOIw8o8i,
1751  gOIw8o4i = dnnl_gOIw8o4i,
1752  gOwi16o = dnnl_gOwi16o,
1753  gOwI16o2i = dnnl_gOwI16o2i,
1754  gOwi4o = dnnl_gOwi4o,
1755  gOwi8o = dnnl_gOwi8o,
1756  Goiw8g = dnnl_Goiw8g,
1757  Goiw16g = dnnl_Goiw16g,
1758  gIOhw16o16i = dnnl_gIOhw16o16i,
1759  gOhwi16o = dnnl_gOhwi16o,
1760  gOhwI16o2i = dnnl_gOhwI16o2i,
1761  gOhwi4o = dnnl_gOhwi4o,
1762  gOhwi8o = dnnl_gOhwi8o,
1763  Goihw16g = dnnl_Goihw16g,
1764  gOIhw16i16o = dnnl_gOIhw16i16o,
1765  gOIhw16o16i = dnnl_gOIhw16o16i,
1766  gOihw16o = dnnl_gOihw16o,
1767  gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1768  gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1769  gOIhw4i4o = dnnl_gOIhw4i4o,
1770  gOIhw4o4i = dnnl_gOIhw4o4i,
1771  gOihw4o = dnnl_gOihw4o,
1772  Goihw8g = dnnl_Goihw8g,
1773  gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1774  gOIhw8i8o = dnnl_gOIhw8i8o,
1775  gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1776  OIw4o8i8o4i = dnnl_OIw4o8i8o4i,
1777  OIdhw4o8i8o4i = dnnl_OIdhw4o8i8o4i,
1778  OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1779  OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1780  gOIw4o8i8o4i = dnnl_gOIw4o8i8o4i,
1781  gOIdhw4o8i8o4i = dnnl_gOIdhw4o8i8o4i,
1782  gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1783  gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1784  OIhw16i16o4i = dnnl_OIhw16i16o4i,
1785  OIhw16i16o2i = dnnl_OIhw16i16o2i,
1786  gOIhw16i16o4i = dnnl_gOIhw16i16o4i,
1787  gOIhw16i16o2i = dnnl_gOIhw16i16o2i,
1788  gOIhw8o8i = dnnl_gOIhw8o8i,
1789  gOIhw8o4i = dnnl_gOIhw8o4i,
1790  gIOdhw16i16o = dnnl_gIOdhw16i16o,
1791  gIOdhw16o16i = dnnl_gIOdhw16o16i,
1792  gOdhwi16o = dnnl_gOdhwi16o,
1793  gOdhwI16o2i = dnnl_gOdhwI16o2i,
1794  gOdhwi4o = dnnl_gOdhwi4o,
1795  gOdhwi8o = dnnl_gOdhwi8o,
1796  gOIdhw16i16o = dnnl_gOIdhw16i16o,
1797  gOIdhw16o16i = dnnl_gOIdhw16o16i,
1798  gOidhw16o = dnnl_gOidhw16o,
1799  gOIdhw4i4o = dnnl_gOIdhw4i4o,
1800  gOIdhw4o4i = dnnl_gOIdhw4o4i,
1801  gOidhw4o = dnnl_gOidhw4o,
1802  gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1803  gOIdhw4i16o4i = dnnl_gOIdhw4i16o4i,
1804  gOIdhw2i8o4i = dnnl_gOIdhw2i8o4i,
1805  gOIdhw8i8o = dnnl_gOIdhw8i8o,
1806  gOIdhw8o8i = dnnl_gOIdhw8o8i,
1807  gOIdhw8o4i = dnnl_gOIdhw8o4i,
1808  gOIw2i4o2i = dnnl_gOIw2i4o2i,
1809  gOIhw2i4o2i = dnnl_gOIhw2i4o2i,
1810  gOIdhw2i4o2i = dnnl_gOIdhw2i4o2i,
1811  gOIw2o4i2o = dnnl_gOIw2o4i2o,
1812  gOIhw2o4i2o = dnnl_gOIhw2o4i2o,
1813  gOIdhw2o4i2o = dnnl_gOIdhw2o4i2o,
1814  gOIw4i8o2i = dnnl_gOIw4i8o2i,
1815  gOIhw4i8o2i = dnnl_gOIhw4i8o2i,
1816  gOIdhw4i8o2i = dnnl_gOIdhw4i8o2i,
1817  gOIw4o8i2o = dnnl_gOIw4o8i2o,
1818  gOIhw4o8i2o = dnnl_gOIhw4o8i2o,
1819  gOIdhw4o8i2o = dnnl_gOIdhw4o8i2o,
1820  };
1821 
1823  struct desc {
1824  friend struct memory;
1827 
1830  desc() : data() {}
1831 
1847  desc(const dims &adims, data_type adata_type, format_tag aformat_tag,
1848  bool allow_empty = false)
1849  : data() {
1850  validate_dims(adims);
1852  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1853  convert_to_c(aformat_tag));
1854  if (!allow_empty)
1856  "could not construct a memory descriptor using a "
1857  "format tag");
1858  }
1859 
1875  desc(const dims &adims, data_type adata_type, const dims &strides,
1876  bool allow_empty = false)
1877  : data() {
1878  validate_dims(adims);
1879  if (!strides.empty()) validate_dims(strides, (int)adims.size());
1881  (int)adims.size(), adims.data(), convert_to_c(adata_type),
1882  strides.empty() ? nullptr : &strides[0]);
1883  if (!allow_empty)
1885  "could not construct a memory descriptor using "
1886  "strides");
1887  }
1888 
1892  desc(const dnnl_memory_desc_t &data) : data(data) {}
1893 
1896  //
1905  desc submemory_desc(const dims &adims, const dims &offsets,
1906  bool allow_empty = false) const {
1907  validate_dims(adims, data.ndims);
1908  validate_dims(offsets, data.ndims);
1911  &sub_md, &data, adims.data(), offsets.data());
1912  if (!allow_empty)
1913  error::wrap_c_api(status, "could not construct a sub-memory");
1914  return desc(sub_md);
1915  }
1916 
1961  desc reshape(const dims &adims, bool allow_empty = false) const {
1962  if (data.ndims) validate_dims(adims, 1);
1965  &out_md, &data, (int)adims.size(), adims.data());
1966  if (!allow_empty)
1968  status, "could not reshape a memory descriptor");
1969  return desc(out_md);
1970  }
1971 
2008  desc permute_axes(const std::vector<int> &permutation,
2009  bool allow_empty = false) const {
2010  validate_dims(permutation, data.ndims);
2013  &out_md, &data, permutation.data());
2014  if (!allow_empty)
2016  "could not permute axes of a memory descriptor");
2017  return desc(out_md);
2018  }
2019 
2024  memory::dims dims() const {
2025  return memory::dims(data.dims, data.dims + data.ndims);
2026  }
2027 
2031  return static_cast<memory::data_type>(data.data_type);
2032  }
2033 
2038  size_t get_size() const { return dnnl_memory_desc_get_size(&data); }
2039 
2043  bool is_zero() const { return data.ndims == 0; }
2044 
2049  bool operator==(const desc &other) const {
2050  return dnnl_memory_desc_equal(&data, &other.data) != 0;
2051  }
2052 
2057  bool operator!=(const desc &other) const { return !operator==(other); }
2058 
2062  explicit operator bool() const { return data.ndims != 0; }
2063  };
2064 
2069  memory() = default;
2070 
2071 #if DNNL_WITH_SYCL
2072  memory(const desc &md, const engine &engine, void *ahandle)
2078 #ifdef DNNL_USE_DPCPP_USM
2079  : memory(with_sycl_tag {}, md, engine, ahandle, true) {
2080  }
2081 #else
2082  : memory(with_sycl_tag {}, md, engine, ahandle, false) {
2083  }
2084 #endif
2085 #else
2086  memory(const desc &md, const engine &aengine, void *handle) {
2107  dnnl_memory_t result;
2109  dnnl_memory_create(&result, &md.data, aengine.get(), handle),
2110  "could not create a memory object");
2111  reset(result);
2112  }
2113 #endif
2114 
2115 #if DNNL_WITH_SYCL && defined(DNNL_USE_SYCL_BUFFERS)
2116  template <typename T, int ndims = 1>
2122  memory(const desc &md, const engine &aengine,
2123  cl::sycl::buffer<T, ndims> &buf)
2124  : memory(md, aengine, DNNL_MEMORY_NONE) {
2125  set_sycl_buffer(buf);
2126  }
2127 #endif
2128 
2135  memory(const desc &md, const engine &aengine)
2136  : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
2137 
2139  desc get_desc() const {
2140  const dnnl_memory_desc_t *cdesc;
2142  "could not get a memory descriptor from a memory object");
2143  return desc(*cdesc);
2144  }
2145 
2147  engine get_engine() const {
2148  dnnl_engine_t c_engine;
2149  error::wrap_c_api(dnnl_memory_get_engine(get(), &c_engine),
2150  "could not get an engine from a memory object");
2151  return engine(c_engine, true);
2152  }
2153 
2158  void *get_data_handle() const {
2159  void *handle;
2161  "could not get a native handle from a memory object");
2162  return handle;
2163  }
2164 
2192  void set_data_handle(void *handle, const stream &astream) const {
2194  get(), handle, astream.get(true)),
2195  "could not set native handle of a memory object");
2196  }
2197 
2207  void set_data_handle(void *handle) const {
2209  dnnl_memory_set_data_handle_v2(get(), handle, nullptr),
2210  "could not set native handle of a memory object");
2211  }
2212 
2233  template <typename T = void>
2234  T *map_data() const {
2235  void *mapped_ptr;
2236  error::wrap_c_api(dnnl_memory_map_data(get(), &mapped_ptr),
2237  "could not map memory object data");
2238  return static_cast<T *>(mapped_ptr);
2239  }
2240 
2250  void unmap_data(void *mapped_ptr) const {
2251  error::wrap_c_api(dnnl_memory_unmap_data(get(), mapped_ptr),
2252  "could not unmap memory object data");
2253  }
2254 
2255 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
2256  cl_mem get_ocl_mem_object() const {
2258  cl_mem mem_object;
2260  "could not get OpenCL buffer object from a memory object");
2261  return mem_object;
2262  }
2263 
2271  void set_ocl_mem_object(cl_mem mem_object) {
2273  "could not set OpenCL buffer object from a memory object");
2274  }
2275 #endif
2276 
2277 #if DNNL_WITH_SYCL && defined(DNNL_USE_SYCL_BUFFERS)
2278  template <typename T, int ndims = 1>
2285  cl::sycl::buffer<T, ndims> get_sycl_buffer(size_t *offset = nullptr) const {
2286  static_assert(ndims == 1, "only 1D buffers supported");
2287 
2288  void *handle_ptr;
2289  error::wrap_c_api(dnnl_memory_get_data_handle(get(), &handle_ptr),
2290  "could not get SYCL buffer object");
2291 
2292  // XXX: workaround for ComputeCpp
2293  // ComputeCpp fails to construct zero-range buffer
2294  if (!handle_ptr)
2295  return cl::sycl::buffer<T, ndims>(cl::sycl::range<1>(1));
2296 
2297  auto &buf_u8 = *static_cast<cl::sycl::buffer<uint8_t, 1> *>(handle_ptr);
2298  if (offset) *offset = 0;
2299  auto range = cl::sycl::range<1>(buf_u8.get_size() / sizeof(T));
2300  return buf_u8.reinterpret<T, 1>(range);
2301  }
2302 
2308  template <typename T, int ndims>
2309  void set_sycl_buffer(cl::sycl::buffer<T, ndims> &buf) {
2310  auto range = cl::sycl::range<1>(buf.get_size());
2311  auto buf_u8 = buf.template reinterpret<uint8_t, 1>(range);
2313  get(), static_cast<void *>(&buf_u8)),
2314  "could not set SYCL buffer object");
2315  }
2316 #endif
2317 
2318  static dnnl_data_type_t convert_to_c(data_type adata_type) {
2319  return static_cast<dnnl_data_type_t>(adata_type);
2320  }
2321  static dnnl_format_tag_t convert_to_c(format_tag format) {
2322  return static_cast<dnnl_format_tag_t>(format);
2323  }
2324 
2325 private:
2326 #if DNNL_WITH_SYCL
2327  struct with_sycl_tag {};
2328 
2329  DNNL_API memory(with_sycl_tag, const desc &md, const engine &engine,
2330  void *ahandle, bool is_usm);
2331 #endif
2332 };
2333 
2334 inline bool operator==(dnnl_data_type_t a, memory::data_type b) {
2335  return a == memory::convert_to_c(b);
2336 }
2337 inline bool operator!=(dnnl_data_type_t a, memory::data_type b) {
2338  return !(a == b);
2339 }
2340 inline bool operator==(memory::data_type a, dnnl_data_type_t b) {
2341  return b == a;
2342 }
2343 inline bool operator!=(memory::data_type a, dnnl_data_type_t b) {
2344  return !(a == b);
2345 }
2346 
2347 inline bool operator==(dnnl_format_tag_t a, memory::format_tag b) {
2348  return a == memory::convert_to_c(b);
2349 }
2350 inline bool operator!=(dnnl_format_tag_t a, memory::format_tag b) {
2351  return !(a == b);
2352 }
2353 inline bool operator==(memory::format_tag a, dnnl_format_tag_t b) {
2354  return b == a;
2355 }
2356 inline bool operator!=(memory::format_tag a, dnnl_format_tag_t b) {
2357  return !(a == b);
2358 }
2359 
2361 
2369 
2371 template <>
2372 struct handle_traits<dnnl_post_ops_t> {
2373  static dnnl_status_t destructor(dnnl_post_ops_t p) {
2374  return dnnl_post_ops_destroy(p);
2375  }
2376 };
2378 
2386 struct post_ops : public handle<dnnl_post_ops_t> {
2388 
2391  dnnl_post_ops_t result;
2393  dnnl_post_ops_create(&result), "could not create post-ops");
2394  reset(result);
2395  }
2396 
2398  int len() const { return dnnl_post_ops_len(get()); }
2399 
2403  primitive::kind kind(int index) const {
2405  "post-ops index is out of range");
2406  return static_cast<primitive::kind>(
2407  dnnl_post_ops_get_kind(get(), index));
2408  }
2409 
2440  void append_sum(float scale = 1.f,
2442  if (data_type == memory::data_type::undef)
2444  "could not append a sum post-op");
2445  else
2447  memory::convert_to_c(data_type)),
2448  "could not append a sum post-op");
2449  }
2450 
2455  void get_params_sum(int index, float &scale) const {
2457  "could not get parameters of a sum post-op");
2458  }
2459 
2466  int index, float &scale, memory::data_type &data_type) const {
2467  dnnl_data_type_t c_data_type;
2469  get(), index, &scale, &c_data_type),
2470  "could not get parameters of a sum post-op");
2471  data_type = static_cast<memory::data_type>(c_data_type);
2472  }
2473 
2488  float scale, algorithm aalgorithm, float alpha, float beta) {
2490  convert_to_c(aalgorithm), alpha, beta),
2491  "could not append an elementwise post-op");
2492  }
2493 
2501  void get_params_eltwise(int index, float &scale, algorithm &aalgorithm,
2502  float &alpha, float &beta) const {
2503  dnnl_alg_kind_t c_alg;
2505  get(), index, &scale, &c_alg, &alpha, &beta),
2506  "could not get parameters of an elementwise post-op");
2507  aalgorithm = static_cast<dnnl::algorithm>(c_alg);
2508  }
2509 
2538  void append_dw_k3s1p1(memory::data_type weights_data_type,
2539  memory::data_type bias_data_type, memory::data_type dst_data_type,
2540  int mask, const std::vector<float> &scales) {
2541 
2543  memory::convert_to_c(weights_data_type),
2544  memory::convert_to_c(bias_data_type),
2545  memory::convert_to_c(dst_data_type),
2546  scales.size(), mask, &scales[0]),
2547  "could not append depthwise post-op");
2548  }
2549 
2564  void get_params_dw_k3s1p1(int index, memory::data_type &weights_data_type,
2565  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2566  int &mask, std::vector<float> &scales) const {
2567 
2568  dnnl_data_type_t c_weights_data_type;
2569  dnnl_data_type_t c_bias_data_type;
2570  dnnl_data_type_t c_dst_data_type;
2571  dnnl_dim_t count;
2572  int c_mask;
2573  const float *c_scales;
2575  &c_weights_data_type, &c_bias_data_type,
2576  &c_dst_data_type, &count, &c_mask, &c_scales),
2577  "could not get parameters of depthwise post-op");
2578 
2579  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2580  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2581  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2582  scales.resize(count);
2583 
2584  mask = c_mask;
2585  for (dnnl_dim_t c = 0; c < count; ++c)
2586  scales[c] = c_scales[c];
2587  return;
2588  }
2589 
2623  void append_dw_k3s2p1(memory::data_type weights_data_type,
2624  memory::data_type bias_data_type, memory::data_type dst_data_type,
2625  int mask, const std::vector<float> &scales) {
2626 
2628  memory::convert_to_c(weights_data_type),
2629  memory::convert_to_c(bias_data_type),
2630  memory::convert_to_c(dst_data_type),
2631  scales.size(), mask, &scales[0]),
2632  "could not append depthwise post-op");
2633  }
2634 
2649  void get_params_dw_k3s2p1(int index, memory::data_type &weights_data_type,
2650  memory::data_type &bias_data_type, memory::data_type &dst_data_type,
2651  int &mask, std::vector<float> &scales) const {
2652 
2653  dnnl_data_type_t c_weights_data_type;
2654  dnnl_data_type_t c_bias_data_type;
2655  dnnl_data_type_t c_dst_data_type;
2656  dnnl_dim_t count;
2657  int c_mask;
2658  const float *c_scales;
2660  &c_weights_data_type, &c_bias_data_type,
2661  &c_dst_data_type, &count, &c_mask, &c_scales),
2662  "could not get parameters of depthwise post-op");
2663 
2664  weights_data_type = static_cast<memory::data_type>(c_weights_data_type);
2665  bias_data_type = static_cast<memory::data_type>(c_bias_data_type);
2666  dst_data_type = static_cast<memory::data_type>(c_dst_data_type);
2667  scales.resize(count);
2668 
2669  mask = c_mask;
2670  for (dnnl_dim_t c = 0; c < count; ++c)
2671  scales[c] = c_scales[c];
2672  return;
2673  }
2674 };
2675 
2677 template <>
2678 struct handle_traits<dnnl_primitive_attr_t> {
2679  static dnnl_status_t destructor(dnnl_primitive_attr_t p) {
2680  return dnnl_primitive_attr_destroy(p);
2681  }
2682 };
2684 
2688 struct primitive_attr : public handle<dnnl_primitive_attr_t> {
2690 
2693  dnnl_primitive_attr_t result;
2695  "could not create primitive attribute");
2696  reset(result);
2697  }
2698 
2705  : handle<dnnl_primitive_attr_t>(attr) {}
2706 
2709  dnnl_scratchpad_mode_t result;
2712  "could not get scratchpad mode primitive attribute");
2713  return scratchpad_mode(result);
2714  }
2715 
2721  get(), dnnl::convert_to_c(mode)),
2722  "could not set scratchpad mode primitive attribute");
2723  }
2724 
2734  void get_output_scales(int &mask, std::vector<float> &scales) const {
2735  dnnl_dim_t count;
2736  int c_mask;
2737  const float *c_scales;
2739  get(), &count, &c_mask, &c_scales),
2740  "could not get output scales primitive attribute");
2741  scales.resize(count);
2742 
2743  mask = c_mask;
2744  for (dnnl_dim_t c = 0; c < count; ++c)
2745  scales[c] = c_scales[c];
2746  }
2747 
2790  void set_output_scales(int mask, const std::vector<float> &scales) {
2793  get(), (dnnl_dim_t)scales.size(), mask, scales.data()),
2794  "could not set output scales primitive attribute");
2795  }
2796 
2808  void get_scales(int arg, int &mask, std::vector<float> &scales) const {
2809  dnnl_dim_t count;
2810  int c_mask;
2811  const float *c_scales;
2813  get(), arg, &count, &c_mask, &c_scales),
2814  "could not get scales primitive attributes");
2815  scales.resize(count);
2816 
2817  mask = c_mask;
2818  for (dnnl_dim_t c = 0; c < count; ++c)
2819  scales[c] = c_scales[c];
2820  }
2821 
2838  void set_scales(int arg, int mask, const std::vector<float> &scales) {
2841  (dnnl_dim_t)scales.size(), mask, scales.data()),
2842  "could not set scales primitive attribute");
2843  }
2844 
2856  int arg, int &mask, std::vector<int32_t> &zero_points) const {
2857  dnnl_dim_t count;
2858  int c_mask;
2859  const int32_t *c_zero_points;
2861  get(), arg, &count, &c_mask, &c_zero_points),
2862  "could not get zero points primitive attribute");
2863  zero_points.resize(count);
2864 
2865  mask = c_mask;
2866  for (dnnl_dim_t c = 0; c < count; ++c)
2867  zero_points[c] = c_zero_points[c];
2868  }
2869 
2891  int arg, int mask, const std::vector<int32_t> &zero_points) {
2893  (dnnl_dim_t)zero_points.size(), mask,
2894  zero_points.data()),
2895  "could not set zero points primitive attribute");
2896  }
2897 
2901  const post_ops get_post_ops() const {
2902  post_ops result;
2903  const_dnnl_post_ops_t c_result;
2905  "could not get post-ops primitive attribute");
2906  result.reset(const_cast<dnnl_post_ops_t>(c_result), true);
2907  return result;
2908  }
2909 
2918  void set_post_ops(const post_ops ops) {
2920  "could not set post-ops primitive attribute");
2921  }
2922 
2956  void set_rnn_data_qparams(float scale, float shift) {
2959  "could not set RNN data quantization parameters primitive "
2960  "attribute");
2961  }
2962 
2989  void set_rnn_weights_qparams(int mask, const std::vector<float> &scales) {
2991  (int)scales.size(), mask, scales.data()),
2992  "could not set RNN weights quantization parameters primitive "
2993  "attribute");
2994  }
2995 };
2996 
2998 
3001 
3003 struct primitive_desc_base : public handle<dnnl_primitive_desc_t> {
3005 
3007  primitive_desc_base() = default;
3008 
3011  engine get_engine() const { return engine::query(*this); }
3012 
3015  const char *impl_info_str() const {
3016  const char *res;
3018  get(), dnnl_query_impl_info_str, 0, &res),
3019  "could not retrieve implementation info string from a "
3020  "primitive descriptor");
3021  return res;
3022  }
3023 
3028  memory::dim res;
3030  get(), dnnl::convert_to_c(what), 0, &res);
3031  return status == dnnl_success ? res : 0;
3032  }
3033 
3048  memory::desc query_md(query what, int idx = 0) const {
3049  std::vector<query> valid_q {query::src_md, query::diff_src_md,
3053  if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
3054  [=](query q) { return what == q; }))
3055  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3056  "memory descriptor query is invalid");
3057 
3059  get(), dnnl::convert_to_c(what), idx);
3060  return cdesc ? memory::desc(*cdesc) : memory::desc();
3061  }
3062 
3068  memory::desc src_desc(int idx) const {
3069  return query_md(query::src_md, idx);
3070  }
3071 
3077  memory::desc dst_desc(int idx) const {
3078  return query_md(query::dst_md, idx);
3079  }
3080 
3086  memory::desc weights_desc(int idx) const {
3087  return query_md(query::weights_md, idx);
3088  }
3089 
3095  memory::desc diff_src_desc(int idx) const {
3096  return query_md(query::diff_src_md, idx);
3097  }
3098 
3104  memory::desc diff_dst_desc(int idx) const {
3105  return query_md(query::diff_dst_md, idx);
3106  }
3107 
3114  return query_md(query::diff_weights_md, idx);
3115  }
3116 
3117  // Separate versions without the index argument for documentation
3118  // purposes.
3119 
3124  memory::desc src_desc() const { return src_desc(0); }
3125 
3130  memory::desc dst_desc() const { return dst_desc(0); }
3131 
3136  memory::desc weights_desc() const { return weights_desc(0); }
3137 
3143 
3149 
3155 
3161  return query_md(query::workspace_md, 0);
3162  }
3163 
3170  return query_md(query::scratchpad_md, 0);
3171  }
3172 
3176  dnnl_engine_t c_engine;
3179  0, &c_engine),
3180  "could not retrieve scratchpad engine from a primitive "
3181  "descriptor");
3182  return engine(c_engine, true);
3183  }
3184 
3188  const_dnnl_primitive_attr_t const_c_attr;
3190  "could not get attributes from a primitive descriptor");
3191  dnnl_primitive_attr_t c_attr;
3192  error::wrap_c_api(dnnl_primitive_attr_clone(&c_attr, const_c_attr),
3193  "could not clone primitive attributes");
3194  return primitive_attr(c_attr);
3195  }
3196 
3200  dnnl_primitive_kind_t kind;
3202  dnnl_query_primitive_kind, 0, (void *)&kind),
3203  "could not get primitive kind from a primitive descriptor");
3204  return static_cast<dnnl::primitive::kind>(kind);
3205  }
3206 
3207 protected:
3212  dnnl_primitive_desc_t new_pd;
3214  "could not clone a primitive descriptor");
3215  reset(new_pd);
3216  }
3217 
3233  : primitive_desc_base(pd, prim_kind, dnnl::prop_kind::undef) {}
3234 
3247  dnnl::primitive::kind prim_kind, dnnl::prop_kind aprop_kind)
3248  : primitive_desc_base(pd, prim_kind, aprop_kind, aprop_kind) {}
3249 
3264  dnnl::primitive::kind prim_kind, dnnl::prop_kind prop_kind1,
3265  dnnl::prop_kind prop_kind2) {
3266  // It is OK to pass an empty primitive descriptor
3267  if (pd == nullptr) return;
3268 
3269  dnnl_status_t rc;
3270 
3271  dnnl_primitive_kind_t c_prim_kind = convert_to_c(prim_kind);
3272  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
3273  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
3274 
3275  // Check that primitive kind matches
3276  dnnl_primitive_kind_t pd_kind;
3278  pd, dnnl_query_primitive_kind, 0, (void *)&pd_kind);
3280  rc, "could not get primitive kind from a primitive descriptor");
3281  if (pd_kind != c_prim_kind)
3282  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3283  "primitive descriptor operation kind mismatch");
3284 
3285  // Check that propagation kind matches
3286  dnnl_prop_kind_t pd_prop_kind;
3288  pd, dnnl_query_prop_kind, 0, (void *)&pd_prop_kind);
3289 
3290  // Something went wrong
3291  if (rc != dnnl_success && rc != dnnl_unimplemented)
3292  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3293  "could not get propagation kind from the primitive "
3294  "descriptor");
3295 
3296  // Everything is fine
3297  if ((rc == dnnl_unimplemented && c_prop_kind1 == dnnl_prop_kind_undef)
3298  || (rc == dnnl_success
3299  && (pd_prop_kind == c_prop_kind1
3300  || pd_prop_kind == c_prop_kind2))) {
3301  reset_with_clone(pd);
3302  return;
3303  }
3304 
3305  // We could get the propagation kind but there is a mismatch
3306  DNNL_THROW_ERROR(dnnl_invalid_arguments,
3307  "primitive descriptor propagation kind mismatch");
3308  }
3309 
3310  using base = primitive_desc_base;
3311 };
3312 
3314 
3323 
3325 struct reorder : public primitive {
3329 
3331  primitive_desc() = default;
3332 
3350  primitive_desc(const engine &src_engine, const memory::desc &src_md,
3351  const engine &dst_engine, const memory::desc &dst_md,
3352  const primitive_attr &attr = primitive_attr(),
3353  bool allow_empty = false) {
3354  dnnl_primitive_desc_t result;
3356  &src_md.data, src_engine.get(), &dst_md.data,
3357  dst_engine.get(), attr.get());
3358  if (!allow_empty)
3360  "could not create a primitive descriptor for a reorder "
3361  "primitive");
3363  }
3364 
3376  primitive_desc(const memory &src, const memory &dst,
3377  const primitive_attr &attr = primitive_attr(),
3378  bool allow_empty = false) {
3379  dnnl_primitive_desc_t result;
3380  auto src_md = src.get_desc();
3381  auto dst_md = dst.get_desc();
3383  &src_md.data, src.get_engine().get(), &dst_md.data,
3384  dst.get_engine().get(), attr.get());
3385  if (!allow_empty)
3387  "could not create a primitive descriptor for a reorder "
3388  "primitive");
3390  }
3391 
3398 
3403  }
3404 
3409  }
3410 
3412  memory::desc src_desc() const { return base::src_desc(0); }
3413 
3415  memory::desc dst_desc() const { return base::dst_desc(0); }
3416  };
3417 
3419  reorder() = default;
3420 
3423  reorder(const primitive_desc &pd) : primitive(pd.get()) {}
3424 
3432  reorder(const memory &src, const memory &dst,
3433  const primitive_attr &attr = primitive_attr())
3434  : primitive(primitive_desc(src, dst, attr).get()) {}
3435 
3436  using primitive::execute;
3437 
3444  void execute(const stream &astream, memory &src, memory &dst) const {
3445  primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
3446  }
3447 
3448 #ifdef DNNL_SYCL_DPCPP
3449  using primitive::execute_sycl;
3450 
3461  cl::sycl::event execute_sycl(const stream &astream, memory &src,
3462  memory &dst, const std::vector<cl::sycl::event> &deps = {}) const {
3463  return primitive::execute_sycl(astream,
3464  {{DNNL_ARG_FROM, src},
3465  { DNNL_ARG_TO,
3466  dst }},
3467  deps);
3468  }
3469 #endif
3470 };
3471 
3473 
3481 
3483 inline std::vector<dnnl_memory_desc_t> convert_to_c(
3484  const std::vector<memory::desc> &mems) {
3485  std::vector<dnnl_memory_desc_t> c_mems;
3486  c_mems.reserve(mems.size());
3487  for (const auto &s : mems)
3488  c_mems.push_back(s.data);
3489  return c_mems;
3490 }
3492 
3494 struct concat : public primitive {
3498 
3500  primitive_desc() = default;
3501 
3512  primitive_desc(const memory::desc &dst, int concat_dimension,
3513  const std::vector<memory::desc> &srcs, const engine &aengine,
3514  const primitive_attr &attr = primitive_attr()) {
3515  auto c_srcs = convert_to_c(srcs);
3516 
3517  dnnl_primitive_desc_t result;
3520  (int)c_srcs.size(), concat_dimension, c_srcs.data(),
3521  attr.get(), aengine.get()),
3522  "could not create a primitive descriptor for a concat "
3523  "primitive");
3524  reset(result);
3525  }
3526 
3539  primitive_desc(int concat_dimension,
3540  const std::vector<memory::desc> &srcs, const engine &aengine,
3541  const primitive_attr &attr = primitive_attr()) {
3542  auto c_api_srcs = convert_to_c(srcs);
3543 
3544  dnnl_primitive_desc_t result;
3546  dnnl_concat_primitive_desc_create(&result, nullptr,
3547  (int)c_api_srcs.size(), concat_dimension,
3548  c_api_srcs.data(), attr.get(), aengine.get()),
3549  "could not create a primitive descriptor for a concat "
3550  "primitive");
3551  reset(result);
3552  }
3553 
3560 
3562  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3563 
3565  memory::desc dst_desc() const { return base::dst_desc(0); }
3566  };
3567 
3569  concat() = default;
3570 
3573  concat(const primitive_desc &pd) : primitive(pd.get()) {}
3574 };
3575 
3577 
3585 
3587 struct sum : public primitive {
3591 
3593  primitive_desc() = default;
3594 
3604  const std::vector<float> &scales,
3605  const std::vector<memory::desc> &srcs, const engine &aengine,
3606  const primitive_attr &attr = primitive_attr()) {
3607  validate_container_size(scales,
3608  "counts of scales and sources are not equal",
3609  (int)srcs.size(), (int)srcs.size());
3610 
3611  auto c_api_srcs = convert_to_c(srcs);
3612 
3613  dnnl_primitive_desc_t result;
3615  dnnl_sum_primitive_desc_create(&result, &dst.data,
3616  (int)c_api_srcs.size(), scales.data(),
3617  c_api_srcs.data(), attr.get(), aengine.get()),
3618  "could not create a primitive descriptor for a sum "
3619  "primitive");
3620  reset(result);
3621  }
3622 
3633  primitive_desc(const std::vector<float> &scales,
3634  const std::vector<memory::desc> &srcs, const engine &aengine,
3635  const primitive_attr &attr = primitive_attr()) {
3636  validate_container_size(scales,
3637  "counts of scales and sources are not equal",
3638  (int)srcs.size(), (int)srcs.size());
3639 
3640  auto c_api_srcs = convert_to_c(srcs);
3641  dnnl_primitive_desc_t result;
3643  dnnl_sum_primitive_desc_create(&result, nullptr,
3644  (int)c_api_srcs.size(), scales.data(),
3645  c_api_srcs.data(), attr.get(), aengine.get()),
3646  "could not create a primitive descriptor for a sum "
3647  "primitive");
3648  reset(result);
3649  }
3650 
3657 
3659  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
3660 
3662  memory::desc dst_desc() const { return base::dst_desc(0); }
3663  };
3664 
3666  sum() = default;
3667 
3670  sum(const primitive_desc &pd) : primitive(pd.get()) {}
3671 };
3672 
3674 
3677 
3682 
3683  primitive_desc() = default;
3684 
3708  const engine &aengine, const_dnnl_primitive_desc_t hint_fwd_pd,
3709  bool allow_empty = false)
3710  : allow_empty_(allow_empty) {
3711  dnnl_primitive_desc_iterator_t iterator = nullptr;
3713  desc, attr ? attr->get() : nullptr, aengine.get(), hint_fwd_pd);
3714  if (!allow_empty)
3716  status, "could not create a primitive descriptor iterator");
3717  pd_iterator.reset(iterator);
3718  fetch_impl();
3719  }
3720 
3725  bool next_impl() {
3727  = dnnl_primitive_desc_iterator_next(pd_iterator.get());
3728  if (status == dnnl_iterator_ends) return false;
3730  status, "could not advance a primitive descriptor iterator");
3731  fetch_impl();
3732  return true;
3733  }
3734 
3735 private:
3736  bool allow_empty_ = false;
3738  void fetch_impl() {
3740  pd_iterator.get(allow_empty_));
3741  error::wrap_c_api(pd != nullptr || allow_empty_ ? dnnl_success
3743  "could not fetch a primitive descriptor from a primitive "
3744  "descriptor iterator");
3745  reset(pd);
3746  }
3747 };
3748 
3750 
3760 
3764  struct desc {
3766 
3797  desc(prop_kind aprop_kind, algorithm aalgorithm,
3798  const memory::desc &src_desc, const memory::desc &weights_desc,
3799  const memory::desc &bias_desc, const memory::desc &dst_desc,
3800  const memory::dims &strides, const memory::dims &padding_l,
3801  const memory::dims &padding_r) {
3802  memory::validate_dims(strides, src_desc.data.ndims - 2);
3803  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3804  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3807  dnnl::convert_to_c(aprop_kind),
3808  convert_to_c(aalgorithm), &src_desc.data,
3809  &weights_desc.data, &bias_desc.data, &dst_desc.data,
3810  &strides[0], &padding_l[0], &padding_r[0]),
3811  "could not create a descriptor for a convolution forward "
3812  "propagation primitive");
3813  }
3814 
3843  desc(prop_kind aprop_kind, algorithm aalgorithm,
3844  const memory::desc &src_desc, const memory::desc &weights_desc,
3845  const memory::desc &dst_desc, const memory::dims &strides,
3846  const memory::dims &padding_l, const memory::dims &padding_r) {
3847  memory::validate_dims(strides, src_desc.data.ndims - 2);
3848  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3849  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3852  dnnl::convert_to_c(aprop_kind),
3853  convert_to_c(aalgorithm), &src_desc.data,
3854  &weights_desc.data, nullptr, &dst_desc.data,
3855  &strides[0], &padding_l[0], &padding_r[0]),
3856  "could not create a descriptor for a convolution forward "
3857  "propagation primitive");
3858  }
3859 
3892  desc(prop_kind aprop_kind, algorithm aalgorithm,
3893  const memory::desc &src_desc, const memory::desc &weights_desc,
3894  const memory::desc &bias_desc, const memory::desc &dst_desc,
3895  const memory::dims &strides, const memory::dims &dilates,
3896  const memory::dims &padding_l, const memory::dims &padding_r) {
3897  memory::validate_dims(strides, src_desc.data.ndims - 2);
3898  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3899  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3900  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3902  dnnl::convert_to_c(aprop_kind),
3903  convert_to_c(aalgorithm), &src_desc.data,
3904  &weights_desc.data, &bias_desc.data,
3905  &dst_desc.data, &strides[0], &dilates[0],
3906  &padding_l[0], &padding_r[0]),
3907  "could not create a descriptor for a dilated convolution "
3908  "forward propagation primitive");
3909  }
3910 
3941  desc(prop_kind aprop_kind, algorithm aalgorithm,
3942  const memory::desc &src_desc, const memory::desc &weights_desc,
3943  const memory::desc &dst_desc, const memory::dims &strides,
3944  const memory::dims &dilates, const memory::dims &padding_l,
3945  const memory::dims &padding_r) {
3946  memory::validate_dims(strides, src_desc.data.ndims - 2);
3947  memory::validate_dims(dilates, src_desc.data.ndims - 2);
3948  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
3949  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
3951  dnnl::convert_to_c(aprop_kind),
3952  convert_to_c(aalgorithm), &src_desc.data,
3953  &weights_desc.data, nullptr,
3954  &dst_desc.data, &strides[0], &dilates[0],
3955  &padding_l[0], &padding_r[0]),
3956  "could not create a descriptor for a dilated convolution "
3957  "forward propagation primitive");
3958  }
3959  };
3960 
3964  primitive_desc() = default;
3965 
3976  primitive_desc(const desc &adesc, const engine &aengine,
3977  bool allow_empty = false)
3978  : dnnl::primitive_desc(
3979  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
3980 
3992  primitive_desc(const desc &adesc, const primitive_attr &attr,
3993  const engine &aengine, bool allow_empty = false)
3994  : dnnl::primitive_desc(
3995  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
3996 
4004  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4007 
4009  memory::desc src_desc() const { return base::src_desc(0); }
4010 
4013 
4015  memory::desc dst_desc() const { return base::dst_desc(0); }
4016 
4022  };
4023 
4025  convolution_forward() = default;
4026 
4031 };
4032 
4035 
4037  struct desc {
4039 
4065  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4066  const memory::desc &weights_desc,
4067  const memory::desc &diff_dst_desc, const memory::dims &strides,
4068  const memory::dims &padding_l, const memory::dims &padding_r) {
4069  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4070  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4071  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4074  convert_to_c(aalgorithm), &diff_src_desc.data,
4075  &weights_desc.data, &diff_dst_desc.data,
4076  &strides[0], &padding_l[0], &padding_r[0]),
4077  "could not create a descriptor for a convolution backward "
4078  "propagation primitive");
4079  }
4080 
4108  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4109  const memory::desc &weights_desc,
4110  const memory::desc &diff_dst_desc, const memory::dims &strides,
4111  const memory::dims &dilates, const memory::dims &padding_l,
4112  const memory::dims &padding_r) {
4113  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4114  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4115  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4116  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4119  convert_to_c(aalgorithm), &diff_src_desc.data,
4120  &weights_desc.data, &diff_dst_desc.data,
4121  &strides[0], &dilates[0], &padding_l[0],
4122  &padding_r[0]),
4123  "could not create a descriptor for a dilated convolution "
4124  "backward propagation primitive");
4125  }
4126  };
4127 
4131  primitive_desc() = default;
4132 
4146  primitive_desc(const desc &adesc, const engine &aengine,
4147  const convolution_forward::primitive_desc &hint_fwd_pd,
4148  bool allow_empty = false)
4149  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4150  hint_fwd_pd.get(), allow_empty) {}
4151 
4166  primitive_desc(const desc &adesc, const primitive_attr &attr,
4167  const engine &aengine,
4168  const convolution_forward::primitive_desc &hint_fwd_pd,
4169  bool allow_empty = false)
4170  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4171  hint_fwd_pd.get(), allow_empty) {}
4172 
4180  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4182 
4185 
4188 
4191  };
4192 
4195 
4200 };
4201 
4205  struct desc {
4207 
4235  desc(algorithm aalgorithm, const memory::desc &src_desc,
4236  const memory::desc &diff_weights_desc,
4237  const memory::desc &diff_bias_desc,
4238  const memory::desc &diff_dst_desc, const memory::dims &strides,
4239  const memory::dims &padding_l, const memory::dims &padding_r) {
4240  memory::validate_dims(strides, src_desc.data.ndims - 2);
4241  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4242  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4245  convert_to_c(aalgorithm), &src_desc.data,
4246  &diff_weights_desc.data, &diff_bias_desc.data,
4247  &diff_dst_desc.data, &strides[0], &padding_l[0],
4248  &padding_r[0]),
4249  "could not create a descriptor for a convolution weights "
4250  "update primitive");
4251  }
4252 
4278  desc(algorithm aalgorithm, const memory::desc &src_desc,
4279  const memory::desc &diff_weights_desc,
4280  const memory::desc &diff_dst_desc, const memory::dims &strides,
4281  const memory::dims &padding_l, const memory::dims &padding_r) {
4282  memory::validate_dims(strides, src_desc.data.ndims - 2);
4283  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4284  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4286  convert_to_c(aalgorithm), &src_desc.data,
4287  &diff_weights_desc.data, nullptr,
4288  &diff_dst_desc.data, &strides[0],
4289  &padding_l[0], &padding_r[0]),
4290  "could not create a descriptor for a convolution weights "
4291  "update primitive");
4292  }
4293 
4323  desc(algorithm aalgorithm, const memory::desc &src_desc,
4324  const memory::desc &diff_weights_desc,
4325  const memory::desc &diff_bias_desc,
4326  const memory::desc &diff_dst_desc, const memory::dims &strides,
4327  const memory::dims &dilates, const memory::dims &padding_l,
4328  const memory::dims &padding_r) {
4329  memory::validate_dims(strides, src_desc.data.ndims - 2);
4330  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4331  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4332  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4335  convert_to_c(aalgorithm), &src_desc.data,
4336  &diff_weights_desc.data, &diff_bias_desc.data,
4337  &diff_dst_desc.data, &strides[0], &dilates[0],
4338  &padding_l[0], &padding_r[0]),
4339  "could not create a descriptor for a dilated convolution "
4340  "weights gradient primitive");
4341  }
4342 
4370  desc(algorithm aalgorithm, const memory::desc &src_desc,
4371  const memory::desc &diff_weights_desc,
4372  const memory::desc &diff_dst_desc, const memory::dims &strides,
4373  const memory::dims &dilates, const memory::dims &padding_l,
4374  const memory::dims &padding_r) {
4375  memory::validate_dims(strides, src_desc.data.ndims - 2);
4376  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4377  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4378  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4381  convert_to_c(aalgorithm), &src_desc.data,
4382  &diff_weights_desc.data, nullptr,
4383  &diff_dst_desc.data, &strides[0], &dilates[0],
4384  &padding_l[0], &padding_r[0]),
4385  "could not create a descriptor for a dilated convolution "
4386  "weights gradient primitive");
4387  }
4388  };
4389 
4393  primitive_desc() = default;
4394 
4407  primitive_desc(const desc &adesc, const engine &aengine,
4408  const convolution_forward::primitive_desc &hint_fwd_pd,
4409  bool allow_empty = false)
4410  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4411  hint_fwd_pd.get(), allow_empty) {}
4412 
4426  primitive_desc(const desc &adesc, const primitive_attr &attr,
4427  const engine &aengine,
4428  const convolution_forward::primitive_desc &hint_fwd_pd,
4429  bool allow_empty = false)
4430  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4431  hint_fwd_pd.get(), allow_empty) {}
4432 
4440  : dnnl::primitive_desc(pd, dnnl::primitive::kind::convolution,
4442 
4444  memory::desc src_desc() const { return base::src_desc(0); }
4445 
4448  return base::diff_weights_desc(0);
4449  }
4450 
4453 
4459  return base::diff_weights_desc(1);
4460  }
4461  };
4462 
4465 
4470 };
4471 
4473 //
4481 
4485  struct desc {
4487 
4517  desc(prop_kind aprop_kind, algorithm aalgorithm,
4518  const memory::desc &src_desc, const memory::desc &weights_desc,
4519  const memory::desc &bias_desc, const memory::desc &dst_desc,
4520  const memory::dims &strides, const memory::dims &padding_l,
4521  const memory::dims &padding_r) {
4522  memory::validate_dims(strides, src_desc.data.ndims - 2);
4523  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4524  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4527  dnnl::convert_to_c(aprop_kind),
4528  convert_to_c(aalgorithm), &src_desc.data,
4529  &weights_desc.data, &bias_desc.data, &dst_desc.data,
4530  &strides[0], &padding_l[0], &padding_r[0]),
4531  "could not create a descriptor for a deconvolution forward "
4532  "propagation primitive");
4533  }
4534 
4562  desc(prop_kind aprop_kind, algorithm aalgorithm,
4563  const memory::desc &src_desc, const memory::desc &weights_desc,
4564  const memory::desc &dst_desc, const memory::dims &strides,
4565  const memory::dims &padding_l, const memory::dims &padding_r) {
4566  memory::validate_dims(strides, src_desc.data.ndims - 2);
4567  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4568  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4571  dnnl::convert_to_c(aprop_kind),
4572  convert_to_c(aalgorithm), &src_desc.data,
4573  &weights_desc.data, nullptr, &dst_desc.data,
4574  &strides[0], &padding_l[0], &padding_r[0]),
4575  "could not create a descriptor for a deconvolution forward "
4576  "propagation primitive");
4577  }
4578 
4610  desc(prop_kind aprop_kind, algorithm aalgorithm,
4611  const memory::desc &src_desc, const memory::desc &weights_desc,
4612  const memory::desc &bias_desc, const memory::desc &dst_desc,
4613  const memory::dims &strides, const memory::dims &dilates,
4614  const memory::dims &padding_l, const memory::dims &padding_r) {
4615  memory::validate_dims(strides, src_desc.data.ndims - 2);
4616  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4617  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4618  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4620  &data, dnnl::convert_to_c(aprop_kind),
4621  convert_to_c(aalgorithm), &src_desc.data,
4622  &weights_desc.data, &bias_desc.data,
4623  &dst_desc.data, &strides[0], &dilates[0],
4624  &padding_l[0], &padding_r[0]),
4625  "could not create a descriptor for a dilated deconvolution "
4626  "forward propagation primitive");
4627  }
4628 
4658  desc(prop_kind aprop_kind, algorithm aalgorithm,
4659  const memory::desc &src_desc, const memory::desc &weights_desc,
4660  const memory::desc &dst_desc, const memory::dims &strides,
4661  const memory::dims &dilates, const memory::dims &padding_l,
4662  const memory::dims &padding_r) {
4663  memory::validate_dims(strides, src_desc.data.ndims - 2);
4664  memory::validate_dims(dilates, src_desc.data.ndims - 2);
4665  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4666  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4668  &data, dnnl::convert_to_c(aprop_kind),
4669  convert_to_c(aalgorithm), &src_desc.data,
4670  &weights_desc.data, nullptr,
4671  &dst_desc.data, &strides[0], &dilates[0],
4672  &padding_l[0], &padding_r[0]),
4673  "could not create a descriptor for a dilated deconvolution "
4674  "forward propagation primitive");
4675  }
4676  };
4677 
4681  primitive_desc() = default;
4682 
4693  primitive_desc(const desc &adesc, const engine &aengine,
4694  bool allow_empty = false)
4695  : dnnl::primitive_desc(
4696  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
4697 
4709  primitive_desc(const desc &adesc, const primitive_attr &attr,
4710  const engine &aengine, bool allow_empty = false)
4711  : dnnl::primitive_desc(
4712  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
4713 
4721  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4724 
4726  memory::desc src_desc() const { return base::src_desc(0); }
4727 
4730 
4732  memory::desc dst_desc() const { return base::dst_desc(0); }
4733 
4736  };
4737 
4740 
4745 };
4746 
4750  struct desc {
4752 
4777  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4778  const memory::desc &weights_desc,
4779  const memory::desc &diff_dst_desc, const memory::dims &strides,
4780  const memory::dims &padding_l, const memory::dims &padding_r) {
4781  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4782  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4783  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4786  convert_to_c(aalgorithm), &diff_src_desc.data,
4787  &weights_desc.data, &diff_dst_desc.data,
4788  &strides[0], &padding_l[0], &padding_r[0]),
4789  "could not create a descriptor for a deconvolution "
4790  "backward propagation primitive");
4791  }
4792 
4819  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
4820  const memory::desc &weights_desc,
4821  const memory::desc &diff_dst_desc, const memory::dims &strides,
4822  const memory::dims &dilates, const memory::dims &padding_l,
4823  const memory::dims &padding_r) {
4824  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
4825  memory::validate_dims(dilates, diff_src_desc.data.ndims - 2);
4826  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
4827  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
4830  convert_to_c(aalgorithm), &diff_src_desc.data,
4831  &weights_desc.data, &diff_dst_desc.data,
4832  &strides[0], &dilates[0], &padding_l[0],
4833  &padding_r[0]),
4834  "could not create a descriptor for a dilated deconvolution "
4835  "backward propagation primitive");
4836  }
4837  };
4838 
4842  primitive_desc() = default;
4843 
4857  primitive_desc(const desc &adesc, const engine &aengine,
4858  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4859  bool allow_empty = false)
4860  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
4861  hint_fwd_pd.get(), allow_empty) {}
4862 
4877  primitive_desc(const desc &adesc, const primitive_attr &attr,
4878  const engine &aengine,
4879  const deconvolution_forward::primitive_desc &hint_fwd_pd,
4880  bool allow_empty = false)
4881  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
4882  hint_fwd_pd.get(), allow_empty) {}
4883 
4891  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
4893 
4896 
4899 
4902  };
4903 
4906 
4911 };
4912 
4916  struct desc {
4918 
4945  desc(algorithm aalgorithm, const memory::desc &src_desc,
4946  const memory::desc &diff_weights_desc,
4947  const memory::desc &diff_bias_desc,
4948  const memory::desc &diff_dst_desc, const memory::dims &strides,
4949  const memory::dims &padding_l, const memory::dims &padding_r) {
4950  memory::validate_dims(strides, src_desc.data.ndims - 2);
4951  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4952  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4955  convert_to_c(aalgorithm), &src_desc.data,
4956  &diff_weights_desc.data, &diff_bias_desc.data,
4957  &diff_dst_desc.data, &strides[0], &padding_l[0],
4958  &padding_r[0]),
4959  "could not create a descriptor for a deconvolution weights "
4960  "update primitive");
4961  }
4962 
4987  desc(algorithm aalgorithm, const memory::desc &src_desc,
4988  const memory::desc &diff_weights_desc,
4989  const memory::desc &diff_dst_desc, const memory::dims &strides,
4990  const memory::dims &padding_l, const memory::dims &padding_r) {
4991  memory::validate_dims(strides, src_desc.data.ndims - 2);
4992  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
4993  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
4995  &data, convert_to_c(aalgorithm),
4996  &src_desc.data, &diff_weights_desc.data,
4997  nullptr, &diff_dst_desc.data, &strides[0],
4998  &padding_l[0], &padding_r[0]),
4999  "could not create a descriptor for a deconvolution weights "
5000  "update primitive");
5001  }
5002 
5031  desc(algorithm aalgorithm, const memory::desc &src_desc,
5032  const memory::desc &diff_weights_desc,
5033  const memory::desc &diff_bias_desc,
5034  const memory::desc &diff_dst_desc, const memory::dims &strides,
5035  const memory::dims &dilates, const memory::dims &padding_l,
5036  const memory::dims &padding_r) {
5037  memory::validate_dims(strides, src_desc.data.ndims - 2);
5038  memory::validate_dims(dilates, src_desc.data.ndims - 2);
5039  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5040  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5043  convert_to_c(aalgorithm), &src_desc.data,
5044  &diff_weights_desc.data, &diff_bias_desc.data,
5045  &diff_dst_desc.data, &strides[0], &dilates[0],
5046  &padding_l[0], &padding_r[0]),
5047  "could not create a descriptor for a dilated deconvolution "
5048  "weights gradient primitive");
5049  }
5050 
5077  desc(algorithm aalgorithm, const memory::desc &src_desc,
5078  const memory::desc &diff_weights_desc,
5079  const memory::desc &diff_dst_desc, const memory::dims &strides,
5080  const memory::dims &dilates, const memory::dims &padding_l,
5081  const memory::dims &padding_r) {
5082  memory::validate_dims(strides, src_desc.data.ndims - 2);
5083  memory::validate_dims(dilates, src_desc.data.ndims - 2);
5084  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5085  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5088  convert_to_c(aalgorithm), &src_desc.data,
5089  &diff_weights_desc.data, nullptr,
5090  &diff_dst_desc.data, &strides[0], &dilates[0],
5091  &padding_l[0], &padding_r[0]),
5092  "could not create a descriptor for a dilated deconvolution "
5093  "weights gradient primitive");
5094  }
5095  };
5096 
5100  primitive_desc() = default;
5101 
5115  primitive_desc(const desc &adesc, const engine &aengine,
5116  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5117  bool allow_empty = false)
5118  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5119  hint_fwd_pd.get(), allow_empty) {}
5120 
5135  primitive_desc(const desc &adesc, const primitive_attr &attr,
5136  const engine &aengine,
5137  const deconvolution_forward::primitive_desc &hint_fwd_pd,
5138  bool allow_empty = false)
5139  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5140  hint_fwd_pd.get(), allow_empty) {}
5141 
5149  : dnnl::primitive_desc(pd, dnnl::primitive::kind::deconvolution,
5151 
5153  memory::desc src_desc() const { return base::src_desc(0); }
5154 
5157  return base::diff_weights_desc(0);
5158  }
5159 
5162 
5165  return base::diff_weights_desc(1);
5166  }
5167  };
5168 
5171 
5176 };
5177 
5179 
5188 
5190 struct lrn_forward : public primitive {
5192  struct desc {
5193  dnnl_lrn_desc_t data;
5194 
5208  desc(prop_kind aprop_kind, algorithm aalgorithm,
5209  const memory::desc &data_desc, memory::dim local_size,
5210  float alpha, float beta, float k = 1.f) {
5212  dnnl::convert_to_c(aprop_kind),
5213  convert_to_c(aalgorithm), &data_desc.data,
5214  local_size, alpha, beta, k),
5215  "could not create a descriptor for a lrn forward "
5216  "propagation primitive");
5217  }
5218  };
5219 
5223  primitive_desc() = default;
5224 
5234  primitive_desc(const desc &adesc, const engine &aengine,
5235  bool allow_empty = false)
5236  : dnnl::primitive_desc(
5237  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5238 
5249  primitive_desc(const desc &adesc, const primitive_attr &attr,
5250  const engine &aengine, bool allow_empty = false)
5251  : dnnl::primitive_desc(
5252  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5253 
5261  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5264 
5266  memory::desc src_desc() const { return base::src_desc(0); }
5267 
5269  memory::desc dst_desc() const { return base::dst_desc(0); }
5270 
5273  };
5274 
5276  lrn_forward() = default;
5277 
5282 };
5283 
5285 struct lrn_backward : public primitive {
5287  struct desc {
5288  dnnl_lrn_desc_t data;
5289 
5302  desc(algorithm aalgorithm, const memory::desc &data_desc,
5303  const memory::desc &diff_data_desc, memory::dim local_size,
5304  float alpha, float beta, float k = 1.f) {
5306  dnnl_lrn_backward_desc_init(&data, convert_to_c(aalgorithm),
5307  &diff_data_desc.data, &data_desc.data, local_size,
5308  alpha, beta, k),
5309  "could not create a descriptor for a lrn backward "
5310  "propagation primitive");
5311  }
5312  };
5313 
5317  primitive_desc() = default;
5318 
5331  primitive_desc(const desc &adesc, const engine &aengine,
5332  const lrn_forward::primitive_desc &hint_fwd_pd,
5333  bool allow_empty = false)
5334  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5335  hint_fwd_pd.get(), allow_empty) {}
5336 
5350  primitive_desc(const desc &adesc, const primitive_attr &attr,
5351  const engine &aengine,
5352  const lrn_forward::primitive_desc &hint_fwd_pd,
5353  bool allow_empty = false)
5354  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5355  hint_fwd_pd.get(), allow_empty) {}
5356 
5364  : dnnl::primitive_desc(pd, dnnl::primitive::kind::lrn,
5366 
5369 
5372 
5375  };
5376 
5378  lrn_backward() = default;
5379 
5384 };
5385 
5387 
5395 
5397 struct pooling_forward : public primitive {
5399  struct desc {
5400  dnnl_pooling_desc_t data;
5401 
5426  desc(prop_kind aprop_kind, algorithm aalgorithm,
5427  const memory::desc &src_desc, const memory::desc &dst_desc,
5428  const memory::dims &strides, const memory::dims &kernel,
5429  const memory::dims &padding_l, const memory::dims &padding_r) {
5430  memory::validate_dims(strides, src_desc.data.ndims - 2);
5431  memory::validate_dims(kernel, src_desc.data.ndims - 2);
5432  memory::validate_dims(padding_l, src_desc.data.ndims - 2);
5433  memory::validate_dims(padding_r, src_desc.data.ndims - 2);
5435  dnnl::convert_to_c(aprop_kind),
5436  convert_to_c(aalgorithm), &src_desc.data,
5437  &dst_desc.data, &strides[0], &kernel[0],
5438  &padding_l[0], &padding_r[0]),
5439  "could not create a descriptor for a pooling forward "
5440  "propagation primitive");
5441  }
5442  };
5443 
5447  primitive_desc() = default;
5448 
5458  primitive_desc(const desc &adesc, const engine &aengine,
5459  bool allow_empty = false)
5460  : dnnl::primitive_desc(
5461  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5462 
5473  primitive_desc(const desc &adesc, const primitive_attr &attr,
5474  const engine &aengine, bool allow_empty = false)
5475  : dnnl::primitive_desc(
5476  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5477 
5485  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5488 
5490  memory::desc src_desc() const { return base::src_desc(0); }
5491 
5493  memory::desc dst_desc() const { return base::dst_desc(0); }
5494 
5497  };
5498 
5500  pooling_forward() = default;
5501 
5506 };
5507 
5509 struct pooling_backward : public primitive {
5511  struct desc {
5512  dnnl_pooling_desc_t data;
5513 
5535  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
5536  const memory::desc &diff_dst_desc, const memory::dims &strides,
5537  const memory::dims &kernel, const memory::dims &padding_l,
5538  const memory::dims &padding_r) {
5539  memory::validate_dims(strides, diff_src_desc.data.ndims - 2);
5540  memory::validate_dims(kernel, diff_src_desc.data.ndims - 2);
5541  memory::validate_dims(padding_l, diff_src_desc.data.ndims - 2);
5542  memory::validate_dims(padding_r, diff_src_desc.data.ndims - 2);
5545  convert_to_c(aalgorithm), &diff_src_desc.data,
5546  &diff_dst_desc.data, &strides[0], &kernel[0],
5547  &padding_l[0], &padding_r[0]),
5548  "could not create a descriptor for a pooling backward "
5549  "propagation primitive");
5550  }
5551  };
5552 
5556  primitive_desc() = default;
5557 
5570  primitive_desc(const desc &adesc, const engine &aengine,
5571  const pooling_forward::primitive_desc &hint_fwd_pd,
5572  bool allow_empty = false)
5573  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5574  hint_fwd_pd.get(), allow_empty) {}
5575 
5589  primitive_desc(const desc &adesc, const primitive_attr &attr,
5590  const engine &aengine,
5591  const pooling_forward::primitive_desc &hint_fwd_pd,
5592  bool allow_empty = false)
5593  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5594  hint_fwd_pd.get(), allow_empty) {}
5595 
5603  : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
5605 
5608 
5611 
5614  };
5615 
5617  pooling_backward() = default;
5618 
5623 };
5624 
5626 
5647 
5649 struct eltwise_forward : public primitive {
5651  struct desc {
5652  dnnl_eltwise_desc_t data;
5653 
5666  desc(prop_kind aprop_kind, algorithm aalgorithm,
5667  const memory::desc &data_desc, float alpha = 0,
5668  float beta = 0) {
5670  dnnl::convert_to_c(aprop_kind),
5671  dnnl::convert_to_c(aalgorithm),
5672  &data_desc.data, alpha, beta),
5673  "could not create a descriptor for an eltwise forward "
5674  "propagation primitive");
5675  }
5676  };
5677 
5681  primitive_desc() = default;
5682 
5693  primitive_desc(const desc &adesc, const engine &aengine,
5694  bool allow_empty = false)
5695  : dnnl::primitive_desc(
5696  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5697 
5709  primitive_desc(const desc &adesc, const primitive_attr &attr,
5710  const engine &aengine, bool allow_empty = false)
5711  : dnnl::primitive_desc(
5712  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5713 
5721  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5724 
5726  memory::desc src_desc() const { return base::src_desc(0); }
5727 
5729  memory::desc dst_desc() const { return base::dst_desc(0); }
5730  };
5731 
5733  eltwise_forward() = default;
5734 
5739 };
5740 
5742 struct eltwise_backward : public primitive {
5744  struct desc {
5745  dnnl_eltwise_desc_t data;
5746 
5758  desc(algorithm aalgorithm, const memory::desc &diff_data_desc,
5759  const memory::desc &data_desc, float alpha = 0,
5760  float beta = 0) {
5763  dnnl::convert_to_c(aalgorithm),
5764  &diff_data_desc.data, &data_desc.data, alpha, beta),
5765  "could not create a descriptor for an eltwise backward "
5766  "propagation primitive");
5767  }
5768  };
5769 
5773  primitive_desc() = default;
5774 
5788  primitive_desc(const desc &adesc, const engine &aengine,
5789  const eltwise_forward::primitive_desc &hint_fwd_pd,
5790  bool allow_empty = false)
5791  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5792  hint_fwd_pd.get(), allow_empty) {}
5793 
5808  primitive_desc(const desc &adesc, const primitive_attr &attr,
5809  const engine &aengine,
5810  const eltwise_forward::primitive_desc &hint_fwd_pd,
5811  bool allow_empty = false)
5812  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
5813  hint_fwd_pd.get(), allow_empty) {}
5814 
5822  : dnnl::primitive_desc(pd, dnnl::primitive::kind::eltwise,
5824 
5826  memory::desc src_desc() const { return base::src_desc(0); }
5827 
5830 
5833  };
5834 
5836  eltwise_backward() = default;
5837 
5842 };
5843 
5845 
5853 
5855 struct softmax_forward : public primitive {
5857  struct desc {
5858  dnnl_softmax_desc_t data;
5859 
5861  desc() = default;
5862 
5871  desc(prop_kind aprop_kind, const memory::desc &data_desc,
5872  int softmax_axis) {
5874  dnnl::convert_to_c(aprop_kind),
5875  &data_desc.data, softmax_axis),
5876  "could not create a descriptor for a softmax forward "
5877  "propagation primitive");
5878  }
5879  };
5880 
5884  primitive_desc() = default;
5885 
5896  primitive_desc(const desc &adesc, const engine &aengine,
5897  bool allow_empty = false)
5898  : dnnl::primitive_desc(
5899  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
5900 
5912  primitive_desc(const desc &adesc, const primitive_attr &attr,
5913  const engine &aengine, bool allow_empty = false)
5914  : dnnl::primitive_desc(
5915  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
5916 
5924  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
5927 
5929  memory::desc src_desc() const { return base::src_desc(0); }
5930 
5932  memory::desc dst_desc() const { return base::dst_desc(0); }
5933  };
5934 
5936  softmax_forward() = default;
5937 
5942 };
5943 
5945 struct softmax_backward : public primitive {
5947  struct desc {
5948  dnnl_softmax_desc_t data;
5949 
5951  desc() = default;
5952 
5960  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
5961  int softmax_axis) {
5963  dnnl_softmax_backward_desc_init(&data, &diff_data_desc.data,
5964  &data_desc.data, softmax_axis),
5965  "could not create a descriptor for a softmax backward "
5966  "propagation primitive");
5967  }
5968  };
5969 
5973  primitive_desc() = default;
5974 
5988  primitive_desc(const desc &adesc, const engine &aengine,
5989  const softmax_forward::primitive_desc &hint_fwd_pd,
5990  bool allow_empty = false)
5991  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
5992  hint_fwd_pd.get(), allow_empty) {}
5993 
6008  primitive_desc(const desc &adesc, const primitive_attr &attr,
6009  const engine &aengine,
6010  const softmax_forward::primitive_desc &hint_fwd_pd,
6011  bool allow_empty = false)
6012  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6013  hint_fwd_pd.get(), allow_empty) {}
6014 
6022  : dnnl::primitive_desc(pd, dnnl::primitive::kind::softmax,
6024 
6026  memory::desc dst_desc() const { return base::dst_desc(0); }
6027 
6030 
6033  };
6034 
6036  softmax_backward() = default;
6037 
6042 };
6043 
6045 
6053 
6057  struct desc {
6059 
6061  desc() = default;
6062 
6071  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6072  int logsoftmax_axis) {
6074  dnnl::convert_to_c(aprop_kind),
6075  &data_desc.data, logsoftmax_axis),
6076  "could not create a descriptor for a logsoftmax forward "
6077  "propagation primitive");
6078  }
6079  };
6080 
6084  primitive_desc() = default;
6085 
6096  primitive_desc(const desc &adesc, const engine &aengine,
6097  bool allow_empty = false)
6098  : dnnl::primitive_desc(
6099  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6100 
6112  primitive_desc(const desc &adesc, const primitive_attr &attr,
6113  const engine &aengine, bool allow_empty = false)
6114  : dnnl::primitive_desc(
6115  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6116 
6124  : dnnl::primitive_desc(pd,
6125  // Logsoftmax and softmax share the implementation and
6126  // currently report the same primitive kind. Hence this
6127  // must be softmax and not logsoftmax.
6128  dnnl::primitive::kind::softmax,
6131 
6133  memory::desc src_desc() const { return base::src_desc(0); }
6134 
6136  memory::desc dst_desc() const { return base::dst_desc(0); }
6137  };
6138 
6140  logsoftmax_forward() = default;
6141 
6146 };
6147 
6151  struct desc {
6153 
6155  desc() = default;
6156 
6164  desc(const memory::desc &diff_data_desc, const memory::desc &data_desc,
6165  int logsoftmax_axis) {
6167  &diff_data_desc.data, &data_desc.data,
6168  logsoftmax_axis),
6169  "could not create a descriptor for a logsoftmax backward "
6170  "propagation primitive");
6171  }
6172  };
6173 
6177  primitive_desc() = default;
6178 
6192  primitive_desc(const desc &adesc, const engine &aengine,
6193  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6194  bool allow_empty = false)
6195  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6196  hint_fwd_pd.get(), allow_empty) {}
6197 
6212  primitive_desc(const desc &adesc, const primitive_attr &attr,
6213  const engine &aengine,
6214  const logsoftmax_forward::primitive_desc &hint_fwd_pd,
6215  bool allow_empty = false)
6216  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6217  hint_fwd_pd.get(), allow_empty) {}
6218 
6226  : dnnl::primitive_desc(pd,
6227  // Logsoftmax and softmax share the implementation and
6228  // currently report the same primitive kind. Hence this
6229  // must be softmax and not logsoftmax.
6230  dnnl::primitive::kind::softmax,
6232 
6234  memory::desc dst_desc() const { return base::dst_desc(0); }
6235 
6238 
6241  };
6242 
6244  logsoftmax_backward() = default;
6245 
6250 };
6251 
6253 
6273 
6277  struct desc {
6279 
6294  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6295  normalization_flags flags) {
6298  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6299  epsilon, convert_to_c(flags)),
6300  "could not create a descriptor for a batch normalization "
6301  "forward propagation primitive");
6302  }
6303  };
6304 
6309  primitive_desc() = default;
6310 
6321  primitive_desc(const desc &adesc, const engine &aengine,
6322  bool allow_empty = false)
6323  : dnnl::primitive_desc(
6324  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6325 
6337  primitive_desc(const desc &adesc, const primitive_attr &attr,
6338  const engine &aengine, bool allow_empty = false)
6339  : dnnl::primitive_desc(
6340  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6341 
6349  : dnnl::primitive_desc(pd,
6350  dnnl::primitive::kind::batch_normalization,
6353 
6355  memory::desc src_desc() const { return base::src_desc(0); }
6356 
6358  memory::desc dst_desc() const { return base::dst_desc(0); }
6359 
6362 
6365 
6368  memory::desc mean_desc() const { return stat_desc(mean); }
6369 
6372  memory::desc variance_desc() const { return stat_desc(var); }
6373 
6374  private:
6375  enum {
6376  mean = 1,
6377  var = 2,
6378  };
6379  memory::desc stat_desc(int kind) const {
6384  &p),
6385  "could not retrieve a descriptor from a primitive "
6386  "descriptor for batch normalization forward propagation "
6387  "primitive");
6388  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6389  : query::dst_md,
6390  kind);
6391  }
6392  };
6393 
6396 
6401 };
6402 
6406  struct desc {
6408 
6421  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6422  const memory::desc &data_desc, float epsilon,
6423  normalization_flags flags) {
6425  dnnl::convert_to_c(aprop_kind),
6426  &diff_data_desc.data, &data_desc.data,
6427  epsilon, convert_to_c(flags)),
6428  "could not create a descriptor for a batch normalization "
6429  "backward propagation primitive");
6430  }
6431  };
6432 
6437  primitive_desc() = default;
6438 
6452  primitive_desc(const desc &adesc, const engine &aengine,
6454  bool allow_empty = false)
6455  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6456  hint_fwd_pd.get(), allow_empty) {}
6457 
6472  primitive_desc(const desc &adesc, const primitive_attr &attr,
6473  const engine &aengine,
6475  bool allow_empty = false)
6476  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6477  hint_fwd_pd.get(), allow_empty) {}
6478 
6486  : dnnl::primitive_desc(pd,
6487  dnnl::primitive::kind::batch_normalization,
6489  }
6490 
6492  memory::desc src_desc() const { return base::src_desc(0); }
6493 
6496 
6498  memory::desc dst_desc() const { return base::dst_desc(0); }
6499 
6502 
6505 
6508  return base::diff_weights_desc(0);
6509  }
6510 
6513 
6516  return query_md(query::src_md, 2);
6517  }
6518 
6521  };
6522 
6525 
6530 };
6531 
6533 
6555 
6559  struct desc {
6561 
6573  desc(prop_kind aprop_kind, const memory::desc &data_desc,
6574  const memory::desc &stat_desc, float epsilon,
6575  normalization_flags flags) {
6578  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6579  &stat_desc.data, epsilon, convert_to_c(flags)),
6580  "could not create a descriptor for a layer normalization "
6581  "forward propagation primitive");
6582  }
6583 
6594  desc(prop_kind aprop_kind, const memory::desc &data_desc, float epsilon,
6595  normalization_flags flags) {
6598  dnnl::convert_to_c(aprop_kind), &data_desc.data,
6599  nullptr, epsilon, convert_to_c(flags)),
6600  "could not create a descriptor for a layer normalization "
6601  "forward propagation primitive");
6602  }
6603  };
6604 
6609  primitive_desc() = default;
6610 
6621  primitive_desc(const desc &adesc, const engine &aengine,
6622  bool allow_empty = false)
6623  : dnnl::primitive_desc(
6624  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6625 
6637  primitive_desc(const desc &adesc, const primitive_attr &attr,
6638  const engine &aengine, bool allow_empty = false)
6639  : dnnl::primitive_desc(
6640  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6641 
6649  : dnnl::primitive_desc(pd,
6650  dnnl::primitive::kind::layer_normalization,
6653 
6655  memory::desc src_desc() const { return base::src_desc(0); }
6656 
6658  memory::desc dst_desc() const { return base::dst_desc(0); }
6659 
6662 
6665 
6667  memory::desc mean_desc() const { return stat_desc(mean); }
6668 
6670  memory::desc variance_desc() const { return stat_desc(var); }
6671 
6672  private:
6673  enum {
6674  mean = 1,
6675  var = 2,
6676  };
6677  memory::desc stat_desc(int kind) const {
6682  &p),
6683  "could not retrieve a descriptor from a primitive "
6684  "descriptor for layer normalization forward propagation "
6685  "primitive");
6686  return query_md(p->flags & dnnl_use_global_stats ? query::src_md
6687  : query::dst_md,
6688  kind);
6689  }
6690  };
6691 
6694 
6699 };
6700 
6704  struct desc {
6706 
6720  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6721  const memory::desc &data_desc, const memory::desc &stat_desc,
6722  float epsilon, normalization_flags flags) {
6725  dnnl::convert_to_c(aprop_kind),
6726  &diff_data_desc.data, &data_desc.data,
6727  &stat_desc.data, epsilon, convert_to_c(flags)),
6728  "could not create a descriptor for a batch normalization "
6729  "backward propagation primitive");
6730  }
6731 
6744  desc(prop_kind aprop_kind, const memory::desc &diff_data_desc,
6745  const memory::desc &data_desc, float epsilon,
6746  normalization_flags flags) {
6748  dnnl::convert_to_c(aprop_kind),
6749  &diff_data_desc.data, &data_desc.data,
6750  nullptr, epsilon, convert_to_c(flags)),
6751  "could not create a descriptor for a batch normalization "
6752  "backward propagation primitive");
6753  }
6754  };
6755 
6760  primitive_desc() = default;
6761 
6775  primitive_desc(const desc &adesc, const engine &aengine,
6777  bool allow_empty = false)
6778  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
6779  hint_fwd_pd.get(), allow_empty) {}
6780 
6795  primitive_desc(const desc &adesc, const primitive_attr &attr,
6796  const engine &aengine,
6798  bool allow_empty = false)
6799  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
6800  hint_fwd_pd.get(), allow_empty) {}
6801 
6809  : dnnl::primitive_desc(pd,
6810  dnnl::primitive::kind::layer_normalization,
6812  }
6813 
6815  memory::desc src_desc() const { return base::src_desc(0); }
6816 
6819 
6821  memory::desc dst_desc() const { return base::dst_desc(0); }
6822 
6825 
6828 
6831  return base::diff_weights_desc(0);
6832  }
6833 
6836 
6839  return query_md(query::src_md, 2);
6840  }
6841 
6844  };
6845 
6848 
6853 };
6854 
6856 
6864 
6868  struct desc {
6870 
6885  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6886  const memory::desc &weights_desc, const memory::desc &bias_desc,
6887  const memory::desc &dst_desc) {
6889  dnnl::convert_to_c(aprop_kind),
6890  &src_desc.data, &weights_desc.data,
6891  &bias_desc.data, &dst_desc.data),
6892  "could not create a descriptor for an inner product "
6893  "forward propagation primitive");
6894  }
6895 
6909  desc(prop_kind aprop_kind, const memory::desc &src_desc,
6910  const memory::desc &weights_desc,
6911  const memory::desc &dst_desc) {
6914  dnnl::convert_to_c(aprop_kind), &src_desc.data,
6915  &weights_desc.data, nullptr, &dst_desc.data),
6916  "could not create a descriptor for an inner product "
6917  "forward propagation primitive");
6918  }
6919  };
6920 
6924  primitive_desc() = default;
6925 
6936  primitive_desc(const desc &adesc, const engine &aengine,
6937  bool allow_empty = false)
6938  : dnnl::primitive_desc(
6939  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
6940 
6952  primitive_desc(const desc &adesc, const primitive_attr &attr,
6953  const engine &aengine, bool allow_empty = false)
6954  : dnnl::primitive_desc(
6955  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
6956 
6964  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
6967 
6969  memory::desc src_desc() const { return base::src_desc(0); }
6970 
6973 
6975  memory::desc dst_desc() const { return base::dst_desc(0); }
6976 
6979  };
6980 
6983 
6988 };
6989 
6993  struct desc {
6995 
7006  desc(const memory::desc &diff_src_desc,
7007  const memory::desc &weights_desc,
7008  const memory::desc &diff_dst_desc) {
7010  &diff_src_desc.data, &weights_desc.data,
7011  &diff_dst_desc.data),
7012  "could not create a descriptor for an inner product "
7013  "backward propagation primitive");
7014  }
7015  };
7016 
7021  primitive_desc() = default;
7022 
7036  primitive_desc(const desc &adesc, const engine &aengine,
7037  const inner_product_forward::primitive_desc &hint_fwd_pd,
7038  bool allow_empty = false)
7039  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7040  hint_fwd_pd.get(), allow_empty) {}
7041 
7056  primitive_desc(const desc &adesc, const primitive_attr &attr,
7057  const engine &aengine,
7058  const inner_product_forward::primitive_desc &hint_fwd_pd,
7059  bool allow_empty = false)
7060  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7061  hint_fwd_pd.get(), allow_empty) {}
7062 
7070  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7072 
7075 
7078 
7081  };
7082 
7085 
7090 };
7091 
7095  struct desc {
7097 
7109  desc(const memory::desc &src_desc,
7110  const memory::desc &diff_weights_desc,
7111  const memory::desc &diff_bias_desc,
7112  const memory::desc &diff_dst_desc) {
7115  &src_desc.data, &diff_weights_desc.data,
7116  &diff_bias_desc.data, &diff_dst_desc.data),
7117  "could not create a descriptor for an inner product "
7118  "weights gradient primitive");
7119  }
7120 
7131  desc(const memory::desc &src_desc,
7132  const memory::desc &diff_weights_desc,
7133  const memory::desc &diff_dst_desc) {
7136  &src_desc.data, &diff_weights_desc.data, nullptr,
7137  &diff_dst_desc.data),
7138  "could not create a descriptor for an inner product "
7139  "weights gradient primitive");
7140  }
7141  };
7142 
7146  primitive_desc() = default;
7147 
7161  primitive_desc(const desc &adesc, const engine &aengine,
7162  const inner_product_forward::primitive_desc &hint_fwd_pd,
7163  bool allow_empty = false)
7164  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
7165  hint_fwd_pd.get(), allow_empty) {}
7166 
7181  primitive_desc(const desc &adesc, const primitive_attr &attr,
7182  const engine &aengine,
7183  const inner_product_forward::primitive_desc &hint_fwd_pd,
7184  bool allow_empty = false)
7185  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
7186  hint_fwd_pd.get(), allow_empty) {}
7187 
7195  : dnnl::primitive_desc(pd, dnnl::primitive::kind::inner_product,
7197 
7199  memory::desc src_desc() const { return base::src_desc(0); }
7200 
7203  return base::diff_weights_desc(0);
7204  }
7205 
7208 
7211  return base::diff_weights_desc(1);
7212  }
7213  };
7214 
7217 
7222 };
7223 
7225 
7233 
7236  using primitive_desc::primitive_desc;
7237 
7240 
7249  dnnl::prop_kind aprop_kind, dnnl::algorithm cell_kind)
7250  : rnn_primitive_desc_base(pd, aprop_kind, aprop_kind, cell_kind) {}
7251 
7256  }
7257 
7264  }
7265 
7270  }
7271 
7276  }
7277 
7282  }
7283 
7288  }
7289 
7294  }
7295 
7302  }
7303 
7308  }
7309 
7316  }
7317 
7322  }
7323 
7328  }
7329 
7336  }
7337 
7342  }
7343 
7348  }
7349 
7354  }
7355 
7359  return base::query_md(
7361  }
7362 
7366  return base::query_md(
7368  }
7369 
7376  }
7377 
7382  }
7383 
7390  }
7391 
7396  }
7397 
7398 protected:
7399  using rnn_base = rnn_primitive_desc_base;
7400 
7401  // (Deliberately not using doxygen comments)
7402  //
7403  // Constructs an RNN primitive descriptor base from a C API primitive
7404  // descriptor while checking that it actually describes the expected
7405  // primitive by comparing propagation and primitive kinds. Caller can
7406  // pass two options propagation kinds. This is typically used to check
7407  // that propagation kind is inference or training forward propagation.
7408  //
7409  // @param pd C API primitive descriptor.
7410  // @param prop_kind1 Expected propagation kind.
7411  // @param prop_kind2 Expected propagation kind.
7412  // @param cell_kind Expected cell kind.
7414  dnnl::prop_kind prop_kind1, dnnl::prop_kind prop_kind2,
7415  dnnl::algorithm cell_kind) {
7417  dnnl_status_t rc;
7418  rc = dnnl_primitive_desc_query(pd, dnnl_query_rnn_d, 0, &rnn_d);
7419  error::wrap_c_api(rc,
7420  "could not retrieve a descriptor from a primitive descriptor "
7421  "for an RNN primitive");
7422 
7423  dnnl_prop_kind_t c_prop_kind1 = convert_to_c(prop_kind1);
7424  dnnl_prop_kind_t c_prop_kind2 = convert_to_c(prop_kind2);
7425  dnnl_alg_kind_t c_cell_kind = convert_to_c(cell_kind);
7426 
7427  bool ok = rnn_d->primitive_kind == dnnl_rnn
7428  && (rnn_d->prop_kind == c_prop_kind1
7429  || rnn_d->prop_kind == c_prop_kind2)
7430  && rnn_d->cell_kind == c_cell_kind;
7431 
7432  if (!ok)
7433  DNNL_THROW_ERROR(dnnl_invalid_arguments,
7434  "mismatch between expected and provided descriptors for an "
7435  "RNN primitive");
7436 
7437  reset_with_clone(pd);
7438  }
7439 };
7440 
7444  struct desc {
7445  dnnl_rnn_desc_t data;
7446 
7487  desc(prop_kind aprop_kind, algorithm activation,
7488  rnn_direction direction, const memory::desc &src_layer_desc,
7489  const memory::desc &src_iter_desc,
7490  const memory::desc &weights_layer_desc,
7491  const memory::desc &weights_iter_desc,
7492  const memory::desc &bias_desc,
7493  const memory::desc &dst_layer_desc,
7494  const memory::desc &dst_iter_desc,
7495  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7496  float beta = 0.0f) {
7499  dnnl::convert_to_c(aprop_kind),
7500  dnnl::convert_to_c(activation),
7501  dnnl::convert_to_c(direction), &src_layer_desc.data,
7502  &src_iter_desc.data, &weights_layer_desc.data,
7503  &weights_iter_desc.data, &bias_desc.data,
7504  &dst_layer_desc.data, &dst_iter_desc.data,
7505  dnnl::convert_to_c(flags), alpha, beta),
7506  "could not create a descriptor for a vanilla RNN forward "
7507  "propagation primitive");
7508  }
7509  };
7510 
7514  primitive_desc() = default;
7515 
7526  primitive_desc(const desc &adesc, const engine &aengine,
7527  bool allow_empty = false)
7529  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
7530 
7542  primitive_desc(const desc &adesc, const primitive_attr &attr,
7543  const engine &aengine, bool allow_empty = false)
7545  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
7546 
7556  dnnl::algorithm::vanilla_rnn) {}
7557 
7560  return rnn_base::src_layer_desc();
7561  }
7562 
7565 
7569  }
7570 
7573  return rnn_base::weights_iter_desc();
7574  }
7575 
7578 
7581  return rnn_base::dst_layer_desc();
7582  }
7583 
7586 
7589  return rnn_base::workspace_desc();
7590  }
7591  };
7592 
7594  vanilla_rnn_forward() = default;
7595 
7600 };
7601 
7605  struct desc {
7606  dnnl_rnn_desc_t data;
7607 
7660  desc(prop_kind aprop_kind, algorithm activation,
7661  rnn_direction direction, const memory::desc &src_layer_desc,
7662  const memory::desc &src_iter_desc,
7663  const memory::desc &weights_layer_desc,
7664  const memory::desc &weights_iter_desc,
7665  const memory::desc &bias_desc,
7666  const memory::desc &dst_layer_desc,
7667  const memory::desc &dst_iter_desc,
7668  const memory::desc &diff_src_layer_desc,
7669  const memory::desc &diff_src_iter_desc,
7670  const memory::desc &diff_weights_layer_desc,
7671  const memory::desc &diff_weights_iter_desc,
7672  const memory::desc &diff_bias_desc,
7673  const memory::desc &diff_dst_layer_desc,
7674  const memory::desc &diff_dst_iter_desc,
7675  rnn_flags flags = rnn_flags::undef, float alpha = 0.0f,
7676  float beta = 0.0f) {
7679  dnnl::convert_to_c(aprop_kind),
7680  dnnl::convert_to_c(activation),
7681  dnnl::convert_to_c(direction), &src_layer_desc.data,
7682  &src_iter_desc.data, &weights_layer_desc.data,
7683  &weights_iter_desc.data, &bias_desc.data,
7684  &dst_layer_desc.data, &dst_iter_desc.data,
7685  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
7686  &diff_weights_layer_desc.data,
7687  &diff_weights_iter_desc.data, &diff_bias_desc.data,
7688  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
7689  dnnl::convert_to_c(flags), alpha, beta),
7690  "could not create a descriptor for a vanilla RNN backward "
7691  "propagation primitive");
7692  }
7693  };
7694 
7698  primitive_desc() = default;
7699 
7713  primitive_desc(const desc &adesc, const engine &aengine,
7714  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7715  bool allow_empty = false)
7716  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
7717  hint_fwd_pd.get(), allow_empty) {}
7718 
7733  primitive_desc(const desc &adesc, const primitive_attr &attr,
7734  const engine &aengine,
7735  const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
7736  bool allow_empty = false)
7737  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
7738  hint_fwd_pd.get(), allow_empty) {}
7739 
7748  dnnl::algorithm::vanilla_rnn) {}
7749 
7752  return rnn_base::src_layer_desc();
7753  }
7754 
7757 
7761  }
7762 
7765  return rnn_base::weights_iter_desc();
7766  }
7767 
7770 
7773  return rnn_base::dst_layer_desc();
7774  }
7775 
7778 
7781  return rnn_base::workspace_desc();
7782  }
7783 
7787  }
7788 
7792  }
7793 
7797  }
7798 
7802  }
7803 
7806  return rnn_base::diff_bias_desc();
7807  }
7808 
7812  }
7813 
7817  }
7818  };
7819 
7822 
7827 };
7828 
7830 struct lstm_forward : public primitive {
7832  struct desc {
7833  dnnl_rnn_desc_t data;
7834 
7883  desc(prop_kind aprop_kind, rnn_direction direction,
7884  const memory::desc &src_layer_desc,
7885  const memory::desc &src_iter_desc,
7886  const memory::desc &src_iter_c_desc,
7887  const memory::desc &weights_layer_desc,
7888  const memory::desc &weights_iter_desc,
7889  const memory::desc &weights_peephole_desc,
7890  const memory::desc &weights_projection_desc,
7891  const memory::desc &bias_desc,
7892  const memory::desc &dst_layer_desc,
7893  const memory::desc &dst_iter_desc,
7894  const memory::desc &dst_iter_c_desc,
7895  rnn_flags flags = rnn_flags::undef) {
7898  dnnl::convert_to_c(aprop_kind),
7899  dnnl::convert_to_c(direction), &src_layer_desc.data,
7900  &src_iter_desc.data, &src_iter_c_desc.data,
7901  &weights_layer_desc.data, &weights_iter_desc.data,
7902  &weights_peephole_desc.data,
7903  &weights_projection_desc.data, &bias_desc.data,
7904  &dst_layer_desc.data, &dst_iter_desc.data,
7905  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7906  "could not create a descriptor for an LSTM forward "
7907  "propagation primitive");
7908  }
7909 
7951  desc(prop_kind aprop_kind, rnn_direction direction,
7952  const memory::desc &src_layer_desc,
7953  const memory::desc &src_iter_desc,
7954  const memory::desc &src_iter_c_desc,
7955  const memory::desc &weights_layer_desc,
7956  const memory::desc &weights_iter_desc,
7957  const memory::desc &weights_peephole_desc,
7958  const memory::desc &bias_desc,
7959  const memory::desc &dst_layer_desc,
7960  const memory::desc &dst_iter_desc,
7961  const memory::desc &dst_iter_c_desc,
7962  rnn_flags flags = rnn_flags::undef) {
7965  dnnl::convert_to_c(aprop_kind),
7966  dnnl::convert_to_c(direction), &src_layer_desc.data,
7967  &src_iter_desc.data, &src_iter_c_desc.data,
7968  &weights_layer_desc.data, &weights_iter_desc.data,
7969  &weights_peephole_desc.data, &bias_desc.data,
7970  &dst_layer_desc.data, &dst_iter_desc.data,
7971  &dst_iter_c_desc.data, dnnl::convert_to_c(flags)),
7972  "could not create a descriptor for an LSTM forward "
7973  "propagation primitive");
7974  }
7975 
8012  desc(prop_kind aprop_kind, rnn_direction direction,
8013  const memory::desc &src_layer_desc,
8014  const memory::desc &src_iter_desc,
8015  const memory::desc &src_iter_c_desc,
8016  const memory::desc &weights_layer_desc,
8017  const memory::desc &weights_iter_desc,
8018  const memory::desc &bias_desc,
8019  const memory::desc &dst_layer_desc,
8020  const memory::desc &dst_iter_desc,
8021  const memory::desc &dst_iter_c_desc,
8022  rnn_flags flags = rnn_flags::undef) {
8025  dnnl::convert_to_c(aprop_kind),
8026  dnnl::convert_to_c(direction), &src_layer_desc.data,
8027  &src_iter_desc.data, &src_iter_c_desc.data,
8028  &weights_layer_desc.data, &weights_iter_desc.data,
8029  &bias_desc.data, &dst_layer_desc.data,
8030  &dst_iter_desc.data, &dst_iter_c_desc.data,
8031  dnnl::convert_to_c(flags)),
8032  "could not create a descriptor for an LSTM forward "
8033  "propagation primitive");
8034  }
8035  };
8036 
8040  primitive_desc() = default;
8041 
8051  primitive_desc(const desc &adesc, const engine &aengine,
8052  bool allow_empty = false)
8054  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8055 
8066  primitive_desc(const desc &adesc, const primitive_attr &attr,
8067  const engine &aengine, bool allow_empty = false)
8069  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8070 
8081 
8084  return rnn_base::src_layer_desc();
8085  }
8086 
8089 
8092  return rnn_base::src_iter_c_desc();
8093  }
8094 
8098  }
8099 
8102  return rnn_base::weights_iter_desc();
8103  }
8104 
8108  }
8109 
8113  }
8114 
8117 
8120  return rnn_base::dst_layer_desc();
8121  }
8122 
8125 
8128  return rnn_base::dst_iter_c_desc();
8129  }
8130 
8133  return rnn_base::workspace_desc();
8134  }
8135  };
8136 
8138  lstm_forward() = default;
8139 
8144 };
8145 
8147 struct lstm_backward : public primitive {
8149  struct desc {
8150  dnnl_rnn_desc_t data;
8151 
8227  desc(prop_kind aprop_kind, rnn_direction direction,
8228  const memory::desc &src_layer_desc,
8229  const memory::desc &src_iter_desc,
8230  const memory::desc &src_iter_c_desc,
8231  const memory::desc &weights_layer_desc,
8232  const memory::desc &weights_iter_desc,
8233  const memory::desc &weights_peephole_desc,
8234  const memory::desc &weights_projection_desc,
8235  const memory::desc &bias_desc,
8236  const memory::desc &dst_layer_desc,
8237  const memory::desc &dst_iter_desc,
8238  const memory::desc &dst_iter_c_desc,
8239  const memory::desc &diff_src_layer_desc,
8240  const memory::desc &diff_src_iter_desc,
8241  const memory::desc &diff_src_iter_c_desc,
8242  const memory::desc &diff_weights_layer_desc,
8243  const memory::desc &diff_weights_iter_desc,
8244  const memory::desc &diff_weights_peephole_desc,
8245  const memory::desc &diff_weights_projection_desc,
8246  const memory::desc &diff_bias_desc,
8247  const memory::desc &diff_dst_layer_desc,
8248  const memory::desc &diff_dst_iter_desc,
8249  const memory::desc &diff_dst_iter_c_desc,
8250  rnn_flags flags = rnn_flags::undef) {
8253  dnnl::convert_to_c(aprop_kind),
8254  dnnl::convert_to_c(direction), &src_layer_desc.data,
8255  &src_iter_desc.data, &src_iter_c_desc.data,
8256  &weights_layer_desc.data, &weights_iter_desc.data,
8257  &weights_peephole_desc.data,
8258  &weights_projection_desc.data, &bias_desc.data,
8259  &dst_layer_desc.data, &dst_iter_desc.data,
8260  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8261  &diff_src_iter_desc.data,
8262  &diff_src_iter_c_desc.data,
8263  &diff_weights_layer_desc.data,
8264  &diff_weights_iter_desc.data,
8265  &diff_weights_peephole_desc.data,
8266  &diff_weights_projection_desc.data,
8267  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8268  &diff_dst_iter_desc.data,
8269  &diff_dst_iter_c_desc.data,
8270  dnnl::convert_to_c(flags)),
8271  "could not create a descriptor for an LSTM backward "
8272  "propagation primitive");
8273  }
8274 
8339  desc(prop_kind aprop_kind, rnn_direction direction,
8340  const memory::desc &src_layer_desc,
8341  const memory::desc &src_iter_desc,
8342  const memory::desc &src_iter_c_desc,
8343  const memory::desc &weights_layer_desc,
8344  const memory::desc &weights_iter_desc,
8345  const memory::desc &weights_peephole_desc,
8346  const memory::desc &bias_desc,
8347  const memory::desc &dst_layer_desc,
8348  const memory::desc &dst_iter_desc,
8349  const memory::desc &dst_iter_c_desc,
8350  const memory::desc &diff_src_layer_desc,
8351  const memory::desc &diff_src_iter_desc,
8352  const memory::desc &diff_src_iter_c_desc,
8353  const memory::desc &diff_weights_layer_desc,
8354  const memory::desc &diff_weights_iter_desc,
8355  const memory::desc &diff_weights_peephole_desc,
8356  const memory::desc &diff_bias_desc,
8357  const memory::desc &diff_dst_layer_desc,
8358  const memory::desc &diff_dst_iter_desc,
8359  const memory::desc &diff_dst_iter_c_desc,
8360  rnn_flags flags = rnn_flags::undef) {
8363  dnnl::convert_to_c(aprop_kind),
8364  dnnl::convert_to_c(direction), &src_layer_desc.data,
8365  &src_iter_desc.data, &src_iter_c_desc.data,
8366  &weights_layer_desc.data, &weights_iter_desc.data,
8367  &weights_peephole_desc.data, &bias_desc.data,
8368  &dst_layer_desc.data, &dst_iter_desc.data,
8369  &dst_iter_c_desc.data, &diff_src_layer_desc.data,
8370  &diff_src_iter_desc.data,
8371  &diff_src_iter_c_desc.data,
8372  &diff_weights_layer_desc.data,
8373  &diff_weights_iter_desc.data,
8374  &diff_weights_peephole_desc.data,
8375  &diff_bias_desc.data, &diff_dst_layer_desc.data,
8376  &diff_dst_iter_desc.data,
8377  &diff_dst_iter_c_desc.data,
8378  dnnl::convert_to_c(flags)),
8379  "could not create a descriptor for an LSTM backward "
8380  "propagation primitive");
8381  }
8382 
8438  desc(prop_kind aprop_kind, rnn_direction direction,
8439  const memory::desc &src_layer_desc,
8440  const memory::desc &src_iter_desc,
8441  const memory::desc &src_iter_c_desc,
8442  const memory::desc &weights_layer_desc,
8443  const memory::desc &weights_iter_desc,
8444  const memory::desc &bias_desc,
8445  const memory::desc &dst_layer_desc,
8446  const memory::desc &dst_iter_desc,
8447  const memory::desc &dst_iter_c_desc,
8448  const memory::desc &diff_src_layer_desc,
8449  const memory::desc &diff_src_iter_desc,
8450  const memory::desc &diff_src_iter_c_desc,
8451  const memory::desc &diff_weights_layer_desc,
8452  const memory::desc &diff_weights_iter_desc,
8453  const memory::desc &diff_bias_desc,
8454  const memory::desc &diff_dst_layer_desc,
8455  const memory::desc &diff_dst_iter_desc,
8456  const memory::desc &diff_dst_iter_c_desc,
8457  rnn_flags flags = rnn_flags::undef) {
8460  dnnl::convert_to_c(aprop_kind),
8461  dnnl::convert_to_c(direction), &src_layer_desc.data,
8462  &src_iter_desc.data, &src_iter_c_desc.data,
8463  &weights_layer_desc.data, &weights_iter_desc.data,
8464  &bias_desc.data, &dst_layer_desc.data,
8465  &dst_iter_desc.data, &dst_iter_c_desc.data,
8466  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8467  &diff_src_iter_c_desc.data,
8468  &diff_weights_layer_desc.data,
8469  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8470  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8471  &diff_dst_iter_c_desc.data,
8472  dnnl::convert_to_c(flags)),
8473  "could not create a descriptor for an LSTM backward "
8474  "propagation primitive");
8475  }
8476  };
8477 
8481  primitive_desc() = default;
8482 
8495  primitive_desc(const desc &adesc, const engine &aengine,
8496  const lstm_forward::primitive_desc &hint_fwd_pd,
8497  bool allow_empty = false)
8498  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8499  hint_fwd_pd.get(), allow_empty) {}
8500 
8514  primitive_desc(const desc &adesc, const primitive_attr &attr,
8515  const engine &aengine,
8516  const lstm_forward::primitive_desc &hint_fwd_pd,
8517  bool allow_empty = false)
8518  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8519  hint_fwd_pd.get(), allow_empty) {}
8520 
8530 
8533  return rnn_base::src_layer_desc();
8534  }
8535 
8538 
8541  return rnn_base::src_iter_c_desc();
8542  }
8543 
8547  }
8548 
8551  return rnn_base::weights_iter_desc();
8552  }
8553 
8557  }
8558 
8562  }
8563 
8566 
8569  return rnn_base::dst_layer_desc();
8570  }
8571 
8574 
8577  return rnn_base::dst_iter_c_desc();
8578  }
8579 
8582  return rnn_base::workspace_desc();
8583  }
8584 
8588  }
8589 
8593  }
8594 
8598  }
8599 
8603  }
8604 
8608  }
8609 
8613  }
8614 
8618  }
8619 
8622  return rnn_base::diff_bias_desc();
8623  }
8624 
8628  }
8629 
8633  }
8634 
8638  }
8639  };
8640 
8642  lstm_backward() = default;
8643 
8648 };
8649 
8651 struct gru_forward : public primitive {
8653  struct desc {
8654  dnnl_rnn_desc_t data;
8655 
8688  desc(prop_kind aprop_kind, rnn_direction direction,
8689  const memory::desc &src_layer_desc,
8690  const memory::desc &src_iter_desc,
8691  const memory::desc &weights_layer_desc,
8692  const memory::desc &weights_iter_desc,
8693  const memory::desc &bias_desc,
8694  const memory::desc &dst_layer_desc,
8695  const memory::desc &dst_iter_desc,
8696  rnn_flags flags = rnn_flags::undef) {
8699  dnnl::convert_to_c(aprop_kind),
8700  dnnl::convert_to_c(direction), &src_layer_desc.data,
8701  &src_iter_desc.data, &weights_layer_desc.data,
8702  &weights_iter_desc.data, &bias_desc.data,
8703  &dst_layer_desc.data, &dst_iter_desc.data,
8704  dnnl::convert_to_c(flags)),
8705  "could not create a descriptor for a GRU forward "
8706  "propagation primitive");
8707  }
8708  };
8709 
8713  primitive_desc() = default;
8714 
8724  primitive_desc(const desc &adesc, const engine &aengine,
8725  bool allow_empty = false)
8727  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
8728 
8739  primitive_desc(const desc &adesc, const primitive_attr &attr,
8740  const engine &aengine, bool allow_empty = false)
8742  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
8743 
8753  dnnl::algorithm::vanilla_gru) {}
8754 
8757  return rnn_base::src_layer_desc();
8758  }
8759 
8762 
8766  }
8767 
8770  return rnn_base::weights_iter_desc();
8771  }
8772 
8775 
8778  return rnn_base::dst_layer_desc();
8779  }
8780 
8783 
8786  return rnn_base::workspace_desc();
8787  }
8788  };
8789 
8791  gru_forward() = default;
8792 
8797 };
8798 
8800 struct gru_backward : public primitive {
8802  struct desc {
8803  dnnl_rnn_desc_t data;
8804 
8849  desc(prop_kind aprop_kind, rnn_direction direction,
8850  const memory::desc &src_layer_desc,
8851  const memory::desc &src_iter_desc,
8852  const memory::desc &weights_layer_desc,
8853  const memory::desc &weights_iter_desc,
8854  const memory::desc &bias_desc,
8855  const memory::desc &dst_layer_desc,
8856  const memory::desc &dst_iter_desc,
8857  const memory::desc &diff_src_layer_desc,
8858  const memory::desc &diff_src_iter_desc,
8859  const memory::desc &diff_weights_layer_desc,
8860  const memory::desc &diff_weights_iter_desc,
8861  const memory::desc &diff_bias_desc,
8862  const memory::desc &diff_dst_layer_desc,
8863  const memory::desc &diff_dst_iter_desc,
8864  rnn_flags flags = rnn_flags::undef) {
8867  dnnl::convert_to_c(aprop_kind),
8868  dnnl::convert_to_c(direction), &src_layer_desc.data,
8869  &src_iter_desc.data, &weights_layer_desc.data,
8870  &weights_iter_desc.data, &bias_desc.data,
8871  &dst_layer_desc.data, &dst_iter_desc.data,
8872  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
8873  &diff_weights_layer_desc.data,
8874  &diff_weights_iter_desc.data, &diff_bias_desc.data,
8875  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
8876  dnnl::convert_to_c(flags)),
8877  "could not create a descriptor for a GRU backward "
8878  "propagation primitive");
8879  }
8880  };
8881 
8885  primitive_desc() = default;
8886 
8899  primitive_desc(const desc &adesc, const engine &aengine,
8900  const gru_forward::primitive_desc &hint_fwd_pd,
8901  bool allow_empty = false)
8902  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
8903  hint_fwd_pd.get(), allow_empty) {}
8904 
8918  primitive_desc(const desc &adesc, const primitive_attr &attr,
8919  const engine &aengine,
8920  const gru_forward::primitive_desc &hint_fwd_pd,
8921  bool allow_empty = false)
8922  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
8923  hint_fwd_pd.get(), allow_empty) {}
8924 
8933  dnnl::algorithm::vanilla_gru) {}
8934 
8937  return rnn_base::src_layer_desc();
8938  }
8939 
8942 
8946  }
8947 
8950  return rnn_base::weights_iter_desc();
8951  }
8952 
8955 
8958  return rnn_base::dst_layer_desc();
8959  }
8960 
8963 
8966  return rnn_base::workspace_desc();
8967  }
8968 
8972  }
8973 
8977  }
8978 
8982  }
8983 
8987  }
8988 
8991  return rnn_base::diff_bias_desc();
8992  }
8993 
8997  }
8998 
9002  }
9003  };
9004 
9006  gru_backward() = default;
9007 
9012 };
9013 
9015 struct lbr_gru_forward : public primitive {
9017  struct desc {
9018  dnnl_rnn_desc_t data;
9019 
9053  desc(prop_kind aprop_kind, rnn_direction direction,
9054  const memory::desc &src_layer_desc,
9055  const memory::desc &src_iter_desc,
9056  const memory::desc &weights_layer_desc,
9057  const memory::desc &weights_iter_desc,
9058  const memory::desc &bias_desc,
9059  const memory::desc &dst_layer_desc,
9060  const memory::desc &dst_iter_desc,
9061  rnn_flags flags = rnn_flags::undef) {
9064  dnnl::convert_to_c(aprop_kind),
9065  dnnl::convert_to_c(direction), &src_layer_desc.data,
9066  &src_iter_desc.data, &weights_layer_desc.data,
9067  &weights_iter_desc.data, &bias_desc.data,
9068  &dst_layer_desc.data, &dst_iter_desc.data,
9069  dnnl::convert_to_c(flags)),
9070  "could not create a descriptor for an LBR GRU forward "
9071  "propagation primitive");
9072  }
9073  };
9074 
9078  primitive_desc() = default;
9079 
9090  primitive_desc(const desc &adesc, const engine &aengine,
9091  bool allow_empty = false)
9093  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9094 
9106  primitive_desc(const desc &adesc, const primitive_attr &attr,
9107  const engine &aengine, bool allow_empty = false)
9109  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9110 
9120  dnnl::algorithm::lbr_gru) {}
9121 
9124  return rnn_base::src_layer_desc();
9125  }
9126 
9129 
9133  }
9134 
9137  return rnn_base::weights_iter_desc();
9138  }
9139 
9142 
9145  return rnn_base::dst_layer_desc();
9146  }
9147 
9150 
9153  return rnn_base::workspace_desc();
9154  }
9155  };
9156 
9158  lbr_gru_forward() = default;
9159 
9164 };
9165 
9167 struct lbr_gru_backward : public primitive {
9169  struct desc {
9170  dnnl_rnn_desc_t data;
9171 
9217  desc(prop_kind aprop_kind, rnn_direction direction,
9218  const memory::desc &src_layer_desc,
9219  const memory::desc &src_iter_desc,
9220  const memory::desc &weights_layer_desc,
9221  const memory::desc &weights_iter_desc,
9222  const memory::desc &bias_desc,
9223  const memory::desc &dst_layer_desc,
9224  const memory::desc &dst_iter_desc,
9225  const memory::desc &diff_src_layer_desc,
9226  const memory::desc &diff_src_iter_desc,
9227  const memory::desc &diff_weights_layer_desc,
9228  const memory::desc &diff_weights_iter_desc,
9229  const memory::desc &diff_bias_desc,
9230  const memory::desc &diff_dst_layer_desc,
9231  const memory::desc &diff_dst_iter_desc,
9232  rnn_flags flags = rnn_flags::undef) {
9235  dnnl::convert_to_c(aprop_kind),
9236  dnnl::convert_to_c(direction), &src_layer_desc.data,
9237  &src_iter_desc.data, &weights_layer_desc.data,
9238  &weights_iter_desc.data, &bias_desc.data,
9239  &dst_layer_desc.data, &dst_iter_desc.data,
9240  &diff_src_layer_desc.data, &diff_src_iter_desc.data,
9241  &diff_weights_layer_desc.data,
9242  &diff_weights_iter_desc.data, &diff_bias_desc.data,
9243  &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
9244  dnnl::convert_to_c(flags)),
9245  "could not create a descriptor for an LBR GRU backward "
9246  "propagation primitive");
9247  }
9248  };
9249 
9253  primitive_desc() = default;
9254 
9268  primitive_desc(const desc &adesc, const engine &aengine,
9269  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9270  bool allow_empty = false)
9271  : rnn_primitive_desc_base(&adesc.data, nullptr, aengine,
9272  hint_fwd_pd.get(), allow_empty) {}
9273 
9288  primitive_desc(const desc &adesc, const primitive_attr &attr,
9289  const engine &aengine,
9290  const lbr_gru_forward::primitive_desc &hint_fwd_pd,
9291  bool allow_empty = false)
9292  : rnn_primitive_desc_base(&adesc.data, &attr, aengine,
9293  hint_fwd_pd.get(), allow_empty) {}
9294 
9304 
9307  return rnn_base::src_layer_desc();
9308  }
9309 
9312 
9316  }
9317 
9320  return rnn_base::weights_iter_desc();
9321  }
9322 
9325 
9328  return rnn_base::dst_layer_desc();
9329  }
9330 
9333 
9336  return rnn_base::workspace_desc();
9337  }
9338 
9342  }
9343 
9347  }
9348 
9352  }
9353 
9357  }
9358 
9361  return rnn_base::diff_bias_desc();
9362  }
9363 
9367  }
9368 
9372  }
9373  };
9374 
9376  lbr_gru_backward() = default;
9377 
9382 };
9383 
9385 
9393 
9395 struct shuffle_forward : public primitive {
9397  struct desc {
9398  dnnl_shuffle_desc_t data;
9399 
9409  desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis,
9410  int group_size) {
9412  dnnl::convert_to_c(aprop_kind),
9413  &data_desc.data, axis, group_size),
9414  "could not create a descriptor for a shuffle forward "
9415  "propagation primitive");
9416  }
9417  };
9418 
9422  primitive_desc() = default;
9423 
9435  primitive_desc(const desc &adesc, const engine &aengine,
9436  const primitive_attr &attr = primitive_attr(),
9437  bool allow_empty = false)
9438  : dnnl::primitive_desc(
9439  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9440 
9448  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9451 
9453  memory::desc src_desc() const { return base::src_desc(0); }
9454 
9456  memory::desc dst_desc() const { return base::dst_desc(0); }
9457  };
9458 
9460  shuffle_forward() = default;
9461 
9466 };
9467 
9469 struct shuffle_backward : public primitive {
9472  struct desc {
9473  dnnl_shuffle_desc_t data;
9474 
9482  desc(const memory::desc &diff_data_desc, int axis, int group_size) {
9484  &diff_data_desc.data, axis, group_size),
9485  "could not create a descriptor for a shuffle backward "
9486  "propagation primitive");
9487  }
9488  };
9489 
9493  primitive_desc() = default;
9494 
9509  primitive_desc(const desc &adesc, const engine &aengine,
9510  const shuffle_forward::primitive_desc &hint_fwd_pd,
9511  const primitive_attr &attr = primitive_attr(),
9512  bool allow_empty = false)
9513  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9514  hint_fwd_pd.get(), allow_empty) {}
9515 
9523  : dnnl::primitive_desc(pd, dnnl::primitive::kind::shuffle,
9525 
9528 
9531  };
9532 
9534  shuffle_backward() = default;
9535 
9540 };
9541 
9543 
9551 
9553 struct binary : public primitive {
9555  struct desc {
9558 
9560  desc() = default;
9561 
9569  desc(algorithm aalgorithm, const memory::desc &src0,
9570  const memory::desc &src1, const memory::desc &dst) {
9573  &src0.data, &src1.data, &dst.data),
9574  "could not create a descriptor for a binary operation "
9575  "primitive");
9576  }
9577  };
9578 
9582  primitive_desc() = default;
9583 
9593  primitive_desc(const desc &adesc, const engine &aengine,
9594  bool allow_empty = false)
9595  : dnnl::primitive_desc(
9596  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9597 
9608  primitive_desc(const desc &adesc, const primitive_attr &attr,
9609  const engine &aengine, bool allow_empty = false)
9610  : dnnl::primitive_desc(
9611  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9612 
9619 
9621  memory::desc src_desc(int idx = 0) const { return base::src_desc(idx); }
9622 
9624  memory::desc src0_desc() const { return base::src_desc(0); }
9625 
9627  memory::desc src1_desc() const { return base::src_desc(1); }
9628 
9630  memory::desc dst_desc() const { return base::dst_desc(0); }
9631  };
9632 
9634  binary() = default;
9635 
9639  binary(const primitive_desc &pd) : primitive(pd) {}
9640 };
9641 
9643 
9653 
9655 struct matmul : public primitive {
9657  struct desc {
9658  dnnl_matmul_desc_t data;
9659 
9665  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9666  const memory::desc &dst_desc) {
9668  dnnl_matmul_desc_init(&data, &src_desc.data,
9669  &weights_desc.data, nullptr, &dst_desc.data),
9670  "could not create a descriptor for a matmul primitive");
9671  }
9672 
9679  desc(const memory::desc &src_desc, const memory::desc &weights_desc,
9680  const memory::desc &bias_desc, const memory::desc &dst_desc) {
9681  error::wrap_c_api(dnnl_matmul_desc_init(&data, &src_desc.data,
9682  &weights_desc.data, &bias_desc.data,
9683  &dst_desc.data),
9684  "could not create a descriptor for a matmul primitive");
9685  }
9686  };
9687 
9691  primitive_desc() = default;
9692 
9701  primitive_desc(const desc &adesc, const engine &aengine,
9702  bool allow_empty = false)
9703  : dnnl::primitive_desc(
9704  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9705 
9715  primitive_desc(const desc &adesc, const primitive_attr &attr,
9716  const engine &aengine, bool allow_empty = false)
9717  : dnnl::primitive_desc(
9718  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9719 
9726 
9729 
9732  return query_md(query::weights_md, 0);
9733  }
9734 
9737  return query_md(query::weights_md, 1);
9738  }
9739 
9742  };
9743 
9745  matmul() = default;
9746 
9749  matmul(const primitive_desc &pd) : primitive(pd) {}
9750 };
9751 
9753 
9763 
9767  struct desc {
9769 
9785  desc(prop_kind aprop_kind, algorithm aalgorithm,
9786  const memory::desc &src_desc, const memory::desc &dst_desc) {
9788  dnnl::convert_to_c(aprop_kind),
9789  convert_to_c(aalgorithm), nullptr,
9790  &src_desc.data, &dst_desc.data),
9791  "could not create a resampling forward descriptor");
9792  }
9793 
9805  desc(prop_kind aprop_kind, algorithm aalgorithm,
9806  const std::vector<float> &factors,
9807  const memory::desc &src_desc) {
9808  memory::validate_dims(factors, src_desc.data.ndims - 2);
9810  dnnl::convert_to_c(aprop_kind),
9811  convert_to_c(aalgorithm), &factors[0],
9812  &src_desc.data, nullptr),
9813  "could not create a resampling forward descriptor");
9814  }
9815 
9832  desc(prop_kind aprop_kind, algorithm aalgorithm,
9833  const std::vector<float> &factors, const memory::desc &src_desc,
9834  const memory::desc &dst_desc) {
9835  if (!factors.empty())
9836  memory::validate_dims(factors, src_desc.data.ndims - 2);
9838  dnnl::convert_to_c(aprop_kind),
9839  convert_to_c(aalgorithm), factors.data(),
9840  &src_desc.data, &dst_desc.data),
9841  "could not create a resampling forward descriptor");
9842  }
9843  };
9844 
9848  primitive_desc() = default;
9849 
9860  primitive_desc(const desc &adesc, const engine &aengine,
9861  bool allow_empty = false)
9862  : dnnl::primitive_desc(
9863  &adesc.data, nullptr, aengine, nullptr, allow_empty) {}
9864 
9876  primitive_desc(const desc &adesc, const primitive_attr &attr,
9877  const engine &aengine, bool allow_empty = false)
9878  : dnnl::primitive_desc(
9879  &adesc.data, &attr, aengine, nullptr, allow_empty) {}
9880 
9888  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
9891 
9893  memory::desc src_desc() const { return base::src_desc(0); }
9894 
9896  memory::desc dst_desc() const { return base::dst_desc(0); }
9897  };
9898 
9900  resampling_forward() = default;
9901 
9906 };
9907 
9911  struct desc {
9913 
9922  desc(algorithm aalgorithm, const memory::desc &diff_src_desc,
9923  const memory::desc &diff_dst_desc) {
9925  convert_to_c(aalgorithm), nullptr,
9926  &diff_src_desc.data, &diff_dst_desc.data),
9927  "could not create a resampling backward data descriptor");
9928  }
9929 
9939  desc(algorithm aalgorithm, const std::vector<float> &factors,
9940  const memory::desc &diff_src_desc,
9941  const memory::desc &diff_dst_desc) {
9942  if (!factors.empty())
9943  memory::validate_dims(factors, diff_src_desc.data.ndims - 2);
9945  convert_to_c(aalgorithm), factors.data(),
9946  &diff_src_desc.data, &diff_dst_desc.data),
9947  "could not create a resampling backward data descriptor");
9948  }
9949  };
9950 
9954  primitive_desc() = default;
9955 
9969  primitive_desc(const desc &adesc, const engine &aengine,
9970  const resampling_forward::primitive_desc &hint_fwd_pd,
9971  bool allow_empty = false)
9972  : dnnl::primitive_desc(&adesc.data, nullptr, aengine,
9973  hint_fwd_pd.get(), allow_empty) {}
9974 
9989  primitive_desc(const desc &adesc, const primitive_attr &attr,
9990  const engine &aengine,
9991  const resampling_forward::primitive_desc &hint_fwd_pd,
9992  bool allow_empty = false)
9993  : dnnl::primitive_desc(&adesc.data, &attr, aengine,
9994  hint_fwd_pd.get(), allow_empty) {}
9995 
10003  : dnnl::primitive_desc(pd, dnnl::primitive::kind::resampling,
10005 
10008 
10011  };
10012 
10014  resampling_backward() = default;
10015 
10020 };
10021 
10023 
10025 
10031 
10034 
10036 enum class status {
10051 };
10052 
10054 inline status set_verbose(int level) {
10055  return static_cast<status>(dnnl_set_verbose(level));
10056 }
10057 
10059 inline const version_t *version() {
10060  return dnnl_version();
10061 }
10062 
10064 inline status set_jit_dump(int enable) {
10065  return static_cast<status>(dnnl_set_jit_dump(enable));
10066 }
10067 
10069 inline status set_jit_profiling_flags(unsigned flags) {
10070  return static_cast<status>(dnnl_set_jit_profiling_flags(flags));
10071 }
10072 
10074 inline status set_jit_profiling_jitdumpdir(const std::string &dir) {
10075  return static_cast<status>(dnnl_set_jit_profiling_jitdumpdir(dir.c_str()));
10076 }
10077 
10079 enum class cpu_isa {
10100 };
10101 
10104  return static_cast<status>(
10105  dnnl_set_max_cpu_isa(static_cast<dnnl_cpu_isa_t>(isa)));
10106 }
10107 
10110  return static_cast<cpu_isa>(dnnl_get_effective_cpu_isa());
10111 }
10112 
10114 
10120 
10124  int result = 0;
10126  "could not get primitive cache capacity");
10127  return result;
10128 }
10129 
10131 inline void set_primitive_cache_capacity(int capacity) {
10133  "could not set primitive cache capacity");
10134 }
10135 
10137 
10144 
10146 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10147  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10148  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc) {
10149  return static_cast<status>(dnnl_sgemm(
10150  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc));
10151 }
10152 
10154 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10155  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10156  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10157  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10158  return static_cast<status>(dnnl_gemm_u8s8s32(transa, transb, offsetc, M, N,
10159  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10160 }
10161 
10163 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10164  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10165  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10166  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co) {
10167  return static_cast<status>(dnnl_gemm_s8s8s32(transa, transb, offsetc, M, N,
10168  K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co));
10169 }
10170 
10171 #if DNNL_CPU_RUNTIME == DNNL_RUNTIME_THREADPOOL
10172 inline status sgemm(char transa, char transb, dnnl_dim_t M, dnnl_dim_t N,
10174  dnnl_dim_t K, float alpha, const float *A, dnnl_dim_t lda,
10175  const float *B, dnnl_dim_t ldb, float beta, float *C, dnnl_dim_t ldc,
10176  dnnl::threadpool_iface *tp) {
10177  return static_cast<status>(dnnl_sgemm_tp(
10178  transa, transb, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc, tp));
10179 }
10181 inline status gemm_u8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10182  dnnl_dim_t N, dnnl_dim_t K, float alpha, const uint8_t *A,
10183  dnnl_dim_t lda, uint8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10184  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10185  dnnl::threadpool_iface *tp) {
10186  return static_cast<status>(dnnl_gemm_u8s8s32_tp(transa, transb, offsetc, M,
10187  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10188 }
10189 
10191 inline status gemm_s8s8s32(char transa, char transb, char offsetc, dnnl_dim_t M,
10192  dnnl_dim_t N, dnnl_dim_t K, float alpha, const int8_t *A,
10193  dnnl_dim_t lda, int8_t ao, const int8_t *B, dnnl_dim_t ldb, int8_t bo,
10194  float beta, int32_t *C, dnnl_dim_t ldc, const int32_t *co,
10195  dnnl::threadpool_iface *tp) {
10196  return static_cast<status>(dnnl_gemm_s8s8s32_tp(transa, transb, offsetc, M,
10197  N, K, alpha, A, lda, ao, B, ldb, bo, beta, C, ldc, co, tp));
10198 }
10199 #endif
10200 
10202 
10203 // implementation section
10204 
10207  dnnl_primitive_t result;
10209  "could not create a primitive");
10210  reset(result);
10211 }
10212 
10213 inline primitive::primitive(const primitive_desc &pd) : primitive(pd.get()) {}
10214 
10215 inline void primitive::execute(const stream &astream,
10216  const std::unordered_map<int, memory> &args) const {
10217  std::vector<dnnl_exec_arg_t> c_args;
10218  c_args.reserve(args.size());
10219  for (const auto &a : args)
10220  c_args.push_back({a.first, a.second.get(true)});
10221 
10222  error::wrap_c_api(dnnl_primitive_execute(get(), astream.get(),
10223  (int)c_args.size(), c_args.data()),
10224  "could not execute a primitive");
10225 }
10226 
10228 
10229 #undef DNNL_DEFINE_BITMASK_OPS
10230 
10231 } // namespace dnnl
10232 
10234 
10235 #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:7036
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:2207
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:7785
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:10163
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:9909
dnnl::deconvolution_backward_data::deconvolution_backward_data
deconvolution_backward_data(const primitive_desc &pd)
Constructs a deconvolution backward propagation primitive.
Definition: dnnl.hpp:4910
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:9621
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:4015
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:2956
dnnl::layer_normalization_forward::layer_normalization_forward
layer_normalization_forward(const primitive_desc &pd)
Constructs a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6698
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:7660
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:3263
dnnl::lstm_forward::desc
Descriptor for an LSTM forward propagation primitive.
Definition: dnnl.hpp:7832
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:7394
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:7274
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:6041
dnnl::softmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6026
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:8774
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:4720
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:5269
dnnl::binary::primitive_desc
Primitive descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9580
dnnl::rnn_direction
rnn_direction
A direction of RNN primitive execution.
Definition: dnnl.hpp:710
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:8653
dnnl::memory::desc::get_size
size_t get_size() const
Returns size of the memory descriptor in bytes.
Definition: dnnl.hpp:2038
dnnl::reorder
Reorder primitive.
Definition: dnnl.hpp:3325
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:9469
dnnl::inner_product_forward::desc
Descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6868
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:7769
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:9117
dnnl_ABcde2b8a4b
@ dnnl_ABcde2b8a4b
5D tensor blocked by 1st dimension with block size 8
Definition: dnnl_types.h:289
dnnl::memory::get_sycl_buffer
cl::sycl::buffer< T, ndims > get_sycl_buffer(size_t *offset=nullptr) const
Returns the underlying SYCL buffer object.
Definition: dnnl.hpp:2285
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:8636
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:6838
dnnl::vanilla_rnn_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:7777
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:9000
dnnl::error::what
const char * what() const noexcept override
Returns the explanatory string.
Definition: dnnl.hpp:108
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:8985
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:2649
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:394
dnnl::lbr_gru_forward::primitive_desc
Primitive descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9076
dnnl::convolution_backward_weights
Convolution weights gradient primitive.
Definition: dnnl.hpp:4203
dnnl::stream
An execution stream.
Definition: dnnl.hpp:1086
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:1892
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:2564
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:4693
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:4562
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:4407
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:5988
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:6885
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:461
dnnl::pooling_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5493
dnnl::post_ops::len
int len() const
Returns the number of post-ops entries.
Definition: dnnl.hpp:2398
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:9724
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:9593
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:5945
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:7603
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:7248
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:10154
dnnl::vanilla_rnn_backward::desc
Descriptor for a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7605
dnnl::lrn_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5368
dnnl::lbr_gru_backward
LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9167
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:9728
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:8038
dnnl::lrn_backward::lrn_backward
lrn_backward(const primitive_desc &pd)
Constructs an LRN backward propagation primitive.
Definition: dnnl.hpp:5383
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:3941
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:5788
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:936
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:6909
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:7334
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:3401
dnnl::memory::memory
memory(const desc &md, const engine &aengine)
Constructs a memory object.
Definition: dnnl.hpp:2135
dnnl::gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8764
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:865
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:6294
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:3655
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:5610
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:5821
dnnl::inner_product_forward::inner_product_forward
inner_product_forward(const primitive_desc &pd)
Constructs an inner product forward propagation primitive.
Definition: dnnl.hpp:6987
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:2855
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:4890
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:5190
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:7202
dnnl::eltwise_backward::desc
Descriptor for an elementwise backward propagation primitive.
Definition: dnnl.hpp:5744
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:10002
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:8601
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:283
dnnl::gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8756
dnnl::post_ops::post_ops
post_ops()
Constructs an empty sequence of post-ops.
Definition: dnnl.hpp:2390
dnnl::set_jit_profiling_jitdumpdir
status set_jit_profiling_jitdumpdir(const std::string &dir)
Sets JIT dump output path.
Definition: dnnl.hpp:10074
dnnl::pooling_backward::primitive_desc
Primitive descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5554
dnnl::gru_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8944
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:6852
dnnl::memory::desc::data
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1826
dnnl::lstm_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8124
dnnl::gru_backward::desc
Descriptor for a GRU backward propagation primitive.
Definition: dnnl.hpp:8802
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:9090
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:3376
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:6824
dnnl::eltwise_forward::eltwise_forward
eltwise_forward(const primitive_desc &pd)
Constructs an eltwise forward propagation primitive.
Definition: dnnl.hpp:5738
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:7588
dnnl::resampling_forward::desc
Descriptor for resampling forward propagation.
Definition: dnnl.hpp:9767
dnnl::eltwise_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5832
dnnl::stream::wait
stream & wait()
Waits for all primitives executing in the stream to finish.
Definition: dnnl.hpp:1158
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:8769
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:7358
dnnl_eltwise_abs
@ dnnl_eltwise_abs
Eltwise: abs.
Definition: dnnl_types.h:857
dnnl::engine::get_sycl_device
cl::sycl::device DNNL_API get_sycl_device() const
Returns the underlying SYCL device object.
dnnl::deconvolution_forward::primitive_desc::primitive_desc
primitive_desc()=default
Default constructor. Produces an empty object.
dnnl::softmax_backward::primitive_desc::primitive_desc
primitive_desc(dnnl_primitive_desc_t pd)
Constructs a primitive descriptor for a softmax backward propagation primitive from a C API primitive...
Definition: dnnl.hpp:6021
dnnl::convolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4184
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:2440
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:8631
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:9327
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:9860
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc(int idx) const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3095
dnnl::eltwise_backward
Elementwise unary operation backward propagation primitive.
Definition: dnnl.hpp:5742
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:8339
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:2008
dnnl::matmul
Matrix multiplication (matmul) primitive.
Definition: dnnl.hpp:9655
dnnl::resampling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:10007
dnnl::lstm_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8550
dnnl::rnn_primitive_desc_base::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:7286
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:4187
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:4146
dnnl::convolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4009
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:7346
dnnl::batch_normalization_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6492
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:5649
dnnl::pooling_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5613
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:4166
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:5156
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:6123
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:9887
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:2623
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:1905
dnnl::stream_attr::set_threadpool
void set_threadpool(threadpool_iface *threadpool)
Sets the threadpool attribute.
Definition: dnnl.hpp:1066
dnnl::rnn_flags
rnn_flags
RNN cell flags.
Definition: dnnl.hpp:656
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:8088
dnnl::cpu_isa
cpu_isa
CPU instruction set flags.
Definition: dnnl.hpp:10079
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:6112
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:889
dnnl::memory::set_data_handle
void set_data_handle(void *handle, const stream &astream) const
Sets the underlying memory buffer.
Definition: dnnl.hpp:2192
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:4439
dnnl::prop_kind::forward_training
@ forward_training
Forward data propagation (training mode).
dnnl::matmul::desc
Descriptor for a matmul primitive.
Definition: dnnl.hpp:9657
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:7221
dnnl::gru_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8785
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:9447
dnnl::lrn_forward::primitive_desc
Primitive descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5221
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:9522
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:3077
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:3725
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:9370
dnnl::layer_normalization_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6658
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:2271
dnnl::lstm_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8119
dnnl::inner_product_backward_weights::primitive_desc
Primitive descriptor for an inner product weights gradient primitive.
Definition: dnnl.hpp:7144
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:6648
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:5496
dnnl::logsoftmax_forward
Logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6055
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:8849
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:8227
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:8970
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:3662
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:9939
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:7374
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:9832
dnnl::eltwise_forward::desc
Descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5651
dnnl::memory::desc::dims
memory::dims dims() const
Returns dimensions of the memory descriptor.
Definition: dnnl.hpp:2024
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:7746
dnnl::lstm_backward
LSTM backward propagation primitive.
Definition: dnnl.hpp:8147
dnnl::layer_normalization_forward::desc
Descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6559
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:5729
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:9969
dnnl::gru_forward::gru_forward
gru_forward(const primitive_desc &pd)
Constructs a GRU forward propagation primitive.
Definition: dnnl.hpp:8796
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:6808
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:9136
dnnl::lstm_backward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8545
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:5505
dnnl_eltwise
@ dnnl_eltwise
An element-wise primitive.
Definition: dnnl_types.h:804
dnnl::gru_forward
GRU forward propagation primitive.
Definition: dnnl.hpp:8651
dnnl::algorithm::deconvolution_direct
@ deconvolution_direct
Direct deconvolution.
dnnl::engine::kind
kind
Kinds of engines.
Definition: dnnl.hpp:870
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:9360
dnnl::batch_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6504
dnnl::vanilla_rnn_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:7567
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:8750
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:7883
dnnl::lstm_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:8532
dnnl::batch_normalization_forward::primitive_desc::variance_desc
memory::desc variance_desc() const
Returns memory descriptor for variance.
Definition: dnnl.hpp:6372
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:7089
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:9639
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:2273
dnnl::lbr_gru_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9123
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:222
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:9381
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:1255
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:3843
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:9569
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:10103
dnnl::logsoftmax_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6234
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:6337
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:8479
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:7080
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:3187
dnnl::gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8954
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:3558
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:5234
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:9268
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:4777
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:7326
dnnl::primitive_attr::set_scratchpad_mode
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:2719
dnnl::scratchpad_mode
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:427
dnnl::pooling_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5607
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:7564
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:8995
dnnl::resampling_forward::primitive_desc
Primitive descriptor for a resampling forward propagation primitive.
Definition: dnnl.hpp:9846
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:8688
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:2288
dnnl::batch_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6368
dnnl::lrn_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5266
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:3175
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:8616
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:7790
dnnl::vanilla_rnn_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:7780
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:5281
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:6472
dnnl::vanilla_rnn_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:7577
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:3589
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:8012
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:3432
dnnl::primitive_desc_base::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3130
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:6557
dnnl::convolution_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4444
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:5153
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:2890
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:1041
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:6744
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:3350
dnnl::engine::get_kind
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:947
dnnl::vanilla_rnn_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7772
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:3992
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:3892
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:7109
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:9952
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3154
dnnl::primitive_attr::set_post_ops
void set_post_ops(const post_ops ops)
Sets post-ops.
Definition: dnnl.hpp:2918
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:8931
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:2538
dnnl::eltwise_forward::primitive_desc
Primitive descriptor for an elementwise forward propagation primitive.
Definition: dnnl.hpp:5679
dnnl::primitive_desc_base::get_kind
dnnl::primitive::kind get_kind() const
Returns the kind of the primitive descriptor.
Definition: dnnl.hpp:3199
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:9805
dnnl::shuffle_forward::shuffle_forward
shuffle_forward()=default
Default constructor. Produces an empty object.
dnnl_softmax_forward_desc_init
dnnl_status_t DNNL_API dnnl_softmax_forward_desc_init(dnnl_softmax_desc_t *softmax_desc, dnnl_prop_kind_t prop_kind, const dnnl_memory_desc_t *data_desc, int softmax_axis)
Initializes a descriptor for softmax forward propagation primitive.
dnnl_primitive_desc_clone
dnnl_status_t DNNL_API dnnl_primitive_desc_clone(dnnl_primitive_desc_t *primitive_desc, const_dnnl_primitive_desc_t existing_primitive_desc)
Clones a primitive descriptor.
dnnl_version
const dnnl_version_t DNNL_API * dnnl_version(void)
Returns library version information.
dnnl_format_kind_rnn_packed
@ dnnl_format_kind_rnn_packed
Packed weights format used in RNN.
Definition: dnnl_types.h:93
dnnl_use_scaleshift
@ dnnl_use_scaleshift
Use scale and shift parameters.
Definition: dnnl_types.h: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:9251
dnnl::lrn_forward::desc
Descriptor for an LRN forward propagation primitive.
Definition: dnnl.hpp:5192
dnnl::softmax_forward::primitive_desc
Primitive descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5882
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:7487
dnnl::lrn_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:5371
dnnl_memory_set_data_handle
dnnl_status_t DNNL_API dnnl_memory_set_data_handle(dnnl_memory_t memory, void *handle)
Sets the underlying memory buffer.
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:5260
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:4819
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:6952
dnnl::reorder::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3415
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:10123
dnnl::reorder::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3412
dnnl::post_ops
Post-ops.
Definition: dnnl.hpp:2386
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:966
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:7074
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:3136
dnnl::gru_backward::primitive_desc::diff_bias_desc
memory::desc diff_bias_desc() const
Returns diff bias memory descriptor.
Definition: dnnl.hpp:8990
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:3160
dnnl::layer_normalization_forward::primitive_desc
Primitive descriptor for a layer normalization forward propagation primitive.
Definition: dnnl.hpp:6607
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:743
dnnl::gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8782
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::memory::set_sycl_buffer
void set_sycl_buffer(cl::sycl::buffer< T, ndims > &buf)
Sets the underlying buffer to the given SYCL buffer.
Definition: dnnl.hpp:2309
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:2269
dnnl::lbr_gru_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:9131
dnnl::logsoftmax_backward::logsoftmax_backward
logsoftmax_backward(const primitive_desc &pd)
Constructs a logsoftmax backward propagation primitive.
Definition: dnnl.hpp:6249
dnnl::deconvolution_backward_weights
Deconvolution weights gradient primitive.
Definition: dnnl.hpp:4914
dnnl::lbr_gru_forward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:9149
dnnl::inner_product_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6969
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:5960
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:8495
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:7262
dnnl::concat
Tensor concatenation (concat) primitive.
Definition: dnnl.hpp:3494
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:6151
dnnl_convolution_winograd
@ dnnl_convolution_winograd
Winograd convolution.
Definition: dnnl_types.h:841
dnnl::convolution_forward
Convolution forward propagation primitive.
Definition: dnnl.hpp:3762
dnnl::logsoftmax_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6237
dnnl::batch_normalization_backward::desc
Descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6406
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:6275
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:7800
dnnl::layer_normalization_backward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6835
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:104
dnnl::gru_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8957
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:5490
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:6594
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:7095
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:5855
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:6404
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:6355
dnnl::inner_product_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:7077
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:6637
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:9288
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:2283
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:5426
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:7599
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:5535
dnnl::memory::data_type
data_type
Data type specification.
Definition: dnnl.hpp:1261
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:8918
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:4857
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:5363
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:5350
dnnl::lbr_gru_forward::desc
Descriptor for an LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9017
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:957
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:7526
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:8514
dnnl::convolution_backward_weights::primitive_desc
Primitive descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4391
dnnl::batch_normalization_backward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6498
dnnl::lstm_forward::primitive_desc::weights_peephole_desc
memory::desc weights_peephole_desc() const
Returns weights peephole memory descriptor.
Definition: dnnl.hpp:8106
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:9217
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:7352
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:6164
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:5445
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:988
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:5923
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:6795
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:8132
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:10131
dnnl::lstm_forward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8127
dnnl::deconvolution_forward::primitive_desc
Primitive descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4679
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:9715
dnnl::lstm_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:8581
dnnl::layer_normalization_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:6827
dnnl::primitive::kind::undef
@ undef
Undefined primitive.
dnnl::resampling_forward
Resampling forward propagation.
Definition: dnnl.hpp:9765
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:9922
dnnl::memory::get_desc
desc get_desc() const
Returns the associated memory descriptor.
Definition: dnnl.hpp:2139
dnnl::shuffle_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9456
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:7380
dnnl_aBcd4b
@ dnnl_aBcd4b
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:248
dnnl::inner_product_backward_weights
Inner product weights gradient primitive.
Definition: dnnl.hpp:7093
dnnl::layer_normalization_forward::primitive_desc::mean_desc
memory::desc mean_desc() const
Returns memory descriptor for mean.
Definition: dnnl.hpp:6667
dnnl::resampling_backward::resampling_backward
resampling_backward(const primitive_desc &pd)
Constructs a resampling backward propagation primitive.
Definition: dnnl.hpp:10019
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:7268
dnnl::memory::format_tag
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1335
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:2250
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:8761
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:1051
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:9896
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:5208
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:4426
dnnl::normalization_flags
normalization_flags
Flags for normalization primitives.
Definition: dnnl.hpp:613
dnnl::inner_product_backward_data
Inner product backward propagation primitive.
Definition: dnnl.hpp:6991
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:3797
dnnl::matmul::matmul
matmul(const primitive_desc &pd)
Constructs a matmul primitive.
Definition: dnnl.hpp:9749
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:6512
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:6348
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:6866
dnnl::deconvolution_backward_data::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4898
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:6149
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:8883
dnnl::deconvolution_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:4726
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:9365
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:7131
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:5570
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:7795
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:9301
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:5148
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:4901
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:8077
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:6621
dnnl::lrn_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:5272
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:1112
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:2252
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:8111
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::stream::get_sycl_queue
cl::sycl::queue DNNL_API get_sycl_queue() const
Returns the underlying SYCL queue object.
dnnl::vanilla_rnn_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7751
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:9509
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:2838
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:390
dnnl::convolution_forward::primitive_desc
Primitive descriptor for a convolution forward propagation primitive.
Definition: dnnl.hpp:3962
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:7280
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:6775
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:8965
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:5726
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:5871
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:7756
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:1875
dnnl::layer_normalization_backward::desc
Descriptor for a layer normalization backward propagation primitive.
Definition: dnnl.hpp:6704
dnnl::gru_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8949
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:6212
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:8083
dnnl::matmul::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:9741
dnnl::eltwise_backward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5826
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:9905
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:8066
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:4003
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:9053
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:3246
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:7320
dnnl::handle::handle
handle(T t, bool weak=false)
Constructs a handle wrapper object from a C API handle.
Definition: dnnl.hpp:181
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:9689
dnnl::batch_normalization_forward::primitive_desc
Primitive descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6307
dnnl::matmul::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:9736
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:5115
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:6192
dnnl::lstm_backward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8540
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:4323
dnnl::batch_normalization_backward::primitive_desc
Primitive descriptor for a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6435
dnnl::logsoftmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6136
dnnl::concat::primitive_desc
Primitive descriptor for a concat primitive.
Definition: dnnl.hpp:3496
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:2220
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:3148
dnnl::primitive_desc_base::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:3142
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:6702
dnnl::memory::memory
memory(const desc &md, const engine &aengine, cl::sycl::buffer< T, ndims > &buf)
Constructs a memory object from a SYCL buffer.
Definition: dnnl.hpp:2122
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:8711
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:6225
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:7815
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:3104
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:7314
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:6452
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:6661
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:7585
dnnl::convolution_backward_weights::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:4447
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:4452
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:8555
dnnl::set_jit_profiling_flags
status set_jit_profiling_flags(unsigned flags)
Sets library profiling flags.
Definition: dnnl.hpp:10069
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:6573
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:1961
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:9627
dnnl::pooling_forward
Pooling forward propagation primitive.
Definition: dnnl.hpp:5397
dnnl_cpu_isa_sse41
@ dnnl_cpu_isa_sse41
Intel Streaming SIMD Extensions 4.1 (Intel SSE4.1)
Definition: dnnl_types.h:2255
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:10146
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:3027
dnnl::status
status
Status values returned by the library functions.
Definition: dnnl.hpp:10036
dnnl::lbr_gru_backward::desc
Descriptor for a LBR GRU backward propagation primitive.
Definition: dnnl.hpp:9169
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:6818
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:2261
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:2278
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:3539
dnnl::convolution_backward_data
Convolution backward propagation primitive.
Definition: dnnl.hpp:4034
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:7306
dnnl::handle::get
T get(bool allow_empty=false) const
Returns the underlying C API handle.
Definition: dnnl.hpp:197
dnnl::primitive_desc_base::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:3124
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:10109
dnnl::reorder::primitive_desc
Primitive descriptor for a reorder primitive.
Definition: dnnl.hpp:3327
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:9527
dnnl::binary
Elementwise binary operator primitive.
Definition: dnnl.hpp:9553
dnnl::lrn_backward::desc
Descriptor for an LRN backward propagation primitive.
Definition: dnnl.hpp:5287
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:4987
dnnl::deconvolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4735
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:6993
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:9332
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:96
dnnl::layer_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6664
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:9785
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:6670
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:8980
dnnl::memory::desc::data_type
memory::data_type data_type() const
Returns the data type of the memory descriptor.
Definition: dnnl.hpp:2030
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:9679
dnnl::memory::dim
dnnl_dim_t dim
Integer type for representing dimension sizes and indices.
Definition: dnnl.hpp:1243
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:4877
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:7553
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:3512
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:7207
dnnl::lstm_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8573
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:5098
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:5473
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:2734
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:5249
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:6815
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:8621
dnnl::pooling_backward
Pooling backward propagation primitive.
Definition: dnnl.hpp:5509
dnnl::deconvolution_backward_data::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:4895
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:6972
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:3680
dnnl::lstm_backward::lstm_backward
lstm_backward(const primitive_desc &pd)
Constructs an LSTM backward propagation primitive.
Definition: dnnl.hpp:8647
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:9630
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:188
dnnl::softmax_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:5932
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:7161
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:9355
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:7365
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:7810
dnnl::stream::flags
flags
Stream flags. Can be combined using the bitwise OR operator.
Definition: dnnl.hpp:1090
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:7340
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:6520
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:8527
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:5602
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:9482
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:5374
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:5829
dnnl::layer_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6830
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:5031
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:7210
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:4610
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:7805
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:4108
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:2465
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:9350
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:8975
dnnl::logsoftmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6240
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:2704
dnnl::pooling_backward::pooling_backward
pooling_backward(const primitive_desc &pd)
Constructs a pooling backward propagation primitive.
Definition: dnnl.hpp:5622
dnnl::shuffle_forward::desc
Descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9397
dnnl::reorder::execute
void execute(const stream &astream, memory &src, memory &dst) const
Executes the reorder primitive.
Definition: dnnl.hpp:3444
dnnl::shuffle_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:9453
dnnl::concat::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:3565
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:2688
dnnl::softmax_forward::softmax_forward
softmax_forward(const primitive_desc &pd)
Constructs a softmax forward propagation primitive.
Definition: dnnl.hpp:5941
dnnl::lbr_gru_backward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:9335
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:7181
dnnl::inner_product_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6975
dnnl::lbr_gru_backward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9311
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:9539
dnnl::inner_product_backward_data::primitive_desc
Primitive descriptor for an inner product backward propagation primitive.
Definition: dnnl.hpp:7019
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:9152
dnnl::convolution_backward_data::desc
Descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4037
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:9472
dnnl::softmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:5929
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:1241
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:7388
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:2808
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:4945
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:115
dnnl::eltwise_backward::eltwise_backward
eltwise_backward(const primitive_desc &pd)
Constructs an eltwise backward propagation primitive.
Definition: dnnl.hpp:5841
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:9608
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:8739
dnnl::primitive_desc_base::diff_weights_desc
memory::desc diff_weights_desc(int idx) const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:3113
dnnl::lstm_backward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8568
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:6515
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:10054
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:6358
dnnl::inner_product_forward::primitive_desc
Primitive descriptor for an inner product forward propagation primitive.
Definition: dnnl.hpp:6922
dnnl::handle
oneDNN C API handle wrapper class.
Definition: dnnl.hpp:148
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:5302
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:9435
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:8611
dnnl::primitive_desc_base::src_desc
memory::desc src_desc(int idx) const
Returns a source memory descriptor.
Definition: dnnl.hpp:3068
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:3603
dnnl::lstm_forward::primitive_desc::weights_layer_desc
memory::desc weights_layer_desc() const
Returns weights layer memory descriptor.
Definition: dnnl.hpp:8096
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:7194
dnnl::batch_normalization_forward::desc
Descriptor for a batch normalization forward propagation primitive.
Definition: dnnl.hpp:6277
dnnl::engine::get_sycl_context
cl::sycl::context DNNL_API get_sycl_context() const
Returns the underlying SYCL context object.
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:9617
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:7759
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:9314
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:5077
dnnl::rnn_primitive_desc_base::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7254
dnnl::convolution_backward_data::convolution_backward_data
convolution_backward_data(const primitive_desc &pd)
Constructs a convolution backward propagation primitive.
Definition: dnnl.hpp:4199
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:9989
dnnl::batch_normalization_backward::primitive_desc::diff_src_desc
memory::desc diff_src_desc() const
Returns a diff source memory descriptor.
Definition: dnnl.hpp:6501
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:4709
dnnl::lbr_gru_forward
LBR GRU forward propagation primitive.
Definition: dnnl.hpp:9015
dnnl::resampling_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:10010
dnnl::batch_normalization_backward::batch_normalization_backward
batch_normalization_backward(const primitive_desc &pd)
Constructs a batch normalization backward propagation primitive.
Definition: dnnl.hpp:6529
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:7572
dnnl::lstm_forward::primitive_desc::src_iter_c_desc
memory::desc src_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8091
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:7292
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:2790
dnnl::convolution_backward_weights::convolution_backward_weights
convolution_backward_weights(const primitive_desc &pd)
Constructs a convolution weights gradient primitive.
Definition: dnnl.hpp:4469
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:6008
dnnl::logsoftmax_forward::logsoftmax_forward
logsoftmax_forward(const primitive_desc &pd)
Constructs a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6145
dnnl::handle::operator!=
bool operator!=(const handle &other) const
Inequality operator.
Definition: dnnl.hpp:232
dnnl::convolution_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns the bias memory descriptor.
Definition: dnnl.hpp:4021
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:6071
dnnl_cpu_isa_t
dnnl_cpu_isa_t
CPU instruction set flags.
Definition: dnnl_types.h:2250
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:6978
dnnl::memory::desc::operator!=
bool operator!=(const desc &other) const
An inequality operator.
Definition: dnnl.hpp:2057
dnnl::pooling_backward::desc
Descriptor for a pooling backward propagation primitive.
Definition: dnnl.hpp:5511
dnnl::shuffle_forward::primitive_desc
Primitive descriptor for a shuffle forward propagation primitive.
Definition: dnnl.hpp:9420
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:4278
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:4235
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:7056
dnnl::deconvolution_forward::primitive_desc::dst_desc
memory::desc dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:4732
dnnl::vanilla_rnn_forward::desc
Descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7444
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:9557
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:8724
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:8586
dnnl::lbr_gru_backward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:9324
dnnl::inner_product_backward_weights::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:7199
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:3211
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:6758
dnnl::primitive_desc_base::scratchpad_desc
memory::desc scratchpad_desc() const
Returns the scratchpad memory descriptor.
Definition: dnnl.hpp:3169
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:9491
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:4840
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:2455
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:4458
dnnl::algorithm::pooling_max
@ pooling_max
Max pooling.
dnnl::engine::engine
engine(kind akind, size_t index)
Constructs an engine.
Definition: dnnl.hpp:898
dnnl::binary::desc
Descriptor for an elementwise binary operator primitive.
Definition: dnnl.hpp:9555
dnnl::deconvolution_backward_weights::desc
Descriptor for a deconvolution weights gradient primitive.
Definition: dnnl.hpp:4916
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:3562
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:7300
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:132
dnnl::primitive_desc_base::weights_desc
memory::desc weights_desc(int idx) const
Returns a weights memory descriptor.
Definition: dnnl.hpp:3086
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:9340
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:1246
dnnl::softmax_backward::primitive_desc
Primitive descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5971
dnnl::deconvolution_backward_data
Deconvolution backward propagation primitive.
Definition: dnnl.hpp:4748
dnnl::batch_normalization_forward::primitive_desc::workspace_desc
memory::desc workspace_desc() const
Returns the workspace memory descriptor.
Definition: dnnl.hpp:6364
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:8626
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:5912
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:2901
dnnl::vanilla_rnn_forward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:7559
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:6936
dnnl::gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:8777
dnnl::memory::desc
A memory descriptor.
Definition: dnnl.hpp:1823
dnnl::convolution_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:4012
dnnl::primitive
Base class for all computational primitives.
Definition: dnnl.hpp:281
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:8051
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:2265
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:6821
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:5458
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:2147
dnnl::memory::format_kind
format_kind
Memory format kind.
Definition: dnnl.hpp:1279
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:4030
dnnl::memory::desc::operator==
bool operator==(const desc &other) const
An equality operator.
Definition: dnnl.hpp:2049
dnnl::shuffle_forward
Shuffle forward propagation primitive.
Definition: dnnl.hpp:9395
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:9163
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:9876
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:3764
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:9665
dnnl::memory::desc::is_zero
bool is_zero() const
Checks whether the memory descriptor is zero (empty).
Definition: dnnl.hpp:2043
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:8143
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:8606
dnnl::lstm_forward::primitive_desc::bias_desc
memory::desc bias_desc() const
Returns bias memory descriptor.
Definition: dnnl.hpp:8116
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:86
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:9141
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:9731
dnnl::convolution_backward_weights::desc
Descriptor for a convolution weights gradient primitive.
Definition: dnnl.hpp:4205
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:4750
dnnl::lbr_gru_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:9144
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:5709
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:9319
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:3407
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:7713
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:5589
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:2158
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:3976
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:3670
dnnl::concat::concat
concat(const primitive_desc &pd)
Constructs a concatenation primitive.
Definition: dnnl.hpp:3573
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:2501
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:7442
dnnl::lbr_gru_backward::primitive_desc::src_layer_desc
memory::desc src_layer_desc() const
Returns source layer memory descriptor.
Definition: dnnl.hpp:9306
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:9106
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:1136
dnnl::vanilla_rnn_backward::vanilla_rnn_backward
vanilla_rnn_backward(const primitive_desc &pd)
Constructs a vanilla RNN backward propagation primitive.
Definition: dnnl.hpp:7826
dnnl::shuffle_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a diff destination memory descriptor.
Definition: dnnl.hpp:9530
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:5666
dnnl::deconvolution_forward::deconvolution_forward
deconvolution_forward(const primitive_desc &pd)
Constructs a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4744
dnnl::version
const version_t * version()
Returns library version information.
Definition: dnnl.hpp:10059
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:3423
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:6963
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:1847
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:7006
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:2403
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:3707
dnnl::lbr_gru_forward::primitive_desc::src_iter_desc
memory::desc src_iter_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:9128
dnnl::algorithm
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:496
dnnl::convolution_backward_data::primitive_desc
Primitive descriptor for a convolution backward propagation primitive.
Definition: dnnl.hpp:4129
dnnl::lstm_backward::primitive_desc::dst_iter_c_desc
memory::desc dst_iter_c_desc() const
Returns source iteration memory descriptor.
Definition: dnnl.hpp:8576
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:6720
dnnl::batch_normalization_backward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6495
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:401
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:5164
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:5896
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:7951
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:9345
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:5399
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:3396
dnnl::eltwise_backward::primitive_desc
Primitive descriptor for eltwise backward propagation.
Definition: dnnl.hpp:5771
dnnl::logsoftmax_forward::desc
Descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6057
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:9624
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:2234
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:4190
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:1076
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:6400
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:8591
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:9465
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:3659
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:7733
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:2708
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:1830
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:2487
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:7542
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:7235
dnnl::primitive_attr::primitive_attr
primitive_attr()
Constructs default (empty) primitive attributes.
Definition: dnnl.hpp:2692
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:5315
dnnl_resampling
@ dnnl_resampling
A resampling primitive.
Definition: dnnl_types.h:828
dnnl::lstm_forward
LSTM forward propagation primitive.
Definition: dnnl.hpp:7830
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:7069
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:3231
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:2258
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:3011
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:8936
dnnl::primitive_desc_base::impl_info_str
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:3015
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:4517
dnnl::lstm_forward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:8101
dnnl::batch_normalization_forward::primitive_desc::weights_desc
memory::desc weights_desc() const
Returns a weights memory descriptor.
Definition: dnnl.hpp:6361
dnnl::primitive_desc_base::query_md
memory::desc query_md(query what, int idx=0) const
Returns a memory descriptor.
Definition: dnnl.hpp:3048
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:5693
dnnl::batch_normalization_backward::primitive_desc::diff_weights_desc
memory::desc diff_weights_desc() const
Returns a diff weights memory descriptor.
Definition: dnnl.hpp:6507
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:6421
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:4729
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:6843
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:3633
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:5175
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:9701
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:5331
dnnl::primitive_desc_base
Base class for all primitive descriptors.
Definition: dnnl.hpp:3003
dnnl::softmax_backward::desc
Descriptor for a softmax backward propagation primitive.
Definition: dnnl.hpp:5947
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:4658
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:6321
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:8899
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:9893
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:4179
dnnl::lstm_backward::desc
Descriptor for an LSTM backward propagation primitive.
Definition: dnnl.hpp:8149
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:10064
dnnl::gru_backward::primitive_desc::dst_iter_desc
memory::desc dst_iter_desc() const
Returns destination iteration memory descriptor.
Definition: dnnl.hpp:8962
dnnl::softmax_backward::primitive_desc::diff_dst_desc
memory::desc diff_dst_desc() const
Returns a destination memory descriptor.
Definition: dnnl.hpp:6032
dnnl::vanilla_rnn_forward::primitive_desc::dst_layer_desc
memory::desc dst_layer_desc() const
Returns destination layer memory descriptor.
Definition: dnnl.hpp:7580
dnnl::deconvolution_forward
Deconvolution forward propagation primitive.
Definition: dnnl.hpp:4483
dnnl::lrn_backward
Local response normalization (LRN) backward propagation primitive.
Definition: dnnl.hpp:5285
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:8438
dnnl::logsoftmax_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6133
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:6029
dnnl::softmax_forward::desc
Descriptor for a softmax forward propagation primitive.
Definition: dnnl.hpp:5857
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:9409
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:8596
dnnl::engine::kind::cpu
@ cpu
CPU engine.
dnnl::vanilla_rnn_backward::primitive_desc
Primitive descriptor for an RNN backward propagation primitive.
Definition: dnnl.hpp:7696
dnnl::sum
Out-of-place summation (sum) primitive.
Definition: dnnl.hpp:3587
dnnl::logsoftmax_forward::primitive_desc
Primitive descriptor for a logsoftmax forward propagation primitive.
Definition: dnnl.hpp:6082
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:8560
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:8941
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:5758
dnnl::vanilla_rnn_forward::primitive_desc
Primitive descriptor for a vanilla RNN forward propagation primitive.
Definition: dnnl.hpp:7512
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:5484
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:6096
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:9011
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:5161
dnnl::layer_normalization_forward::primitive_desc::src_desc
memory::desc src_desc() const
Returns a source memory descriptor.
Definition: dnnl.hpp:6655
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:6175
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:4065
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:2989
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:4370
dnnl::resampling_backward::desc
Descriptor for a resampling backward propagation primitive.
Definition: dnnl.hpp:9911
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:5135
dnnl::gru_backward
GRU backward propagation primitive.
Definition: dnnl.hpp:8800
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:5808
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:8565
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:8537
dnnl::deconvolution_forward::desc
Descriptor for a deconvolution forward propagation primitive.
Definition: dnnl.hpp:4485
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:6485
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:5720
dnnl::vanilla_rnn_backward::primitive_desc::weights_iter_desc
memory::desc weights_iter_desc() const
Returns weights iteration memory descriptor.
Definition: dnnl.hpp:7764
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.