reduce_no_index.cpp 4.31 KB
Newer Older
Chao Liu's avatar
Chao Liu committed
1
// SPDX-License-Identifier: MIT
Mateusz Ozga's avatar
Mateusz Ozga committed
2
// Copyright (c) 2018-2024, Advanced Micro Devices, Inc. All rights reserved.
Chao Liu's avatar
Chao Liu committed
3

Chao Liu's avatar
Chao Liu committed
4
#include <getopt.h>
5

6
#include "ck/library/utility/host_common_util.hpp"
7
#include "profiler/profile_reduce_impl.hpp"
Mateusz Ozga's avatar
Mateusz Ozga committed
8
#include <gtest/gtest.h>
9
10
using namespace ck;

Mateusz Ozga's avatar
Mateusz Ozga committed
11
struct ReduceParam
12
{
Mateusz Ozga's avatar
Mateusz Ozga committed
13
14
15
16
17
18
19
20
    bool do_verification;
    bool propagateNan;
    bool useIndex;
    bool time_kernel;
    bool do_dumpout;
    int init_method;
    float alpha;
    float beta;
21
22
    std::vector<size_t> inLengths;
    std::vector<int> reduceDims;
Mateusz Ozga's avatar
Mateusz Ozga committed
23
24
    ReduceTensorOp reduceOpId;
};
25

Mateusz Ozga's avatar
Mateusz Ozga committed
26
27
28
29
std::vector<std::vector<int>> settGenericReduceDim()
{
    return {{0, 1, 2, 3}, {0, 1, 2}, {0, 1, 3}, {0, 2, 3}, {1, 2, 3}, {0}, {1}, {2}, {3}};
}
30

Mateusz Ozga's avatar
Mateusz Ozga committed
31
32
33
34
35
36
37
38
39
40
41
42
43
44
ReduceParam sett0()
{
    return {/*do_verification*/ true,
            /*propagateNan*/ false,
            /*useIndex*/ false,
            /*time_kernel*/ false,
            /*do_dumpout*/ false,
            /*init_method*/ 2,
            /*alpha*/ 1.0f,
            /*beta*/ 0.0f,
            /*inLengths*/ {64, 4, 280, 82},
            /*reduceDims*/ {0, 1, 2, 3},
            /*reduceOpId*/ ReduceTensorOp::AMAX};
}
45

Mateusz Ozga's avatar
Mateusz Ozga committed
46
47
48
49
50
51
52
template <typename T>
class ReduceNoIndexTest : public ::testing::Test
{
    protected:
    using InDataType  = std::tuple_element_t<0, T>;
    using AccDataType = std::tuple_element_t<1, T>;
    using OutDataType = std::tuple_element_t<2, T>;
53

Mateusz Ozga's avatar
Mateusz Ozga committed
54
    static std::vector<ReduceParam> params;
55

Mateusz Ozga's avatar
Mateusz Ozga committed
56
57
58
59
60
61
62
63
64
    static void SetUpTestSuite()
    {
        // set testcase variables
        ReduceParam _sett0 = sett0();
        // + reduce dims: Generic;
        // set testcase variables
        const auto settReduceDim = settGenericReduceDim();

        for(std::size_t i(0); i < settReduceDim.size(); ++i)
65
        {
Mateusz Ozga's avatar
Mateusz Ozga committed
66
67
68
69
70
71
72
73
74
75
            _sett0.reduceOpId = ReduceTensorOp::AMAX;
            _sett0.reduceDims = settReduceDim[i];
            params.push_back(_sett0);
            _sett0.reduceOpId = ReduceTensorOp::MIN;
        }
    };

    void Run()
    {
        for(auto param : this->params)
76
        {
Mateusz Ozga's avatar
Mateusz Ozga committed
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
            bool success = ck::profiler::profile_reduce_impl<InDataType, AccDataType, OutDataType>(
                param.do_verification,
                param.init_method,
                param.do_dumpout,
                param.time_kernel,
                param.inLengths,
                param.reduceDims,
                param.reduceOpId,
                param.propagateNan,
                param.useIndex,
                param.alpha,
                param.beta);
            // EXPECT_TRUE
            EXPECT_TRUE(success);
        }
    }
};
94

