INLINE_LOOPS for windows
Signed-off-by: raver119 <raver119@gmail.com>
This commit is contained in:
		
							parent
							
								
									1d96bb9e6e
								
							
						
					
					
						commit
						f05c6ee139
					
				| @ -22,8 +22,8 @@ if (APPLE) | ||||
| elseif(WIN32) | ||||
|     set(X86_BUILD true) | ||||
|     if (NOT CUDA_BLAS) | ||||
|         set(CMAKE_CXX_FLAGS_RELEASE  "-O3 -fPIC -std=c++11 -fmax-errors=2 -D_RELEASE=true") | ||||
|         set(CMAKE_CXX_FLAGS_DEBUG  " -g -fPIC -std=c++11 -fmax-errors=2") | ||||
|         set(CMAKE_CXX_FLAGS_RELEASE  "-O3 -fPIC -std=c++11 -fmax-errors=2 -DINLINE_LOOPS -D_RELEASE=true") | ||||
|         set(CMAKE_CXX_FLAGS_DEBUG  " -g -fPIC -std=c++11 -DINLINE_LOOPS -fmax-errors=2") | ||||
|     else() | ||||
|         set(CMAKE_CXX_FLAGS_RELEASE  "-D_RELEASE=true /wd4804") | ||||
|         set(CMAKE_CXX_FLAGS_DEBUG  "  /FS /EHsc /wd4661 /wd4804 /wd4267 /wd4244 /wd4251 /wd4305") | ||||
|  | ||||
| @ -29,23 +29,31 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, int* dims, int dimsLen, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3All(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, int* dims, int dimsLen, Y *extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapperAll(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Y* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3All, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo,  xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT Reduction3Loops, , LIBND4J_TYPES, FLOAT_TYPES_0); | ||||
|  | ||||
| @ -29,23 +29,31 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, int* dims, int dimsLen, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3All(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, int* dims, int dimsLen, Y *extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapperAll(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Y* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3All, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo,  xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT Reduction3Loops, , LIBND4J_TYPES, FLOAT_TYPES_1); | ||||
|  | ||||
| @ -29,23 +29,31 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, int* dims, int dimsLen, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3All(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, int* dims, int dimsLen, Y *extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapperAll(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Y* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3All, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo,  xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT Reduction3Loops, , LIBND4J_TYPES, FLOAT_TYPES_2); | ||||
|  | ||||
| @ -29,23 +29,31 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, int* dims, int dimsLen, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void Reduction3Loops<X,Z>::innerloopReduce3All(X* x, Nd4jLong* xShapeInfo, X* y, Nd4jLong* yShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Z* extraParams) { | ||||
|          Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #ifndef INLINE_LOOPS | ||||
|         Reduction3Loops<X,Z>::template loopReduce3All<OpType>(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, int* dims, int dimsLen, Y *extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo, dims, dimsLen, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void Reduction3Loops<X, Y>::wrapperAll(const int opNum, X *x, Nd4jLong *xShapeInfo, X *y, Nd4jLong *yShapeInfo, Y *z, Nd4jLong *zShapeInfo, Nd4jLong* xTadShapeInfo, Nd4jLong* xTadOffsets, Nd4jLong* yTadShapeInfo, Nd4jLong* yTadOffsets, Y* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce3All, PARAMS(x, xShapeInfo, y, yShapeInfo, z, zShapeInfo,  xTadShapeInfo, xTadOffsets, yTadShapeInfo, yTadOffsets, extraParams), REDUCE3_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT Reduction3Loops, , LIBND4J_TYPES, FLOAT_TYPES_3); | ||||
|  | ||||
| @ -19,3 +19,4 @@ | ||||
| //
 | ||||
| 
 | ||||
| #include <helpers/Loops.h> | ||||
| #include <op_boilerplate.h> | ||||
|  | ||||
| @ -27,7 +27,9 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void ReductionBoolLoops<X, Z>::innerloopReduce(X* x, Nd4jLong* xShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, X* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,Z,X>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
| @ -35,7 +37,9 @@ namespace nd4j { | ||||
|                                             Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                             Nd4jLong *tadOffsets, | ||||
|                                             X *extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams), REDUCE_BOOL_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT ReductionBoolLoops, , LIBND4J_TYPES, BOOL_TYPES); | ||||
|  | ||||
| @ -29,15 +29,18 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void ReductionFloatLoops<X, Z>::innerloopReduce(X * x, Nd4jLong* xShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, Z* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,Z,Z>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void ReductionFloatLoops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, Y *z, | ||||
|                                                   Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                                   Nd4jLong *tadOffsets, Y *extraParams) { | ||||
| 
 | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams ), REDUCE_FLOAT_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT ReductionFloatLoops, , LIBND4J_TYPES, FLOAT_TYPES_0); | ||||
|  | ||||
| @ -29,15 +29,18 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void ReductionFloatLoops<X, Z>::innerloopReduce(X * x, Nd4jLong* xShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, Z* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,Z,Z>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void ReductionFloatLoops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, Y *z, | ||||
|                                                   Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                                   Nd4jLong *tadOffsets, Y *extraParams) { | ||||
| 
 | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams ), REDUCE_FLOAT_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT ReductionFloatLoops, , LIBND4J_TYPES, FLOAT_TYPES_1); | ||||
|  | ||||
| @ -29,15 +29,18 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void ReductionFloatLoops<X, Z>::innerloopReduce(X * x, Nd4jLong* xShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, Z* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,Z,Z>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void ReductionFloatLoops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, Y *z, | ||||
|                                                   Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                                   Nd4jLong *tadOffsets, Y *extraParams) { | ||||
| 
 | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams ), REDUCE_FLOAT_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT ReductionFloatLoops, , LIBND4J_TYPES, FLOAT_TYPES_2); | ||||
|  | ||||
| @ -29,15 +29,18 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void ReductionFloatLoops<X, Z>::innerloopReduce(X * x, Nd4jLong* xShapeInfo, Z* z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, Z* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,Z,Z>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void ReductionFloatLoops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, Y *z, | ||||
|                                                   Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                                   Nd4jLong *tadOffsets, Y *extraParams) { | ||||
| 
 | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams ), REDUCE_FLOAT_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT ReductionFloatLoops, , LIBND4J_TYPES, FLOAT_TYPES_3); | ||||
|  | ||||
| @ -34,15 +34,18 @@ namespace nd4j { | ||||
|     template<typename X, typename Z> | ||||
|     template <typename OpType> | ||||
|     void ReductionLongLoops<X, Z>::innerloopReduce(X * x, Nd4jLong* xShapeInfo, Z *z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, X* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,Z,X>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X, typename Y> | ||||
|     void ReductionLongLoops<X, Y>::wrapper(const int opNum, X *x, Nd4jLong *xShapeInfo, Y *z, | ||||
|                                             Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                             Nd4jLong *tadOffsets, X *extraParams) { | ||||
| 
 | ||||
| #ifndef INLINE_LOOPS | ||||
|         DISPATCH_BY_OPNUM_TT(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams ), REDUCE_LONG_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_DOUBLE_TEMPLATE(template class ND4J_EXPORT ReductionLongLoops, , LIBND4J_TYPES, LONG_TYPES); | ||||
|  | ||||
| @ -27,7 +27,9 @@ namespace nd4j { | ||||
|     template<typename X> | ||||
|     template <typename OpType> | ||||
|     void ReductionSameLoops<X>::innerloopReduce(X* x, Nd4jLong* xShapeInfo, X* z, Nd4jLong* zShapeInfo, Nd4jLong* tadShapeInfo, Nd4jLong* tadOffsets, X* extraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         ReductionLoops<X,X,X>::template loopReduce<OpType>(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     template<typename X> | ||||
| @ -35,11 +37,13 @@ namespace nd4j { | ||||
|                                            Nd4jLong *zShapeInfo, Nd4jLong *tadShapeInfo, | ||||
|                                            Nd4jLong *tadOffsets, | ||||
|                                            X *vextraParams) { | ||||
| #ifndef INLINE_LOOPS | ||||
|         auto x = reinterpret_cast<X *>(vx); | ||||
|         auto z = reinterpret_cast<X *>(vz); | ||||
|         auto extraParams = reinterpret_cast<X *>(vextraParams); | ||||
| 
 | ||||
|         DISPATCH_BY_OPNUM_T(innerloopReduce, PARAMS(x, xShapeInfo, z, zShapeInfo, tadShapeInfo, tadOffsets, extraParams), REDUCE_SAME_OPS); | ||||
| #endif | ||||
|     } | ||||
| 
 | ||||
|     BUILD_SINGLE_TEMPLATE(template class ReductionSameLoops, , LIBND4J_TYPES); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user