blob: 7d66f20ad3083cb2eec10e806c1223a900c33700 [file] [log] [blame]
/*******************************************************************************
* Copyright 2016 Intel Corporation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* \file mkl_cppwrapper.h
* \brief
* \author lingyan.guo@intel.com
* zhenlin.luo@intel.com
*
*******************************************************************************/
#ifndef MXNET_OPERATOR_MKL_MKL_CPPWRAPPER_H_
#define MXNET_OPERATOR_MKL_MKL_CPPWRAPPER_H_
#include <stdarg.h>
#include <stddef.h>
#if MXNET_USE_MKL2017 == 1
#include "mkl_dnn_types.h"
#include "mkl_dnn.h"
#include "mkl_version.h"
extern int getMKLBuildDate();
extern bool enableMKLWarnGenerated();
template <typename Dtype> inline dnnError_t dnnLayoutCreate(
dnnLayout_t *pLayout, size_t dimension, const size_t size[], const size_t strides[]);
template <> inline dnnError_t dnnLayoutCreate<float>(
dnnLayout_t *pLayout, size_t dimension, const size_t size[], const size_t strides[]) {
return dnnLayoutCreate_F32(pLayout, dimension, size, strides);
}
template <> inline dnnError_t dnnLayoutCreate<double>(
dnnLayout_t *pLayout, size_t dimension, const size_t size[], const size_t strides[]) {
return dnnLayoutCreate_F64(pLayout, dimension, size, strides);
}
template <typename Dtype> inline dnnError_t dnnLayoutCreateFromPrimitive(
dnnLayout_t *pLayout, const dnnPrimitive_t primitive, dnnResourceType_t type);
template <> inline dnnError_t dnnLayoutCreateFromPrimitive<float>(
dnnLayout_t *pLayout, const dnnPrimitive_t primitive, dnnResourceType_t type) {
return dnnLayoutCreateFromPrimitive_F32(pLayout, primitive, type);
}
template <> inline dnnError_t dnnLayoutCreateFromPrimitive<double>(
dnnLayout_t *pLayout, const dnnPrimitive_t primitive, dnnResourceType_t type) {
return dnnLayoutCreateFromPrimitive_F64(pLayout, primitive, type);
}
template <typename Dtype> inline size_t dnnLayoutGetMemorySize(
const dnnLayout_t layout);
template <> inline size_t dnnLayoutGetMemorySize<float>(
const dnnLayout_t layout) {
return dnnLayoutGetMemorySize_F32(layout);
}
template <> inline size_t dnnLayoutGetMemorySize<double>(
const dnnLayout_t layout) {
return dnnLayoutGetMemorySize_F64(layout);
}
template <typename Dtype> inline int dnnLayoutCompare(
const dnnLayout_t l1, const dnnLayout_t l2);
template <> inline int dnnLayoutCompare<float>(
const dnnLayout_t l1, const dnnLayout_t l2) {
return dnnLayoutCompare_F32(l1, l2);
}
template <> inline int dnnLayoutCompare<double>(
const dnnLayout_t l1, const dnnLayout_t l2) {
return dnnLayoutCompare_F64(l1, l2);
}
template <typename Dtype> inline dnnError_t dnnAllocateBuffer(
void **pPtr, dnnLayout_t layout);
template <> inline dnnError_t dnnAllocateBuffer<float>(
void **pPtr, dnnLayout_t layout) {
return dnnAllocateBuffer_F32(pPtr, layout);
}
template <> inline dnnError_t dnnAllocateBuffer<double>(
void **pPtr, dnnLayout_t layout) {
return dnnAllocateBuffer_F64(pPtr, layout);
}
template <typename Dtype> inline dnnError_t dnnReleaseBuffer(
void *ptr);
template <> inline dnnError_t dnnReleaseBuffer<float>(
void *ptr) {
return dnnReleaseBuffer_F32(ptr);
}
template <> inline dnnError_t dnnReleaseBuffer<double>(
void *ptr) {
return dnnReleaseBuffer_F64(ptr);
}
template <typename Dtype> inline dnnError_t dnnLayoutDelete(
dnnLayout_t layout);
template <> inline dnnError_t dnnLayoutDelete<float>(
dnnLayout_t layout) {
return dnnLayoutDelete_F32(layout);
}
template <> inline dnnError_t dnnLayoutDelete<double>(
dnnLayout_t layout) {
return dnnLayoutDelete_F64(layout);
}
template <typename Dtype> inline dnnError_t dnnPrimitiveAttributesCreate(
dnnPrimitiveAttributes_t *attributes);
template <> inline dnnError_t dnnPrimitiveAttributesCreate<float>(
dnnPrimitiveAttributes_t *attributes) {
return dnnPrimitiveAttributesCreate_F32(attributes);
}
template <> inline dnnError_t dnnPrimitiveAttributesCreate<double>(
dnnPrimitiveAttributes_t *attributes) {
return dnnPrimitiveAttributesCreate_F64(attributes);
}
template <typename Dtype> inline dnnError_t dnnPrimitiveAttributesDestroy(
dnnPrimitiveAttributes_t attributes);
template <> inline dnnError_t dnnPrimitiveAttributesDestroy<float>(
dnnPrimitiveAttributes_t attributes) {
return dnnPrimitiveAttributesDestroy_F32(attributes);
}
template <> inline dnnError_t dnnPrimitiveAttributesDestroy<double>(
dnnPrimitiveAttributes_t attributes) {
return dnnPrimitiveAttributesDestroy_F64(attributes);
}
template <typename Dtype> inline dnnError_t dnnPrimitiveGetAttributes(
dnnPrimitive_t primitive,
dnnPrimitiveAttributes_t *attributes);
template <> inline dnnError_t dnnPrimitiveGetAttributes<float>(
dnnPrimitive_t primitive,
dnnPrimitiveAttributes_t *attributes) {
return dnnPrimitiveGetAttributes_F32(primitive, attributes);
}
template <> inline dnnError_t dnnPrimitiveGetAttributes<double>(
dnnPrimitive_t primitive,
dnnPrimitiveAttributes_t *attributes) {
return dnnPrimitiveGetAttributes_F64(primitive, attributes);
}
template <typename Dtype> inline dnnError_t dnnExecute(
dnnPrimitive_t primitive, void *resources[]);
template <> inline dnnError_t dnnExecute<float>(
dnnPrimitive_t primitive, void *resources[]) {
return dnnExecute_F32(primitive, resources);
}
template <> inline dnnError_t dnnExecute<double>(
dnnPrimitive_t primitive, void *resources[]) {
return dnnExecute_F64(primitive, resources);
}
template <typename Dtype> inline dnnError_t dnnExecuteAsync(
dnnPrimitive_t primitive, void *resources[]);
template <> inline dnnError_t dnnExecuteAsync<float>(
dnnPrimitive_t primitive, void *resources[]) {
return dnnExecuteAsync_F32(primitive, resources);
}
template <> inline dnnError_t dnnExecuteAsync<double>(
dnnPrimitive_t primitive, void *resources[]) {
return dnnExecuteAsync_F64(primitive, resources);
}
template <typename Dtype> inline dnnError_t dnnWaitFor(
dnnPrimitive_t primitive);
template <> inline dnnError_t dnnWaitFor<float>(
dnnPrimitive_t primitive) {
return dnnWaitFor_F32(primitive);
}
template <> inline dnnError_t dnnWaitFor<double>(
dnnPrimitive_t primitive) {
return dnnWaitFor_F64(primitive);
}
template <typename Dtype> inline dnnError_t dnnDelete(
dnnPrimitive_t primitive);
template <> inline dnnError_t dnnDelete<float>(
dnnPrimitive_t primitive) {
return dnnDelete_F32(primitive);
}
template <> inline dnnError_t dnnDelete<double>(
dnnPrimitive_t primitive) {
return dnnDelete_F64(primitive);
}
template <typename Dtype> inline dnnError_t dnnConversionCreate(
dnnPrimitive_t* pConversion, const dnnLayout_t from, const dnnLayout_t to);
template <> inline dnnError_t dnnConversionCreate<float>(
dnnPrimitive_t* pConversion, const dnnLayout_t from, const dnnLayout_t to) {
return dnnConversionCreate_F32(pConversion, from, to);
}
template <> inline dnnError_t dnnConversionCreate<double>(
dnnPrimitive_t* pConversion, const dnnLayout_t from, const dnnLayout_t to) {
return dnnConversionCreate_F64(pConversion, from, to);
}
template <typename Dtype> inline dnnError_t dnnConversionExecute(
dnnPrimitive_t conversion, void *from, void *to);
template <> inline dnnError_t dnnConversionExecute<float>(
dnnPrimitive_t conversion, void *from, void *to) {
return dnnConversionExecute_F32(conversion, from, to);
}
template <> inline dnnError_t dnnConversionExecute<double>(
dnnPrimitive_t conversion, void *from, void *to) {
return dnnConversionExecute_F64(conversion, from, to);
}
template <typename Dtype> inline dnnError_t dnnConvolutionCreateForward(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnConvolutionCreateForward<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateForward_F32(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnConvolutionCreateForward<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateForward_F64(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnConvolutionCreateForwardBias(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnConvolutionCreateForwardBias<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateForwardBias_F32(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnConvolutionCreateForwardBias<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateForwardBias_F64(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnConvolutionCreateBackwardData(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnConvolutionCreateBackwardData<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateBackwardData_F32(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnConvolutionCreateBackwardData<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateBackwardData_F64(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnConvolutionCreateBackwardFilter(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnConvolutionCreateBackwardFilter<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateBackwardFilter_F32(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnConvolutionCreateBackwardFilter<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t srcSize[], const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnConvolutionCreateBackwardFilter_F64(
pConvolution,
attributes,
algorithm,
dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnConvolutionCreateBackwardBias(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t dstSize[]);
template <> inline dnnError_t dnnConvolutionCreateBackwardBias<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t dstSize[]) {
return dnnConvolutionCreateBackwardBias_F32(
pConvolution,
attributes,
algorithm,
dimension, dstSize);
}
template <> inline dnnError_t dnnConvolutionCreateBackwardBias<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t dimension, const size_t dstSize[]) {
return dnnConvolutionCreateBackwardBias_F64(
pConvolution,
attributes,
algorithm,
dimension, dstSize);
}
template <typename Dtype> inline dnnError_t dnnGroupsConvolutionCreateForward(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnGroupsConvolutionCreateForward<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateForward_F32(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnGroupsConvolutionCreateForward<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateForward_F64(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnGroupsConvolutionCreateForwardBias(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnGroupsConvolutionCreateForwardBias<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateForwardBias_F32(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnGroupsConvolutionCreateForwardBias<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateForwardBias_F64(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnGroupsConvolutionCreateBackwardData(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnGroupsConvolutionCreateBackwardData<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateBackwardData_F32(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnGroupsConvolutionCreateBackwardData<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateBackwardData_F64(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnGroupsConvolutionCreateBackwardFilter(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnGroupsConvolutionCreateBackwardFilter<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateBackwardFilter_F32(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <> inline dnnError_t dnnGroupsConvolutionCreateBackwardFilter<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t srcSize[],
const size_t dstSize[], const size_t filterSize[],
const size_t convolutionStrides[], const int inputOffset[], const dnnBorder_t border_type) {
return dnnGroupsConvolutionCreateBackwardFilter_F64(
pConvolution,
attributes,
algorithm,
groups, dimension, srcSize, dstSize, filterSize,
convolutionStrides, inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnGroupsConvolutionCreateBackwardBias(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t dstSize[]);
template <> inline dnnError_t dnnGroupsConvolutionCreateBackwardBias<float>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t dstSize[]) {
return dnnGroupsConvolutionCreateBackwardBias_F32(
pConvolution,
attributes,
algorithm,
groups, dimension, dstSize);
}
template <> inline dnnError_t dnnGroupsConvolutionCreateBackwardBias<double>(
dnnPrimitive_t* pConvolution,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t algorithm,
size_t groups, size_t dimension, const size_t dstSize[]) {
return dnnGroupsConvolutionCreateBackwardBias_F64(
pConvolution,
attributes,
algorithm,
groups, dimension, dstSize);
}
template <typename Dtype> inline dnnError_t dnnReLUCreateForward(
dnnPrimitive_t* pRelu,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float negativeSlope);
template <> inline dnnError_t dnnReLUCreateForward<float>(
dnnPrimitive_t* pRelu,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float negativeSlope) {
return dnnReLUCreateForward_F32(
pRelu,
attributes,
dataLayout, negativeSlope);
}
template <> inline dnnError_t dnnReLUCreateForward<double>(
dnnPrimitive_t* pRelu,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float negativeSlope) {
return dnnReLUCreateForward_F64(
pRelu,
attributes,
dataLayout, negativeSlope);
}
template <typename Dtype> inline dnnError_t dnnReLUCreateBackward(
dnnPrimitive_t* pRelu,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t diffLayout, const dnnLayout_t dataLayout, float negativeSlope);
template <> inline dnnError_t dnnReLUCreateBackward<float>(
dnnPrimitive_t* pRelu,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t diffLayout, const dnnLayout_t dataLayout, float negativeSlope) {
return dnnReLUCreateBackward_F32(
pRelu,
attributes,
diffLayout, dataLayout, negativeSlope);
}
template <> inline dnnError_t dnnReLUCreateBackward<double>(
dnnPrimitive_t* pRelu,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t diffLayout, const dnnLayout_t dataLayout, float negativeSlope) {
return dnnReLUCreateBackward_F64(
pRelu,
attributes,
diffLayout, dataLayout, negativeSlope);
}
template <typename Dtype> inline dnnError_t dnnLRNCreateForward(
dnnPrimitive_t* pLrn,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, size_t kernel_size, float alpha, float beta, float k);
template <> inline dnnError_t dnnLRNCreateForward<float>(
dnnPrimitive_t* pLrn,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, size_t kernel_size, float alpha, float beta, float k) {
return dnnLRNCreateForward_F32(
pLrn,
attributes,
dataLayout, kernel_size, alpha, beta, k);
}
template <> inline dnnError_t dnnLRNCreateForward<double>(
dnnPrimitive_t* pLrn,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, size_t kernel_size, float alpha, float beta, float k) {
return dnnLRNCreateForward_F64(
pLrn,
attributes,
dataLayout, kernel_size, alpha, beta, k);
}
template <typename Dtype> inline dnnError_t dnnLRNCreateBackward(
dnnPrimitive_t* pLrn,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t diffLayout, const dnnLayout_t dataLayout,
size_t kernel_size, float alpha, float beta, float k);
template <> inline dnnError_t dnnLRNCreateBackward<float>(
dnnPrimitive_t* pLrn,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t diffLayout, const dnnLayout_t dataLayout,
size_t kernel_size, float alpha, float beta, float k) {
return dnnLRNCreateBackward_F32(
pLrn,
attributes,
diffLayout, dataLayout, kernel_size, alpha, beta, k);
}
template <> inline dnnError_t dnnLRNCreateBackward<double>(
dnnPrimitive_t* pLrn,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t diffLayout, const dnnLayout_t dataLayout,
size_t kernel_size, float alpha, float beta, float k) {
return dnnLRNCreateBackward_F64(
pLrn,
attributes,
diffLayout, dataLayout, kernel_size, alpha, beta, k);
}
template <typename Dtype> inline dnnError_t dnnPoolingCreateForward(
dnnPrimitive_t* pPooling,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t op,
const dnnLayout_t srcLayout,
const size_t kernelSize[], const size_t kernelStride[],
const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnPoolingCreateForward<float>(
dnnPrimitive_t* pPooling,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t op,
const dnnLayout_t srcLayout,
const size_t kernelSize[], const size_t kernelStride[],
const int inputOffset[], const dnnBorder_t border_type) {
return dnnPoolingCreateForward_F32(
pPooling,
attributes,
op,
srcLayout,
kernelSize, kernelStride,
inputOffset, border_type);
}
template <> inline dnnError_t dnnPoolingCreateForward<double>(
dnnPrimitive_t* pPooling,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t op,
const dnnLayout_t srcLayout,
const size_t kernelSize[], const size_t kernelStride[],
const int inputOffset[], const dnnBorder_t border_type) {
return dnnPoolingCreateForward_F64(
pPooling,
attributes,
op,
srcLayout,
kernelSize, kernelStride,
inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnPoolingCreateBackward(
dnnPrimitive_t* pPooling,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t op,
const dnnLayout_t srcLayout,
const size_t kernelSize[], const size_t kernelStride[],
const int inputOffset[], const dnnBorder_t border_type);
template <> inline dnnError_t dnnPoolingCreateBackward<float>(
dnnPrimitive_t* pPooling,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t op,
const dnnLayout_t srcLayout,
const size_t kernelSize[], const size_t kernelStride[],
const int inputOffset[], const dnnBorder_t border_type) {
return dnnPoolingCreateBackward_F32(
pPooling,
attributes,
op,
srcLayout,
kernelSize, kernelStride,
inputOffset, border_type);
}
template <> inline dnnError_t dnnPoolingCreateBackward<double>(
dnnPrimitive_t* pPooling,
dnnPrimitiveAttributes_t attributes,
dnnAlgorithm_t op,
const dnnLayout_t srcLayout,
const size_t kernelSize[], const size_t kernelStride[],
const int inputOffset[], const dnnBorder_t border_type) {
return dnnPoolingCreateBackward_F64(
pPooling,
attributes,
op,
srcLayout,
kernelSize, kernelStride,
inputOffset, border_type);
}
template <typename Dtype> inline dnnError_t dnnConcatCreate(
dnnPrimitive_t *pConcat,
dnnPrimitiveAttributes_t attributes,
const size_t N,
dnnLayout_t src[]);
template <> inline dnnError_t dnnConcatCreate<float>(
dnnPrimitive_t *pConcat,
dnnPrimitiveAttributes_t attributes,
const size_t N,
dnnLayout_t src[]) {
return dnnConcatCreate_F32(
pConcat,
attributes,
N,
src);
}
template <> inline dnnError_t dnnConcatCreate<double>(
dnnPrimitive_t *pConcat,
dnnPrimitiveAttributes_t attributes,
const size_t N,
dnnLayout_t src[]) {
return dnnConcatCreate_F64(
pConcat,
attributes,
N,
src);
}
template <typename Dtype> inline dnnError_t dnnSplitCreate(
dnnPrimitive_t *pSplit,
dnnPrimitiveAttributes_t attributes,
const size_t N,
dnnLayout_t src,
size_t dst[]);
template <> inline dnnError_t dnnSplitCreate<float>(
dnnPrimitive_t *pSplit,
dnnPrimitiveAttributes_t attributes,
const size_t N,
dnnLayout_t src,
size_t dst[]) {
return dnnSplitCreate_F32(
pSplit,
attributes,
N,
src,
dst);
}
template <> inline dnnError_t dnnSplitCreate<double>(
dnnPrimitive_t *pSplit,
dnnPrimitiveAttributes_t attributes,
const size_t N,
dnnLayout_t src,
size_t dst[]) {
return dnnSplitCreate_F64(
pSplit,
attributes,
N,
src,
dst);
}
template <typename Dtype> inline dnnError_t dnnSumCreate(
dnnPrimitive_t *pSum,
dnnPrimitiveAttributes_t attributes,
const size_t nSummands, dnnLayout_t layout, Dtype *coefficients);
template <> inline dnnError_t dnnSumCreate<float>(
dnnPrimitive_t *pSum,
dnnPrimitiveAttributes_t attributes,
const size_t nSummands, dnnLayout_t layout, float *coefficients) {
return dnnSumCreate_F32(
pSum,
attributes,
nSummands,
layout, coefficients);
}
template <> inline dnnError_t dnnSumCreate<double>(
dnnPrimitive_t *pSum,
dnnPrimitiveAttributes_t attributes,
const size_t nSummands, dnnLayout_t layout, double *coefficients) {
return dnnSumCreate_F64(
pSum,
attributes,
nSummands,
layout, coefficients);
}
template <typename Dtype> inline dnnError_t dnnBatchNormalizationCreateForward_v2(
dnnPrimitive_t* pBatchNormalization,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float eps,
int flags);
template <> inline dnnError_t dnnBatchNormalizationCreateForward_v2<float>(
dnnPrimitive_t* pBatchNormalization,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float eps,
int flags) {
return dnnBatchNormalizationCreateForward_v2_F32(
pBatchNormalization,
attributes,
dataLayout, eps, flags);
}
template <> inline dnnError_t dnnBatchNormalizationCreateForward_v2<double>(
dnnPrimitive_t* pBatchNormalization,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float eps,
int flags) {
return dnnBatchNormalizationCreateForward_v2_F64(
pBatchNormalization,
attributes,
dataLayout, eps, flags);
}
template <typename Dtype> inline dnnError_t dnnBatchNormalizationCreateBackward_v2(
dnnPrimitive_t* pBatchNormalization,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float eps,
int flags);
template <> inline dnnError_t dnnBatchNormalizationCreateBackward_v2<float>(
dnnPrimitive_t* pBatchNormalization,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float eps,
int flags) {
return dnnBatchNormalizationCreateBackward_v2_F32(
pBatchNormalization,
attributes,
dataLayout, eps, flags);
}
template <> inline dnnError_t dnnBatchNormalizationCreateBackward_v2<double>(
dnnPrimitive_t* pBatchNormalization,
dnnPrimitiveAttributes_t attributes,
const dnnLayout_t dataLayout, float eps,
int flags) {
return dnnBatchNormalizationCreateBackward_v2_F64(
pBatchNormalization,
attributes,
dataLayout, eps, flags);
}
template <typename Dtype> inline dnnError_t dnnInnerProductCreateForward(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels);
template <> inline dnnError_t dnnInnerProductCreateForward<float>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateForward_F32(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <> inline dnnError_t dnnInnerProductCreateForward<double>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateForward_F64(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <typename Dtype> inline dnnError_t dnnInnerProductCreateForwardBias(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels);
template <> inline dnnError_t dnnInnerProductCreateForwardBias<float>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateForwardBias_F32(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <> inline dnnError_t dnnInnerProductCreateForwardBias<double>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateForwardBias_F64(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <typename Dtype> inline dnnError_t dnnInnerProductCreateBackwardData(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels);
template <> inline dnnError_t dnnInnerProductCreateBackwardData<float>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateBackwardData_F32(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <> inline dnnError_t dnnInnerProductCreateBackwardData<double>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateBackwardData_F64(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <typename Dtype> inline dnnError_t dnnInnerProductCreateBackwardFilter(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels);
template <> inline dnnError_t dnnInnerProductCreateBackwardFilter<float>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateBackwardFilter_F32(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <> inline dnnError_t dnnInnerProductCreateBackwardFilter<double>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t srcSize[],
size_t outputChannels) {
return dnnInnerProductCreateBackwardFilter_F64(pInnerProduct,
attributes, dimensions,
srcSize, outputChannels);
}
template <typename Dtype> inline dnnError_t dnnInnerProductCreateBackwardBias(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t dstSize[]);
template <> inline dnnError_t dnnInnerProductCreateBackwardBias<float>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t dstSize[]) {
return dnnInnerProductCreateBackwardBias_F32(pInnerProduct,
attributes, dimensions,
dstSize);
}
template <> inline dnnError_t dnnInnerProductCreateBackwardBias<double>(
dnnPrimitive_t *pInnerProduct,
dnnPrimitiveAttributes_t attributes,
size_t dimensions,
const size_t dstSize[]) {
return dnnInnerProductCreateBackwardBias_F64(pInnerProduct,
attributes, dimensions,
dstSize);
}
#endif // #MXNET_USE_MKL2017 == 1
#endif // MXNET_OPERATOR_MKL_MKL_CPPWRAPPER_H_