/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck/tensor_operation/gpu/device/device_batchnorm_forward.hpp Source File

/home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck/tensor_operation/gpu/device/device_batchnorm_forward.hpp Source File#

Composable Kernel: /home/docs/checkouts/readthedocs.org/user_builds/advanced-micro-devices-composable-kernel/checkouts/develop/include/ck/tensor_operation/gpu/device/device_batchnorm_forward.hpp Source File
device_batchnorm_forward.hpp
Go to the documentation of this file.
1 // SPDX-License-Identifier: MIT
2 // Copyright (c) 2018-2023, Advanced Micro Devices, Inc. All rights reserved.
3 
4 #pragma once
5 
6 #include <array>
7 #include <memory>
8 
9 #include "ck/ck.hpp"
11 
12 namespace ck {
13 namespace tensor_operation {
14 namespace device {
15 
16 template <typename XDataType,
17  typename YDataType,
18  typename AccDataType,
19  typename ScaleDataType,
20  typename BiasDataType,
21  typename MeanVarDataType,
22  typename YElementwiseOp,
23  index_t Rank,
24  index_t NumBatchNormReduceDim>
26 {
27  virtual std::unique_ptr<BaseArgument> MakeArgumentPointer(
28  const std::array<index_t, Rank> xyLengths,
29  const std::array<index_t, Rank> xStrides,
30  const std::array<index_t, Rank> yStrides,
31  const std::array<int, NumBatchNormReduceDim> reduceDims,
32  const std::array<index_t, Rank - NumBatchNormReduceDim> bnScaleBiasMeanVarLengths,
33  const std::array<index_t, Rank - NumBatchNormReduceDim> bnScaleStrides,
34  const std::array<index_t, Rank - NumBatchNormReduceDim> bnBiasStrides,
35  const std::array<index_t, Rank - NumBatchNormReduceDim> bnMeanVarStrides,
36  const void* p_x,
37  const void* bnScale,
38  const void* bnBias,
39  double epsilon,
40  const YElementwiseOp y_elementwise_op,
41  void* p_y,
42  void* resultSaveMean,
43  void* resultSaveInvVariance,
44  double exponentialAverageFactor,
45  void* resultRunningMean,
46  void* resultRunningVariance) = 0;
47 
48  virtual std::unique_ptr<BaseInvoker> MakeInvokerPointer() = 0;
49 };
50 
51 template <typename XDataType,
52  typename YDataType,
53  typename AccDataType,
54  typename ScaleDataType,
55  typename BiasDataType,
56  typename MeanVarDataType,
57  typename YElementwiseOp,
58  index_t Rank,
59  index_t NumBatchNormReduceDim>
60 using DeviceBatchNormFwdPtr = std::unique_ptr<DeviceBatchNormFwd<XDataType,
61  YDataType,
62  AccDataType,
63  ScaleDataType,
64  BiasDataType,
65  MeanVarDataType,
66  YElementwiseOp,
67  Rank,
68  NumBatchNormReduceDim>>;
69 
70 } // namespace device
71 } // namespace tensor_operation
72 } // namespace ck
std::unique_ptr< DeviceBatchNormFwd< XDataType, YDataType, AccDataType, ScaleDataType, BiasDataType, MeanVarDataType, YElementwiseOp, Rank, NumBatchNormReduceDim > > DeviceBatchNormFwdPtr
Definition: device_batchnorm_forward.hpp:68
Definition: ck.hpp:267
int32_t index_t
Definition: ck.hpp:298
Definition: device_base.hpp:77
Definition: device_batchnorm_forward.hpp:26
virtual std::unique_ptr< BaseArgument > MakeArgumentPointer(const std::array< index_t, Rank > xyLengths, const std::array< index_t, Rank > xStrides, const std::array< index_t, Rank > yStrides, const std::array< int, NumBatchNormReduceDim > reduceDims, const std::array< index_t, Rank - NumBatchNormReduceDim > bnScaleBiasMeanVarLengths, const std::array< index_t, Rank - NumBatchNormReduceDim > bnScaleStrides, const std::array< index_t, Rank - NumBatchNormReduceDim > bnBiasStrides, const std::array< index_t, Rank - NumBatchNormReduceDim > bnMeanVarStrides, const void *p_x, const void *bnScale, const void *bnBias, double epsilon, const YElementwiseOp y_elementwise_op, void *p_y, void *resultSaveMean, void *resultSaveInvVariance, double exponentialAverageFactor, void *resultRunningMean, void *resultRunningVariance)=0
virtual std::unique_ptr< BaseInvoker > MakeInvokerPointer()=0