Deep Neural Network Library (DNNL)
1.90.1
Performance library for Deep Learning
Go to the documentation of this file.
23 #include "dnnl_config.h"
31 #include <unordered_map>
35 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
40 #include <CL/sycl.hpp>
57 struct error :
public std::exception {
66 : status(astatus), message(amessage) {}
69 const char *
what() const noexcept
override {
return message; }
98 template <
typename T,
typename traits = handle_traits<T>>
103 std::shared_ptr<typename std::remove_pointer<T>::type> _data {0};
106 bool operator==(
const T other)
const {
return other == _data.get(); }
107 bool operator!=(
const T other)
const {
return !(*
this == other); }
128 explicit handle(T t,
bool weak =
false) {
reset(t, weak); }
133 void reset(T t,
bool weak =
false) {
134 _data.reset(t, weak ? &dummy_destructor : traits::destructor);
138 T
get(
bool allow_emtpy =
false)
const {
139 T result = _data.get();
141 if (allow_emtpy ==
false && result ==
nullptr)
143 "attempt to use uninitialized object");
148 explicit operator T()
const {
return get(
true); }
150 explicit operator bool()
const {
return get(
true) !=
nullptr; }
152 bool operator==(
const handle &other)
const {
153 return other._data.get() == _data.get();
155 bool operator!=(
const handle &other)
const {
return !(*
this == other); }
183 struct primitive_desc;
186 class primitive :
public handle<dnnl_primitive_t> {
188 friend struct stream;
230 primitive(
const primitive_desc &pd);
237 stream &astream,
const std::unordered_map<int, memory> &args)
const;
239 #ifdef DNNL_SYCL_DPCPP
240 cl::sycl::event DNNL_API execute_sycl(stream &astream,
241 const std::unordered_map<int, memory> &args,
242 const std::vector<cl::sycl::event> &deps = {})
const;
247 return static_cast<dnnl_primitive_kind_t>(akind);
253 "could not get primitive descriptor by primitive");
272 return static_cast<dnnl_scratchpad_mode_t>(mode);
303 return static_cast<dnnl_prop_kind_t>(kind);
308 undef = dnnl_alg_kind_undef,
379 return static_cast<dnnl_alg_kind_t>(aalgorithm);
423 return static_cast<dnnl_normalization_flags_t>(aflag);
426 enum class rnn_flags : unsigned {
undef = dnnl_rnn_flags_undef };
429 return static_cast<dnnl_rnn_flags_t>(aflag);
432 #define DNNL_DEFINE_BITMASK_OPS(enum_name) \
433 inline enum_name operator|(enum_name lhs, enum_name rhs) { \
434 return static_cast<enum_name>( \
435 static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
438 inline enum_name operator&(enum_name lhs, enum_name rhs) { \
439 return static_cast<enum_name>( \
440 static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
443 inline enum_name operator^(enum_name lhs, enum_name rhs) { \
444 return static_cast<enum_name>( \
445 static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
448 inline enum_name &operator|=(enum_name &lhs, enum_name rhs) { \
449 lhs = static_cast<enum_name>( \
450 static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs)); \
454 inline enum_name &operator&=(enum_name &lhs, enum_name rhs) { \
455 lhs = static_cast<enum_name>( \
456 static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs)); \
460 inline enum_name &operator^=(enum_name &lhs, enum_name rhs) { \
461 lhs = static_cast<enum_name>( \
462 static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs)); \
466 inline enum_name operator~(enum_name rhs) { \
467 return static_cast<enum_name>(~static_cast<unsigned>(rhs)); \
471 DNNL_DEFINE_BITMASK_OPS(rnn_flags)
473 #undef DNNL_DEFINE_BITMASK_OPS
475 enum class rnn_direction {
478 unidirectional = dnnl_unidirectional,
484 return static_cast<dnnl_rnn_direction_t>(adir);
576 return static_cast<dnnl_query_t>(aquery);
597 struct post_ops :
public handle<dnnl_post_ops_t> {
604 "could not create post operation sequence");
614 "post_ops index is out of range");
615 return static_cast<primitive::kind>(
648 "could not get sum params");
661 get(), scale, convert_to_c(alg), alpha, beta),
662 "could not append eltwise");
667 float &alpha,
float &beta)
const {
670 get(), index, &scale, &c_alg, &alpha, &beta),
671 "could not get eltwise params");
672 alg = static_cast<algorithm>(c_alg);
686 struct primitive_attr :
public handle<dnnl_primitive_attr_t> {
693 "could not create a primitive attr");
708 "could not get scratchpad mode");
715 get(), dnnl::convert_to_c(mode)),
716 "could not set scratchpad mode");
724 const float *c_scales;
726 get(), &count, &c_mask, &c_scales),
727 "could not get int output scales");
728 scales.resize(count);
732 scales[c] = c_scales[c];
753 "could not set int output scales");
761 "could not get post operation sequence");
762 result.reset(const_cast<dnnl_post_ops_t>(c_result),
true);
769 "could not set post operation sequence");
783 "could not set rnn data int scale/shift");
811 get(), (
int)scales.size(), mask, &scales[0]),
812 "could not set rnn weights int scales");
832 struct engine :
public handle<dnnl_engine_t> {
833 friend class primitive;
834 friend struct reorder;
861 engine(
kind akind,
size_t index) {
865 "could not create an engine");
869 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
870 engine(
kind akind, cl_device_id device, cl_context context) {
876 "could not create an engine");
882 DNNL_API engine(
kind akind,
const cl::sycl::device &dev,
888 const cl::sycl::context &ctx);
896 engine(
const handle<dnnl_primitive_desc_t> &pd) {
901 "could not get engine from primitive_desc");
902 reset(engine_q,
true);
909 "could not get the engine kind");
910 return static_cast<engine::kind>(akind);
913 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
916 cl_context context =
nullptr;
918 "could not get a context handle");
924 cl_device_id device =
nullptr;
926 "could not get a device handle");
939 template <
class primitive_desc>
940 static engine query(
const primitive_desc &pd) {
946 return static_cast<dnnl_engine_kind_t>(akind);
949 template <
class primitive_desc>
950 static engine query(
const primitive_desc &pd,
dnnl::query what) {
953 dnnl::convert_to_c(what), 0, &engine_q),
954 "could not get engine from primitive_desc");
956 return engine(engine_q);
976 struct stream :
public handle<dnnl_stream_t> {
980 enum class flags : unsigned {
998 static_cast<dnnl_stream_flags_t>(aflags)),
999 "could not create a stream");
1003 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1004 stream(
const engine &eng, cl_command_queue queue) {
1009 "could not create a stream");
1015 cl_command_queue queue =
nullptr;
1017 "could not get OpenCL command queue");
1023 DNNL_API stream(
const engine &eng, cl::sycl::queue &aqueue);
1041 return static_cast<stream::flags>(
1042 static_cast<unsigned>(lhs) | static_cast<unsigned>(rhs));
1046 return static_cast<stream::flags>(
1047 static_cast<unsigned>(lhs) & static_cast<unsigned>(rhs));
1051 return static_cast<stream::flags>(
1052 static_cast<unsigned>(lhs) ^ static_cast<unsigned>(rhs));
1056 return static_cast<stream::flags>(~static_cast<unsigned>(rhs));
1071 struct memory :
public handle<dnnl_memory_t> {
1073 typedef std::vector<dim> dims;
1075 template <
typename T>
1076 static void validate_dims(
const std::vector<T> &v) {
1156 Abc16a = dnnl_Abc16a,
1157 ABc16a16b = dnnl_ABc16a16b,
1159 ABc16b16a = dnnl_ABc16b16a,
1162 ABc4b16a4b = dnnl_ABc4b16a4b,
1163 ABc4b4a = dnnl_ABc4b4a,
1164 ABc8a16b2a = dnnl_ABc8a16b2a,
1165 ABc8a8b = dnnl_ABc8a8b,
1167 ABc8b16a2b = dnnl_ABc8b16a2b,
1168 ABc8b8a = dnnl_ABc8b8a,
1169 Abcd16a = dnnl_Abcd16a,
1170 ABcd16a16b = dnnl_ABcd16a16b,
1172 ABcd16b16a = dnnl_ABcd16b16a,
1173 aBCd16b16c = dnnl_aBCd16b16c,
1174 aBCd16c16b = dnnl_aBCd16c16b,
1175 Abcd4a = dnnl_Abcd4a,
1177 ABcd4b16a4b = dnnl_ABcd4b16a4b,
1178 ABcd4b4a = dnnl_ABcd4b4a,
1179 aBCd4c16b4c = dnnl_aBCd4c16b4c,
1180 aBCd4c4b = dnnl_aBCd4c4b,
1181 ABcd8a16b2a = dnnl_ABcd8a16b2a,
1182 ABcd8a8b = dnnl_ABcd8a8b,
1185 ABcd8b16a2b = dnnl_ABcd8b16a2b,
1186 aBCd8b16c2b = dnnl_aBCd8b16c2b,
1189 aBCd8b8c = dnnl_aBCd8b8c,
1190 aBCd8c16b2c = dnnl_aBCd8c16b2c,
1191 aBCd8c8b = dnnl_aBCd8c8b,
1192 Abcde16a = dnnl_Abcde16a,
1193 ABcde16a16b = dnnl_ABcde16a16b,
1195 ABcde16b16a = dnnl_ABcde16b16a,
1196 aBCde16b16c = dnnl_aBCde16b16c,
1197 aBCde16c16b = dnnl_aBCde16c16b,
1198 aBCde2c8b4c = dnnl_aBCde2c8b4c,
1199 Abcde4a = dnnl_Abcde4a,
1201 ABcde4b4a = dnnl_ABcde4b4a,
1202 aBCde4b4c = dnnl_aBCde4b4c,
1203 aBCde4c16b4c = dnnl_aBCde4c16b4c,
1204 aBCde4c4b = dnnl_aBCde4c4b,
1205 Abcde8a = dnnl_Abcde8a,
1206 ABcde8a8b = dnnl_ABcde8a8b,
1208 ABcde8b16a2b = dnnl_ABcde8b16a2b,
1209 aBCde8b16c2b = dnnl_aBCde8b16c2b,
1210 ABcde8b8a = dnnl_ABcde8b8a,
1211 aBCde8b8c = dnnl_aBCde8b8c,
1212 ABcd4a8b8a4b = dnnl_ABcd4a8b8a4b,
1213 ABcd2a8b8a2b = dnnl_ABcd2a8b8a2b,
1214 aBCde4b8c8b4c = dnnl_aBCde4b8c8b4c,
1215 aBCde2b8c8b2c = dnnl_aBCde2b8c8b2c,
1216 aBCde8c16b2c = dnnl_aBCde8c16b2c,
1217 aBCde8c8b = dnnl_aBCde8c8b,
1219 aBCdef16b16c = dnnl_aBCdef16b16c,
1220 aBCdef16c16b = dnnl_aBCdef16c16b,
1222 aBCdef4c4b = dnnl_aBCdef4c4b,
1223 aBCdef8b8c = dnnl_aBCdef8b8c,
1224 aBCdef8c16b2c = dnnl_aBCdef8c16b2c,
1225 aBCdef8c8b = dnnl_aBCdef8c8b,
1226 aBdc16b = dnnl_aBdc16b,
1227 aBdc4b = dnnl_aBdc4b,
1228 aBdc8b = dnnl_aBdc8b,
1229 aBdec16b = dnnl_aBdec16b,
1230 aBdec4b = dnnl_aBdec4b,
1231 aBdec8b = dnnl_aBdec8b,
1232 aBdefc16b = dnnl_aBdefc16b,
1233 aCBdef16c16b = dnnl_aCBdef16c16b,
1234 aBdefc4b = dnnl_aBdefc4b,
1235 aBdefc8b = dnnl_aBdefc8b,
1236 Acb16a = dnnl_Acb16a,
1239 aCBd16b16c = dnnl_aCBd16b16c,
1240 aCBd16c16b = dnnl_aCBd16c16b,
1241 aCBde16b16c = dnnl_aCBde16b16c,
1242 aCBde16c16b = dnnl_aCBde16c16b,
1243 Acdb16a = dnnl_Acdb16a,
1244 Acdb4a = dnnl_Acdb4a,
1245 Acdb8a = dnnl_Acdb8a,
1246 Acdeb16a = dnnl_Acdeb16a,
1247 Acdeb4a = dnnl_Acdeb4a,
1248 Acdeb8a = dnnl_Acdeb8a,
1249 BAc16a16b = dnnl_BAc16a16b,
1250 BAc16b16a = dnnl_BAc16b16a,
1251 BAcd16a16b = dnnl_BAcd16a16b,
1252 BAcd16b16a = dnnl_BAcd16b16a,
1253 ABcd32a32b = dnnl_ABcd32a32b,
1254 BAcde16b16 = dnnl_BAcde16b16a,
1255 aBdec32b = dnnl_aBdec32b,
1256 Abcdef16a = dnnl_Abcdef16a,
1257 Acdb32a = dnnl_Acdb32a,
1310 NCw16n16c = dnnl_NCw16n16c,
1311 NChw16n16c = dnnl_NChw16n16c,
1312 NCdhw16n16c = dnnl_NCdhw16n16c,
1313 NChw32n32c = dnnl_NChw32n32c,
1314 IOhw16i16o = dnnl_IOhw16i16o,
1315 Ohwi32o = dnnl_Ohwi32o,
1316 IOdhw16i16o = dnnl_IOdhw16i16o,
1317 gIOhw16i16o = dnnl_gIOhw16i16o,
1318 gOhwi32o = dnnl_gOhwi32o,
1319 Goidhw16g = dnnl_Goidhw16g,
1320 IOw16o16i = dnnl_IOw16o16i,
1321 OIw16i16o = dnnl_OIw16i16o,
1322 IOw16i16o = dnnl_IOw16i16o,
1323 gIOw16i16o = dnnl_gIOw16i16o,
1324 OIw16o16i = dnnl_OIw16o16i,
1325 Oiw16o = dnnl_Oiw16o,
1326 OIw4i16o4i = dnnl_OIw4i16o4i,
1327 OIw4i4o = dnnl_OIw4i4o,
1329 OIw8i16o2i = dnnl_OIw8i16o2i,
1330 OIw8i8o = dnnl_OIw8i8o,
1331 OIw8o16i2o = dnnl_OIw8o16i2o,
1332 OIw8o8i = dnnl_OIw8o8i,
1333 Owi16o = dnnl_Owi16o,
1336 IOhw16o16i = dnnl_IOhw16o16i,
1337 Ohwi16o = dnnl_Ohwi16o,
1338 Ohwi4o = dnnl_Ohwi4o,
1339 Ohwi8o = dnnl_Ohwi8o,
1340 OIhw16i16o = dnnl_OIhw16i16o,
1341 OIhw16o16i = dnnl_OIhw16o16i,
1342 Oihw16o = dnnl_Oihw16o,
1343 OIhw4i16o4i = dnnl_OIhw4i16o4i,
1344 OIhw4i4o = dnnl_OIhw4i4o,
1345 Oihw4o = dnnl_Oihw4o,
1346 OIhw8i16o2i = dnnl_OIhw8i16o2i,
1347 OIhw8i8o = dnnl_OIhw8i8o,
1348 OIhw8o16i2o = dnnl_OIhw8o16i2o,
1349 OIhw8o8i = dnnl_OIhw8o8i,
1350 Odhwi16o = dnnl_Odhwi16o,
1351 Odhwi4o = dnnl_Odhwi4o,
1352 Odhwi8o = dnnl_Odhwi8o,
1353 OIdhw16i16o = dnnl_OIdhw16i16o,
1354 OIdhw16o16i = dnnl_OIdhw16o16i,
1355 Oidhw16o = dnnl_Oidhw16o,
1356 OIdhw4i4o = dnnl_OIdhw4i4o,
1357 Oidhw4o = dnnl_Oidhw4o,
1358 OIdhw8i16o2i = dnnl_OIdhw8i16o2i,
1359 OIdhw8i8o = dnnl_OIdhw8i8o,
1360 OIdhw8o8i = dnnl_OIdhw8o8i,
1361 gIOw16o16i = dnnl_gIOw16o16i,
1362 gOIw16i16o = dnnl_gOIw16i16o,
1363 gOIw16o16i = dnnl_gOIw16o16i,
1364 gOiw16o = dnnl_gOiw16o,
1365 gOIw4i16o4i = dnnl_gOIw4i16o4i,
1366 gOIw4i4o = dnnl_gOIw4i4o,
1367 gOiw4o = dnnl_gOiw4o,
1368 gOIw8i16o2i = dnnl_gOIw8i16o2i,
1369 gOIw8i8o = dnnl_gOIw8i8o,
1370 gOIw8o16i2o = dnnl_gOIw8o16i2o,
1371 gOIw8o8i = dnnl_gOIw8o8i,
1372 gOwi16o = dnnl_gOwi16o,
1373 gOwi4o = dnnl_gOwi4o,
1374 gOwi8o = dnnl_gOwi8o,
1375 gIOhw16o16i = dnnl_gIOhw16o16i,
1376 gOhwi16o = dnnl_gOhwi16o,
1377 gOhwi4o = dnnl_gOhwi4o,
1378 gOhwi8o = dnnl_gOhwi8o,
1379 Goihw16g = dnnl_Goihw16g,
1380 gOIhw16i16o = dnnl_gOIhw16i16o,
1381 gOIhw16o16i = dnnl_gOIhw16o16i,
1382 gOihw16o = dnnl_gOihw16o,
1383 gOIhw2i8o4i = dnnl_gOIhw2i8o4i,
1384 gOIhw4i16o4i = dnnl_gOIhw4i16o4i,
1385 gOIhw4i4o = dnnl_gOIhw4i4o,
1386 gOIhw4o4i = dnnl_gOIhw4o4i,
1387 gOihw4o = dnnl_gOihw4o,
1388 Goihw8g = dnnl_Goihw8g,
1389 gOIhw8i16o2i = dnnl_gOIhw8i16o2i,
1390 gOIhw8i8o = dnnl_gOIhw8i8o,
1391 gOIhw8o16i2o = dnnl_gOIhw8o16i2o,
1392 OIhw4o8i8o4i = dnnl_OIhw4o8i8o4i,
1393 OIhw2o8i8o2i = dnnl_OIhw2o8i8o2i,
1394 gOIhw4o8i8o4i = dnnl_gOIhw4o8i8o4i,
1395 gOIhw2o8i8o2i = dnnl_gOIhw2o8i8o2i,
1396 gOIhw8o8i = dnnl_gOIhw8o8i,
1397 gIOdhw16i16o = dnnl_gIOdhw16i16o,
1398 gOdhwi16o = dnnl_gOdhwi16o,
1399 gOdhwi4o = dnnl_gOdhwi4o,
1400 gOdhwi8o = dnnl_gOdhwi8o,
1401 gOIdhw16i16o = dnnl_gOIdhw16i16o,
1402 gOIdhw16o16i = dnnl_gOIdhw16o16i,
1403 gOidhw16o = dnnl_gOidhw16o,
1404 gOIdhw4i4o = dnnl_gOIdhw4i4o,
1405 gOidhw4o = dnnl_gOidhw4o,
1406 gOIdhw8i16o2i = dnnl_gOIdhw8i16o2i,
1407 gOIdhw8i8o = dnnl_gOIdhw8i8o,
1408 gOIdhw8o8i = dnnl_gOIdhw8o8i,
1413 friend struct memory;
1426 validate_dims(adims);
1429 adims.size() == 0 ? nullptr : &adims[0],
1430 convert_to_c(adata_type),
1431 convert_to_c(aformat_tag)),
1432 "could not initialize a memory descriptor by tag");
1440 desc(
const dims &adims,
data_type adata_type,
const dims &astrides) {
1441 validate_dims(adims);
1444 adims.size() == 0 ? nullptr : &adims[0],
1445 convert_to_c(adata_type),
1446 astrides.size() == 0 ? nullptr : &astrides[0]),
1447 "could not initialize a memory descriptor by strides");
1462 &sub_md, &
data, &adims[0], &offsets[0]),
1463 "could not initialize a sub-memory");
1464 return desc(sub_md);
1471 (
int)adims.size(), &adims[0]),
1472 "could not reshape a memory descriptor");
1473 return desc(out_md);
1483 bool operator==(
const desc &other)
const {
1487 bool operator!=(
const desc &other)
const {
return !operator==(other); }
1493 memory(
const desc &md,
const engine &aengine,
void *ahandle)
1499 #ifdef DNNL_USE_DPCPP_USM
1500 : memory(with_sycl_tag {}, md, aengine, ahandle,
true) {
1503 : memory(with_sycl_tag {}, md, aengine, ahandle,
false) {
1507 memory(
const desc &md,
const engine &aengine,
void *ahandle) {
1516 "could not create a memory");
1521 #if DNNL_WITH_SYCL && defined(DNNL_USE_SYCL_BUFFERS)
1522 template <
typename T,
int ndims = 1>
1528 memory(
const desc &md,
const engine &aengine,
1529 cl::sycl::buffer<T, ndims> &buf)
1530 : memory(md, aengine, DNNL_MEMORY_NONE) {
1539 memory(
const desc &md,
const engine &aengine)
1540 : memory(md, aengine, DNNL_MEMORY_ALLOCATE) {}
1546 "could not get memory descriptor from a memory");
1547 return desc(*cdesc);
1554 "could not get engine from a memory");
1564 "could not get native handle");
1568 void set_data_handle(
void *
handle)
const {
1570 "could not set native handle");
1588 template <
typename T =
void>
1592 "could not map the data");
1593 return static_cast<T *>(mapped_ptr);
1606 "could not unmap the data");
1609 #if DNNL_GPU_RUNTIME == DNNL_RUNTIME_OCL
1614 "could not get OpenCL memory object");
1621 "could not set OpenCL memory object");
1625 #if DNNL_WITH_SYCL && defined(DNNL_USE_SYCL_BUFFERS)
1626 template <
typename T,
int ndims = 1>
1631 cl::sycl::buffer<T, ndims>
get_sycl_buffer(
size_t *offset =
nullptr)
const {
1632 static_assert(ndims == 1,
"only 1D buffers supported");
1636 "could not get SYCL buffer object");
1641 return cl::sycl::buffer<T, ndims>(cl::sycl::range<1>(1));
1643 auto &buf_u8 = *
static_cast<cl::sycl::buffer<uint8_t, 1> *
>(handle_ptr);
1644 if (offset) *offset = 0;
1645 auto range = cl::sycl::range<1>(buf_u8.get_size() /
sizeof(T));
1646 return buf_u8.reinterpret<T, 1>(range);
1654 template <
typename T,
int ndims>
1656 auto range = cl::sycl::range<1>(buf.get_size());
1657 auto buf_u8 = buf.template reinterpret<uint8_t, 1>(range);
1659 get(), static_cast<void *>(&buf_u8)),
1660 "could not set SYCL buffer object");
1666 return static_cast<dnnl_data_type_t>(adata_type);
1669 return static_cast<dnnl_format_tag_t>(aformat);
1674 struct with_sycl_tag {};
1676 DNNL_API memory(with_sycl_tag,
const desc &md,
const engine &aengine,
1677 void *ahandle,
bool is_usm);
1682 return a == memory::convert_to_c(b);
1695 return a == memory::convert_to_c(b);
1716 struct primitive_desc_base :
public handle<dnnl_primitive_desc_t> {
1719 primitive_desc_base() =
default;
1729 "could not query implementation info string");
1737 get(), dnnl::convert_to_c(q), 0, &res);
1746 if (!std::any_of(valid_q.cbegin(), valid_q.cend(),
1747 [=](
query q) {
return what == q; }))
1751 get(), dnnl::convert_to_c(what), idx);
1752 return memory::desc(*cdesc);
1769 "could not get scratchpad engine from a primitive_desc");
1778 "could not get attributes");
1781 "could not clone attributes");
1783 return primitive_attr(cattr);
1790 "could not clone primitive descriptor");
1794 primitive_desc_base(
1812 if (pd ==
nullptr)
return;
1825 "could not get primitive kind from the primitive descriptor");
1826 if (pd_kind != c_prim_kind)
1828 "primitive descriptor operation kind mismatch");
1838 "could not get propagation kind "
1839 "from the primitive descriptor");
1844 && (pd_prop_kind == c_prop_kind1
1845 || pd_prop_kind == c_prop_kind2))) {
1846 reset_with_clone(pd);
1852 "primitive descriptor propagation kind mismatch");
1869 struct reorder :
public primitive {
1870 struct primitive_desc :
public primitive_desc_base {
1871 using primitive_desc_base::primitive_desc_base;
1873 primitive_desc() =
default;
1875 primitive_desc(
const engine &src_engine,
const memory::desc &
src_md,
1877 const primitive_attr &aattr = primitive_attr()) {
1881 src_engine.get(), &
dst_md.data, dst_engine.get(),
1883 "could not create a reorder primitive descriptor");
1887 primitive_desc(
const memory &src,
const memory &dst,
1888 const primitive_attr &aattr = primitive_attr()) {
1890 auto src_md = src.get_desc();
1891 auto dst_md = dst.get_desc();
1894 src.get_engine().get(), &
dst_md.data,
1895 dst.get_engine().get(), aattr.get()),
1896 "could not create a reorder primitive descriptor");
1903 : primitive_desc_base(pd, dnnl::primitive::
kind::reorder) {}
1905 engine get_src_engine()
const {
1909 engine get_dst_engine()
const {
1914 reorder() =
default;
1916 reorder(
const primitive_desc &pd) : primitive(pd.
get()) {}
1918 reorder(
const memory &src,
const memory &dst)
1919 : primitive(primitive_desc(src, dst).
get()) {}
1921 using primitive::execute;
1923 void execute(stream astream, memory &src, memory &dst) {
1924 primitive::execute(astream, {{DNNL_ARG_FROM, src}, {DNNL_ARG_TO, dst}});
1927 #ifdef DNNL_SYCL_DPCPP
1928 using primitive::execute_sycl;
1930 cl::sycl::event execute_sycl(stream &astream, memory &src, memory &dst,
1931 const std::vector<cl::sycl::event> &deps = {})
const {
1932 return primitive::execute_sycl(astream,
1933 {{DNNL_ARG_FROM, src},
1951 inline std::vector<dnnl_memory_desc_t> convert_to_c(
1952 const std::vector<memory::desc> &mems) {
1953 std::vector<dnnl_memory_desc_t> c_api_mems;
1954 c_api_mems.reserve(mems.size());
1955 for (
const auto &s : mems)
1956 c_api_mems.push_back(s.data);
1968 struct concat :
public primitive {
1969 struct primitive_desc :
public primitive_desc_base {
1970 using primitive_desc_base::primitive_desc_base;
1972 primitive_desc(
const memory::desc &dst,
int concat_dimension,
1973 const std::vector<memory::desc> &srcs,
const engine &aengine,
1974 const primitive_attr &aattr = primitive_attr()) {
1975 auto c_api_srcs = convert_to_c(srcs);
1980 (
int)c_api_srcs.size(), concat_dimension,
1981 &c_api_srcs[0], aattr.get(), aengine.get()),
1982 "could not create a concat primitive descriptor");
1986 primitive_desc(
int concat_dimension,
1987 const std::vector<memory::desc> &srcs,
const engine &aengine,
1988 const primitive_attr &aattr = primitive_attr()) {
1989 auto c_api_srcs = convert_to_c(srcs);
1994 (
int)c_api_srcs.size(), concat_dimension,
1995 &c_api_srcs[0], aattr.get(), aengine.get()),
1996 "could not create a concat primitive descriptor");
2003 : primitive_desc_base(pd, dnnl::primitive::
kind::concat) {}
2011 concat(
const primitive_desc &pd) : primitive(pd.
get()) {}
2028 struct sum :
public primitive {
2029 struct primitive_desc :
public primitive_desc_base {
2030 using primitive_desc_base::primitive_desc_base;
2032 primitive_desc() =
default;
2034 primitive_desc(
const memory::desc &dst,
2035 const std::vector<float> &scales,
2036 const std::vector<memory::desc> &srcs,
const engine &aengine,
2037 const primitive_attr &aattr = primitive_attr()) {
2041 "number of scales not equal to number of srcs");
2043 auto c_api_srcs = convert_to_c(srcs);
2048 (
int)c_api_srcs.size(), &scales[0], &c_api_srcs[0],
2049 aattr.get(), aengine.get()),
2050 "could not create a sum primitive descriptor");
2054 primitive_desc(
const std::vector<float> &scales,
2055 const std::vector<memory::desc> &srcs,
const engine &aengine,
2056 const primitive_attr &aattr = primitive_attr()) {
2060 "number of scales not equal to number of srcs");
2062 auto c_api_srcs = convert_to_c(srcs);
2066 (
int)c_api_srcs.size(), &scales[0], &c_api_srcs[0],
2067 aattr.get(), aengine.get()),
2068 "could not create a sum primitive descriptor");
2075 : primitive_desc_base(pd, dnnl::primitive::
kind::sum) {}
2083 sum(
const primitive_desc &pd) : primitive(pd.
get()) {}
2098 struct primitive_desc :
public primitive_desc_base {
2099 using primitive_desc_base::primitive_desc_base;
2101 primitive_desc() =
default;
2110 bool allow_empty =
false)
2111 : allow_empty(allow_empty) {
2114 desc, attr ? attr->get() :
nullptr, e.get(), hint_fwd_pd);
2117 status,
"could not create a primitive descriptor iterator");
2118 pd_iterator.reset(iterator);
2139 bool allow_empty =
false;
2140 handle<dnnl_primitive_desc_iterator_t> pd_iterator;
2143 pd_iterator.get(allow_empty));
2146 "could not fetch a primitive descriptor from the iterator");
2165 struct convolution_forward :
public primitive {
2180 const memory::desc &src_desc,
const memory::desc &weights_desc,
2181 const memory::desc &bias_desc,
const memory::desc &dst_desc,
2182 const memory::dims &strides,
const memory::dims &padding_l,
2183 const memory::dims &padding_r) {
2184 memory::validate_dims(strides);
2185 memory::validate_dims(padding_l);
2186 memory::validate_dims(padding_r);
2189 dnnl::convert_to_c(aprop_kind),
2190 convert_to_c(aalgorithm), &src_desc.data,
2191 &weights_desc.data, &bias_desc.data, &dst_desc.data,
2192 &strides[0], &padding_l[0], &padding_r[0]),
2193 "could not create a convolution forward descriptor");
2205 const memory::desc &src_desc,
const memory::desc &weights_desc,
2206 const memory::desc &dst_desc,
const memory::dims &strides,
2207 const memory::dims &padding_l,
const memory::dims &padding_r) {
2208 memory::validate_dims(strides);
2209 memory::validate_dims(padding_l);
2210 memory::validate_dims(padding_r);
2213 dnnl::convert_to_c(aprop_kind),
2214 convert_to_c(aalgorithm), &src_desc.data,
2215 &weights_desc.data,
nullptr, &dst_desc.data,
2216 &strides[0], &padding_l[0], &padding_r[0]),
2217 "could not create a convolution forward descriptor");
2229 const memory::desc &src_desc,
const memory::desc &weights_desc,
2230 const memory::desc &bias_desc,
const memory::desc &dst_desc,
2231 const memory::dims &strides,
const memory::dims &dilates,
2232 const memory::dims &padding_l,
const memory::dims &padding_r) {
2233 memory::validate_dims(strides);
2234 memory::validate_dims(dilates);
2235 memory::validate_dims(padding_l);
2236 memory::validate_dims(padding_r);
2238 dnnl::convert_to_c(aprop_kind),
2239 convert_to_c(aalgorithm), &src_desc.data,
2240 &weights_desc.data, &bias_desc.data,
2241 &dst_desc.data, &strides[0], &dilates[0],
2242 &padding_l[0], &padding_r[0]),
2243 "could not create a dilated convolution forward "
2256 const memory::desc &src_desc,
const memory::desc &weights_desc,
2257 const memory::desc &dst_desc,
const memory::dims &strides,
2258 const memory::dims &dilates,
const memory::dims &padding_l,
2259 const memory::dims &padding_r) {
2260 memory::validate_dims(strides);
2261 memory::validate_dims(dilates);
2262 memory::validate_dims(padding_l);
2263 memory::validate_dims(padding_r);
2265 dnnl::convert_to_c(aprop_kind),
2266 convert_to_c(aalgorithm), &src_desc.data,
2267 &weights_desc.data,
nullptr,
2268 &dst_desc.data, &strides[0], &dilates[0],
2269 &padding_l[0], &padding_r[0]),
2270 "could not create a dilated convolution forward "
2277 primitive_desc() =
default;
2282 const desc &desc,
const engine &e,
bool allow_empty =
false)
2283 : dnnl::primitive_desc(
2284 &desc.data, nullptr, e, nullptr, allow_empty) {}
2288 primitive_desc(
const desc &desc,
const primitive_attr &attr,
2289 const engine &e,
bool allow_empty =
false)
2290 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
2296 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::convolution,
2320 convolution_forward() =
default;
2324 convolution_forward(
const primitive_desc &pd) : primitive(pd) {}
2331 struct convolution_backward_data :
public primitive {
2343 desc(
algorithm aalgorithm,
const memory::desc &diff_src_desc,
2344 const memory::desc &weights_desc,
2345 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2346 const memory::dims &padding_l,
const memory::dims &padding_r) {
2347 memory::validate_dims(strides);
2348 memory::validate_dims(padding_l);
2349 memory::validate_dims(padding_r);
2352 convert_to_c(aalgorithm), &diff_src_desc.data,
2353 &weights_desc.data, &diff_dst_desc.data,
2354 &strides[0], &padding_l[0], &padding_r[0]),
2355 "could not create a convolution backward data descriptor");
2364 desc(
algorithm aalgorithm,
const memory::desc &diff_src_desc,
2365 const memory::desc &weights_desc,
2366 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2367 const memory::dims &dilates,
const memory::dims &padding_l,
2368 const memory::dims &padding_r) {
2369 memory::validate_dims(strides);
2370 memory::validate_dims(dilates);
2371 memory::validate_dims(padding_l);
2372 memory::validate_dims(padding_r);
2375 convert_to_c(aalgorithm), &diff_src_desc.data,
2376 &weights_desc.data, &diff_dst_desc.data,
2377 &strides[0], &dilates[0], &padding_l[0],
2379 "could not create a convolution backward data descriptor");
2385 primitive_desc() =
default;
2389 primitive_desc(
const desc &desc,
const engine &e,
2390 const convolution_forward::primitive_desc &hint_fwd_pd,
2391 bool allow_empty =
false)
2392 : dnnl::primitive_desc(
2393 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
2397 primitive_desc(
const desc &desc,
const primitive_attr &attr,
2399 const convolution_forward::primitive_desc &hint_fwd_pd,
2400 bool allow_empty =
false)
2401 : dnnl::primitive_desc(
2402 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
2407 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::convolution,
2426 convolution_backward_data() =
default;
2430 convolution_backward_data(
const primitive_desc &pd) : primitive(pd) {}
2437 struct convolution_backward_weights :
public primitive {
2450 const memory::desc &diff_weights_desc,
2451 const memory::desc &diff_bias_desc,
2452 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2453 const memory::dims &padding_l,
const memory::dims &padding_r) {
2454 memory::validate_dims(strides);
2455 memory::validate_dims(padding_l);
2456 memory::validate_dims(padding_r);
2459 convert_to_c(aalgorithm), &src_desc.data,
2460 &diff_weights_desc.data, &diff_bias_desc.data,
2461 &diff_dst_desc.data, &strides[0], &padding_l[0],
2463 "could not create a convolution backward weights "
2474 const memory::desc &diff_weights_desc,
2475 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2476 const memory::dims &padding_l,
const memory::dims &padding_r) {
2477 memory::validate_dims(strides);
2478 memory::validate_dims(padding_l);
2479 memory::validate_dims(padding_r);
2481 convert_to_c(aalgorithm), &src_desc.data,
2482 &diff_weights_desc.data,
nullptr,
2483 &diff_dst_desc.data, &strides[0],
2484 &padding_l[0], &padding_r[0]),
2485 "could not create a convolution backward weights "
2496 const memory::desc &diff_weights_desc,
2497 const memory::desc &diff_bias_desc,
2498 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2499 const memory::dims &dilates,
const memory::dims &padding_l,
2500 const memory::dims &padding_r) {
2501 memory::validate_dims(strides);
2502 memory::validate_dims(dilates);
2503 memory::validate_dims(padding_l);
2504 memory::validate_dims(padding_r);
2507 convert_to_c(aalgorithm), &src_desc.data,
2508 &diff_weights_desc.data, &diff_bias_desc.data,
2509 &diff_dst_desc.data, &strides[0], &dilates[0],
2510 &padding_l[0], &padding_r[0]),
2511 "could not create a convolution backward weights "
2522 const memory::desc &diff_weights_desc,
2523 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2524 const memory::dims &dilates,
const memory::dims &padding_l,
2525 const memory::dims &padding_r) {
2526 memory::validate_dims(strides);
2527 memory::validate_dims(dilates);
2528 memory::validate_dims(padding_l);
2529 memory::validate_dims(padding_r);
2532 convert_to_c(aalgorithm), &src_desc.data,
2533 &diff_weights_desc.data,
nullptr,
2534 &diff_dst_desc.data, &strides[0], &dilates[0],
2535 &padding_l[0], &padding_r[0]),
2536 "could not create a convolution backward weights "
2543 primitive_desc() =
default;
2546 primitive_desc(
const desc &desc,
const engine &e,
2547 const convolution_forward::primitive_desc &hint_fwd_pd,
2548 bool allow_empty =
false)
2549 : dnnl::primitive_desc(
2550 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
2554 primitive_desc(
const desc &desc,
const primitive_attr &attr,
2556 const convolution_forward::primitive_desc &hint_fwd_pd,
2557 bool allow_empty =
false)
2558 : dnnl::primitive_desc(
2559 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
2564 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::convolution,
2586 convolution_backward_weights() =
default;
2590 convolution_backward_weights(
const primitive_desc &pd) : primitive(pd) {}
2605 struct deconvolution_forward :
public primitive {
2620 const memory::desc &src_desc,
const memory::desc &weights_desc,
2621 const memory::desc &bias_desc,
const memory::desc &dst_desc,
2622 const memory::dims &strides,
const memory::dims &padding_l,
2623 const memory::dims &padding_r) {
2624 memory::validate_dims(strides);
2625 memory::validate_dims(padding_l);
2626 memory::validate_dims(padding_r);
2629 dnnl::convert_to_c(aprop_kind),
2630 convert_to_c(aalgorithm), &src_desc.data,
2631 &weights_desc.data, &bias_desc.data, &dst_desc.data,
2632 &strides[0], &padding_l[0], &padding_r[0]),
2633 "could not create a deconvolution forward descriptor");
2645 const memory::desc &src_desc,
const memory::desc &weights_desc,
2646 const memory::desc &dst_desc,
const memory::dims &strides,
2647 const memory::dims &padding_l,
const memory::dims &padding_r) {
2648 memory::validate_dims(strides);
2649 memory::validate_dims(padding_l);
2650 memory::validate_dims(padding_r);
2653 dnnl::convert_to_c(aprop_kind),
2654 convert_to_c(aalgorithm), &src_desc.data,
2655 &weights_desc.data,
nullptr, &dst_desc.data,
2656 &strides[0], &padding_l[0], &padding_r[0]),
2657 "could not create a deconvolution forward descriptor");
2669 const memory::desc &src_desc,
const memory::desc &weights_desc,
2670 const memory::desc &bias_desc,
const memory::desc &dst_desc,
2671 const memory::dims &strides,
const memory::dims &dilates,
2672 const memory::dims &padding_l,
const memory::dims &padding_r) {
2673 memory::validate_dims(strides);
2674 memory::validate_dims(dilates);
2675 memory::validate_dims(padding_l);
2676 memory::validate_dims(padding_r);
2678 &data, dnnl::convert_to_c(aprop_kind),
2679 convert_to_c(aalgorithm), &src_desc.data,
2680 &weights_desc.data, &bias_desc.data,
2681 &dst_desc.data, &strides[0], &dilates[0],
2682 &padding_l[0], &padding_r[0]),
2683 "could not create a dilated deconvolution forward "
2696 const memory::desc &src_desc,
const memory::desc &weights_desc,
2697 const memory::desc &dst_desc,
const memory::dims &strides,
2698 const memory::dims &dilates,
const memory::dims &padding_l,
2699 const memory::dims &padding_r) {
2700 memory::validate_dims(strides);
2701 memory::validate_dims(dilates);
2702 memory::validate_dims(padding_l);
2703 memory::validate_dims(padding_r);
2705 &data, dnnl::convert_to_c(aprop_kind),
2706 convert_to_c(aalgorithm), &src_desc.data,
2707 &weights_desc.data,
nullptr,
2708 &dst_desc.data, &strides[0], &dilates[0],
2709 &padding_l[0], &padding_r[0]),
2710 "could not create a dilated deconvolution forward "
2717 primitive_desc() =
default;
2722 const desc &desc,
const engine &e,
bool allow_empty =
false)
2723 : dnnl::primitive_desc(
2724 &desc.data, nullptr, e, nullptr, allow_empty) {}
2728 primitive_desc(
const desc &desc,
const primitive_attr &attr,
2729 const engine &e,
bool allow_empty =
false)
2730 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
2736 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::deconvolution,
2760 deconvolution_forward() =
default;
2764 deconvolution_forward(
const primitive_desc &pd) : primitive(pd) {}
2771 struct deconvolution_backward_data :
public primitive {
2783 desc(
algorithm aalgorithm,
const memory::desc &diff_src_desc,
2784 const memory::desc &weights_desc,
2785 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2786 const memory::dims &padding_l,
const memory::dims &padding_r) {
2787 memory::validate_dims(strides);
2788 memory::validate_dims(padding_l);
2789 memory::validate_dims(padding_r);
2792 convert_to_c(aalgorithm), &diff_src_desc.data,
2793 &weights_desc.data, &diff_dst_desc.data,
2794 &strides[0], &padding_l[0], &padding_r[0]),
2795 "could not create a deconvolution backward data "
2805 desc(
algorithm aalgorithm,
const memory::desc &diff_src_desc,
2806 const memory::desc &weights_desc,
2807 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2808 const memory::dims &dilates,
const memory::dims &padding_l,
2809 const memory::dims &padding_r) {
2810 memory::validate_dims(strides);
2811 memory::validate_dims(dilates);
2812 memory::validate_dims(padding_l);
2813 memory::validate_dims(padding_r);
2816 convert_to_c(aalgorithm), &diff_src_desc.data,
2817 &weights_desc.data, &diff_dst_desc.data,
2818 &strides[0], &dilates[0], &padding_l[0],
2820 "could not create a dilated deconvolution backward data "
2827 primitive_desc() =
default;
2831 primitive_desc(
const desc &desc,
const engine &e,
2832 const deconvolution_forward::primitive_desc &hint_fwd_pd,
2833 bool allow_empty =
false)
2834 : dnnl::primitive_desc(
2835 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
2839 primitive_desc(
const desc &desc,
const primitive_attr &attr,
2841 const deconvolution_forward::primitive_desc &hint_fwd_pd,
2842 bool allow_empty =
false)
2843 : dnnl::primitive_desc(
2844 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
2849 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::deconvolution,
2868 deconvolution_backward_data() =
default;
2872 deconvolution_backward_data(
const primitive_desc &pd) : primitive(pd) {}
2879 struct deconvolution_backward_weights :
public primitive {
2892 const memory::desc &diff_weights_desc,
2893 const memory::desc &diff_bias_desc,
2894 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2895 const memory::dims &padding_l,
const memory::dims &padding_r) {
2896 memory::validate_dims(strides);
2897 memory::validate_dims(padding_l);
2898 memory::validate_dims(padding_r);
2901 convert_to_c(aalgorithm), &src_desc.data,
2902 &diff_weights_desc.data, &diff_bias_desc.data,
2903 &diff_dst_desc.data, &strides[0], &padding_l[0],
2905 "could not create a deconvolution backward weights "
2916 const memory::desc &diff_weights_desc,
2917 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2918 const memory::dims &padding_l,
const memory::dims &padding_r) {
2919 memory::validate_dims(strides);
2920 memory::validate_dims(padding_l);
2921 memory::validate_dims(padding_r);
2923 &data, convert_to_c(aalgorithm),
2924 &src_desc.data, &diff_weights_desc.data,
2925 nullptr, &diff_dst_desc.data, &strides[0],
2926 &padding_l[0], &padding_r[0]),
2927 "could not create a deconvolution backward weights "
2938 const memory::desc &diff_weights_desc,
2939 const memory::desc &diff_bias_desc,
2940 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2941 const memory::dims &dilates,
const memory::dims &padding_l,
2942 const memory::dims &padding_r) {
2943 memory::validate_dims(strides);
2944 memory::validate_dims(dilates);
2945 memory::validate_dims(padding_l);
2946 memory::validate_dims(padding_r);
2949 convert_to_c(aalgorithm), &src_desc.data,
2950 &diff_weights_desc.data, &diff_bias_desc.data,
2951 &diff_dst_desc.data, &strides[0], &dilates[0],
2952 &padding_l[0], &padding_r[0]),
2953 "could not create a dilated deconvolution backward "
2954 "weights descriptor");
2964 const memory::desc &diff_weights_desc,
2965 const memory::desc &diff_dst_desc,
const memory::dims &strides,
2966 const memory::dims &dilates,
const memory::dims &padding_l,
2967 const memory::dims &padding_r) {
2968 memory::validate_dims(strides);
2969 memory::validate_dims(dilates);
2970 memory::validate_dims(padding_l);
2971 memory::validate_dims(padding_r);
2974 convert_to_c(aalgorithm), &src_desc.data,
2975 &diff_weights_desc.data,
nullptr,
2976 &diff_dst_desc.data, &strides[0], &dilates[0],
2977 &padding_l[0], &padding_r[0]),
2978 "could not create a dilated deconvolution backward weights "
2985 primitive_desc() =
default;
2988 primitive_desc(
const desc &desc,
const engine &e,
2989 const deconvolution_forward::primitive_desc &hint_fwd_pd,
2990 bool allow_empty =
false)
2991 : dnnl::primitive_desc(
2992 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
2996 primitive_desc(
const desc &desc,
const primitive_attr &attr,
2998 const deconvolution_forward::primitive_desc &hint_fwd_pd,
2999 bool allow_empty =
false)
3000 : dnnl::primitive_desc(
3001 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3006 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::deconvolution,
3028 deconvolution_backward_weights() =
default;
3032 deconvolution_backward_weights(
const primitive_desc &pd) : primitive(pd) {}
3047 struct lrn_forward :
public primitive {
3059 const memory::desc &src_desc, memory::dim local_size,
3060 float alpha,
float beta,
float k = 1.f) {
3062 dnnl::convert_to_c(aprop_kind),
3063 convert_to_c(aalgorithm), &src_desc.data,
3064 local_size, alpha, beta, k),
3065 "could not create a lrn forward descriptor");
3072 primitive_desc() =
default;
3075 const desc &desc,
const engine &e,
bool allow_empty =
false)
3076 : dnnl::primitive_desc(
3077 &desc.data, nullptr, e, nullptr, allow_empty) {}
3079 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3080 const engine &e,
bool allow_empty =
false)
3081 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
3088 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::lrn,
3106 lrn_forward() =
default;
3108 lrn_forward(
const primitive_desc &pd) : primitive(pd) {}
3113 struct lrn_backward :
public primitive {
3124 const memory::desc &diff_data_desc, memory::dim local_size,
3125 float alpha,
float beta,
float k = 1.f) {
3128 &diff_data_desc.data, &data_desc.data, local_size,
3130 "could not create a lrn backward descriptor");
3137 primitive_desc() =
default;
3139 primitive_desc(
const desc &desc,
const engine &e,
3140 const lrn_forward::primitive_desc &hint_fwd_pd,
3141 bool allow_empty =
false)
3142 : dnnl::primitive_desc(
3143 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
3145 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3146 const engine &e,
const lrn_forward::primitive_desc &hint_fwd_pd,
3147 bool allow_empty =
false)
3148 : dnnl::primitive_desc(
3149 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3155 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::lrn,
3176 lrn_backward() =
default;
3178 lrn_backward(
const primitive_desc &pd) : primitive(pd) {}
3192 struct pooling_forward :
public primitive {
3204 const memory::desc &src_desc,
const memory::desc &dst_desc,
3205 const memory::dims &strides,
const memory::dims &kernel,
3206 const memory::dims &padding_l,
const memory::dims &padding_r) {
3207 memory::validate_dims(strides);
3208 memory::validate_dims(kernel);
3209 memory::validate_dims(padding_l);
3210 memory::validate_dims(padding_r);
3212 dnnl::convert_to_c(aprop_kind),
3213 convert_to_c(aalgorithm), &src_desc.data,
3214 &dst_desc.data, &strides[0], &kernel[0],
3215 &padding_l[0], &padding_r[0]),
3216 "could not init a forward pooling descriptor");
3222 primitive_desc() =
default;
3225 const desc &desc,
const engine &e,
bool allow_empty =
false)
3226 : dnnl::primitive_desc(
3227 &desc.data, nullptr, e, nullptr, allow_empty) {}
3229 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3230 const engine &e,
bool allow_empty =
false)
3231 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
3237 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::pooling,
3255 pooling_forward() =
default;
3257 pooling_forward(
const primitive_desc &pd) : primitive(pd) {}
3260 struct pooling_backward :
public primitive {
3269 desc(
algorithm aalgorithm,
const memory::desc &diff_src_desc,
3270 const memory::desc &diff_dst_desc,
const memory::dims &strides,
3271 const memory::dims &kernel,
const memory::dims &padding_l,
3272 const memory::dims &padding_r) {
3273 memory::validate_dims(strides);
3274 memory::validate_dims(kernel);
3275 memory::validate_dims(padding_l);
3276 memory::validate_dims(padding_r);
3279 convert_to_c(aalgorithm), &diff_src_desc.data,
3280 &diff_dst_desc.data, &strides[0], &kernel[0],
3281 &padding_l[0], &padding_r[0]),
3282 "could not init a backward pooling descriptor");
3288 primitive_desc() =
default;
3290 primitive_desc(
const desc &desc,
const engine &e,
3291 const pooling_forward::primitive_desc &hint_fwd_pd,
3292 bool allow_empty =
false)
3293 : dnnl::primitive_desc(
3294 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
3296 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3298 const pooling_forward::primitive_desc &hint_fwd_pd,
3299 bool allow_empty =
false)
3300 : dnnl::primitive_desc(
3301 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3306 : dnnl::primitive_desc(pd, dnnl::primitive::kind::pooling,
3327 pooling_backward() =
default;
3329 pooling_backward(
const primitive_desc &pd) : primitive(pd) {}
3354 struct eltwise_forward :
public primitive {
3363 const memory::desc &src_desc,
float alpha = 0,
float beta = 0) {
3365 dnnl::convert_to_c(aprop_kind),
3366 dnnl::convert_to_c(aalgorithm),
3367 &src_desc.data, alpha, beta),
3368 "could not create a eltwise forward descriptor");
3374 primitive_desc() =
default;
3377 const desc &desc,
const engine &e,
bool allow_empty =
false)
3378 : dnnl::primitive_desc(
3379 &desc.data, nullptr, e, nullptr, allow_empty) {}
3381 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3382 const engine &e,
bool allow_empty =
false)
3383 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
3389 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::eltwise,
3400 eltwise_forward() =
default;
3402 eltwise_forward(
const primitive_desc &pd) : primitive(pd) {}
3407 struct eltwise_backward :
public primitive {
3415 desc(
algorithm aalgorithm,
const memory::desc &diff_data_desc,
3416 const memory::desc &data_desc,
float alpha = 0,
3420 dnnl::convert_to_c(aalgorithm),
3421 &diff_data_desc.data, &data_desc.data, alpha, beta),
3422 "could not create a eltwise backward descriptor");
3428 primitive_desc() =
default;
3430 primitive_desc(
const desc &desc,
const engine &e,
3431 const eltwise_forward::primitive_desc &hint_fwd_pd,
3432 bool allow_empty =
false)
3433 : dnnl::primitive_desc(
3434 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
3436 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3438 const eltwise_forward::primitive_desc &hint_fwd_pd,
3439 bool allow_empty =
false)
3440 : dnnl::primitive_desc(
3441 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3446 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::eltwise,
3463 eltwise_backward() =
default;
3465 eltwise_backward(
const primitive_desc &pd) : primitive(pd) {}
3479 struct softmax_forward :
public primitive {
3491 dnnl::convert_to_c(aprop_kind),
3492 &data_desc.data, softmax_axis),
3493 "could not create a softmax forward descriptor");
3499 primitive_desc() =
default;
3502 const desc &desc,
const engine &e,
bool allow_empty =
false)
3503 : dnnl::primitive_desc(
3504 &desc.data, nullptr, e, nullptr, allow_empty) {}
3506 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3507 const engine &e,
bool allow_empty =
false)
3508 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
3514 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::softmax,
3525 softmax_forward() =
default;
3527 softmax_forward(
const primitive_desc &pd) : primitive(pd) {}
3532 struct softmax_backward :
public primitive {
3540 desc(
const memory::desc &diff_desc,
const memory::desc &data_desc,
3544 &data_desc.data, softmax_axis),
3545 "could not init a backward softmax descriptor");
3551 primitive_desc() =
default;
3553 primitive_desc(
const desc &desc,
const engine &e,
3554 const softmax_forward::primitive_desc &hint_fwd_pd,
3555 bool allow_empty =
false)
3556 : dnnl::primitive_desc(
3557 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
3559 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3561 const softmax_forward::primitive_desc &hint_fwd_pd,
3562 bool allow_empty =
false)
3563 : dnnl::primitive_desc(
3564 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3569 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::softmax,
3586 softmax_backward() =
default;
3588 softmax_backward(
const primitive_desc &pd) : primitive(pd) {}
3613 struct batch_normalization_forward :
public primitive {
3627 desc(
prop_kind aprop_kind,
const memory::desc &src_desc,
float epsilon,
3631 dnnl::convert_to_c(aprop_kind), &src_desc.data,
3632 epsilon, convert_to_c(flags)),
3633 "could not create a batch normalization forward "
3640 primitive_desc() =
default;
3643 const desc &desc,
const engine &e,
bool allow_empty =
false)
3644 : dnnl::primitive_desc(
3645 &desc.data, nullptr, e, nullptr, allow_empty) {}
3647 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3648 const engine &e,
bool allow_empty =
false)
3649 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
3655 : dnnl::primitive_desc(pd,
3656 dnnl::primitive::
kind::batch_normalization,
3679 memory::desc
mean_desc()
const {
return stat_desc(mean); }
3682 memory::desc
variance_desc()
const {
return stat_desc(var); }
3689 memory::desc stat_desc(
int kind)
const {
3695 "could not get a batch-normalization descriptor");
3702 batch_normalization_forward() =
default;
3704 batch_normalization_forward(
const primitive_desc &pd) : primitive(pd) {}
3709 struct batch_normalization_backward :
public primitive {
3723 desc(
prop_kind aprop_kind,
const memory::desc &diff_data_desc,
3724 const memory::desc &data_desc,
float epsilon,
3727 dnnl::convert_to_c(aprop_kind),
3728 &diff_data_desc.data, &data_desc.data,
3729 epsilon, convert_to_c(flags)),
3730 "could not create a batch normalization backward "
3737 primitive_desc() =
default;
3739 primitive_desc(
const desc &desc,
const engine &e,
3740 const batch_normalization_forward::primitive_desc &hint_fwd_pd,
3741 bool allow_empty =
false)
3742 : dnnl::primitive_desc(
3743 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
3745 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3747 const batch_normalization_forward::primitive_desc &hint_fwd_pd,
3748 bool allow_empty =
false)
3749 : dnnl::primitive_desc(
3750 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3755 : dnnl::primitive_desc(pd,
3756 dnnl::primitive::
kind::batch_normalization,
3802 batch_normalization_backward() =
default;
3804 batch_normalization_backward(
const primitive_desc &pd) : primitive(pd) {}
3830 struct layer_normalization_forward :
public primitive {
3845 const memory::desc &stat_desc,
float epsilon,
3849 dnnl::convert_to_c(aprop_kind), &src_desc.data,
3850 &stat_desc.data, epsilon, convert_to_c(flags)),
3851 "could not create a layer normalization forward "
3855 desc(
prop_kind aprop_kind,
const memory::desc &src_desc,
float epsilon,
3859 dnnl::convert_to_c(aprop_kind), &src_desc.data,
3860 nullptr, epsilon, convert_to_c(flags)),
3861 "could not create a layer normalization forward "
3868 primitive_desc() =
default;
3871 const desc &desc,
const engine &e,
bool allow_empty =
false)
3872 : dnnl::primitive_desc(
3873 &desc.data, nullptr, e, nullptr, allow_empty) {}
3875 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3876 const engine &e,
bool allow_empty =
false)
3877 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
3883 : dnnl::primitive_desc(pd,
3884 dnnl::primitive::
kind::layer_normalization,
3900 memory::desc
mean_desc()
const {
return stat_desc(mean); }
3903 memory::desc
variance_desc()
const {
return stat_desc(var); }
3917 memory::desc stat_desc(
int kind)
const {
3923 "could not get a layer-normalization descriptor");
3930 layer_normalization_forward() =
default;
3932 layer_normalization_forward(
const primitive_desc &pd) : primitive(pd) {}
3937 struct layer_normalization_backward :
public primitive {
3951 desc(
prop_kind aprop_kind,
const memory::desc &diff_data_desc,
3952 const memory::desc &data_desc,
const memory::desc &stat_desc,
3956 dnnl::convert_to_c(aprop_kind),
3957 &diff_data_desc.data, &data_desc.data,
3958 &stat_desc.data, epsilon, convert_to_c(flags)),
3959 "could not create a layer normalization backward "
3963 desc(
prop_kind aprop_kind,
const memory::desc &diff_data_desc,
3964 const memory::desc &data_desc,
float epsilon,
3967 dnnl::convert_to_c(aprop_kind),
3968 &diff_data_desc.data, &data_desc.data,
3969 nullptr, epsilon, convert_to_c(flags)),
3970 "could not create a layer normalization backward "
3977 primitive_desc() =
default;
3979 primitive_desc(
const desc &desc,
const engine &e,
3980 const layer_normalization_forward::primitive_desc &hint_fwd_pd,
3981 bool allow_empty =
false)
3982 : dnnl::primitive_desc(
3983 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
3985 primitive_desc(
const desc &desc,
const primitive_attr &attr,
3987 const layer_normalization_forward::primitive_desc &hint_fwd_pd,
3988 bool allow_empty =
false)
3989 : dnnl::primitive_desc(
3990 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
3995 : dnnl::primitive_desc(pd,
3996 dnnl::primitive::
kind::layer_normalization,
4042 layer_normalization_backward() =
default;
4044 layer_normalization_backward(
const primitive_desc &pd) : primitive(pd) {}
4058 struct inner_product_forward :
public primitive {
4071 desc(
prop_kind aprop_kind,
const memory::desc &src_desc,
4072 const memory::desc &weights_desc,
const memory::desc &bias_desc,
4073 const memory::desc &dst_desc) {
4075 dnnl::convert_to_c(aprop_kind),
4076 &src_desc.data, &weights_desc.data,
4077 &bias_desc.data, &dst_desc.data),
4078 "could not create a inner product forward descriptor");
4081 desc(
prop_kind aprop_kind,
const memory::desc &src_desc,
4082 const memory::desc &weights_desc,
4083 const memory::desc &dst_desc) {
4086 dnnl::convert_to_c(aprop_kind), &src_desc.data,
4087 &weights_desc.data,
nullptr, &dst_desc.data),
4088 "could not create a inner product forward descriptor");
4094 primitive_desc() =
default;
4097 const desc &desc,
const engine &e,
bool allow_empty =
false)
4098 : dnnl::primitive_desc(
4099 &desc.data, nullptr, e, nullptr, allow_empty) {}
4101 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4102 const engine &e,
bool allow_empty =
false)
4103 : dnnl::primitive_desc(&desc.data, &attr, e, nullptr, allow_empty) {
4109 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::inner_product,
4133 inner_product_forward() =
default;
4135 inner_product_forward(
const primitive_desc &pd) : primitive(pd) {}
4140 struct inner_product_backward_data :
public primitive {
4149 desc(
const memory::desc &diff_src_desc,
4150 const memory::desc &weights_desc,
4151 const memory::desc &diff_dst_desc) {
4153 &diff_src_desc.data, &weights_desc.data,
4154 &diff_dst_desc.data),
4155 "could not create a inner product backward data "
4163 primitive_desc() =
default;
4165 primitive_desc(
const desc &desc,
const engine &e,
4166 const inner_product_forward::primitive_desc &hint_fwd_pd,
4167 bool allow_empty =
false)
4168 : dnnl::primitive_desc(
4169 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
4171 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4173 const inner_product_forward::primitive_desc &hint_fwd_pd,
4174 bool allow_empty =
false)
4175 : dnnl::primitive_desc(
4176 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
4181 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::inner_product,
4200 inner_product_backward_data() =
default;
4202 inner_product_backward_data(
const primitive_desc &pd) : primitive(pd) {}
4207 struct inner_product_backward_weights :
public primitive {
4216 desc(
const memory::desc &src_desc,
4217 const memory::desc &diff_weights_desc,
4218 const memory::desc &diff_bias_desc,
4219 const memory::desc &diff_dst_desc) {
4222 &src_desc.data, &diff_weights_desc.data,
4223 &diff_bias_desc.data, &diff_dst_desc.data),
4224 "could not create a inner product backward weights "
4227 desc(
const memory::desc &src_desc,
4228 const memory::desc &diff_weights_desc,
4229 const memory::desc &diff_dst_desc) {
4232 &src_desc.data, &diff_weights_desc.data,
nullptr,
4233 &diff_dst_desc.data),
4234 "could not create a inner product backward weights "
4242 primitive_desc() =
default;
4244 primitive_desc(
const desc &desc,
const engine &e,
4245 const inner_product_forward::primitive_desc &hint_fwd_pd,
4246 bool allow_empty =
false)
4247 : dnnl::primitive_desc(
4248 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
4250 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4252 const inner_product_forward::primitive_desc &hint_fwd_pd,
4253 bool allow_empty =
false)
4254 : dnnl::primitive_desc(
4255 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
4260 : dnnl::primitive_desc(cpd, dnnl::primitive::
kind::inner_product,
4282 inner_product_backward_weights() =
default;
4284 inner_product_backward_weights(
const primitive_desc &pd) : primitive(pd) {}
4296 struct rnn_primitive_desc_base :
public primitive_desc {
4297 using primitive_desc::primitive_desc;
4299 rnn_primitive_desc_base() =
default;
4311 rc,
"could not retrieve rnn_desc from a primitive descriptor");
4318 && (
rnn_d->prop_kind == c_prop_kind1
4319 ||
rnn_d->prop_kind == c_prop_kind2)
4320 &&
rnn_d->cell_kind == c_cell_kind;
4324 reset_with_clone(pd);
4337 struct vanilla_rnn_forward :
public primitive {
4362 rnn_direction direction,
const memory::desc &src_layer_desc,
4363 const memory::desc &src_iter_desc,
4364 const memory::desc &weights_layer_desc,
4365 const memory::desc &weights_iter_desc,
4366 const memory::desc &bias_desc,
4367 const memory::desc &dst_layer_desc,
4368 const memory::desc &dst_iter_desc,
4369 rnn_flags flags = rnn_flags::undef,
float alpha = 0.0f,
4370 float beta = 0.0f) {
4373 dnnl::convert_to_c(aprop_kind),
4374 dnnl::convert_to_c(activation),
4375 dnnl::convert_to_c(direction), &src_layer_desc.data,
4376 &src_iter_desc.data, &weights_layer_desc.data,
4377 &weights_iter_desc.data, &bias_desc.data,
4378 &dst_layer_desc.data, &dst_iter_desc.data,
4379 dnnl::convert_to_c(flags), alpha, beta),
4380 "could not create an RNN forward descriptor");
4385 struct primitive_desc :
public rnn_primitive_desc_base {
4386 primitive_desc() =
default;
4389 const desc &desc,
const engine &e,
bool allow_empty =
false)
4390 : rnn_primitive_desc_base(
4391 &desc.data, nullptr, e, nullptr, allow_empty) {}
4393 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4394 const engine &e,
bool allow_empty =
false)
4395 : rnn_primitive_desc_base(
4396 &desc.data, &attr, e, nullptr, allow_empty) {}
4457 vanilla_rnn_forward() =
default;
4459 vanilla_rnn_forward(
const primitive_desc &pd) : primitive(pd) {}
4465 struct vanilla_rnn_backward :
public primitive {
4489 rnn_direction direction,
const memory::desc &src_layer_desc,
4490 const memory::desc &src_iter_desc,
4491 const memory::desc &weights_layer_desc,
4492 const memory::desc &weights_iter_desc,
4493 const memory::desc &bias_desc,
4494 const memory::desc &dst_layer_desc,
4495 const memory::desc &dst_iter_desc,
4496 const memory::desc &diff_src_layer_desc,
4497 const memory::desc &diff_src_iter_desc,
4498 const memory::desc &diff_weights_layer_desc,
4499 const memory::desc &diff_weights_iter_desc,
4500 const memory::desc &diff_bias_desc,
4501 const memory::desc &diff_dst_layer_desc,
4502 const memory::desc &diff_dst_iter_desc,
4503 rnn_flags flags = rnn_flags::undef,
float alpha = 0.0f,
4504 float beta = 0.0f) {
4507 dnnl::convert_to_c(aprop_kind),
4508 dnnl::convert_to_c(activation),
4509 dnnl::convert_to_c(direction), &src_layer_desc.data,
4510 &src_iter_desc.data, &weights_layer_desc.data,
4511 &weights_iter_desc.data, &bias_desc.data,
4512 &dst_layer_desc.data, &dst_iter_desc.data,
4513 &diff_src_layer_desc.data, &diff_src_iter_desc.data,
4514 &diff_weights_layer_desc.data,
4515 &diff_weights_iter_desc.data, &diff_bias_desc.data,
4516 &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
4517 dnnl::convert_to_c(flags), alpha, beta),
4518 "could not create an RNN backward descriptor");
4523 struct primitive_desc :
public rnn_primitive_desc_base {
4524 primitive_desc() =
default;
4526 primitive_desc(
const desc &desc,
const engine &e,
4527 const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
4528 bool allow_empty =
false)
4529 : rnn_primitive_desc_base(
4530 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
4532 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4534 const vanilla_rnn_forward::primitive_desc &hint_fwd_pd,
4535 bool allow_empty =
false)
4536 : rnn_primitive_desc_base(
4537 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
4638 vanilla_rnn_backward() =
default;
4640 vanilla_rnn_backward(
const primitive_desc &pd) : primitive(pd) {}
4646 struct lstm_forward :
public primitive {
4670 const memory::desc &src_layer_desc,
4671 const memory::desc &src_iter_desc,
4672 const memory::desc &src_iter_c_desc,
4673 const memory::desc &weights_layer_desc,
4674 const memory::desc &weights_iter_desc,
4675 const memory::desc &bias_desc,
4676 const memory::desc &dst_layer_desc,
4677 const memory::desc &dst_iter_desc,
4678 const memory::desc &dst_iter_c_desc,
4679 rnn_flags flags = rnn_flags::undef) {
4682 dnnl::convert_to_c(aprop_kind),
4683 dnnl::convert_to_c(direction), &src_layer_desc.data,
4684 &src_iter_desc.data, &src_iter_c_desc.data,
4685 &weights_layer_desc.data, &weights_iter_desc.data,
4686 &bias_desc.data, &dst_layer_desc.data,
4687 &dst_iter_desc.data, &dst_iter_c_desc.data,
4688 dnnl::convert_to_c(flags)),
4689 "could not create an LSTM forward descriptor");
4694 struct primitive_desc :
public rnn_primitive_desc_base {
4695 primitive_desc() =
default;
4698 const desc &desc,
const engine &e,
bool allow_empty =
false)
4699 : rnn_primitive_desc_base(
4700 &desc.data, nullptr, e, nullptr, allow_empty) {}
4702 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4703 const engine &e,
bool allow_empty =
false)
4704 : rnn_primitive_desc_base(
4705 &desc.data, &attr, e, nullptr, allow_empty) {}
4776 lstm_forward() =
default;
4778 lstm_forward(
const primitive_desc &pd) : primitive(pd) {}
4784 struct lstm_backward :
public primitive {
4809 const memory::desc &src_layer_desc,
4810 const memory::desc &src_iter_desc,
4811 const memory::desc &src_iter_c_desc,
4812 const memory::desc &weights_layer_desc,
4813 const memory::desc &weights_iter_desc,
4814 const memory::desc &bias_desc,
4815 const memory::desc &dst_layer_desc,
4816 const memory::desc &dst_iter_desc,
4817 const memory::desc &dst_iter_c_desc,
4818 const memory::desc &diff_src_layer_desc,
4819 const memory::desc &diff_src_iter_desc,
4820 const memory::desc &diff_src_iter_c_desc,
4821 const memory::desc &diff_weights_layer_desc,
4822 const memory::desc &diff_weights_iter_desc,
4823 const memory::desc &diff_bias_desc,
4824 const memory::desc &diff_dst_layer_desc,
4825 const memory::desc &diff_dst_iter_desc,
4826 const memory::desc &diff_dst_iter_c_desc,
4827 rnn_flags flags = rnn_flags::undef) {
4830 dnnl::convert_to_c(aprop_kind),
4831 dnnl::convert_to_c(direction), &src_layer_desc.data,
4832 &src_iter_desc.data, &src_iter_c_desc.data,
4833 &weights_layer_desc.data, &weights_iter_desc.data,
4834 &bias_desc.data, &dst_layer_desc.data,
4835 &dst_iter_desc.data, &dst_iter_c_desc.data,
4836 &diff_src_layer_desc.data, &diff_src_iter_desc.data,
4837 &diff_src_iter_c_desc.data,
4838 &diff_weights_layer_desc.data,
4839 &diff_weights_iter_desc.data, &diff_bias_desc.data,
4840 &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
4841 &diff_dst_iter_c_desc.data,
4842 dnnl::convert_to_c(flags)),
4843 "could not create an LSTM backward descriptor");
4848 struct primitive_desc :
public rnn_primitive_desc_base {
4849 primitive_desc() =
default;
4851 primitive_desc(
const desc &desc,
const engine &e,
4852 const lstm_forward::primitive_desc &hint_fwd_pd,
4853 bool allow_empty =
false)
4854 : rnn_primitive_desc_base(
4855 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
4857 primitive_desc(
const desc &desc,
const primitive_attr &attr,
4859 const lstm_forward::primitive_desc &hint_fwd_pd,
4860 bool allow_empty =
false)
4861 : rnn_primitive_desc_base(
4862 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
4983 lstm_backward() =
default;
4986 lstm_backward(
const primitive_desc &pd) : primitive(pd) {}
4992 struct gru_forward :
public primitive {
5016 const memory::desc &src_layer_desc,
5017 const memory::desc &src_iter_desc,
5018 const memory::desc &weights_layer_desc,
5019 const memory::desc &weights_iter_desc,
5020 const memory::desc &bias_desc,
5021 const memory::desc &dst_layer_desc,
5022 const memory::desc &dst_iter_desc,
5023 rnn_flags flags = rnn_flags::undef) {
5026 dnnl::convert_to_c(aprop_kind),
5027 dnnl::convert_to_c(direction), &src_layer_desc.data,
5028 &src_iter_desc.data, &weights_layer_desc.data,
5029 &weights_iter_desc.data, &bias_desc.data,
5030 &dst_layer_desc.data, &dst_iter_desc.data,
5031 dnnl::convert_to_c(flags)),
5032 "could not create a GRU forward descriptor");
5037 struct primitive_desc :
public rnn_primitive_desc_base {
5038 primitive_desc() =
default;
5041 const desc &desc,
const engine &e,
bool allow_empty =
false)
5042 : rnn_primitive_desc_base(
5043 &desc.data, nullptr, e, nullptr, allow_empty) {}
5045 primitive_desc(
const desc &desc,
const primitive_attr &attr,
5046 const engine &e,
bool allow_empty =
false)
5047 : rnn_primitive_desc_base(
5048 &desc.data, &attr, e, nullptr, allow_empty) {}
5109 gru_forward() =
default;
5111 gru_forward(
const primitive_desc &pd) : primitive(pd) {}
5117 struct gru_backward :
public primitive {
5139 const memory::desc &src_layer_desc,
5140 const memory::desc &src_iter_desc,
5141 const memory::desc &weights_layer_desc,
5142 const memory::desc &weights_iter_desc,
5143 const memory::desc &bias_desc,
5144 const memory::desc &dst_layer_desc,
5145 const memory::desc &dst_iter_desc,
5146 const memory::desc &diff_src_layer_desc,
5147 const memory::desc &diff_src_iter_desc,
5148 const memory::desc &diff_weights_layer_desc,
5149 const memory::desc &diff_weights_iter_desc,
5150 const memory::desc &diff_bias_desc,
5151 const memory::desc &diff_dst_layer_desc,
5152 const memory::desc &diff_dst_iter_desc,
5153 rnn_flags flags = rnn_flags::undef) {
5156 dnnl::convert_to_c(aprop_kind),
5157 dnnl::convert_to_c(direction), &src_layer_desc.data,
5158 &src_iter_desc.data, &weights_layer_desc.data,
5159 &weights_iter_desc.data, &bias_desc.data,
5160 &dst_layer_desc.data, &dst_iter_desc.data,
5161 &diff_src_layer_desc.data, &diff_src_iter_desc.data,
5162 &diff_weights_layer_desc.data,
5163 &diff_weights_iter_desc.data, &diff_bias_desc.data,
5164 &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
5165 dnnl::convert_to_c(flags)),
5166 "could not create an GRU backward descriptor");
5171 struct primitive_desc :
public rnn_primitive_desc_base {
5172 primitive_desc() =
default;
5174 primitive_desc(
const desc &desc,
const engine &e,
5175 const gru_forward::primitive_desc &hint_fwd_pd,
5176 bool allow_empty =
false)
5177 : rnn_primitive_desc_base(
5178 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
5180 primitive_desc(
const desc &desc,
const primitive_attr &attr,
5181 const engine &e,
const gru_forward::primitive_desc &hint_fwd_pd,
5182 bool allow_empty =
false)
5183 : rnn_primitive_desc_base(
5184 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
5285 gru_backward() =
default;
5288 gru_backward(
const primitive_desc &pd) : primitive(pd) {}
5294 struct lbr_gru_forward :
public primitive {
5318 const memory::desc &src_layer_desc,
5319 const memory::desc &src_iter_desc,
5320 const memory::desc &weights_layer_desc,
5321 const memory::desc &weights_iter_desc,
5322 const memory::desc &bias_desc,
5323 const memory::desc &dst_layer_desc,
5324 const memory::desc &dst_iter_desc,
5325 rnn_flags flags = rnn_flags::undef) {
5328 dnnl::convert_to_c(aprop_kind),
5329 dnnl::convert_to_c(direction), &src_layer_desc.data,
5330 &src_iter_desc.data, &weights_layer_desc.data,
5331 &weights_iter_desc.data, &bias_desc.data,
5332 &dst_layer_desc.data, &dst_iter_desc.data,
5333 dnnl::convert_to_c(flags)),
5334 "could not create a Linear-before-reset GRU forward "
5340 struct primitive_desc :
public rnn_primitive_desc_base {
5341 primitive_desc() =
default;
5344 const desc &desc,
const engine &e,
bool allow_empty =
false)
5345 : rnn_primitive_desc_base(
5346 &desc.data, nullptr, e, nullptr, allow_empty) {}
5348 primitive_desc(
const desc &desc,
const primitive_attr &attr,
5349 const engine &e,
bool allow_empty =
false)
5350 : rnn_primitive_desc_base(
5351 &desc.data, &attr, e, nullptr, allow_empty) {}
5412 lbr_gru_forward() =
default;
5414 lbr_gru_forward(
const primitive_desc &pd) : primitive(pd) {}
5420 struct lbr_gru_backward :
public primitive {
5442 const memory::desc &src_layer_desc,
5443 const memory::desc &src_iter_desc,
5444 const memory::desc &weights_layer_desc,
5445 const memory::desc &weights_iter_desc,
5446 const memory::desc &bias_desc,
5447 const memory::desc &dst_layer_desc,
5448 const memory::desc &dst_iter_desc,
5449 const memory::desc &diff_src_layer_desc,
5450 const memory::desc &diff_src_iter_desc,
5451 const memory::desc &diff_weights_layer_desc,
5452 const memory::desc &diff_weights_iter_desc,
5453 const memory::desc &diff_bias_desc,
5454 const memory::desc &diff_dst_layer_desc,
5455 const memory::desc &diff_dst_iter_desc,
5456 rnn_flags flags = rnn_flags::undef) {
5459 dnnl::convert_to_c(aprop_kind),
5460 dnnl::convert_to_c(direction), &src_layer_desc.data,
5461 &src_iter_desc.data, &weights_layer_desc.data,
5462 &weights_iter_desc.data, &bias_desc.data,
5463 &dst_layer_desc.data, &dst_iter_desc.data,
5464 &diff_src_layer_desc.data, &diff_src_iter_desc.data,
5465 &diff_weights_layer_desc.data,
5466 &diff_weights_iter_desc.data, &diff_bias_desc.data,
5467 &diff_dst_layer_desc.data, &diff_dst_iter_desc.data,
5468 dnnl::convert_to_c(flags)),
5469 "could not create an LBR_GRU backward descriptor");
5474 struct primitive_desc :
public rnn_primitive_desc_base {
5475 primitive_desc() =
default;
5477 primitive_desc(
const desc &desc,
const engine &e,
5478 const lbr_gru_forward::primitive_desc &hint_fwd_pd,
5479 bool allow_empty =
false)
5480 : rnn_primitive_desc_base(
5481 &desc.data, nullptr, e, hint_fwd_pd.
get(), allow_empty) {}
5483 primitive_desc(
const desc &desc,
const primitive_attr &attr,
5485 const lbr_gru_forward::primitive_desc &hint_fwd_pd,
5486 bool allow_empty =
false)
5487 : rnn_primitive_desc_base(
5488 &desc.data, &attr, e, hint_fwd_pd.
get(), allow_empty) {}
5493 : rnn_primitive_desc_base(
5589 lbr_gru_backward() =
default;
5591 lbr_gru_backward(
const primitive_desc &pd) : primitive(pd) {}
5605 struct shuffle_forward :
public primitive {
5614 desc(
prop_kind aprop_kind,
const memory::desc &data_desc,
int axis,
5617 dnnl::convert_to_c(aprop_kind),
5618 &data_desc.data, axis, group_size),
5619 "could not create a shuffle forward descriptor");
5625 primitive_desc() =
default;
5627 primitive_desc(
const desc &desc,
const engine &e,
5628 const primitive_attr &aattr = primitive_attr(),
5629 bool allow_empty =
false)
5630 : dnnl::primitive_desc(
5631 &desc.data, &aattr, e, nullptr, allow_empty) {}
5636 : dnnl::primitive_desc(pd, dnnl::primitive::
kind::shuffle,
5647 shuffle_forward() =
default;
5649 shuffle_forward(
const primitive_desc &pd) : primitive(pd) {}
5654 struct shuffle_backward :
public primitive {
5662 desc(
const memory::desc &diff_data_desc,
int axis,
int group_size) {
5664 &diff_data_desc.data, axis, group_size),
5665 "could not create a shuffle backward descriptor");
5674 const shuffle_forward::primitive_desc &hint_fwd_pd,
5675 const primitive_attr &aattr = primitive_attr(),
5676 bool allow_empty =
false)
5678 &desc.data, &aattr, e, hint_fwd_pd.
get(), allow_empty) {}
5687 memory::desc diff_src_desc()
const {
5692 memory::desc diff_dst_desc()
const {
5697 shuffle_backward() =
default;
5699 shuffle_backward(
const primitive_desc &pd) : primitive(pd) {}
5713 struct binary :
public primitive {
5722 const memory::desc &src1,
const memory::desc &dst) {
5725 &src0.data, &src1.data, &dst.data),
5726 "could not create a binary descriptor");
5735 const desc &desc,
const engine &e,
bool allow_empty =
false)
5737 &desc.data, nullptr, e, nullptr, allow_empty) {}
5742 const desc &desc,
const primitive_attr &attr,
const engine &e)
5762 binary(
const primitive_desc &pd) : primitive(pd) {}
5777 "could not create a primitive");
5781 inline primitive::primitive(
const primitive_desc &pd) : primitive(pd.get()) {}
5783 inline void primitive::execute(
5784 stream &astream,
const std::unordered_map<int, memory> &args)
const {
5785 std::vector<dnnl_exec_arg_t> c_args;
5786 c_args.reserve(args.size());
5787 for (
const auto &a : args)
5788 c_args.push_back({a.first, a.second.get()});
5791 (int)c_args.size(), c_args.data()),
5792 "could not execute a primitive");
number of outputs expected
number of inputs expected
Definition: dnnl_types.h:1563
2D RNN statistics tensor, an alias to dnnl_ba
Definition: dnnl_types.h:345
Default order execution.
Definition: dnnl_types.h:1620
memory::desc diff_src_layer_desc() const
Queries diff source layer memory descriptor.
Definition: dnnl.hpp:4596
3D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBc16b
Definition: dnnl_types.h:456
Primitive or engine failed on execution.
Definition: dnnl_types.h:61
Undefined data type, used for empty memory descriptors.
Definition: dnnl_types.h:69
GRU cell with linear before reset.
Definition: dnnl_types.h:717
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:2316
void set_rnn_data_qparams(float scale, float shift)
Sets quantization scale and shift for RNN data tensors.
Definition: dnnl.hpp:779
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)
Initializes an RNN descriptor for backward propagation using prop_kind, activation,...
Definition: dnnl.hpp:4487
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 attribute of a primitive_desc.
Backward bias propagation.
Definition: dnnl_types.h:609
2D CNN activations tensor, an alias to dnnl_ba
Definition: dnnl_types.h:341
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3572
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:5083
permuted 3D tensor
Definition: dnnl_types.h:197
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3095
(scratch) memory, additional to all inputs and outputs memory (bytes)
Definition: dnnl_types.h:1572
LRN within a single channel.
dnnl_status_t DNNL_API dnnl_sum_primitive_desc_create(dnnl_primitive_desc_t *sum_primitive_desc, const dnnl_memory_desc_t *dst_mds, int n, const float *scales, const dnnl_memory_desc_t *src_mds, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine)
Creates out-of-place sum_primitive_desc for sum of n inputs multiplied by scale with resulting output...
inner product descriptor
Definition: dnnl_types.h:1594
size_t get_size() const
Returns the number of bytes required to allocate the memory described including the padding area.
Definition: dnnl.hpp:1477
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:4571
cl::sycl::buffer< T, ndims > get_sycl_buffer(size_t *offset=nullptr) const
Returns the underlying SYCL buffer object.
Definition: dnnl.hpp:1630
memory::desc diff_dst_iter_c_desc() const
Queries diff destination recurrent cell state memory descriptor.
Definition: dnnl.hpp:4977
memory::desc variance_desc() const
Queries variance memory descriptor.
Definition: dnnl.hpp:4006
memory::desc dst_iter_desc() const
Queries destination iteration memory descriptor.
Definition: dnnl.hpp:4584
A sum primitive.
Definition: dnnl_types.h:624
memory::desc diff_dst_iter_desc() const
Queries diff destination iteration memory descriptor.
Definition: dnnl.hpp:5279
4D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:244
const char * what() const noexcept override
Returns the explanatory string.
Definition: dnnl.hpp:68
memory::desc diff_weights_iter_desc() const
Queries diff weights iteration memory descriptor.
Definition: dnnl.hpp:5261
plain 6D tensor
Definition: dnnl_types.h:187
2D CNN activations tensor, an alias to dnnl_ab
Definition: dnnl_types.h:339
A pooling primitive.
Definition: dnnl_types.h:634
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 convolution descriptor conv_desc for forward propagation using prop_kind (possible valu...
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3244
int len() const
Returns the length of post operations.
Definition: dnnl.hpp:608
dnnl_query_t
Primitive descriptor query specification.
Definition: dnnl_types.h:1557
32-bit/single-precision floating point.
Definition: dnnl_types.h:75
2D CNN weights tensor, an alias to dnnl_ba
Definition: dnnl_types.h:364
32-bit signed integer.
Definition: dnnl_types.h:77
int DNNL_API dnnl_post_ops_len(const_dnnl_post_ops_t post_ops)
Returns the length of post operations for given post_ops.
An opaque structure to describe a primitive descriptor iterator.
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 an inner product descriptor ip_desc for forward propagation using prop_kind (possible val...
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 batch normalization descriptor bnrm_desc for forward propagation using prop_kind (possi...
error(dnnl_status_t astatus, const char *amessage)
Constructs an error instance.
Definition: dnnl.hpp:64
Eltwise: parametric exponential linear unit (elu)
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 an RNN descriptor rnn_desc for forward propagation using prop_kind, activation,...
scratchpad memory desc
Definition: dnnl_types.h:1608
memory::desc diff_src_desc() const
Queries diff source memory descriptor.
Definition: dnnl.hpp:3158
Eltwise: abs.
Definition: dnnl_types.h:673
desc reshape(const dims &adims)
Constructs a memory descriptor by reshaping existing one.
Definition: dnnl.hpp:1467
convolution descriptor
Definition: dnnl_types.h:1585
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 count, correspondence scale mask, and a pointer to a constant floating point array of output ...
Backward data propagation.
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:5070
Forward data propagation (training mode).
Definition: dnnl_types.h:593
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:3314
CPU engine.
Definition: dnnl_types.h:1324
permuted 5D tensor
Definition: dnnl_types.h:204
memory::desc diff_weights_desc() const
Queries diff weights memory descriptor.
Definition: dnnl.hpp:4266
8-bit signed integer.
Definition: dnnl_types.h:79
4D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcd8b
Definition: dnnl_types.h:453
plain 4D tensor
Definition: dnnl_types.h:185
memory::desc diff_weights_layer_desc() const
Queries diff weights layer memory descriptor.
Definition: dnnl.hpp:4949
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:5057
post_ops()
Creates an empty sequence of post operations.
Definition: dnnl.hpp:600
3D CNN weights tensor, an alias to dnnl_cba
Definition: dnnl_types.h:370
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:5205
dnnl_status_t DNNL_API dnnl_stream_destroy(dnnl_stream_t stream)
Destroys an execution stream.
4D tensor blocked by 1st and 2nd dimension with block size 8
Definition: dnnl_types.h:249
An inner product primitive.
A class that provides the destructor for an DNNL C handle.
Definition: dnnl.hpp:82
dnnl_memory_desc_t data
The underlying C API data structure.
Definition: dnnl.hpp:1414
memory::desc dst_iter_desc() const
Queries destination recurrent hidden state memory descriptor.
Definition: dnnl.hpp:4758
An opaque structure to describe an engine.
memory::desc diff_src_desc() const
Queries diff source memory descriptor.
Definition: dnnl.hpp:4024
5D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:259
permuted 3D tensor
Definition: dnnl_types.h:192
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:4451
Backward bias propagation.
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:3457
stream & wait()
Waits for all primitives in the stream to finish.
Definition: dnnl.hpp:1033
binary descriptor
Definition: dnnl_types.h:1597
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:5075
cl::sycl::device DNNL_API get_sycl_device() const
Returns the underlying SYCL device object.
Primitive iterator passed over last primitive descriptor.
Definition: dnnl_types.h:59
memory::desc diff_src_desc() const
Queries diff source gradient memory descriptor.
Definition: dnnl.hpp:2410
scratchpad_mode
Scratchpad mode.
Definition: dnnl.hpp:263
primitive kind
Definition: dnnl_types.h:1561
memory::desc diff_dst_iter_desc() const
Queries diff destination recurrent hidden state memory descriptor.
Definition: dnnl.hpp:4972
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:5527
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:4893
Winograd deconvolution.
Definition: dnnl_types.h:663
dnnl_engine_kind_t
Kinds of engines.
Definition: dnnl_types.h:1320
A descriptor of a convolution operation.
Definition: dnnl_types.h:956
memory::desc weights_desc() const
Queries weights memory descriptor.
Definition: dnnl.hpp:2415
Eltwise: soft_relu.
Definition: dnnl_types.h:681
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:2300
#define DNNL_MAX_NDIMS
Maximum number of dimensions a tensor can have.
Definition: dnnl_types.h:774
dnnl_status_t
Status values returned by the library functions.
Definition: dnnl_types.h:49
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3760
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3321
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_desc for a given parent_memory_desc, with dims sizes and offsets.
memory::desc diff_weights_desc() const
Queries diff weights memory descriptor.
Definition: dnnl.hpp:3012
An inner product primitive.
Definition: dnnl_types.h:642
dnnl_status_t DNNL_API dnnl_primitive_attr_destroy(dnnl_primitive_attr_t attr)
Deletes an attr.
5D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:275
dnnl_status_t DNNL_API dnnl_memory_get_memory_desc(const_dnnl_memory_t memory, const dnnl_memory_desc_t **memory_desc)
Returns a memory_desc associated with memory.
A deconvolution primitive.
A (out-of-place) concat primitive.
Definition: dnnl_types.h:622
4D CNN weights tensor, an alias to dnnl_bcda
Definition: dnnl_types.h:380
dnnl_rnn_flags_t
Flags for RNN cell.
Definition: dnnl_types.h:1216
32-bit/single-precision floating point.
layer normalization descriptor
Average pooling exclude padding, alias for dnnl::algorithm::pooling_avg_include_padding.
A descriptor for an RNN operation.
Definition: dnnl_types.h:1234
memory::desc src_iter_desc() const
Queries source recurrent hidden state memory descriptor.
Definition: dnnl.hpp:4722
Winograd convolution.
Definition: dnnl_types.h:657
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 of particular kind associated with a given OpenCL device and context objects.
static size_t get_count(kind akind)
Returns the number of engines of a certain kind.
Definition: dnnl.hpp:850
A layer normalization primitive.
Definition: dnnl_types.h:640
Packed weights format used in RNN.
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:5103
dnnl_status_t DNNL_API dnnl_softmax_backward_desc_init(dnnl_softmax_desc_t *softmax_desc, const dnnl_memory_desc_t *diff_desc, const dnnl_memory_desc_t *data_desc, int softmax_axis)
Initializes a softmax_desc for backward propagation using memory descriptors diff_desc and data_desc.
bool next_impl()
Advances the next implementation for the given op descriptor.
Definition: dnnl.hpp:2127
permuted 5D tensor
Definition: dnnl_types.h:191
memory::desc diff_dst_iter_desc() const
Queries diff destination iteration memory descriptor.
Definition: dnnl.hpp:5583
Eltwise: parametric exponential linear unit (elu)
Definition: dnnl_types.h:669
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3896
A descriptor of an inner product operation.
Definition: dnnl_types.h:1187
void set_ocl_mem_object(cl_mem mem_object)
Sets the OpenCL memory object mem_object associated with the memory.
Definition: dnnl.hpp:1618
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:4750
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3249
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)
Initializes an GRU descriptor for backward propagation using prop_kind, direction,...
Definition: dnnl.hpp:5137
memory::desc diff_src_layer_desc() const
Queries diff source layer memory descriptor.
Definition: dnnl.hpp:5243
weights memory descriptor desc
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 convolution descriptor conv_desc for backward propagation with respect to data using al...
4D CNN activations tensor, an alias to dnnl::memory::format_tag::acdb
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3396
dnnl_status_t DNNL_API dnnl_primitive_desc_clone(dnnl_primitive_desc_t *primitive_desc, const_dnnl_primitive_desc_t existing_primitive_desc)
Makes a copy of a primitive_desc.
4D CNN weights tensor, an alias to dnnl_abcd
Definition: dnnl_types.h:374
Max pooling.
Definition: dnnl_types.h:694
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:5378
Binary add.
Definition: dnnl_types.h:719
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:4888
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 GRU descriptor rnn_desc for forward propagation using prop_kind, direction,...
A class for wrapping an DNNL handle.
Definition: dnnl.hpp:98
kind
Kinds of engines.
Definition: dnnl.hpp:836
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:5570
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:3779
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:4418
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:4870
memory::desc variance_desc() const
Queries variance memory descriptor.
Definition: dnnl.hpp:3681
Undefined memory format tag.
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 convolution descriptor conv_desc for backward propagation with respect to weights using...
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:5360
plain 1D tensor
Definition: dnnl_types.h:182
destination grad. memory desc
Definition: dnnl_types.h:1606
plain 2D tensor
Definition: dnnl_types.h:183
desc(algorithm aalgorithm, const memory::desc &src0, const memory::desc &src1, const memory::desc &dst)
Initializes a binary descriptor using algorithm, memory descriptors src0_desc, src1_desc and dst_desc...
Definition: dnnl.hpp:5720
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 softmax_desc for forward propagation using prop_kind (possible values are dnnl_forward_...
no query
Definition: dnnl_types.h:1558
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:4194
primitive_attr get_primitive_attr() const
Returns the attributes.
Definition: dnnl.hpp:1774
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:5218
Eltwise: bounded_relu.
Definition: dnnl_types.h:679
dnnl_status_t DNNL_API dnnl_primitive_attr_clone(dnnl_primitive_attr_t *attr, const_dnnl_primitive_attr_t existing_attr)
Makes a copy of an existing_attr.
Local response normalization (LRN) across multiple channels.
Undefined primitive.
Definition: dnnl_types.h:616
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)
Initializes a descriptor for deconvolution backward propagation using aalgorithm, memory descriptors,...
Definition: dnnl.hpp:2782
void set_scratchpad_mode(scratchpad_mode mode)
Sets scratchpad mode.
Definition: dnnl.hpp:712
memory::desc diff_src_desc() const
Queries diff source memory descriptor.
Definition: dnnl.hpp:3309
memory::desc src_iter_desc() const
Queries source iteration memory descriptor.
Definition: dnnl.hpp:4413
5D CNN activations tensor, an alias to dnnl_acdeb
Definition: dnnl_types.h:359
memory::desc diff_dst_layer_desc() const
Queries diff destination layer memory descriptor.
Definition: dnnl.hpp:5271
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)
Initializes a GRU descriptor for forward propagation using prop_kind, direction, and memory descripto...
Definition: dnnl.hpp:5014
dnnl_rnn_direction_t
A direction of RNN primitive execution.
Definition: dnnl_types.h:1219
memory::desc mean_desc() const
Queries mean memory descriptor.
Definition: dnnl.hpp:3678
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3092
engine scratchpad_engine() const
Returns the engine that owns the scratchpad memory.
Definition: dnnl.hpp:1763
memory::desc diff_src_iter_desc() const
Queries diff source iteration memory descriptor.
Definition: dnnl.hpp:4604
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:4591
size_t DNNL_API dnnl_memory_desc_get_size(const dnnl_memory_desc_t *memory_desc)
Returns the size (in bytes) that is required for given memory_desc.
workspace memory desc
Definition: dnnl_types.h:1607
T get(bool allow_emtpy=false) const
Returns the value of the underlying C handle.
Definition: dnnl.hpp:137
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:4431
op descriptor
Definition: dnnl_types.h:1584
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)
Initializes an LSTM descriptor for forward propagation using prop_kind, direction,...
Definition: dnnl.hpp:4668
5D CNN weights tensor, an alias to dnnl_abcde
Definition: dnnl_types.h:384
A descriptor of a pooling operation.
Definition: dnnl_types.h:1068
5D CNN weights tensor (incl. groups), an alias to dnnl_acbde
Definition: dnnl_types.h:399
batch normalization descriptor
Definition: dnnl_types.h:1592
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:2567
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3009
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 dilated convolution descriptor conv_desc for backward propagation with respect to data ...
kind get_kind() const
Returns the kind of the engine.
Definition: dnnl.hpp:905
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:4576
Local response normalization (LRN) across multiple channels.
Definition: dnnl_types.h:701
destination grad. memory desc
primitive_desc(const_dnnl_op_desc_t desc, const primitive_attr *attr, const engine &e, const_dnnl_primitive_desc_t hint_fwd_pd, bool allow_empty=false)
Creates a primitive descriptor from given op_desc, attr, engine, and optionally a hint primitive desc...
Definition: dnnl.hpp:2107
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 for given op_desc, attr, engine, and optionally a hint primit...
for creating scratchpad memory
Definition: dnnl_types.h:1575
Undefined memory format tag.
Definition: dnnl_types.h:171
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 shuffle_desc for backward propagation using memory descriptor diff_data_desc,...
Forward data propagation (inference mode).
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)
Initializes an RNN descriptor for forward propagation using prop_kind, activation,...
Definition: dnnl.hpp:4360
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:3163
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 dilated convolution descriptor conv_desc for forward propagation using prop_kind (possi...
A batch normalization primitive.
Definition: dnnl_types.h:638
cl_device_id get_ocl_device() const
Returns the OpenCL device associated with the engine.
Definition: dnnl.hpp:922
A rnn primitive.
Definition: dnnl_types.h:644
memory::desc diff_src_desc() const
Queries diff source gradient memory descriptor.
Definition: dnnl.hpp:4184
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:5266
4D CNN weights tensor, an alias to dnnl_cdba
Definition: dnnl_types.h:376
16-bit/half-precision floating point.
algorithm
Kinds of algorithms.
Definition: dnnl.hpp:306
Average pooling include padding.
Definition: dnnl_types.h:696
memory::desc dst_iter_desc() const
Queries destination iteration memory descriptor.
Definition: dnnl.hpp:5096
void set_sycl_buffer(cl::sycl::buffer< T, ndims > &buf)
Sets the underlying buffer to the given SYCL buffer.
Definition: dnnl.hpp:1654
Undefined memory format kind, used for empty memory descriptors.
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_destroy(dnnl_primitive_desc_iterator_t iterator)
Deletes a primitive descriptor iterator.
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:5373
non-standard 16-bit (bfloat16 w/ 7 bit mantissa) floating point.
permuted 4D tensor
Definition: dnnl_types.h:203
memory::desc dst_iter_desc() const
Queries destination iteration memory descriptor.
Definition: dnnl.hpp:5399
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:4113
Weights format used in 8bit Winograd convolution.
The operation was successful.
Definition: dnnl_types.h:51
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_forward_desc_init(dnnl_deconvolution_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 dilated deconvolution descriptor deconv_desc for forward propagation using prop_kind (p...
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 an lrn_desc for forward propagation using prop_kind (possible values are dnnl_forward_tra...
Use scale and shift parameters.
Definition: dnnl_types.h:750
16-bit/half-precision floating point.
Definition: dnnl_types.h:71
4D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:236
memory::desc diff_weights_iter_desc() const
Queries diff weights iteration memory descriptor.
Definition: dnnl.hpp:4614
memory::desc mean_desc() const
Queries mean memory descriptor.
Definition: dnnl.hpp:4003
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:5223
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3241
An element-wise primitive.
Eltwise: gelu.
Definition: dnnl_types.h:690
The operation failed because of incorrect function arguments.
Definition: dnnl_types.h:55
Backward propagation (with respect to all parameters).
Definition: dnnl_types.h:603
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 batch normalization descriptor bnrm_desc for backward propagation with respect to data ...
3D CNN activations tensor, an alias to dnnl_acb
Definition: dnnl_types.h:349
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3660
memory::desc weights_desc() const
Queries weights memory descriptor.
Definition: dnnl.hpp:4189
A descriptor of a Softmax operation.
Definition: dnnl_types.h:1052
Undefined propagation kind.
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)
Initializes a pooling descriptor for forward propagation using aprop_kind (possible values are dnnl::...
Definition: dnnl.hpp:3202
dnnl_status_t DNNL_API dnnl_engine_get_ocl_device(dnnl_engine_t engine, cl_device_id *device)
Returns an OpenCL device associated with an engine.
dnnl_status_t DNNL_API dnnl_deconvolution_backward_weights_desc_init(dnnl_deconvolution_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 deconvolution descriptor conv_desc for backward propagation with respect to weights usi...
Direct deconvolution.
Definition: dnnl_types.h:661
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)
Initializes a pooling descriptor for backward propagation using aalgorithm, memory descriptors,...
Definition: dnnl.hpp:3268
data_type
Data type specification.
Definition: dnnl.hpp:1081
dnnl_status_t DNNL_API dnnl_primitive_desc_iterator_next(dnnl_primitive_desc_iterator_t iterator)
Iterates over primitive descriptors.
source gradient memory desc
Definition: dnnl_types.h:1602
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 primitive descriptor.
cl_context get_ocl_context() const
Returns the OpenCL context associated with the engine.
Definition: dnnl.hpp:914
Eltwise: swish.
Definition: dnnl_types.h:692
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3776
Forward data propagation, alias for dnnl::prop_kind::forward_inference.
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)
Initializes an LBR_GRU descriptor for backward propagation using prop_kind, direction,...
Definition: dnnl.hpp:5440
dnnl_status_t DNNL_API dnnl_memory_destroy(dnnl_memory_t memory)
Deletes a memory.
An opaque structure to describe a primitive descriptor.
4D CNN activations tensor, an alias to dnnl::memory::format_tag::bcda
Out-of-order execution.
Definition: dnnl_types.h:1624
A deconvolution primitive.
Definition: dnnl_types.h:628
dnnl_status_t DNNL_API dnnl_primitive_desc_destroy(dnnl_primitive_desc_t primitive_desc)
Deletes a primitive_desc.
source memory desc
Definition: dnnl_types.h:1601
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 an inner product descriptor ip_desc for backward propagation with respect to data using m...
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:4770
Backward weights propagation.
Definition: dnnl_types.h:607
memory consumption (bytes)
memory::desc dst_iter_c_desc() const
Queries destination recurrent cell state memory descriptor.
Definition: dnnl.hpp:4763
dnnl_status_t DNNL_API dnnl_post_ops_get_params_sum(const_dnnl_post_ops_t post_ops, int index, float *scale)
Gets the parameters of the accumulation (sum) post operation with index index in the sequence of post...
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:4926
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:4019
An LRN primitive.
Definition: dnnl_types.h:636
execution engine
Definition: dnnl_types.h:1560
desc get_desc() const
Returns the descriptor of the memory.
Definition: dnnl.hpp:1542
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:5643
4D CNN weights tensor, an alias to dnnl_bacd
Definition: dnnl_types.h:382
memory::desc mean_desc() const
Queries mean memory descriptor.
Definition: dnnl.hpp:3899
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.
Convolution algorithm(either direct or Winograd) is chosen just in time.
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 *weights_scales)
Sets quantization scales weights_scales for RNN weights tensors.
source engine
Definition: dnnl_types.h:1577
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 an LBR GRU descriptor rnn_desc for backward propagation using prop_kind,...
format_tag
Memory format tag specification.
Definition: dnnl.hpp:1117
void unmap_data(void *mapped_ptr) const
Unmaps the previously mapped data for the memory.
Definition: dnnl.hpp:1603
dnnl_status_t DNNL_API dnnl_memory_get_data_handle(const_dnnl_memory_t memory, void **handle)
For a memory, returns the data handle.
memory::desc src_iter_desc() const
Queries source iteration memory descriptor.
Definition: dnnl.hpp:5065
Average pooling exclude padding.
int DNNL_API dnnl_memory_desc_equal(const dnnl_memory_desc_t *lhs, const dnnl_memory_desc_t *rhs)
Compares two memory descriptors.
void set_post_ops(post_ops ops)
Sets post_ops for future use.
Definition: dnnl.hpp:766
Backward data propagation.
Definition: dnnl_types.h:605
number of inputs expected
weights memory descriptor desc
Definition: dnnl_types.h:1603
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)
Initializes a descriptor for convolution forward propagation without bias using aprop_kind (possible ...
Definition: dnnl.hpp:2178
handle()=default
Empty constructor.
memory::desc mean_desc() const
Queries mean memory descriptor.
Definition: dnnl.hpp:3763
Eltwise: linear.
Definition: dnnl_types.h:677
memory::desc weights_desc() const
Queries weights memory descriptor.
Definition: dnnl.hpp:2857
runtime estimation (seconds), unimplemented
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:2740
memory::desc diff_dst_layer_desc() const
Queries diff destination layer memory descriptor.
Definition: dnnl.hpp:5575
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_desc memory descriptor using ndims, dims, data_type, and format tag.
4D RNN states tensor in the format (num_layers, num_directions, batch, state channels).
Definition: dnnl_types.h:409
propagation kind
Definition: dnnl_types.h:1580
memory::desc diff_weights_layer_desc() const
Queries diff weights layer memory descriptor.
Definition: dnnl.hpp:4609
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:2862
query
Primitive descriptor query specification.
Definition: dnnl.hpp:493
void reset(T t, bool weak=false)
Resets the value of a C handle.
Definition: dnnl.hpp:132
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3100
4D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:230
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, float *alpha, float *beta)
Gets the eltwise parameters of the post operation with index index in the sequence of post_ops.
number of outputs expected
Definition: dnnl_types.h:1564
dnnl_status_t DNNL_API dnnl_engine_destroy(dnnl_engine_t engine)
Destroys an engine.
cl::sycl::queue DNNL_API get_sycl_queue() const
Returns the underlying SYCL queue object.
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:4545
Packed weights format used in RNN.
Definition: dnnl_types.h:98
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 for given memory_desc and engine.
dnnl_status_t DNNL_API dnnl_memory_map_data(const_dnnl_memory_t memory, void **mapped_ptr)
For a memory, maps the data of the memory to mapped_ptr.
desc(prop_kind aprop_kind, const memory::desc &src_desc, const memory::desc &stat_desc, float epsilon, normalization_flags flags)
Initializes a layer normalization descriptor for forward propagation using prop_kind (possible values...
Definition: dnnl.hpp:3843
4D tensor blocked by 2nd dimension with block size 8
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:5238
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3393
dnnl_status_t DNNL_API dnnl_primitive_attr_get_scratchpad_mode(const_dnnl_primitive_attr_t attr, dnnl_scratchpad_mode_t *mode)
Returns the scratchpad mode set in the attribute attr.
desc(prop_kind aprop_kind, const memory::desc &data_desc, int softmax_axis)
Initializes a softmax descriptor for forward propagation using prop_kind (possible values are dnnl::f...
Definition: dnnl.hpp:3487
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 binary descriptor binary_desc, alg_kind (possible values are dnnl_binary_add and dnnl_b...
memory::desc src_iter_desc() const
Queries source iteration memory descriptor.
Definition: dnnl.hpp:4553
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:5210
dnnl_status_t DNNL_API dnnl_engine_create(dnnl_engine_t *engine, dnnl_engine_kind_t kind, size_t index)
Creates an engine of particular kind and index.
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:4714
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3449
Undefined memory format kind, used for empty memory descriptors.
Definition: dnnl_types.h:87
Use global statistics.
Definition: dnnl_types.h:737
permuted 5D tensor
Definition: dnnl_types.h:193
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)
Initializes an LBR GRU descriptor for forward propagation using prop_kind, direction,...
Definition: dnnl.hpp:5316
dnnl_status_t DNNL_API dnnl_primitive_attr_set_scratchpad_mode(dnnl_primitive_attr_t attr, dnnl_scratchpad_mode_t mode)
Sets scratchpad mode.
desc(const memory::desc &diff_desc, const memory::desc &data_desc, int softmax_axis)
Initializes a softmax descriptor for backward propagation using memory descriptors diff_desc and data...
Definition: dnnl.hpp:3539
A descriptor of a Local Response Normalization (LRN) operation.
Definition: dnnl_types.h:1101
deconvolution descriptor
Definition: dnnl_types.h:1586
dnnl_status_t DNNL_API dnnl_deconvolution_forward_desc_init(dnnl_deconvolution_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 deconvolution descriptor deconv_desc for forward propagation using prop_kind (possible ...
A descriptor of a shuffle operation.
Definition: dnnl_types.h:999
memory::desc src_iter_c_desc() const
Queries source recurrent cell state memory descriptor.
Definition: dnnl.hpp:4883
rnn descriptor
Definition: dnnl_types.h:1595
GRU cell with linear before reset.
dnnl_normalization_flags_t
Flags for batch normalization primitive.
Definition: dnnl_types.h:725
A descriptor of a Batch Normalization operation.
Definition: dnnl_types.h:1127
memory consumption – extra
Definition: dnnl_types.h:1567
memory::desc diff_dst_iter_desc() const
Queries diff destination iteration memory descriptor.
Definition: dnnl.hpp:4632
dnnl_status_t DNNL_API dnnl_primitive_attr_set_rnn_data_qparams(dnnl_primitive_attr_t attr, const float scale, const float shift)
Sets quantization scale and shift for RNN data tensors.
An unspecified engine.
Definition: dnnl_types.h:1322
A descriptor of a element-wise operation.
Definition: dnnl_types.h:1016
memory::desc weights_desc() const
Queries weights (scale and shift) memory descriptor.
Definition: dnnl.hpp:3891
memory::desc dst_iter_desc() const
Queries destination iteration memory descriptor.
Definition: dnnl.hpp:4444
memory::desc diff_weights_desc() const
Queries diff weights memory descriptor.
Definition: dnnl.hpp:2570
Undefined data type, used for empty memory descriptors.
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:2580
GPU engine.
Definition: dnnl_types.h:1326
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 an LSTM descriptor rnn_desc for backward propagation using prop_kind, direction,...
shuffle descriptor
Definition: dnnl_types.h:1587
8-bit unsigned integer.
Definition: dnnl_types.h:81
5D RNN weights tensor in the format (num_layers, num_directions, num_gates, output_channels,...
Definition: dnnl_types.h:423
memory::desc weights_desc() const
Queries weights (scale and shift) memory descriptor.
Definition: dnnl.hpp:4011
int ndims
Number of dimensions.
Definition: dnnl_types.h:885
A descriptor of a Layer Normalization operation.
Definition: dnnl_types.h:1155
dnnl_status_t DNNL_API dnnl_memory_get_engine(const_dnnl_memory_t memory, dnnl_engine_t *engine)
Returns an engine associated with memory.
const_dnnl_primitive_desc_t get_primitive_desc() const
Returns the descriptor of the underlying C API primitive.
Definition: dnnl.hpp:249
desc(prop_kind aprop_kind, const memory::desc &src_desc, float epsilon, normalization_flags flags)
Initializes a batch normalization descriptor for forward propagation using prop_kind (possible values...
Definition: dnnl.hpp:3626
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:2751
2D RNN statistics tensor, an alias to dnnl_ab
Definition: dnnl_types.h:343
dnnl_status_t DNNL_API dnnl_engine_get_ocl_context(dnnl_engine_t engine, cl_context *context)
Returns an OpenCL context associated with an engine.
5D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcde16b
Definition: dnnl_types.h:438
memory::desc dst_iter_desc() const
Queries destination iteration memory descriptor.
Definition: dnnl.hpp:5535
DNNL exception class.
Definition: dnnl.hpp:56
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3907
RNN cell.
Definition: dnnl_types.h:705
Binary mul.
Definition: dnnl_types.h:721
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 memory descriptor.
memory::desc variance_desc() const
Queries variance memory descriptor.
Definition: dnnl.hpp:3902
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 an RNN descriptor rnn_desc for backward propagation using prop_kind, activation,...
memory::desc diff_weights_layer_desc() const
Queries diff weights layer memory descriptor.
Definition: dnnl.hpp:5256
dnnl_status_t DNNL_API dnnl_stream_wait(dnnl_stream_t stream)
Waits for all primitives in the execution stream to finish.
void get_params_eltwise(int index, float &scale, algorithm &alg, float &alpha, float &beta) const
Gets the eltwise parameters of the post operation with index index.
Definition: dnnl.hpp:665
6D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:292
dnnl_status_t DNNL_API dnnl_memory_set_data_handle(dnnl_memory_t memory, void *handle)
For a memory, sets the data handle.
dnnl_alg_kind_t
Kinds of algorithms.
Definition: dnnl_types.h:652
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:4276
4D CNN activations tensor, an alias to dnnl_abcd
Definition: dnnl_types.h:351
memory::desc dst_iter_desc() const
Queries destination recurrent hidden state memory descriptor.
Definition: dnnl.hpp:4914
Backward weights propagation.
dnnl_status_t DNNL_API dnnl_reorder_primitive_desc_create(dnnl_primitive_desc_t *reorder_primitive_desc, const dnnl_memory_desc_t *src_md, dnnl_engine_t src_engine, const dnnl_memory_desc_t *dst_md, dnnl_engine_t dst_engine, const_dnnl_primitive_attr_t attr)
Initializes a reorder_primitive_desc using the description of the source (src_engine and src_md) and ...
void get_output_scales(int &mask, std::vector< float > &scales) const
Gets correspondence scale mask and a constant floating point vector of output scales previously set b...
Definition: dnnl.hpp:720
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:4000
dnnl_status_t DNNL_API dnnl_engine_get_kind(dnnl_engine_t engine, dnnl_engine_kind_t *kind)
Returns the kind of an engine.
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:4959
memory::desc diff_src_desc() const
Queries diff source gradient memory descriptor.
Definition: dnnl.hpp:2852
memory::desc weights_desc() const
Queries weights memory descriptor.
Definition: dnnl.hpp:4116
Eltwise: hyperbolic tangent non-linearity (tanh)
Definition: dnnl_types.h:667
LRN within a single channel.
Definition: dnnl_types.h:703
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 an inner product descriptor ip_desc for backward propagation with respect to weights usin...
A base class for descriptors of all primitives that have an operation descriptor and that support ite...
Definition: dnnl.hpp:2097
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 layer normalization descriptor lnrm_desc for backward propagation with respect to data ...
5D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:266
desc submemory_desc(const dims &adims, const dims &offsets)
Constructs a sub-memory descriptor.
Definition: dnnl.hpp:1458
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3521
5D RNN weights tensor in the format (num_layers, num_directions, input_channels, num_gates,...
Definition: dnnl_types.h:416
memory::desc diff_weights_iter_desc() const
Queries diff weights iteration memory descriptor.
Definition: dnnl.hpp:5565
memory::desc diff_dst_layer_desc() const
Queries diff destination layer memory descriptor.
Definition: dnnl.hpp:4624
flags
Stream flags.
Definition: dnnl.hpp:979
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3786
dnnl_status_t DNNL_API dnnl_primitive_create(dnnl_primitive_t *primitive, const_dnnl_primitive_desc_t primitive_desc)
Creates a primitive using a primitive_desc descriptor.
void append_sum(float scale=1.)
Appends accumulation (sum) post operation.
Definition: dnnl.hpp:638
3D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBc8b
Definition: dnnl_types.h:462
kind
Kinds of primitives.
Definition: dnnl.hpp:193
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3170
A (out-of-place) concat primitive.
memory::desc diff_src_desc() const
Queries diff source memory descriptor.
Definition: dnnl.hpp:3452
memory::desc diff_weights_desc() const
Queries diff weights (scale and shift) memory descriptor.
Definition: dnnl.hpp:4029
An opaque structure for primitive descriptor attributes.
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:4271
runtime estimation (seconds)
Definition: dnnl_types.h:1566
dnnl_data_type_t
Data type specification.
Definition: dnnl_types.h:67
destination engine
Definition: dnnl_types.h:1578
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 shuffle_desc for forward propagation using prop_kind, memory descriptor data_desc,...
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:4619
Unidirectional execution of RNN primitive from left to right.
Definition: dnnl_types.h:1221
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 an LBR GRU descriptor rnn_desc for forward propagation using prop_kind,...
Bidirectional execution of RNN primitive with concatenation of the results.
Definition: dnnl_types.h:1226
memory::desc diff_weights_layer_desc() const
Queries diff weights layer memory descriptor.
Definition: dnnl.hpp:5560
memory::desc diff_src_iter_desc() const
Queries diff source iteration memory descriptor.
Definition: dnnl.hpp:5251
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:5640
5D CNN activations tensor, an alias to dnnl_abcde
Definition: dnnl_types.h:357
dnnl_status_t DNNL_API dnnl_primitive_get_primitive_desc(const_dnnl_primitive_t primitive, const_dnnl_primitive_desc_t *primitive_desc)
Retrieves a reference to the primitive_desc descriptor of given primitive.
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:5542
Average pooling exclude padding.
Definition: dnnl_types.h:698
dnnl_status_t DNNL_API dnnl_post_ops_create(dnnl_post_ops_t *post_ops)
Creates an empty sequence of post operations post_ops.
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:4129
memory::desc src_iter_desc() const
Queries source iteration memory descriptor.
Definition: dnnl.hpp:5504
4D CNN activations tensor, an alias to dnnl_bcda
Definition: dnnl_types.h:355
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:5406
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 an lrn_desc for backward propagation using alg_kind, memory descriptors data_desc and dif...
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3518
permuted 3D tensor
Definition: dnnl_types.h:202
Use scale and shift parameters.
An opaque structure for a chain of post operations.
A shuffle primitive.
Definition: dnnl_types.h:620
3D CNN weights tensor, an alias to dnnl_abc
Definition: dnnl_types.h:366
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)
Initializes a descriptor for deconvolution weight update with bias using aalgorithm,...
Definition: dnnl.hpp:2890
static void wrap_c_api(dnnl_status_t status, const char *message)
A convenience function for wrapping calls to the C API.
Definition: dnnl.hpp:75
dnnl_primitive_kind_t DNNL_API dnnl_post_ops_get_kind(const_dnnl_post_ops_t post_ops, int index)
Returns the kind of post operation with index index in given post_ops.
permuted 4D tensor
Definition: dnnl_types.h:200
dnnl_status_t DNNL_API dnnl_concat_primitive_desc_create(dnnl_primitive_desc_t *concat_primitive_desc, const dnnl_memory_desc_t *dst_md, int n, int concat_dimension, const dnnl_memory_desc_t *src_mds, const_dnnl_primitive_attr_t attr, dnnl_engine_t engine)
Creates out-of-place concat_primitive_desc for concatenation of n inputs by concat_dimension with res...
Eltwise: square root.
Definition: dnnl_types.h:675
An element-wise primitive.
Definition: dnnl_types.h:630
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:4906
memory::desc variance_desc() const
Queries variance memory descriptor.
Definition: dnnl.hpp:3766
plain 3D tensor
Definition: dnnl_types.h:184
destination memory desc
Definition: dnnl_types.h:1605
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:3668
permuted 5D tensor
Definition: dnnl_types.h:195
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)
Initializes a descriptor for backward propagation using aalgorithm, memory descriptors data_desc and ...
Definition: dnnl.hpp:3122
memory::dim query_s64(query q) const
Queries the memory::dim value (same as int64_t).
Definition: dnnl.hpp:1733
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:4732
4D CNN weights tensor (incl. groups), an alias to dnnl_abcd
Definition: dnnl_types.h:393
batch normalization descriptor
cl::sycl::context DNNL_API get_sycl_context() const
Returns the underlying SYCL context object.
A layer normalization primitive.
Undefined memory format tag.
Definition: dnnl_types.h:174
weights grad. memory desc
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:4558
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 pooling descriptor pool_desc for backward propagation using alg_kind,...
memory::desc weights_layer_desc() const
Queries weights layer memory descriptor.
Definition: dnnl.hpp:5509
memory::desc diff_src_desc() const
Queries diff source memory descriptor.
Definition: dnnl.hpp:3791
Memory descriptor.
Definition: dnnl_types.h:883
GRU cell.
Definition: dnnl_types.h:709
Convolution algorithm(either direct or Winograd) is chosen just in time.
Definition: dnnl_types.h:659
Weights format used in 8bit Winograd convolution.
Definition: dnnl_types.h:96
source gradient memory desc
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:4423
memory::desc src_iter_c_desc() const
Queries source recurrent cell state memory descriptor.
Definition: dnnl.hpp:4727
weights grad. memory desc
Definition: dnnl_types.h:1604
int64_t dnnl_dim_t
A type to describe tensor dimension.
Definition: dnnl_types.h:777
Eltwise: ReLU.
Definition: dnnl_types.h:665
5D CNN weights tensor (incl. groups), an alias to dnnl_abcde
Definition: dnnl_types.h:395
void append_eltwise(float scale, algorithm alg, float alpha, float beta)
Appends eltwise post operation.
Definition: dnnl.hpp:658
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 an eltwise_desc for forward propagation using prop_kind (possible values are dnnl_forward...
void set_output_scales(int mask, const std::vector< float > &scales)
Sets output scales for primitive operations.
Definition: dnnl.hpp:749
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:2311
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:4124
A binary primitive.
Definition: dnnl_types.h:648
dnnl_status_t DNNL_API dnnl_memory_get_ocl_mem_object(const_dnnl_memory_t memory, cl_mem *mem_object)
For a memory returns the OpenCL memory object associated with it.
2D CNN weights tensor, an alias to dnnl_ab
Definition: dnnl_types.h:362
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)
Initializes a descriptor for convolution weight update with bias using aalgorithm,...
Definition: dnnl.hpp:2448
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:2756
memory::desc diff_src_layer_desc() const
Queries diff source layer memory descriptor.
Definition: dnnl.hpp:4931
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:5522
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:4263
3D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:212
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 convolution descriptor conv_desc for backward propagation with respect to weights using...
memory::desc scratchpad_desc() const
Queries scratchpad memory descriptor.
Definition: dnnl.hpp:1758
void get_params_sum(int index, float &scale) const
Gets the parameters of the accumulation (sum) post operation with index index.
Definition: dnnl.hpp:645
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:2575
dnnl_status_t DNNL_API dnnl_primitive_destroy(dnnl_primitive_t primitive)
Deletes a primitive.
A softmax primitive.
Definition: dnnl_types.h:632
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_backward_weights_desc_init(dnnl_deconvolution_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 dilated deconvolution descriptor conv_desc for backward propagation with respect to wei...
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 post_ops for given attr.
3D RNN data tensor in the format (batch, seq_length, input channels).
Definition: dnnl_types.h:406
memory::desc diff_src_layer_desc() const
Queries diff source layer memory descriptor.
Definition: dnnl.hpp:5547
Placeholder memory format tag.
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:3673
Default stream configuration.
Definition: dnnl_types.h:1626
4D CNN activations tensor blocked by channels with block size 16, an alias to dnnl_aBcd16b
Definition: dnnl_types.h:447
memory::desc diff_dst_layer_desc() const
Queries diff destination layer memory descriptor.
Definition: dnnl.hpp:4964
const post_ops get_post_ops() const
Returns post_ops previously set by set_post_ops.
Definition: dnnl.hpp:756
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:4405
dnnl_status_t DNNL_API dnnl_dilated_deconvolution_backward_data_desc_init(dnnl_deconvolution_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 dilated deconvolution descriptor conv_desc for backward propagation with respect to dat...
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:5088
dnnl_format_tag_t
Memory format tag specification.
Definition: dnnl_types.h:169
memory::desc weights_desc() const
Queries weights memory descriptor.
Definition: dnnl.hpp:2303
dnnl_status_t DNNL_API dnnl_stream_create(dnnl_stream_t *stream, dnnl_engine_t engine, unsigned flags)
Creates an execution stream for engine and with flags.
dnnl_status_t DNNL_API dnnl_primitive_attr_set_post_ops(dnnl_primitive_attr_t attr, const_dnnl_post_ops_t post_ops)
Sets configured post_ops to an attribute attr for future use (when primitive descriptor is being crea...
The library manages scratchpad (default)
Definition: dnnl_types.h:1379
4D RNN bias tensor in the format (num_layers, num_directions, num_gates, output_channels).
Definition: dnnl_types.h:430
memory::desc dst_desc() const
Queries destination memory descriptor.
Definition: dnnl.hpp:4016
5D CNN weights tensor (incl. groups), an alias to dnnl_decab
Definition: dnnl_types.h:397
engine get_engine() const
Returns the engine of the memory.
Definition: dnnl.hpp:1550
Eltwise: logistic.
Definition: dnnl_types.h:683
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 an eltwise_desc for backward propagation using alg_kind algorithm memory descriptors diff...
format_kind
Memory format kind.
Definition: dnnl.hpp:1099
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 scales for primitive operations.
Forward data propagation, alias for dnnl::prop_kind::forward_training.
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 layer normalization descriptor lnrm_desc for forward propagation using prop_kind (possi...
3D tensor blocked by 2nd dimension with block size 4
Definition: dnnl_types.h:216
bool is_zero() const
Returns true if the memory descriptor describes an empty memory.
Definition: dnnl.hpp:1480
dnnl_status_t DNNL_API dnnl_memory_unmap_data(const_dnnl_memory_t memory, void *mapped_ptr)
For a memory, unmaps a mapped pointer to the data of the memory.
memory::desc diff_weights_iter_desc() const
Queries diff weights iteration memory descriptor.
Definition: dnnl.hpp:4954
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:4745
A batch normalization primitive.
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:5386
Forward data propagation (training mode).
4D CNN activations tensor, an alias to dnnl::memory::format_tag::abcd
A tensor in a generic format described by the stride and blocking values in each dimension.
Forward data propagation (alias for dnnl_forward_inference).
Definition: dnnl_types.h:599
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:5391
A descriptor of a binary operation.
Definition: dnnl_types.h:1301
permuted 4D tensor
Definition: dnnl_types.h:198
6D tensor blocked by 2nd dimension with block size 16
Definition: dnnl_types.h:288
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:5514
void * get_data_handle() const
Returns a handle of the data contained in the memory.
Definition: dnnl.hpp:1560
plain 5D tensor
Definition: dnnl_types.h:186
Bidirectional execution of RNN primitive with summation of the results.
Definition: dnnl_types.h:1229
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:5496
dnnl_status_t DNNL_API dnnl_post_ops_append_sum(dnnl_post_ops_t post_ops, float scale)
Appends accumulation (sum) post operation to the post_ops.
dnnl_prop_kind_t
Kinds of propagation.
Definition: dnnl_types.h:587
cl_command_queue get_ocl_command_queue() const
Returns the OpenCL command queue associated with the stream.
Definition: dnnl.hpp:1013
Direct convolution.
Definition: dnnl_types.h:655
size_t DNNL_API dnnl_engine_get_count(dnnl_engine_kind_t kind)
Returns the number of engines of a particular kind.
dnnl_status_t DNNL_API dnnl_primitive_attr_create(dnnl_primitive_attr_t *attr)
Creates an empty (default) attr attribute.
dnnl_primitive_desc_t DNNL_API dnnl_primitive_desc_iterator_fetch(const_dnnl_primitive_desc_iterator_t iterator)
Fetches the current primitive descriptor.
lrn descriptor
Definition: dnnl_types.h:1591
Forward data propagation (inference mode).
Definition: dnnl_types.h:597
dnnl_primitive_kind_t
Kinds of primitives.
Definition: dnnl_types.h:614
cl_mem get_ocl_mem_object() const
Returns the OpenCL memory object associated with the memory.
Definition: dnnl.hpp:1610
Unidirectional execution of RNN primitive from right to left.
Definition: dnnl_types.h:1223
Undefined propagation type.
Definition: dnnl_types.h:590
primitive::kind kind(int index) const
Returns the kind of post operation with index index.
Definition: dnnl.hpp:611
desc(prop_kind aprop_kind, algorithm aalgorithm, const memory::desc &src_desc, memory::dim local_size, float alpha, float beta, float k=1.f)
Initializes a descriptor for forward propagation using prop_kind (possible values are dnnl::forward_t...
Definition: dnnl.hpp:3057
memory::desc src_iter_desc() const
Queries source iteration memory descriptor.
Definition: dnnl.hpp:5368
memory::desc dst_iter_c_desc() const
Queries destination recurrent cell state memory descriptor.
Definition: dnnl.hpp:4919
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)
Initializes a layer normalization descriptor for backward propagation with respect to data and scale-...
Definition: dnnl.hpp:3950
memory::desc weights_desc() const
Queries weights (scale and shift) memory descriptor.
Definition: dnnl.hpp:3771
dnnl_scratchpad_mode_t
Scratchpad mode.
Definition: dnnl_types.h:1377
memory::desc diff_bias_desc() const
Queries diff bias memory descriptor.
Definition: dnnl.hpp:3017
memory::desc diff_src_iter_desc() const
Queries diff source iteration memory descriptor.
Definition: dnnl.hpp:5555
prop_kind
Propagation kind.
Definition: dnnl.hpp:275
Forward data propagation (alias for dnnl_forward_training).
Definition: dnnl_types.h:601
3D tensor blocked by 2nd dimension with block size 8
Definition: dnnl_types.h:222
6D CNN weights tensor (incl. groups), an alias to dnnl_abcdef
Definition: dnnl_types.h:401
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.
A reorder primitive.
Definition: dnnl_types.h:618
T * map_data() const
Maps the data of the memory.
Definition: dnnl.hpp:1588
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:2420
memory::desc diff_src_iter_desc() const
Queries diff source recurrent hidden state memory descriptor.
Definition: dnnl.hpp:4939
layer normalization descriptor
Definition: dnnl_types.h:1593
softmax descriptor
Definition: dnnl_types.h:1589
scratchpad_mode get_scratchpad_mode() const
Returns the scratchpad mode.
Definition: dnnl.hpp:703
Eltwise: hyperbolic tangent non-linearity (tanh)
Eltwise: square.
Definition: dnnl_types.h:671
permuted 2D tensor
Definition: dnnl_types.h:196
3D CNN activations tensor, an alias to dnnl_abc
Definition: dnnl_types.h:347
permuted 4D tensor
Definition: dnnl_types.h:194
desc()
Constructs a zero memory descriptor.
Definition: dnnl.hpp:1417
pooling descriptor
Definition: dnnl_types.h:1590
primitive_attr()
Creates default primitive attributes.
Definition: dnnl.hpp:689
4D CNN activations tensor, an alias to dnnl_acdb
Definition: dnnl_types.h:353
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 GRU descriptor rnn_desc for backward propagation using prop_kind, direction,...
The library manages scratchpad (default)
3D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBc4b
Definition: dnnl_types.h:459
engine get_engine() const
Returns the engine of the primitive descriptor.
Definition: dnnl.hpp:1721
A user shall query and provide the scratchpad memory to primitives.
Definition: dnnl_types.h:1381
A user shall query and provide the scratchpad memory to primitives.
memory::desc src_layer_desc() const
Queries source layer memory descriptor.
Definition: dnnl.hpp:5192
const char * impl_info_str() const
Returns implementation name.
Definition: dnnl.hpp:1724
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)
Initializes a descriptor for deconvolution forward propagation with bias using prop_kind (possible va...
Definition: dnnl.hpp:2618
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:4737
reorder destination engine
memory::desc weights_desc() const
Queries weights (scale and shift) memory descriptor.
Definition: dnnl.hpp:3663
memory::desc query_md(query what, int idx=0) const
Queries and returns requested memory descriptor.
Definition: dnnl.hpp:1741
dnnl_status_t DNNL_API dnnl_memory_set_ocl_mem_object(dnnl_memory_t memory, cl_mem mem_object)
For a memory sets the OpenCL memory object associated with it.
normalization_flags
Flags for batch normalization primitive.
Definition: dnnl.hpp:382
memory::desc diff_weights_desc() const
Queries diff weights (scale and shift) memory descriptor.
Definition: dnnl.hpp:3796
desc(prop_kind aprop_kind, const memory::desc &diff_data_desc, const memory::desc &data_desc, float epsilon, normalization_flags flags)
Initializes a batch normalization descriptor for backward propagation with respect to data and scale-...
Definition: dnnl.hpp:3722
dnnl_status_t DNNL_API dnnl_post_ops_append_eltwise(dnnl_post_ops_t post_ops, float scale, dnnl_alg_kind_t alg, float alpha, float beta)
Appends eltwise post operation to the post_ops with given parameters kind, alpha, and beta (.
5D CNN activations tensor blocked by channels with block size 8, an alias to dnnl_aBcde8b
Definition: dnnl_types.h:444
memory::desc weights_desc() const
Queries weights memory descriptor.
Definition: dnnl.hpp:2743
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 an out_memory_desc with new ndims and dims from a in_memory_desc.
Fuse with ReLU.
Definition: dnnl_types.h:763
memory::desc workspace_desc() const
Queries workspace memory descriptor.
Definition: dnnl.hpp:4036
dnnl_status_t DNNL_API dnnl_deconvolution_backward_data_desc_init(dnnl_deconvolution_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 deconvolution descriptor conv_desc for backward propagation with respect to data using ...
2D CNN activations tensor, an alias to dnnl::memory::format_tag::ab
Default stream configuration.
Unspecified format kind.
Definition: dnnl_types.h:90
Eltwise: exponent.
Definition: dnnl_types.h:685
const typedef void * const_dnnl_op_desc_t
A pointer to any of the operation descriptors (constant variant).
Definition: dnnl_types.h:953
3D RNN data tensor in the format (seq_length, batch, input channels).
Definition: dnnl_types.h:404
5D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcde4b
Definition: dnnl_types.h:441
eltwise descriptor
Definition: dnnl_types.h:1588
memory::desc dst_iter_desc() const
Queries destination iteration memory descriptor.
Definition: dnnl.hpp:5231
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:3580
memory::desc dst_layer_desc() const
Queries destination layer memory descriptor.
Definition: dnnl.hpp:4436
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)
Initializes an LSTM descriptor for backward propagation using prop_kind, direction,...
Definition: dnnl.hpp:4807
non-standard 16-bit (bfloat16 w/ 7 bit mantissa) floating point.
Definition: dnnl_types.h:73
memory::desc diff_src_desc() const
Queries diff source memory descriptor.
Definition: dnnl.hpp:3575
A tensor in a generic format described by the stride and blocking values in each dimension.
Definition: dnnl_types.h:94
desc(prop_kind aprop_kind, const memory::desc &data_desc, int axis, int group_size)
Initializes a shuffle descriptor for forward propagation using prop_kind, memory descriptor data_desc...
Definition: dnnl.hpp:5613
memory::desc diff_src_iter_c_desc() const
Queries diff source recurrent cell state memory descriptor.
Definition: dnnl.hpp:4944
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_desc memory descriptor using ndims, dims, data_type, and strides.
1D tensor, an alias to dnnl_a
Definition: dnnl_types.h:337
Just a sentinel, not real memory format tag.
Definition: dnnl_types.h:332
memory::desc src_iter_desc() const
Queries source iter memory descriptor.
Definition: dnnl.hpp:5200
dnnl_status_t DNNL_API dnnl_post_ops_destroy(dnnl_post_ops_t post_ops)
Deletes a post_ops sequence.
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 an LSTM descriptor rnn_desc for forward propagation using prop_kind, direction,...
5D CNN weights tensor, an alias to dnnl_cdeba
Definition: dnnl_types.h:386
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 using a stream, and nargs arguments args.
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 pooling descriptor pool_desc for forward propagation using prop_kind (possible values a...
memory::desc diff_dst_desc() const
Queries diff destination memory descriptor.
Definition: dnnl.hpp:3022
memory::desc src_desc() const
Queries source memory descriptor.
Definition: dnnl.hpp:3888
Average pooling include padding.
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)
Initializes a descriptor for convolution backward propagation using aalgorithm, memory descriptors,...
Definition: dnnl.hpp:2342
void set_rnn_weights_qparams(int mask, const std::vector< float > &scales)
Sets quantization scales weights_scales for RNN weights tensors.
Definition: dnnl.hpp:808
The operation failed because requested functionality is not implemented.
Definition: dnnl_types.h:57
permuted 5D tensor
Definition: dnnl_types.h:205
memory::desc bias_desc() const
Queries bias memory descriptor.
Definition: dnnl.hpp:4901
4D tensor blocked by 1st and 2nd dimension with block size 8
memory::desc src_iter_desc() const
Queries source recurrent hidden state memory descriptor.
Definition: dnnl.hpp:4878
Backward propagation (with respect to all parameters).
LSTM cell.
Definition: dnnl_types.h:707
4D CNN activations tensor blocked by channels with block size 4, an alias to dnnl_aBcd4b
Definition: dnnl_types.h:450
memory::desc weights_iter_desc() const
Queries weights iteration memory descriptor.
Definition: dnnl.hpp:4563
A convolution primitive.
Definition: dnnl_types.h:626