Functions to acceleratе FusedLayer in Synet Framework. More...
Functions | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward0 (const float *src, const float *bias, const float *scale, size_t channels, size_t spatial, float *dst, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 0). More... | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward1 (const float *src, const float *bias0, const float *scale1, const float *bias1, size_t channels, size_t spatial, float *dst, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 1). More... | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward2 (const float *src, const float *scale, const float *bias, size_t channels, size_t spatial, const float *slope, float *dst, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 2). More... | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward3 (const float *src, const float *scale, const float *bias, size_t channels, size_t spatial, float *dst, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 3). More... | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward4 (const float *src, const float *bias0, const float *scale1, const float *bias1, size_t channels, size_t spatial, float *dst, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 4). More... | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward8 (const float *src0, const float *src1, const float *src2, size_t channels, size_t spatial, float *dst, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 8). More... | |
SIMD_API SIMD_DEPRECATED void | SimdSynetFusedLayerForward9 (const float *src0, const float *src1, const float *scale, const float *bias, size_t channels0, size_t channels1, size_t spatial, float *dst0, float *dst1, SimdTensorFormatType format) |
This function is used for forward propagation of FusedLayer (type 9). More... | |
Detailed Description
Functions to acceleratе FusedLayer in Synet Framework.
Function Documentation
◆ SimdSynetFusedLayerForward0()
void SimdSynetFusedLayerForward0 | ( | const float * | src, |
const float * | bias, | ||
const float * | scale, | ||
size_t | channels, | ||
size_t | spatial, | ||
float * | dst, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 0).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels; ++c) for(s = 0; s < spatial; ++s) { o = c*spatial + s; x = src[o] + bias[c]; dst[o] = (x - abs(x))*scale[c] + max(0, x); }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src - a pointer to the 32-bit float array with input image tensor. The size of the array is equal to channels * spatial. [in] bias - a pointer to the 32-bit float array with bias coefficients. The size of the array is equal to channels. [in] scale - a pointer to the 32-bit float array with scale coefficients. The size of the array is equal to channels. [in] channels - a number of channels in the (input/output) image tensor. [in] spatial - a spatial size of (input/output) image tensor. [out] dst - a pointer to the 32-bit float array with output image tensor. The size of the array is equal to channels * spatial. [in] format - a format of (input/output) image tensor.
◆ SimdSynetFusedLayerForward1()
void SimdSynetFusedLayerForward1 | ( | const float * | src, |
const float * | bias0, | ||
const float * | scale1, | ||
const float * | bias1, | ||
size_t | channels, | ||
size_t | spatial, | ||
float * | dst, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 1).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels; ++c) for(s = 0; s < spatial; ++s) { o = c*spatial + s; x = src[o] + bias0[c]; dst[o] = max(0, -x)*scale1[c] + bias1[c] + max(0, x); }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src - a pointer to the 32-bit float array with input image tensor. The size of the array is equal to channels * spatial. [in] bias0 - a pointer to the 32-bit float array with bias0 coefficients. The size of the array is equal to channels. [in] scale1 - a pointer to the 32-bit float array with scale1 coefficients. The size of the array is equal to channels. [in] bias1 - a pointer to the 32-bit float array with bias1 coefficients. The size of the array is equal to channels. [in] channels - a number of channels in the (input/output) image tensor. [in] spatial - a spatial size of (input/output) image tensor. [out] dst - a pointer to the 32-bit float array with output image tensor. The size of the array is equal to channels * spatial. [in] format - a format of (input/output) image tensor.
◆ SimdSynetFusedLayerForward2()
void SimdSynetFusedLayerForward2 | ( | const float * | src, |
const float * | scale, | ||
const float * | bias, | ||
size_t | channels, | ||
size_t | spatial, | ||
const float * | slope, | ||
float * | dst, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 2).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels; ++c) for(s = 0; s < spatial; ++s) { o = c*spatial + s; x = src[o]*scale[c] + bias[c]; dst[o] = max(0, x) + min(0, x)*slope[0]; }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src - a pointer to the 32-bit float array with input image tensor. The size of the array is equal to channels * spatial. [in] scale - a pointer to the 32-bit float array with scale coefficients. The size of the array is equal to channels. [in] bias - a pointer to the 32-bit float array with bias coefficients. The size of the array is equal to channels. [in] channels - a number of channels in the (input/output) image tensor. [in] spatial - a spatial size of (input/output) image tensor. [in] slope - a pointer to the 32-bit float slope coefficient. [out] dst - a pointer to the 32-bit float array with output image tensor. The size of the array is equal to channels * spatial. [in] format - a format of (input/output) image tensor.
◆ SimdSynetFusedLayerForward3()
void SimdSynetFusedLayerForward3 | ( | const float * | src, |
const float * | scale, | ||
const float * | bias, | ||
size_t | channels, | ||
size_t | spatial, | ||
float * | dst, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 3).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels; ++c) for(s = 0; s < spatial; ++s) { o = c*spatial + s; x = src[o] + bias[c]; dst[o] = max(0, x) + min(0, x)*scale[c]; }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src - a pointer to the 32-bit float array with input image tensor. The size of the array is equal to channels * spatial. [in] bias - a pointer to the 32-bit float array with bias coefficients. The size of the array is equal to channels. [in] scale - a pointer to the 32-bit float array with scale coefficients. The size of the array is equal to channels. [in] channels - a number of channels in the (input/output) image tensor. [in] spatial - a spatial size of (input/output) image tensor. [out] dst - a pointer to the 32-bit float array with output image tensor. The size of the array is equal to channels * spatial. [in] format - a format of (input/output) image tensor.
◆ SimdSynetFusedLayerForward4()
void SimdSynetFusedLayerForward4 | ( | const float * | src, |
const float * | bias0, | ||
const float * | scale1, | ||
const float * | bias1, | ||
size_t | channels, | ||
size_t | spatial, | ||
float * | dst, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 4).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels; ++c) for(s = 0; s < spatial; ++s) { x = src[c*spatial + s] + bias0[c]; dst[c*spatial + s] = std::max((T)0, x); dst[(c + channels)*spatial + s] = std::max((T)0, x*scale1[0] + bias1[0]); }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src - a pointer to the 32-bit float array with input image tensor. The size of the array is is equal to channels * spatial. [in] bias0 - a pointer to the 32-bit float array with bias0 coefficients. The size of the array is is equal to channels. [in] scale1 - a pointer to the 32-bit float array with scale1 coefficients. The size of the array is 1. [in] bias1 - a pointer to the 32-bit float array with bias1 coefficients. The size of the array is 1. [in] channels - a number of channels in the input image tensor. Output image tensor has 2 * channels. [in] spatial - a spatial size of (input/output) image tensor. [out] dst - a pointer to the 32-bit float array with output image tensor. The size of the array is is equal to 2 * channels * spatial. [in] format - a format of (input/output) image tensor.
◆ SimdSynetFusedLayerForward8()
void SimdSynetFusedLayerForward8 | ( | const float * | src0, |
const float * | src1, | ||
const float * | src2, | ||
size_t | channels, | ||
size_t | spatial, | ||
float * | dst, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 8).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels; ++c) for(s = 0; s < spatial; ++s) { o = c*spatial + s; dst[o] = src0[o] + src1[o]*src2[c]; }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src0 - a pointer to the first input 32-bit float array. The size of the array is equal to channels * spatial. [in] src1 - a pointer to the second input 32-bit float array. The size of the array is equal to channels * spatial. [in] src2 - a pointer to the third input 32-bit float array. The size of the array is equal to channels. [in] channels - a number of channels in the (input/output) image tensor. [in] spatial - a spatial size of (input/output) image tensor. [out] dst - a pointer to the output 32-bit float array. The size of the array is equal to channels * spatial. [in] format - a format of (input/output) image tensor.
◆ SimdSynetFusedLayerForward9()
void SimdSynetFusedLayerForward9 | ( | const float * | src0, |
const float * | src1, | ||
const float * | scale, | ||
const float * | bias, | ||
size_t | channels0, | ||
size_t | channels1, | ||
size_t | spatial, | ||
float * | dst0, | ||
float * | dst1, | ||
SimdTensorFormatType | format | ||
) |
This function is used for forward propagation of FusedLayer (type 9).
Algorithm's details (example for NCHW tensor format):
for(c = 0; c < channels0; ++c) for(s = 0; s < spatial; ++s) { dst0[c*spatial + s] = max(0, src0[c*spatial + s]*scale[c] + bias[c]); if(dst1) dst1[c*spatial + s] = src0[c*spatial + s]; } for(c = 0; c < channels1; ++c) for(s = 0; s < spatial; ++s) { dst0[(c + channels0)*spatial + s] = max(0, src1[c*spatial + s]*scale[channels0 + c] + bias[channels0 + c]); if(dst1) dst1[(c + channels0)*spatial + s] = src1[c*spatial + s]; }
- Note
- This function is used in Synet Framework.
- Warning
- This function is deprecatedand can be removed in the future.
- Parameters
-
[in] src0 - a pointer to the first input 32-bit float array. The size of the array is equal to channels0 * spatial. [in] src1 - a pointer to the second input 32-bit float array. The size of the array is equal to channels1 * spatial. [in] scale - a pointer to the 32-bit float array with scale coefficients. The size of the array is equal to channels0 + channels1. [in] bias - a pointer to the 32-bit float array with bias coefficients. The size of the array is equal to channels0 + channels1. [in] channels0 - a number of channels in the first input image tensor. [in] channels1 - a number of channels in the second input image tensor. [in] spatial - a spatial size of (input/output) image tensor. [out] dst0 - a pointer to the first output 32-bit float array. The size of the array is equal to (channels0 + channels1) * spatial. [out] dst1 - a pointer to the second output 32-bit float array. The size of the array is equal to (channels0 + channels1) * spatial. The pointer can be NULL. [in] format - a format of (input/output) image tensor.