Skip to content

Commit 49f989f

Browse files
authored
[Test] Convert conv_igemm_dynamic_dlops etc to gTest (#2553)
1 parent ab000dc commit 49f989f

File tree

53 files changed

+5129
-1171
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+5129
-1171
lines changed

test/CMakeLists.txt

Lines changed: 0 additions & 554 deletions
Large diffs are not rendered by default.

test/gtest/CMakeLists.txt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,7 @@ function(add_gtest TEST_NAME TEST_CPP)
2929
endif()
3030
if(NOT WIN32) # TODO: cannot run on Windows due to missing DLL dependencies
3131
# Enable CMake to discover the test binary
32-
# Extend GTest DISCOVERY_TIMEOUT to 5 mins
33-
gtest_discover_tests(${TEST_NAME} DISCOVERY_TIMEOUT 300 PROPERTIES ENVIRONMENT "MIOPEN_USER_DB_PATH=${CMAKE_CURRENT_BINARY_DIR};MIOPEN_TEST_FLOAT_ARG=${MIOPEN_TEST_FLOAT_ARG};MIOPEN_TEST_ALL=${MIOPEN_TEST_ALL};MIOPEN_TEST_MLIR=${MIOPEN_TEST_MLIR};MIOPEN_TEST_COMPOSABLEKERNEL=${MIOPEN_TEST_COMPOSABLEKERNEL};CODECOV_TEST=${CODECOV_TEST};MIOPEN_TEST_DBSYNC=${MIOPEN_TEST_DBSYNC}")
32+
gtest_discover_tests(${TEST_NAME} DISCOVERY_TIMEOUT 300 PROPERTIES ENVIRONMENT "MIOPEN_USER_DB_PATH=${CMAKE_CURRENT_BINARY_DIR};MIOPEN_TEST_FLOAT_ARG=${MIOPEN_TEST_FLOAT_ARG};MIOPEN_TEST_ALL=${MIOPEN_TEST_ALL};MIOPEN_TEST_MLIR=${MIOPEN_TEST_MLIR};MIOPEN_TEST_COMPOSABLEKERNEL=${MIOPEN_TEST_COMPOSABLEKERNEL};CODECOV_TEST=${CODECOV_TEST};MIOPEN_TEST_DBSYNC=${MIOPEN_TEST_DBSYNC};MIOPEN_TEST_CONV=${MIOPEN_TEST_CONV};MIOPEN_TEST_DEEPBENCH=${MIOPEN_TEST_DEEPBENCH};MIOPEN_DEBUG_TUNING_ITERATIONS_MAX=${MIOPEN_DEBUG_TUNING_ITERATIONS_MAX}")
3433
endif()
3534
target_link_libraries(${TEST_NAME} BZip2::BZip2)
3635
if(WIN32)
Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
/*******************************************************************************
2+
*
3+
* MIT License
4+
*
5+
* Copyright (c) 2023 Advanced Micro Devices, Inc.
6+
*
7+
* Permission is hereby granted, free of charge, to any person obtaining a copy
8+
* of this software and associated documentation files (the "Software"), to deal
9+
* in the Software without restriction, including without limitation the rights
10+
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11+
* copies of the Software, and to permit persons to whom the Software is
12+
* furnished to do so, subject to the following conditions:
13+
*
14+
* The above copyright notice and this permission notice shall be included in all
15+
* copies or substantial portions of the Software.
16+
*
17+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18+
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19+
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20+
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21+
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22+
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23+
* SOFTWARE.
24+
*
25+
*******************************************************************************/
26+
#include <tuple>
27+
#include <string_view>
28+
29+
#include "gtest_common.hpp"
30+
31+
#include "../conv2d.hpp"
32+
33+
MIOPEN_DECLARE_ENV_VAR_BOOL(MIOPEN_TEST_ALL)
34+
35+
namespace conv_ck_igemm_fwd_v6r1_dlops_nchw {
36+
37+
auto GetTestCases()
38+
{
39+
const auto env = std::tuple{
40+
std::pair{ENV(MIOPEN_FIND_MODE), std::string_view("normal")},
41+
std::pair{ENV(MIOPEN_DEBUG_FIND_ONLY_SOLVER),
42+
std::string_view("ConvCkIgemmFwdV6r1DlopsNchw")},
43+
std::pair{ENV(MIOPEN_DEBUG_CONV_CK_IGEMM_FWD_V6R1_DLOPS_NCHW), std::string_view("1")}};
44+
45+
const std::string v = " --verbose";
46+
const std::string dis_bk_data = " --disable-backward-data";
47+
const std::string dis_bk_wei = " --disable-backward-weights";
48+
49+
return std::vector{
50+
// clang-format off
51+
std::pair{env, v + " --input 128 1024 14 14 --weights 2048 1024 1 1 --pads_strides_dilations 0 0 2 2 1 1" + dis_bk_data + dis_bk_wei},
52+
std::pair{env, v + " --input 128 256 14 14 --weights 256 1024 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
53+
std::pair{env, v + " --input 128 1024 14 14 --weights 512 1024 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
54+
std::pair{env, v + " --input 128 128 28 28 --weights 128 1024 3 3 --pads_strides_dilations 1 1 1 1 1 1" + dis_bk_data + dis_bk_wei},
55+
std::pair{env, v + " --input 128 128 28 28 --weights 512 128 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
56+
std::pair{env, v + " --input 128 128 58 58 --weights 128 128 3 3 --pads_strides_dilations 1 1 1 1 1 1" + dis_bk_data + dis_bk_wei},
57+
std::pair{env, v + " --input 128 2048 7 7 --weights 512 2048 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
58+
std::pair{env, v + " --input 128 256 14 14 --weights 1024 256 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
59+
std::pair{env, v + " --input 128 256 14 14 --weights 256 256 3 3 --pads_strides_dilations 1 1 1 1 1 1" + dis_bk_data + dis_bk_wei},
60+
std::pair{env, v + " --input 128 256 30 30 --weights 256 256 3 3 --pads_strides_dilations 0 0 2 2 1 1" + dis_bk_data + dis_bk_wei},
61+
std::pair{env, v + " --input 128 256 56 56 --weights 128 256 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
62+
std::pair{env, v + " --input 128 256 56 56 --weights 512 256 1 1 --pads_strides_dilations 0 0 2 2 1 1" + dis_bk_data + dis_bk_wei},
63+
std::pair{env, v + " --input 128 256 56 56 --weights 64 256 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
64+
std::pair{env, v + " --input 128 512 16 16 --weights 512 512 3 3 --pads_strides_dilations 0 0 2 2 1 1" + dis_bk_data + dis_bk_wei},
65+
std::pair{env, v + " --input 128 512 28 28 --weights 1024 512 1 1 --pads_strides_dilations 0 0 2 2 1 1" + dis_bk_data + dis_bk_wei},
66+
std::pair{env, v + " --input 128 512 28 28 --weights 128 512 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
67+
std::pair{env, v + " --input 128 512 28 28 --weights 256 512 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
68+
std::pair{env, v + " --input 128 512 7 7 --weights 2048 512 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
69+
std::pair{env, v + " --input 128 512 7 7 --weights 512 512 3 3 --pads_strides_dilations 1 1 1 1 1 1" + dis_bk_data + dis_bk_wei},
70+
std::pair{env, v + " --input 128 64 56 56 --weights 256 64 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
71+
std::pair{env, v + " --input 128 64 56 56 --weights 64 64 1 1 --pads_strides_dilations 0 0 1 1 1 1" + dis_bk_data + dis_bk_wei},
72+
std::pair{env, v + " --input 128 64 56 56 --weights 64 64 3 3 --pads_strides_dilations 1 1 1 1 1 1" + dis_bk_data + dis_bk_wei}
73+
// clang-format on
74+
};
75+
}
76+
77+
using TestCase = decltype(GetTestCases())::value_type;
78+
79+
bool SkipTest() { return miopen::IsDisabled(ENV(MIOPEN_TEST_ALL)); }
80+
class Conv2dFloat_conv_ck_igemm_fwd_v6r1_dlops_nchw : public FloatTestCase<std::vector<TestCase>>
81+
{
82+
};
83+
84+
class Conv2dHalf_conv_ck_igemm_fwd_v6r1_dlops_nchw : public HalfTestCase<std::vector<TestCase>>
85+
{
86+
};
87+
88+
bool IsTestSupportedForDevice()
89+
{
90+
using e_mask = enabled<Gpu::Default>;
91+
using d_mask = disabled<Gpu::gfx908>;
92+
return ::IsTestSupportedForDevMask<d_mask, e_mask>();
93+
}
94+
95+
} // namespace conv_ck_igemm_fwd_v6r1_dlops_nchw
96+
using namespace conv_ck_igemm_fwd_v6r1_dlops_nchw;
97+
98+
TEST_P(Conv2dFloat_conv_ck_igemm_fwd_v6r1_dlops_nchw, FloatTest)
99+
{
100+
if(IsTestSupportedForDevice() && !SkipTest())
101+
{
102+
invoke_with_params<conv2d_driver, Conv2dFloat_conv_ck_igemm_fwd_v6r1_dlops_nchw>(
103+
default_check);
104+
}
105+
else
106+
{
107+
GTEST_SKIP();
108+
}
109+
};
110+
111+
TEST_P(Conv2dHalf_conv_ck_igemm_fwd_v6r1_dlops_nchw, HalfTest)
112+
{
113+
if(IsTestSupportedForDevice() && !SkipTest())
114+
{
115+
invoke_with_params<conv2d_driver, Conv2dHalf_conv_ck_igemm_fwd_v6r1_dlops_nchw>(
116+
default_check);
117+
}
118+
else
119+
{
120+
GTEST_SKIP();
121+
}
122+
};
123+
124+
INSTANTIATE_TEST_SUITE_P(ConvCkIgemmFwdV6r1DlopsNchw,
125+
Conv2dFloat_conv_ck_igemm_fwd_v6r1_dlops_nchw,
126+
testing::Values(GetTestCases()));
127+
128+
INSTANTIATE_TEST_SUITE_P(ConvCkIgemmFwdV6r1DlopsNchw,
129+
Conv2dHalf_conv_ck_igemm_fwd_v6r1_dlops_nchw,
130+
testing::Values(GetTestCases()));

0 commit comments

Comments
 (0)