device_batchnorm_forward.hpp Source File

device_batchnorm_forward.hpp Source File#

Composable Kernel: 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
12namespace ck {
13namespace tensor_operation {
14namespace device {
15
16template <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
51template <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>
60using 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
Definition convolution_backward_data_specialization.hpp:8
std::unique_ptr< DeviceBatchNormFwd< XDataType, YDataType, AccDataType, ScaleDataType, BiasDataType, MeanVarDataType, YElementwiseOp, Rank, NumBatchNormReduceDim > > DeviceBatchNormFwdPtr
Definition device_batchnorm_forward.hpp:60
Definition convolution_backward_data_specialization.hpp:7
Definition ck.hpp:268
int32_t index_t
Definition ck.hpp:299
Definition device_batchnorm_forward.hpp:26
virtual std::unique_ptr< BaseInvoker > MakeInvokerPointer()=0
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