Mateusz Ozga's avatar
Mateusz Ozga committed
95
96
template <typename T>
std::vector<ReduceParam> ReduceNoIndexTest<T>::params = {};
97

Mateusz Ozga's avatar
Mateusz Ozga committed
98
99
100
101
102
using Reduce_float_types       = ::testing::Types<std::tuple<float, float, float>>;
using Reduce_double_types      = ::testing::Types<std::tuple<double, double, double>>;
using Reduce_int8t_types       = ::testing::Types<std::tuple<int8_t, int8_t, int8_t>>;
using Reduce_half_types        = ::testing::Types<std::tuple<ck::half_t, ck::half_t, ck::half_t>>;
using Reduce_bhalf_float_Types = ::testing::Types<std::tuple<ck::bhalf_t, float, ck::bhalf_t>>;
103

Mateusz Ozga's avatar
Mateusz Ozga committed
104
105
106
template <typename TType>
class ReduceNoIndexFloat : public ReduceNoIndexTest<TType>
{
107
108
};

Mateusz Ozga's avatar
Mateusz Ozga committed
109
110
template <typename TType>
class ReduceNoIndexDouble : public ReduceNoIndexTest<TType>
111
{
Mateusz Ozga's avatar
Mateusz Ozga committed
112
};
113

Mateusz Ozga's avatar
Mateusz Ozga committed
114
115
116
117
template <typename TType>
class ReduceNoIndexInt8 : public ReduceNoIndexTest<TType>
{
};
118

Mateusz Ozga's avatar
Mateusz Ozga committed
119
120
121
122
template <typename TType>
class ReduceNoIndexHalf : public ReduceNoIndexTest<TType>
{
};
123

Mateusz Ozga's avatar
Mateusz Ozga committed
124
125
126
template <typename TType>
class ReduceNoIndexBHalfFloat : public ReduceNoIndexTest<TType>
{
127
128
};

Mateusz Ozga's avatar
Mateusz Ozga committed
129
130
131
132
133
TYPED_TEST_SUITE(ReduceNoIndexFloat, Reduce_float_types);
TYPED_TEST_SUITE(ReduceNoIndexDouble, Reduce_double_types);
TYPED_TEST_SUITE(ReduceNoIndexInt8, Reduce_int8t_types);
TYPED_TEST_SUITE(ReduceNoIndexHalf, Reduce_half_types);
TYPED_TEST_SUITE(ReduceNoIndexBHalfFloat, Reduce_bhalf_float_Types);
134

Mateusz Ozga's avatar
Mateusz Ozga committed
135
TYPED_TEST(ReduceNoIndexFloat, ReduceNoIndexTestFloat)
136
{
Mateusz Ozga's avatar
Mateusz Ozga committed
137
138
139
    // trigger Run() -> Generic
    this->Run();
}
140

Mateusz Ozga's avatar
Mateusz Ozga committed
141
142
143
144
145
TYPED_TEST(ReduceNoIndexDouble, ReduceNoIndexTestDouble)
{
    // trigger Run() -> Generic
    this->Run();
}
146

Mateusz Ozga's avatar
Mateusz Ozga committed
147
148
149
150
151
TYPED_TEST(ReduceNoIndexInt8, ReduceNoIndexTestInt8)
{
    // trigger Run() -> Generic
    this->Run();
}
152

Mateusz Ozga's avatar
Mateusz Ozga committed
153
154
155
156
157
TYPED_TEST(ReduceNoIndexHalf, ReduceNoIndexTestHalf)
{
    // trigger Run() -> Generic
    this->Run();
}
158

Mateusz Ozga's avatar
Mateusz Ozga committed
159
160
161
162
TYPED_TEST(ReduceNoIndexBHalfFloat, ReduceNoIndexTestBHalfFloat)
{
    // trigger Run() -> Generic
    this->Run();
163
}