Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

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