CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
99 lines
3.6 KiB
C++
99 lines
3.6 KiB
C++
// Copyright © Advanced Micro Devices, Inc., or its affiliates.
|
|
// SPDX-License-Identifier: MIT
|
|
|
|
#include <gtest/gtest.h>
|
|
#include <hipdnn_frontend/knob/Knob.hpp>
|
|
#include <hipdnn_plugin_sdk/GlobalKnobDefines.hpp>
|
|
#include <hipdnn_test_sdk/utilities/FrontendGraphFactory.hpp>
|
|
|
|
#include "../tests/common/TestWorkarounds.hpp"
|
|
#include "IntegrationGraphVerificationHarness.hpp"
|
|
|
|
using namespace hipdnn_frontend;
|
|
using namespace hipdnn_test_sdk::utilities;
|
|
|
|
namespace
|
|
{
|
|
|
|
/// Custom test name generator for gtest parameterized tests
|
|
struct OperationTypeNameGenerator
|
|
{
|
|
std::string operator()(const ::testing::TestParamInfo<OperationType>& info) const
|
|
{
|
|
return operationTypeToString(info.param);
|
|
}
|
|
};
|
|
|
|
/// Test fixture for benchmarking knob integration tests
|
|
/// Inherits from IntegrationGraphVerificationHarness for SetUp/TearDown
|
|
class IntegrationGpuBenchmarkingKnob
|
|
: public miopen_plugin::test_utilities::IntegrationGraphVerificationHarness<float,
|
|
OperationType>
|
|
{
|
|
};
|
|
|
|
/// CBA-only fixture: overrides the engine-config hook to skip when the device
|
|
/// has no applicable CBA fusion solution (gfx90a + RDNA archs without CK
|
|
/// fusion kernels).
|
|
class IntegrationGpuBenchmarkingKnobCba : public IntegrationGpuBenchmarkingKnob
|
|
{
|
|
protected:
|
|
std::optional<std::string>
|
|
shouldSkipOnEngineConfigResult(const hipdnn_frontend::Error& result) override
|
|
{
|
|
if(IS_WORKAROUND_ISSUE_6979(result))
|
|
{
|
|
return WORKAROUND_ISSUE_6979_SKIP_MSG;
|
|
}
|
|
return std::nullopt;
|
|
}
|
|
};
|
|
|
|
/// Single parameterized test that runs for all operations
|
|
TEST_P(IntegrationGpuBenchmarkingKnob, ExecutesSuccessfully)
|
|
{
|
|
// rocBLAS/Tensile heap-buffer-overflow on gfx90a; CK ASAN stall on gfx942
|
|
if(GetParam() == OperationType::CONV_FORWARD || GetParam() == OperationType::CONV_BACKWARD_DATA
|
|
|| GetParam() == OperationType::CONV_BACKWARD_WEIGHTS)
|
|
{
|
|
SKIP_IF_ASAN();
|
|
}
|
|
auto graph = FrontendGraphFactory::create(GetParam());
|
|
|
|
std::vector<KnobSetting> knobSettings;
|
|
knobSettings.emplace_back(hipdnn_plugin_sdk::BENCHMARKING_KNOB_NAME, 1LL);
|
|
|
|
executeGraphWithKnobs(graph, knobSettings);
|
|
}
|
|
|
|
TEST_P(IntegrationGpuBenchmarkingKnobCba, ExecutesSuccessfully)
|
|
{
|
|
// rocBLAS/Tensile heap-buffer-overflow on gfx90a; CK ASAN stall on gfx942
|
|
SKIP_IF_ASAN();
|
|
auto graph = FrontendGraphFactory::create(GetParam());
|
|
|
|
std::vector<KnobSetting> knobSettings;
|
|
knobSettings.emplace_back(hipdnn_plugin_sdk::BENCHMARKING_KNOB_NAME, 1LL);
|
|
|
|
executeGraphWithKnobs(graph, knobSettings);
|
|
}
|
|
|
|
/// Instantiate test suite for all non-CBA operation types
|
|
INSTANTIATE_TEST_SUITE_P(BenchmarkingSmoke,
|
|
IntegrationGpuBenchmarkingKnob,
|
|
::testing::Values(OperationType::CONV_FORWARD,
|
|
OperationType::CONV_BACKWARD_DATA,
|
|
OperationType::CONV_BACKWARD_WEIGHTS,
|
|
OperationType::BATCHNORM_TRAINING,
|
|
OperationType::BATCHNORM_INFERENCE,
|
|
OperationType::BATCHNORM_BACKWARD),
|
|
OperationTypeNameGenerator());
|
|
|
|
/// CBA gets its own instantiation so the fixture override applies.
|
|
INSTANTIATE_TEST_SUITE_P(BenchmarkingSmoke,
|
|
IntegrationGpuBenchmarkingKnobCba,
|
|
::testing::Values(OperationType::CONV_FWD_BIAS_ACTIV),
|
|
OperationTypeNameGenerator());
|
|
|
|
} // namespace
|