Caffe2 - C++ API
A deep learning, cross platform ML framework
mkl_dnn_cppwrapper.h
1 // Do not directl include this file. Include caffe2/mkl/mkl_utils.h instead.
2 #ifndef CAFFE2_UTILS_MKL_MKL_DNN_CPPWRAPPER_H
3 #define CAFFE2_UTILS_MKL_MKL_DNN_CPPWRAPPER_H
4 
5 #include <stdarg.h>
6 #include <stddef.h>
7 
8 #include <mkl.h>
9 
10 #define C2_MKL_TEMPLATE_PREFIX \
11  template <typename T> \
12  inline
13 #define C2_MKL_SPEC_PREFIX \
14  template <> \
15  inline
16 
17 namespace caffe2 {
18 namespace mkl {
19 
20 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnLayoutCreate(
21  dnnLayout_t* pLayout,
22  size_t dimension,
23  const size_t size[],
24  const size_t strides[]);
25 C2_MKL_SPEC_PREFIX dnnError_t dnnLayoutCreate<float>(
26  dnnLayout_t* pLayout,
27  size_t dimension,
28  const size_t size[],
29  const size_t strides[]) {
30  return dnnLayoutCreate_F32(pLayout, dimension, size, strides);
31 }
32 C2_MKL_SPEC_PREFIX dnnError_t dnnLayoutCreate<double>(
33  dnnLayout_t* pLayout,
34  size_t dimension,
35  const size_t size[],
36  const size_t strides[]) {
37  return dnnLayoutCreate_F64(pLayout, dimension, size, strides);
38 }
39 
40 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnLayoutCreateFromPrimitive(
41  dnnLayout_t* pLayout,
42  const dnnPrimitive_t primitive,
43  dnnResourceType_t type);
44 C2_MKL_SPEC_PREFIX dnnError_t dnnLayoutCreateFromPrimitive<float>(
45  dnnLayout_t* pLayout,
46  const dnnPrimitive_t primitive,
47  dnnResourceType_t type) {
48  return dnnLayoutCreateFromPrimitive_F32(pLayout, primitive, type);
49 }
50 C2_MKL_SPEC_PREFIX dnnError_t dnnLayoutCreateFromPrimitive<double>(
51  dnnLayout_t* pLayout,
52  const dnnPrimitive_t primitive,
53  dnnResourceType_t type) {
54  return dnnLayoutCreateFromPrimitive_F64(pLayout, primitive, type);
55 }
56 
57 C2_MKL_TEMPLATE_PREFIX size_t dnnLayoutGetMemorySize(const dnnLayout_t layout);
58 C2_MKL_SPEC_PREFIX size_t
59 dnnLayoutGetMemorySize<float>(const dnnLayout_t layout) {
60  return dnnLayoutGetMemorySize_F32(layout);
61 }
62 C2_MKL_SPEC_PREFIX size_t
63 dnnLayoutGetMemorySize<double>(const dnnLayout_t layout) {
64  return dnnLayoutGetMemorySize_F64(layout);
65 }
66 
67 C2_MKL_TEMPLATE_PREFIX int dnnLayoutCompare(
68  const dnnLayout_t l1,
69  const dnnLayout_t l2);
70 C2_MKL_SPEC_PREFIX int dnnLayoutCompare<float>(
71  const dnnLayout_t l1,
72  const dnnLayout_t l2) {
73  return dnnLayoutCompare_F32(l1, l2);
74 }
75 C2_MKL_SPEC_PREFIX int dnnLayoutCompare<double>(
76  const dnnLayout_t l1,
77  const dnnLayout_t l2) {
78  return dnnLayoutCompare_F64(l1, l2);
79 }
80 
81 C2_MKL_TEMPLATE_PREFIX dnnError_t
82 dnnAllocateBuffer(void** pPtr, dnnLayout_t layout);
83 C2_MKL_SPEC_PREFIX dnnError_t
84 dnnAllocateBuffer<float>(void** pPtr, dnnLayout_t layout) {
85  return dnnAllocateBuffer_F32(pPtr, layout);
86 }
87 C2_MKL_SPEC_PREFIX dnnError_t
88 dnnAllocateBuffer<double>(void** pPtr, dnnLayout_t layout) {
89  return dnnAllocateBuffer_F64(pPtr, layout);
90 }
91 
92 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnReleaseBuffer(void* ptr);
93 C2_MKL_SPEC_PREFIX dnnError_t dnnReleaseBuffer<float>(void* ptr) {
94  return dnnReleaseBuffer_F32(ptr);
95 }
96 C2_MKL_SPEC_PREFIX dnnError_t dnnReleaseBuffer<double>(void* ptr) {
97  return dnnReleaseBuffer_F64(ptr);
98 }
99 
100 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnLayoutDelete(dnnLayout_t layout);
101 C2_MKL_SPEC_PREFIX dnnError_t dnnLayoutDelete<float>(dnnLayout_t layout) {
102  return dnnLayoutDelete_F32(layout);
103 }
104 C2_MKL_SPEC_PREFIX dnnError_t dnnLayoutDelete<double>(dnnLayout_t layout) {
105  return dnnLayoutDelete_F64(layout);
106 }
107 
108 C2_MKL_TEMPLATE_PREFIX dnnError_t
109 dnnPrimitiveAttributesCreate(dnnPrimitiveAttributes_t* attributes);
110 C2_MKL_SPEC_PREFIX dnnError_t
111 dnnPrimitiveAttributesCreate<float>(dnnPrimitiveAttributes_t* attributes) {
112  return dnnPrimitiveAttributesCreate_F32(attributes);
113 }
114 C2_MKL_SPEC_PREFIX dnnError_t
115 dnnPrimitiveAttributesCreate<double>(dnnPrimitiveAttributes_t* attributes) {
116  return dnnPrimitiveAttributesCreate_F64(attributes);
117 }
118 
119 C2_MKL_TEMPLATE_PREFIX dnnError_t
120 dnnPrimitiveAttributesDestroy(dnnPrimitiveAttributes_t attributes);
121 C2_MKL_SPEC_PREFIX dnnError_t
122 dnnPrimitiveAttributesDestroy<float>(dnnPrimitiveAttributes_t attributes) {
123  return dnnPrimitiveAttributesDestroy_F32(attributes);
124 }
125 C2_MKL_SPEC_PREFIX dnnError_t
126 dnnPrimitiveAttributesDestroy<double>(dnnPrimitiveAttributes_t attributes) {
127  return dnnPrimitiveAttributesDestroy_F64(attributes);
128 }
129 
130 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnPrimitiveGetAttributes(
131  dnnPrimitive_t primitive,
132  dnnPrimitiveAttributes_t* attributes);
133 C2_MKL_SPEC_PREFIX dnnError_t dnnPrimitiveGetAttributes<float>(
134  dnnPrimitive_t primitive,
135  dnnPrimitiveAttributes_t* attributes) {
136  return dnnPrimitiveGetAttributes_F32(primitive, attributes);
137 }
138 C2_MKL_SPEC_PREFIX dnnError_t dnnPrimitiveGetAttributes<double>(
139  dnnPrimitive_t primitive,
140  dnnPrimitiveAttributes_t* attributes) {
141  return dnnPrimitiveGetAttributes_F64(primitive, attributes);
142 }
143 
144 C2_MKL_TEMPLATE_PREFIX dnnError_t
145 dnnExecute(dnnPrimitive_t primitive, void* resources[]);
146 C2_MKL_SPEC_PREFIX dnnError_t
147 dnnExecute<float>(dnnPrimitive_t primitive, void* resources[]) {
148  return dnnExecute_F32(primitive, resources);
149 }
150 C2_MKL_SPEC_PREFIX dnnError_t
151 dnnExecute<double>(dnnPrimitive_t primitive, void* resources[]) {
152  return dnnExecute_F64(primitive, resources);
153 }
154 
155 C2_MKL_TEMPLATE_PREFIX dnnError_t
156 dnnExecuteAsync(dnnPrimitive_t primitive, void* resources[]);
157 C2_MKL_SPEC_PREFIX dnnError_t
158 dnnExecuteAsync<float>(dnnPrimitive_t primitive, void* resources[]) {
159  return dnnExecuteAsync_F32(primitive, resources);
160 }
161 C2_MKL_SPEC_PREFIX dnnError_t
162 dnnExecuteAsync<double>(dnnPrimitive_t primitive, void* resources[]) {
163  return dnnExecuteAsync_F64(primitive, resources);
164 }
165 
166 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnWaitFor(dnnPrimitive_t primitive);
167 C2_MKL_SPEC_PREFIX dnnError_t dnnWaitFor<float>(dnnPrimitive_t primitive) {
168  return dnnWaitFor_F32(primitive);
169 }
170 C2_MKL_SPEC_PREFIX dnnError_t dnnWaitFor<double>(dnnPrimitive_t primitive) {
171  return dnnWaitFor_F64(primitive);
172 }
173 
174 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnDelete(dnnPrimitive_t primitive);
175 C2_MKL_SPEC_PREFIX dnnError_t dnnDelete<float>(dnnPrimitive_t primitive) {
176  return dnnDelete_F32(primitive);
177 }
178 C2_MKL_SPEC_PREFIX dnnError_t dnnDelete<double>(dnnPrimitive_t primitive) {
179  return dnnDelete_F64(primitive);
180 }
181 
182 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConversionCreate(
183  dnnPrimitive_t* pConversion,
184  const dnnLayout_t from,
185  const dnnLayout_t to);
186 C2_MKL_SPEC_PREFIX dnnError_t dnnConversionCreate<float>(
187  dnnPrimitive_t* pConversion,
188  const dnnLayout_t from,
189  const dnnLayout_t to) {
190  return dnnConversionCreate_F32(pConversion, from, to);
191 }
192 C2_MKL_SPEC_PREFIX dnnError_t dnnConversionCreate<double>(
193  dnnPrimitive_t* pConversion,
194  const dnnLayout_t from,
195  const dnnLayout_t to) {
196  return dnnConversionCreate_F64(pConversion, from, to);
197 }
198 
199 C2_MKL_TEMPLATE_PREFIX dnnError_t
200 dnnConversionExecute(dnnPrimitive_t conversion, void* from, void* to);
201 C2_MKL_SPEC_PREFIX dnnError_t
202 dnnConversionExecute<float>(dnnPrimitive_t conversion, void* from, void* to) {
203  return dnnConversionExecute_F32(conversion, from, to);
204 }
205 C2_MKL_SPEC_PREFIX dnnError_t
206 dnnConversionExecute<double>(dnnPrimitive_t conversion, void* from, void* to) {
207  return dnnConversionExecute_F64(conversion, from, to);
208 }
209 
210 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConvolutionCreateForward(
211  dnnPrimitive_t* pConvolution,
212  dnnPrimitiveAttributes_t attributes,
213  dnnAlgorithm_t algorithm,
214  size_t dimension,
215  const size_t srcSize[],
216  const size_t dstSize[],
217  const size_t filterSize[],
218  const size_t convolutionStrides[],
219  const int inputOffset[],
220  const dnnBorder_t border_type);
221 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateForward<float>(
222  dnnPrimitive_t* pConvolution,
223  dnnPrimitiveAttributes_t attributes,
224  dnnAlgorithm_t algorithm,
225  size_t dimension,
226  const size_t srcSize[],
227  const size_t dstSize[],
228  const size_t filterSize[],
229  const size_t convolutionStrides[],
230  const int inputOffset[],
231  const dnnBorder_t border_type) {
232  return dnnConvolutionCreateForward_F32(
233  pConvolution,
234  attributes,
235  algorithm,
236  dimension,
237  srcSize,
238  dstSize,
239  filterSize,
240  convolutionStrides,
241  inputOffset,
242  border_type);
243 }
244 
245 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateForward<double>(
246  dnnPrimitive_t* pConvolution,
247  dnnPrimitiveAttributes_t attributes,
248  dnnAlgorithm_t algorithm,
249  size_t dimension,
250  const size_t srcSize[],
251  const size_t dstSize[],
252  const size_t filterSize[],
253  const size_t convolutionStrides[],
254  const int inputOffset[],
255  const dnnBorder_t border_type) {
256  return dnnConvolutionCreateForward_F64(
257  pConvolution,
258  attributes,
259  algorithm,
260  dimension,
261  srcSize,
262  dstSize,
263  filterSize,
264  convolutionStrides,
265  inputOffset,
266  border_type);
267 }
268 
269 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConvolutionCreateForwardBias(
270  dnnPrimitive_t* pConvolution,
271  dnnPrimitiveAttributes_t attributes,
272  dnnAlgorithm_t algorithm,
273  size_t dimension,
274  const size_t srcSize[],
275  const size_t dstSize[],
276  const size_t filterSize[],
277  const size_t convolutionStrides[],
278  const int inputOffset[],
279  const dnnBorder_t border_type);
280 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateForwardBias<float>(
281  dnnPrimitive_t* pConvolution,
282  dnnPrimitiveAttributes_t attributes,
283  dnnAlgorithm_t algorithm,
284  size_t dimension,
285  const size_t srcSize[],
286  const size_t dstSize[],
287  const size_t filterSize[],
288  const size_t convolutionStrides[],
289  const int inputOffset[],
290  const dnnBorder_t border_type) {
291  return dnnConvolutionCreateForwardBias_F32(
292  pConvolution,
293  attributes,
294  algorithm,
295  dimension,
296  srcSize,
297  dstSize,
298  filterSize,
299  convolutionStrides,
300  inputOffset,
301  border_type);
302 }
303 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateForwardBias<double>(
304  dnnPrimitive_t* pConvolution,
305  dnnPrimitiveAttributes_t attributes,
306  dnnAlgorithm_t algorithm,
307  size_t dimension,
308  const size_t srcSize[],
309  const size_t dstSize[],
310  const size_t filterSize[],
311  const size_t convolutionStrides[],
312  const int inputOffset[],
313  const dnnBorder_t border_type) {
314  return dnnConvolutionCreateForwardBias_F64(
315  pConvolution,
316  attributes,
317  algorithm,
318  dimension,
319  srcSize,
320  dstSize,
321  filterSize,
322  convolutionStrides,
323  inputOffset,
324  border_type);
325 }
326 
327 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConvolutionCreateBackwardData(
328  dnnPrimitive_t* pConvolution,
329  dnnPrimitiveAttributes_t attributes,
330  dnnAlgorithm_t algorithm,
331  size_t dimension,
332  const size_t srcSize[],
333  const size_t dstSize[],
334  const size_t filterSize[],
335  const size_t convolutionStrides[],
336  const int inputOffset[],
337  const dnnBorder_t border_type);
338 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateBackwardData<float>(
339  dnnPrimitive_t* pConvolution,
340  dnnPrimitiveAttributes_t attributes,
341  dnnAlgorithm_t algorithm,
342  size_t dimension,
343  const size_t srcSize[],
344  const size_t dstSize[],
345  const size_t filterSize[],
346  const size_t convolutionStrides[],
347  const int inputOffset[],
348  const dnnBorder_t border_type) {
349  return dnnConvolutionCreateBackwardData_F32(
350  pConvolution,
351  attributes,
352  algorithm,
353  dimension,
354  srcSize,
355  dstSize,
356  filterSize,
357  convolutionStrides,
358  inputOffset,
359  border_type);
360 }
361 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateBackwardData<double>(
362  dnnPrimitive_t* pConvolution,
363  dnnPrimitiveAttributes_t attributes,
364  dnnAlgorithm_t algorithm,
365  size_t dimension,
366  const size_t srcSize[],
367  const size_t dstSize[],
368  const size_t filterSize[],
369  const size_t convolutionStrides[],
370  const int inputOffset[],
371  const dnnBorder_t border_type) {
372  return dnnConvolutionCreateBackwardData_F64(
373  pConvolution,
374  attributes,
375  algorithm,
376  dimension,
377  srcSize,
378  dstSize,
379  filterSize,
380  convolutionStrides,
381  inputOffset,
382  border_type);
383 }
384 
385 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConvolutionCreateBackwardFilter(
386  dnnPrimitive_t* pConvolution,
387  dnnPrimitiveAttributes_t attributes,
388  dnnAlgorithm_t algorithm,
389  size_t dimension,
390  const size_t srcSize[],
391  const size_t dstSize[],
392  const size_t filterSize[],
393  const size_t convolutionStrides[],
394  const int inputOffset[],
395  const dnnBorder_t border_type);
396 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateBackwardFilter<float>(
397  dnnPrimitive_t* pConvolution,
398  dnnPrimitiveAttributes_t attributes,
399  dnnAlgorithm_t algorithm,
400  size_t dimension,
401  const size_t srcSize[],
402  const size_t dstSize[],
403  const size_t filterSize[],
404  const size_t convolutionStrides[],
405  const int inputOffset[],
406  const dnnBorder_t border_type) {
407  return dnnConvolutionCreateBackwardFilter_F32(
408  pConvolution,
409  attributes,
410  algorithm,
411  dimension,
412  srcSize,
413  dstSize,
414  filterSize,
415  convolutionStrides,
416  inputOffset,
417  border_type);
418 }
419 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateBackwardFilter<double>(
420  dnnPrimitive_t* pConvolution,
421  dnnPrimitiveAttributes_t attributes,
422  dnnAlgorithm_t algorithm,
423  size_t dimension,
424  const size_t srcSize[],
425  const size_t dstSize[],
426  const size_t filterSize[],
427  const size_t convolutionStrides[],
428  const int inputOffset[],
429  const dnnBorder_t border_type) {
430  return dnnConvolutionCreateBackwardFilter_F64(
431  pConvolution,
432  attributes,
433  algorithm,
434  dimension,
435  srcSize,
436  dstSize,
437  filterSize,
438  convolutionStrides,
439  inputOffset,
440  border_type);
441 }
442 
443 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConvolutionCreateBackwardBias(
444  dnnPrimitive_t* pConvolution,
445  dnnPrimitiveAttributes_t attributes,
446  dnnAlgorithm_t algorithm,
447  size_t dimension,
448  const size_t dstSize[]);
449 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateBackwardBias<float>(
450  dnnPrimitive_t* pConvolution,
451  dnnPrimitiveAttributes_t attributes,
452  dnnAlgorithm_t algorithm,
453  size_t dimension,
454  const size_t dstSize[]) {
455  return dnnConvolutionCreateBackwardBias_F32(
456  pConvolution, attributes, algorithm, dimension, dstSize);
457 }
458 C2_MKL_SPEC_PREFIX dnnError_t dnnConvolutionCreateBackwardBias<double>(
459  dnnPrimitive_t* pConvolution,
460  dnnPrimitiveAttributes_t attributes,
461  dnnAlgorithm_t algorithm,
462  size_t dimension,
463  const size_t dstSize[]) {
464  return dnnConvolutionCreateBackwardBias_F64(
465  pConvolution, attributes, algorithm, dimension, dstSize);
466 }
467 
468 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnGroupsConvolutionCreateForward(
469  dnnPrimitive_t* pConvolution,
470  dnnPrimitiveAttributes_t attributes,
471  dnnAlgorithm_t algorithm,
472  size_t groups,
473  size_t dimension,
474  const size_t srcSize[],
475  const size_t dstSize[],
476  const size_t filterSize[],
477  const size_t convolutionStrides[],
478  const int inputOffset[],
479  const dnnBorder_t border_type);
480 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateForward<float>(
481  dnnPrimitive_t* pConvolution,
482  dnnPrimitiveAttributes_t attributes,
483  dnnAlgorithm_t algorithm,
484  size_t groups,
485  size_t dimension,
486  const size_t srcSize[],
487  const size_t dstSize[],
488  const size_t filterSize[],
489  const size_t convolutionStrides[],
490  const int inputOffset[],
491  const dnnBorder_t border_type) {
492  return dnnGroupsConvolutionCreateForward_F32(
493  pConvolution,
494  attributes,
495  algorithm,
496  groups,
497  dimension,
498  srcSize,
499  dstSize,
500  filterSize,
501  convolutionStrides,
502  inputOffset,
503  border_type);
504 }
505 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateForward<double>(
506  dnnPrimitive_t* pConvolution,
507  dnnPrimitiveAttributes_t attributes,
508  dnnAlgorithm_t algorithm,
509  size_t groups,
510  size_t dimension,
511  const size_t srcSize[],
512  const size_t dstSize[],
513  const size_t filterSize[],
514  const size_t convolutionStrides[],
515  const int inputOffset[],
516  const dnnBorder_t border_type) {
517  return dnnGroupsConvolutionCreateForward_F64(
518  pConvolution,
519  attributes,
520  algorithm,
521  groups,
522  dimension,
523  srcSize,
524  dstSize,
525  filterSize,
526  convolutionStrides,
527  inputOffset,
528  border_type);
529 }
530 
531 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnGroupsConvolutionCreateForwardBias(
532  dnnPrimitive_t* pConvolution,
533  dnnPrimitiveAttributes_t attributes,
534  dnnAlgorithm_t algorithm,
535  size_t groups,
536  size_t dimension,
537  const size_t srcSize[],
538  const size_t dstSize[],
539  const size_t filterSize[],
540  const size_t convolutionStrides[],
541  const int inputOffset[],
542  const dnnBorder_t border_type);
543 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateForwardBias<float>(
544  dnnPrimitive_t* pConvolution,
545  dnnPrimitiveAttributes_t attributes,
546  dnnAlgorithm_t algorithm,
547  size_t groups,
548  size_t dimension,
549  const size_t srcSize[],
550  const size_t dstSize[],
551  const size_t filterSize[],
552  const size_t convolutionStrides[],
553  const int inputOffset[],
554  const dnnBorder_t border_type) {
555  return dnnGroupsConvolutionCreateForwardBias_F32(
556  pConvolution,
557  attributes,
558  algorithm,
559  groups,
560  dimension,
561  srcSize,
562  dstSize,
563  filterSize,
564  convolutionStrides,
565  inputOffset,
566  border_type);
567 }
568 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateForwardBias<double>(
569  dnnPrimitive_t* pConvolution,
570  dnnPrimitiveAttributes_t attributes,
571  dnnAlgorithm_t algorithm,
572  size_t groups,
573  size_t dimension,
574  const size_t srcSize[],
575  const size_t dstSize[],
576  const size_t filterSize[],
577  const size_t convolutionStrides[],
578  const int inputOffset[],
579  const dnnBorder_t border_type) {
580  return dnnGroupsConvolutionCreateForwardBias_F64(
581  pConvolution,
582  attributes,
583  algorithm,
584  groups,
585  dimension,
586  srcSize,
587  dstSize,
588  filterSize,
589  convolutionStrides,
590  inputOffset,
591  border_type);
592 }
593 
594 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardData(
595  dnnPrimitive_t* pConvolution,
596  dnnPrimitiveAttributes_t attributes,
597  dnnAlgorithm_t algorithm,
598  size_t groups,
599  size_t dimension,
600  const size_t srcSize[],
601  const size_t dstSize[],
602  const size_t filterSize[],
603  const size_t convolutionStrides[],
604  const int inputOffset[],
605  const dnnBorder_t border_type);
606 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardData<float>(
607  dnnPrimitive_t* pConvolution,
608  dnnPrimitiveAttributes_t attributes,
609  dnnAlgorithm_t algorithm,
610  size_t groups,
611  size_t dimension,
612  const size_t srcSize[],
613  const size_t dstSize[],
614  const size_t filterSize[],
615  const size_t convolutionStrides[],
616  const int inputOffset[],
617  const dnnBorder_t border_type) {
618  return dnnGroupsConvolutionCreateBackwardData_F32(
619  pConvolution,
620  attributes,
621  algorithm,
622  groups,
623  dimension,
624  srcSize,
625  dstSize,
626  filterSize,
627  convolutionStrides,
628  inputOffset,
629  border_type);
630 }
631 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardData<double>(
632  dnnPrimitive_t* pConvolution,
633  dnnPrimitiveAttributes_t attributes,
634  dnnAlgorithm_t algorithm,
635  size_t groups,
636  size_t dimension,
637  const size_t srcSize[],
638  const size_t dstSize[],
639  const size_t filterSize[],
640  const size_t convolutionStrides[],
641  const int inputOffset[],
642  const dnnBorder_t border_type) {
643  return dnnGroupsConvolutionCreateBackwardData_F64(
644  pConvolution,
645  attributes,
646  algorithm,
647  groups,
648  dimension,
649  srcSize,
650  dstSize,
651  filterSize,
652  convolutionStrides,
653  inputOffset,
654  border_type);
655 }
656 
657 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardFilter(
658  dnnPrimitive_t* pConvolution,
659  dnnPrimitiveAttributes_t attributes,
660  dnnAlgorithm_t algorithm,
661  size_t groups,
662  size_t dimension,
663  const size_t srcSize[],
664  const size_t dstSize[],
665  const size_t filterSize[],
666  const size_t convolutionStrides[],
667  const int inputOffset[],
668  const dnnBorder_t border_type);
669 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardFilter<float>(
670  dnnPrimitive_t* pConvolution,
671  dnnPrimitiveAttributes_t attributes,
672  dnnAlgorithm_t algorithm,
673  size_t groups,
674  size_t dimension,
675  const size_t srcSize[],
676  const size_t dstSize[],
677  const size_t filterSize[],
678  const size_t convolutionStrides[],
679  const int inputOffset[],
680  const dnnBorder_t border_type) {
681  return dnnGroupsConvolutionCreateBackwardFilter_F32(
682  pConvolution,
683  attributes,
684  algorithm,
685  groups,
686  dimension,
687  srcSize,
688  dstSize,
689  filterSize,
690  convolutionStrides,
691  inputOffset,
692  border_type);
693 }
694 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardFilter<double>(
695  dnnPrimitive_t* pConvolution,
696  dnnPrimitiveAttributes_t attributes,
697  dnnAlgorithm_t algorithm,
698  size_t groups,
699  size_t dimension,
700  const size_t srcSize[],
701  const size_t dstSize[],
702  const size_t filterSize[],
703  const size_t convolutionStrides[],
704  const int inputOffset[],
705  const dnnBorder_t border_type) {
706  return dnnGroupsConvolutionCreateBackwardFilter_F64(
707  pConvolution,
708  attributes,
709  algorithm,
710  groups,
711  dimension,
712  srcSize,
713  dstSize,
714  filterSize,
715  convolutionStrides,
716  inputOffset,
717  border_type);
718 }
719 
720 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardBias(
721  dnnPrimitive_t* pConvolution,
722  dnnPrimitiveAttributes_t attributes,
723  dnnAlgorithm_t algorithm,
724  size_t groups,
725  size_t dimension,
726  const size_t dstSize[]);
727 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardBias<float>(
728  dnnPrimitive_t* pConvolution,
729  dnnPrimitiveAttributes_t attributes,
730  dnnAlgorithm_t algorithm,
731  size_t groups,
732  size_t dimension,
733  const size_t dstSize[]) {
734  return dnnGroupsConvolutionCreateBackwardBias_F32(
735  pConvolution, attributes, algorithm, groups, dimension, dstSize);
736 }
737 C2_MKL_SPEC_PREFIX dnnError_t dnnGroupsConvolutionCreateBackwardBias<double>(
738  dnnPrimitive_t* pConvolution,
739  dnnPrimitiveAttributes_t attributes,
740  dnnAlgorithm_t algorithm,
741  size_t groups,
742  size_t dimension,
743  const size_t dstSize[]) {
744  return dnnGroupsConvolutionCreateBackwardBias_F64(
745  pConvolution, attributes, algorithm, groups, dimension, dstSize);
746 }
747 
748 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnReLUCreateForward(
749  dnnPrimitive_t* pRelu,
750  dnnPrimitiveAttributes_t attributes,
751  const dnnLayout_t dataLayout,
752  float negativeSlope);
753 C2_MKL_SPEC_PREFIX dnnError_t dnnReLUCreateForward<float>(
754  dnnPrimitive_t* pRelu,
755  dnnPrimitiveAttributes_t attributes,
756  const dnnLayout_t dataLayout,
757  float negativeSlope) {
758  return dnnReLUCreateForward_F32(pRelu, attributes, dataLayout, negativeSlope);
759 }
760 C2_MKL_SPEC_PREFIX dnnError_t dnnReLUCreateForward<double>(
761  dnnPrimitive_t* pRelu,
762  dnnPrimitiveAttributes_t attributes,
763  const dnnLayout_t dataLayout,
764  float negativeSlope) {
765  return dnnReLUCreateForward_F64(pRelu, attributes, dataLayout, negativeSlope);
766 }
767 
768 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnReLUCreateBackward(
769  dnnPrimitive_t* pRelu,
770  dnnPrimitiveAttributes_t attributes,
771  const dnnLayout_t diffLayout,
772  const dnnLayout_t dataLayout,
773  float negativeSlope);
774 C2_MKL_SPEC_PREFIX dnnError_t dnnReLUCreateBackward<float>(
775  dnnPrimitive_t* pRelu,
776  dnnPrimitiveAttributes_t attributes,
777  const dnnLayout_t diffLayout,
778  const dnnLayout_t dataLayout,
779  float negativeSlope) {
780  return dnnReLUCreateBackward_F32(
781  pRelu, attributes, diffLayout, dataLayout, negativeSlope);
782 }
783 C2_MKL_SPEC_PREFIX dnnError_t dnnReLUCreateBackward<double>(
784  dnnPrimitive_t* pRelu,
785  dnnPrimitiveAttributes_t attributes,
786  const dnnLayout_t diffLayout,
787  const dnnLayout_t dataLayout,
788  float negativeSlope) {
789  return dnnReLUCreateBackward_F64(
790  pRelu, attributes, diffLayout, dataLayout, negativeSlope);
791 }
792 
793 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnLRNCreateForward(
794  dnnPrimitive_t* pLrn,
795  dnnPrimitiveAttributes_t attributes,
796  const dnnLayout_t dataLayout,
797  size_t kernel_size,
798  float alpha,
799  float beta,
800  float k);
801 C2_MKL_SPEC_PREFIX dnnError_t dnnLRNCreateForward<float>(
802  dnnPrimitive_t* pLrn,
803  dnnPrimitiveAttributes_t attributes,
804  const dnnLayout_t dataLayout,
805  size_t kernel_size,
806  float alpha,
807  float beta,
808  float k) {
809  return dnnLRNCreateForward_F32(
810  pLrn, attributes, dataLayout, kernel_size, alpha, beta, k);
811 }
812 C2_MKL_SPEC_PREFIX dnnError_t dnnLRNCreateForward<double>(
813  dnnPrimitive_t* pLrn,
814  dnnPrimitiveAttributes_t attributes,
815  const dnnLayout_t dataLayout,
816  size_t kernel_size,
817  float alpha,
818  float beta,
819  float k) {
820  return dnnLRNCreateForward_F64(
821  pLrn, attributes, dataLayout, kernel_size, alpha, beta, k);
822 }
823 
824 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnLRNCreateBackward(
825  dnnPrimitive_t* pLrn,
826  dnnPrimitiveAttributes_t attributes,
827  const dnnLayout_t diffLayout,
828  const dnnLayout_t dataLayout,
829  size_t kernel_size,
830  float alpha,
831  float beta,
832  float k);
833 C2_MKL_SPEC_PREFIX dnnError_t dnnLRNCreateBackward<float>(
834  dnnPrimitive_t* pLrn,
835  dnnPrimitiveAttributes_t attributes,
836  const dnnLayout_t diffLayout,
837  const dnnLayout_t dataLayout,
838  size_t kernel_size,
839  float alpha,
840  float beta,
841  float k) {
842  return dnnLRNCreateBackward_F32(
843  pLrn, attributes, diffLayout, dataLayout, kernel_size, alpha, beta, k);
844 }
845 C2_MKL_SPEC_PREFIX dnnError_t dnnLRNCreateBackward<double>(
846  dnnPrimitive_t* pLrn,
847  dnnPrimitiveAttributes_t attributes,
848  const dnnLayout_t diffLayout,
849  const dnnLayout_t dataLayout,
850  size_t kernel_size,
851  float alpha,
852  float beta,
853  float k) {
854  return dnnLRNCreateBackward_F64(
855  pLrn, attributes, diffLayout, dataLayout, kernel_size, alpha, beta, k);
856 }
857 
858 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnPoolingCreateForward(
859  dnnPrimitive_t* pPooling,
860  dnnPrimitiveAttributes_t attributes,
861  dnnAlgorithm_t op,
862  const dnnLayout_t srcLayout,
863  const size_t kernelSize[],
864  const size_t kernelStride[],
865  const int inputOffset[],
866  const dnnBorder_t border_type);
867 C2_MKL_SPEC_PREFIX dnnError_t dnnPoolingCreateForward<float>(
868  dnnPrimitive_t* pPooling,
869  dnnPrimitiveAttributes_t attributes,
870  dnnAlgorithm_t op,
871  const dnnLayout_t srcLayout,
872  const size_t kernelSize[],
873  const size_t kernelStride[],
874  const int inputOffset[],
875  const dnnBorder_t border_type) {
876  return dnnPoolingCreateForward_F32(
877  pPooling,
878  attributes,
879  op,
880  srcLayout,
881  kernelSize,
882  kernelStride,
883  inputOffset,
884  border_type);
885 }
886 C2_MKL_SPEC_PREFIX dnnError_t dnnPoolingCreateForward<double>(
887  dnnPrimitive_t* pPooling,
888  dnnPrimitiveAttributes_t attributes,
889  dnnAlgorithm_t op,
890  const dnnLayout_t srcLayout,
891  const size_t kernelSize[],
892  const size_t kernelStride[],
893  const int inputOffset[],
894  const dnnBorder_t border_type) {
895  return dnnPoolingCreateForward_F64(
896  pPooling,
897  attributes,
898  op,
899  srcLayout,
900  kernelSize,
901  kernelStride,
902  inputOffset,
903  border_type);
904 }
905 
906 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnPoolingCreateBackward(
907  dnnPrimitive_t* pPooling,
908  dnnPrimitiveAttributes_t attributes,
909  dnnAlgorithm_t op,
910  const dnnLayout_t srcLayout,
911  const size_t kernelSize[],
912  const size_t kernelStride[],
913  const int inputOffset[],
914  const dnnBorder_t border_type);
915 C2_MKL_SPEC_PREFIX dnnError_t dnnPoolingCreateBackward<float>(
916  dnnPrimitive_t* pPooling,
917  dnnPrimitiveAttributes_t attributes,
918  dnnAlgorithm_t op,
919  const dnnLayout_t srcLayout,
920  const size_t kernelSize[],
921  const size_t kernelStride[],
922  const int inputOffset[],
923  const dnnBorder_t border_type) {
924  return dnnPoolingCreateBackward_F32(
925  pPooling,
926  attributes,
927  op,
928  srcLayout,
929  kernelSize,
930  kernelStride,
931  inputOffset,
932  border_type);
933 }
934 C2_MKL_SPEC_PREFIX dnnError_t dnnPoolingCreateBackward<double>(
935  dnnPrimitive_t* pPooling,
936  dnnPrimitiveAttributes_t attributes,
937  dnnAlgorithm_t op,
938  const dnnLayout_t srcLayout,
939  const size_t kernelSize[],
940  const size_t kernelStride[],
941  const int inputOffset[],
942  const dnnBorder_t border_type) {
943  return dnnPoolingCreateBackward_F64(
944  pPooling,
945  attributes,
946  op,
947  srcLayout,
948  kernelSize,
949  kernelStride,
950  inputOffset,
951  border_type);
952 }
953 
954 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnConcatCreate(
955  dnnPrimitive_t* pConcat,
956  dnnPrimitiveAttributes_t attributes,
957  const size_t N,
958  dnnLayout_t src[]);
959 C2_MKL_SPEC_PREFIX dnnError_t dnnConcatCreate<float>(
960  dnnPrimitive_t* pConcat,
961  dnnPrimitiveAttributes_t attributes,
962  const size_t N,
963  dnnLayout_t src[]) {
964  return dnnConcatCreate_F32(pConcat, attributes, N, src);
965 }
966 C2_MKL_SPEC_PREFIX dnnError_t dnnConcatCreate<double>(
967  dnnPrimitive_t* pConcat,
968  dnnPrimitiveAttributes_t attributes,
969  const size_t N,
970  dnnLayout_t src[]) {
971  return dnnConcatCreate_F64(pConcat, attributes, N, src);
972 }
973 
974 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnSplitCreate(
975  dnnPrimitive_t* pSplit,
976  dnnPrimitiveAttributes_t attributes,
977  const size_t N,
978  dnnLayout_t src,
979  size_t dst[]);
980 C2_MKL_SPEC_PREFIX dnnError_t dnnSplitCreate<float>(
981  dnnPrimitive_t* pSplit,
982  dnnPrimitiveAttributes_t attributes,
983  const size_t N,
984  dnnLayout_t src,
985  size_t dst[]) {
986  return dnnSplitCreate_F32(pSplit, attributes, N, src, dst);
987 }
988 C2_MKL_SPEC_PREFIX dnnError_t dnnSplitCreate<double>(
989  dnnPrimitive_t* pSplit,
990  dnnPrimitiveAttributes_t attributes,
991  const size_t N,
992  dnnLayout_t src,
993  size_t dst[]) {
994  return dnnSplitCreate_F64(pSplit, attributes, N, src, dst);
995 }
996 
997 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnSumCreate(
998  dnnPrimitive_t* pSum,
999  dnnPrimitiveAttributes_t attributes,
1000  const size_t nSummands,
1001  dnnLayout_t layout,
1002  T* coefficients);
1003 C2_MKL_SPEC_PREFIX dnnError_t dnnSumCreate<float>(
1004  dnnPrimitive_t* pSum,
1005  dnnPrimitiveAttributes_t attributes,
1006  const size_t nSummands,
1007  dnnLayout_t layout,
1008  float* coefficients) {
1009  return dnnSumCreate_F32(pSum, attributes, nSummands, layout, coefficients);
1010 }
1011 C2_MKL_SPEC_PREFIX dnnError_t dnnSumCreate<double>(
1012  dnnPrimitive_t* pSum,
1013  dnnPrimitiveAttributes_t attributes,
1014  const size_t nSummands,
1015  dnnLayout_t layout,
1016  double* coefficients) {
1017  return dnnSumCreate_F64(pSum, attributes, nSummands, layout, coefficients);
1018 }
1019 
1020 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnBatchNormalizationCreateForward(
1021  dnnPrimitive_t* pBatchNormalization,
1022  dnnPrimitiveAttributes_t attributes,
1023  const dnnLayout_t dataLayout,
1024  float eps);
1025 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateForward<float>(
1026  dnnPrimitive_t* pBatchNormalization,
1027  dnnPrimitiveAttributes_t attributes,
1028  const dnnLayout_t dataLayout,
1029  float eps) {
1030  return dnnBatchNormalizationCreateForward_F32(
1031  pBatchNormalization, attributes, dataLayout, eps);
1032 }
1033 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateForward<double>(
1034  dnnPrimitive_t* pBatchNormalization,
1035  dnnPrimitiveAttributes_t attributes,
1036  const dnnLayout_t dataLayout,
1037  float eps) {
1038  return dnnBatchNormalizationCreateForward_F64(
1039  pBatchNormalization, attributes, dataLayout, eps);
1040 }
1041 
1042 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnBatchNormalizationCreateBackwardData(
1043  dnnPrimitive_t* pBatchNormalization,
1044  dnnPrimitiveAttributes_t attributes,
1045  const dnnLayout_t dataLayout,
1046  float eps);
1047 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateBackwardData<float>(
1048  dnnPrimitive_t* pBatchNormalization,
1049  dnnPrimitiveAttributes_t attributes,
1050  const dnnLayout_t dataLayout,
1051  float eps) {
1052  return dnnBatchNormalizationCreateBackwardData_F32(
1053  pBatchNormalization, attributes, dataLayout, eps);
1054 }
1055 
1056 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateBackwardData<double>(
1057  dnnPrimitive_t* pBatchNormalization,
1058  dnnPrimitiveAttributes_t attributes,
1059  const dnnLayout_t dataLayout,
1060  float eps) {
1061  return dnnBatchNormalizationCreateBackwardData_F64(
1062  pBatchNormalization, attributes, dataLayout, eps);
1063 }
1064 
1065 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnBatchNormalizationCreateBackwardScaleShift(
1066  dnnPrimitive_t* pBatchNormalization,
1067  dnnPrimitiveAttributes_t attributes,
1068  const dnnLayout_t dataLayout,
1069  float eps);
1070 C2_MKL_SPEC_PREFIX dnnError_t
1071 dnnBatchNormalizationCreateBackwardScaleShift<float>(
1072  dnnPrimitive_t* pBatchNormalization,
1073  dnnPrimitiveAttributes_t attributes,
1074  const dnnLayout_t dataLayout,
1075  float eps) {
1076  return dnnBatchNormalizationCreateBackwardScaleShift_F32(
1077  pBatchNormalization, attributes, dataLayout, eps);
1078 }
1079 C2_MKL_SPEC_PREFIX dnnError_t
1080 dnnBatchNormalizationCreateBackwardScaleShift<double>(
1081  dnnPrimitive_t* pBatchNormalization,
1082  dnnPrimitiveAttributes_t attributes,
1083  const dnnLayout_t dataLayout,
1084  float eps) {
1085  return dnnBatchNormalizationCreateBackwardScaleShift_F64(
1086  pBatchNormalization, attributes, dataLayout, eps);
1087 }
1088 
1089 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnBatchNormalizationCreateForward_v2(
1090  dnnPrimitive_t* pBatchNormalization,
1091  dnnPrimitiveAttributes_t attributes,
1092  const dnnLayout_t dataLayout,
1093  float eps,
1094  unsigned int flags);
1095 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateForward_v2<float>(
1096  dnnPrimitive_t* pBatchNormalization,
1097  dnnPrimitiveAttributes_t attributes,
1098  const dnnLayout_t dataLayout,
1099  float eps,
1100  unsigned int flags) {
1101  return dnnBatchNormalizationCreateForward_v2_F32(
1102  pBatchNormalization, attributes, dataLayout, eps, flags);
1103 }
1104 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateForward_v2<double>(
1105  dnnPrimitive_t* pBatchNormalization,
1106  dnnPrimitiveAttributes_t attributes,
1107  const dnnLayout_t dataLayout,
1108  float eps,
1109  unsigned int flags) {
1110  return dnnBatchNormalizationCreateForward_v2_F64(
1111  pBatchNormalization, attributes, dataLayout, eps, flags);
1112 }
1113 
1114 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnBatchNormalizationCreateBackward_v2(
1115  dnnPrimitive_t* pBatchNormalization,
1116  dnnPrimitiveAttributes_t attributes,
1117  const dnnLayout_t dataLayout,
1118  float eps,
1119  unsigned int flags);
1120 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateBackward_v2<float>(
1121  dnnPrimitive_t* pBatchNormalization,
1122  dnnPrimitiveAttributes_t attributes,
1123  const dnnLayout_t dataLayout,
1124  float eps,
1125  unsigned int flags) {
1126  return dnnBatchNormalizationCreateBackward_v2_F32(
1127  pBatchNormalization, attributes, dataLayout, eps, flags);
1128 }
1129 
1130 C2_MKL_SPEC_PREFIX dnnError_t dnnBatchNormalizationCreateBackward_v2<double>(
1131  dnnPrimitive_t* pBatchNormalization,
1132  dnnPrimitiveAttributes_t attributes,
1133  const dnnLayout_t dataLayout,
1134  float eps,
1135  unsigned int flags) {
1136  return dnnBatchNormalizationCreateBackward_v2_F64(
1137  pBatchNormalization, attributes, dataLayout, eps, flags);
1138 }
1139 
1140 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnInnerProductCreateForward(
1141  dnnPrimitive_t* pInnerProduct,
1142  dnnPrimitiveAttributes_t attributes,
1143  size_t dimensions,
1144  const size_t srcSize[],
1145  size_t outputChannels);
1146 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateForward<float>(
1147  dnnPrimitive_t* pInnerProduct,
1148  dnnPrimitiveAttributes_t attributes,
1149  size_t dimensions,
1150  const size_t srcSize[],
1151  size_t outputChannels) {
1152  return dnnInnerProductCreateForward_F32(
1153  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1154 }
1155 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateForward<double>(
1156  dnnPrimitive_t* pInnerProduct,
1157  dnnPrimitiveAttributes_t attributes,
1158  size_t dimensions,
1159  const size_t srcSize[],
1160  size_t outputChannels) {
1161  return dnnInnerProductCreateForward_F64(
1162  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1163 }
1164 
1165 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnInnerProductCreateForwardBias(
1166  dnnPrimitive_t* pInnerProduct,
1167  dnnPrimitiveAttributes_t attributes,
1168  size_t dimensions,
1169  const size_t srcSize[],
1170  size_t outputChannels);
1171 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateForwardBias<float>(
1172  dnnPrimitive_t* pInnerProduct,
1173  dnnPrimitiveAttributes_t attributes,
1174  size_t dimensions,
1175  const size_t srcSize[],
1176  size_t outputChannels) {
1177  return dnnInnerProductCreateForwardBias_F32(
1178  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1179 }
1180 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateForwardBias<double>(
1181  dnnPrimitive_t* pInnerProduct,
1182  dnnPrimitiveAttributes_t attributes,
1183  size_t dimensions,
1184  const size_t srcSize[],
1185  size_t outputChannels) {
1186  return dnnInnerProductCreateForwardBias_F64(
1187  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1188 }
1189 
1190 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnInnerProductCreateBackwardData(
1191  dnnPrimitive_t* pInnerProduct,
1192  dnnPrimitiveAttributes_t attributes,
1193  size_t dimensions,
1194  const size_t srcSize[],
1195  size_t outputChannels);
1196 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateBackwardData<float>(
1197  dnnPrimitive_t* pInnerProduct,
1198  dnnPrimitiveAttributes_t attributes,
1199  size_t dimensions,
1200  const size_t srcSize[],
1201  size_t outputChannels) {
1202  return dnnInnerProductCreateBackwardData_F32(
1203  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1204 }
1205 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateBackwardData<double>(
1206  dnnPrimitive_t* pInnerProduct,
1207  dnnPrimitiveAttributes_t attributes,
1208  size_t dimensions,
1209  const size_t srcSize[],
1210  size_t outputChannels) {
1211  return dnnInnerProductCreateBackwardData_F64(
1212  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1213 }
1214 
1215 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnInnerProductCreateBackwardFilter(
1216  dnnPrimitive_t* pInnerProduct,
1217  dnnPrimitiveAttributes_t attributes,
1218  size_t dimensions,
1219  const size_t srcSize[],
1220  size_t outputChannels);
1221 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateBackwardFilter<float>(
1222  dnnPrimitive_t* pInnerProduct,
1223  dnnPrimitiveAttributes_t attributes,
1224  size_t dimensions,
1225  const size_t srcSize[],
1226  size_t outputChannels) {
1227  return dnnInnerProductCreateBackwardFilter_F32(
1228  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1229 }
1230 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateBackwardFilter<double>(
1231  dnnPrimitive_t* pInnerProduct,
1232  dnnPrimitiveAttributes_t attributes,
1233  size_t dimensions,
1234  const size_t srcSize[],
1235  size_t outputChannels) {
1236  return dnnInnerProductCreateBackwardFilter_F64(
1237  pInnerProduct, attributes, dimensions, srcSize, outputChannels);
1238 }
1239 
1240 C2_MKL_TEMPLATE_PREFIX dnnError_t dnnInnerProductCreateBackwardBias(
1241  dnnPrimitive_t* pInnerProduct,
1242  dnnPrimitiveAttributes_t attributes,
1243  size_t dimensions,
1244  const size_t srcSize[]);
1245 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateBackwardBias<float>(
1246  dnnPrimitive_t* pInnerProduct,
1247  dnnPrimitiveAttributes_t attributes,
1248  size_t dimensions,
1249  const size_t srcSize[]) {
1250  return dnnInnerProductCreateBackwardBias_F32(
1251  pInnerProduct, attributes, dimensions, srcSize);
1252 }
1253 C2_MKL_SPEC_PREFIX dnnError_t dnnInnerProductCreateBackwardBias<double>(
1254  dnnPrimitive_t* pInnerProduct,
1255  dnnPrimitiveAttributes_t attributes,
1256  size_t dimensions,
1257  const size_t srcSize[]) {
1258  return dnnInnerProductCreateBackwardBias_F64(
1259  pInnerProduct, attributes, dimensions, srcSize);
1260 }
1261 
1262 } // namespace mkl
1263 } // namespace caffe2
1264 
1265 // Undef macros to make sure that things are clean.
1266 #undef C2_MKL_TEMPLATE_PREFIX
1267 #undef C2_MKL_SPEC_PREFIX
1268 
1269 #endif // CAFFE2_UTILS_MKL_MKL_DNN_CPPWRAPPER_H
A global dictionary that holds information about what Caffe2 modules have been loaded in the current ...