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
117 lines
3.1 KiB
C++
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;
|
|
}
|