Files
TheRock/rocm-libraries/shared/rocroller/test/unit/ContextFixture.cpp
T
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

117 lines
3.1 KiB
C++

// Copyright Advanced Micro Devices, Inc., or its affiliates.
// SPDX-License-Identifier: MIT
#include "ContextFixture.hpp"
#include <rocRoller/AssemblyKernel.hpp>
#include <rocRoller/CodeGen/ArgumentLoader.hpp>
#include <rocRoller/Context.hpp>
#include <rocRoller/GPUArchitecture/GPUCapability.hpp>
#include <rocRoller/InstructionValues/Register.hpp>
#include <rocRoller/Scheduling/MetaObserver.hpp>
#include <rocRoller/Scheduling/Observers/AllocatingObserver.hpp>
#include <rocRoller/Scheduling/Observers/WaitcntObserver.hpp>
#include <rocRoller/Utilities/Component.hpp>
#include <rocRoller/Utilities/Utils.hpp>
void ContextFixture::SetUp()
{
using namespace rocRoller;
m_context = createContext();
RecordProperty("local_device", isLocalDevice());
auto settings = Settings::getInstance();
settings->set(Settings::EnforceGraphConstraints, true);
settings->set(Settings::AuditControlTracers, true);
}
void ContextFixture::TearDown()
{
m_context.reset();
rocRoller::Settings::reset();
rocRoller::Component::ComponentFactoryBase::ClearAllCaches();
}
std::string ContextFixture::output()
{
return m_context->instructions()->toString();
}
void ContextFixture::clearOutput()
{
m_context->instructions()->clear();
}
void ContextFixture::writeOutputToFile(std::string const& filename)
{
std::ofstream file(filename);
file << m_context->instructions()->toString();
}
std::string ContextFixture::testKernelName() const
{
return testKernelName("");
}
std::string ContextFixture::testKernelName(std::string const& suffix) const
{
auto const* info = testing::UnitTest::GetInstance()->current_test_info();
std::string rv = info->test_suite_name();
rv += info->name();
char const* type = info->type_param();
if(type)
rv += type;
rv += "_kernel";
rv += suffix;
// Replace 'bad' characters with '_'.
for(auto& c : rv)
if(!isalnum(c) && c != '_')
c = '_';
return rv;
}
void ContextFixture::setKernelOptions(rocRoller::KernelOptions const& kernelOption)
{
m_context->m_kernelOptions = kernelOption;
m_kernelOptions = kernelOption;
}
bool ContextFixture::isLocalDevice() const
{
return m_context && m_context->hipDeviceIndex() >= 0;
}
std::vector<rocRoller::Register::ValuePtr>
ContextFixture::createRegisters(rocRoller::Register::Type const regType,
rocRoller::DataType const dataType,
size_t const amount,
int const regCount,
rocRoller::Register::AllocationOptions allocOptions)
{
std::vector<rocRoller::Register::ValuePtr> regs;
for(size_t i = 0; i < amount; i++)
{
auto reg = std::make_shared<rocRoller::Register::Value>(
m_context, regType, dataType, regCount, allocOptions);
try
{
reg->allocateNow();
}
catch(...)
{
std::cout << i << std::endl;
throw;
}
regs.push_back(reg);
}
return regs;
}