Files
UnrealEngine/Engine/Plugins/Experimental/NNERuntimeRDG/Source/NNERuntimeRDGUtils/Internal/NNERuntimeRDGUtilsModelOptimizerInterface.h
Brandyn / Techy fcc1b09210 init
2026-04-04 15:40:51 -05:00

50 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "Containers/ContainersFwd.h"
#include "Containers/UnrealString.h"
#include "Templates/SharedPointerFwd.h"
namespace UE::NNERuntimeRDGUtils::Internal
{
/** Interface class for NNE model validator */
class IModelValidator
{
public:
virtual ~IModelValidator() = default;
virtual FString GetName() const = 0;
virtual bool ValidateModel(TConstArrayView<uint8> InputModel) const = 0;
};
/** Interface class for NNE model optimizer pass */
class IModelOptimizerPass
{
public:
virtual ~IModelOptimizerPass() = default;
virtual FString GetName() const = 0;
//Optimize the model in place, potentially changing the format
virtual bool ApplyPass(TArray<uint8>& Model) const = 0;
};
/** Interface class for NNE model optimizer */
class IModelOptimizer
{
public:
virtual ~IModelOptimizer() = default;
virtual FString GetName() const = 0;
//Allow to extend/customize an optimizer by adding passes. They should be executed in order.
virtual void AddOptimizationPass(TSharedPtr<IModelOptimizerPass> ModelOptimizerPass) = 0;
//Allow to extend/customize an optimizer all validators should be run between each pass.
virtual void AddValidator(TSharedPtr<IModelValidator>) = 0;
//Apply all passes and validators to the input model, produce an optimized model potentially in a different format
virtual bool Optimize(TConstArrayView<uint8> InputModel, TArray<uint8>& OutModel) = 0;
};
} // namespace UE::NNERuntimeRDGUtils::Internal