40#include <Api/Output/KernelResult.h>
48#include <Utility/External/half.hpp>
122 const DimensionVector& localSize,
const std::vector<std::string>& typeNames = {});
133 const std::vector<std::string>& typeNames = {});
158 const std::vector<std::string>& typeNames = {});
232 template <
typename T>
233 void AddParameter(
const KernelId id,
const std::string& name,
const std::vector<T>& values,
const std::string& group =
"");
250 const std::string& group =
"");
277 const std::string& group =
"");
295 const std::string& group =
"");
308 const std::string& valueScript);
418 template <
typename T>
438 template <
typename T>
455 template <
typename T>
518 const size_t bufferSize,
const size_t elementSize,
const ArgumentAccessType accessType,
535 template <
typename T>
558 template <
typename T>
569 template <
typename T>
610 const std::vector<BufferOutputDescriptor>& output);
708 std::vector<KernelResult>
Tune(
const KernelId id, std::unique_ptr<StopCondition> stopCondition =
nullptr,
709 const std::optional<PreciseMeasurementParameters>& preciseParams = std::nullopt);
729 std::unique_ptr<StopCondition> stopCondition =
nullptr,
730 const std::optional<PreciseMeasurementParameters>& preciseParams = std::nullopt);
748 std::unique_ptr<StopCondition> stopCondition =
nullptr,
749 const std::optional<PreciseMeasurementParameters>& preciseParams = std::nullopt);
769 const KernelDimensions& dimensions, std::unique_ptr<StopCondition> stopCondition =
nullptr,
770 const std::optional<PreciseMeasurementParameters>& preciseParams = std::nullopt);
791 const bool recomputeReference =
false,
const std::optional<PreciseMeasurementParameters>& preciseParams = std::nullopt);
815 const bool recomputeReference =
false,
const std::optional<PreciseMeasurementParameters>& preciseParams = std::nullopt);
831 const std::vector<KernelResult>& results,
const uint64_t iterations = 0);
847 std::unique_ptr<StopCondition> stopCondition =
nullptr);
866 void SetProfileBasedSearcher(
const KernelId id,
const std::string& modelPath,
const bool useBuiltinModule =
true,
const uint batchSize = 5,
const uint neighborSize = 100,
const uint randomSize = 10);
885 [[deprecated(
"Use ClearConfigurationData() method instead.")]]
void ClearData(
const KernelId id);
1023 [[deprecated(
"Use SynchronizeDevice() or SynchronizeQueues() method instead.")]]
void Synchronize();
1124 std::unique_ptr<TunerCore> m_Tuner;
1132 const std::string& symbolName =
"");
1136 KTT_VIRTUAL_API
void AddParameterInternal(
const KernelId id,
const std::string& name,
const std::vector<ParameterValue>& values,
1137 const std::string& group,
const bool isCompilerParameter);
1139 template <
typename T>
Definition ComputeApiInitializer.h:18
Definition DeviceInfo.h:20
Definition DimensionVector.h:21
Definition KernelConfiguration.h:19
Definition KernelResult.h:21
void SetProfiling(const bool flag)
void SetKernelCacheCapacity(const uint64_t capacity)
Tuner(const ComputeApi api, const ComputeApiInitializer &initializer)
void AddScriptThreadModifier(const KernelId id, const std::vector< KernelDefinitionId > &definitionIds, const ModifierType type, const ModifierDimension dimension, const std::string &script)
static LoggingLevel GetLoggingLevel()
void RemoveArgument(const ArgumentId &id)
ArgumentId AddArgumentLocal(const size_t localMemorySize, const ArgumentId &customId="")
void SetValidationMethod(const ValidationMethod method, const double toleranceThreshold)
std::vector< KernelResult > LoadResults(const std::string &filePath, const OutputFormat format, UserData &data) const
KernelId CreateSimpleKernel(const std::string &name, const KernelDefinitionId definitionId)
void AddScriptConstraint(const KernelId id, const std::vector< std::string > ¶meters, const std::string &script)
KernelId CreateCompositeKernel(const std::string &name, const std::vector< KernelDefinitionId > &definitionIds, KernelLauncher launcher=nullptr)
void SetArguments(const KernelDefinitionId id, const std::vector< ArgumentId > &argumentIds)
void RemoveComputeQueue(const QueueId id)
std::string GetKernelDefinitionSource(const KernelDefinitionId id, const KernelConfiguration &configuration) const
KernelDefinitionId AddKernelDefinition(const std::string &name, const std::string &source, const std::vector< std::string > &typeNames={})
void AddScriptParameter(const KernelId id, const std::string &name, const ParameterValueType valueType, const std::string &valueScript, const std::string &group="")
void SetValidationRange(const ArgumentId &id, const size_t range)
KernelDefinitionId AddKernelDefinitionFromFile(const std::string &name, const std::string &filePath, const std::vector< std::string > &typeNames={})
void WaitForTransferAction(const TransferActionId id)
void SetReferenceArgument(const ArgumentId &id, const ArgumentId &referenceId)
KernelConfiguration GetBestConfiguration(const KernelId id) const
std::vector< KernelResult > SimulateTuning(const KernelId id, const std::vector< KernelResult > &results, std::unique_ptr< StopCondition > stopCondition=nullptr)
std::vector< KernelResult > TuneOptions(const KernelId id, const KernelConfiguration &baseConfiguration, std::unique_ptr< StopCondition > stopCondition=nullptr, const std::optional< PreciseMeasurementParameters > &preciseParams=std::nullopt)
DeviceInfo GetCurrentDeviceInfo() const
void WaitForComputeAction(const ComputeActionId id)
ArgumentId AddArgumentVector(ComputeBuffer buffer, const size_t bufferSize, const size_t elementSize, const ArgumentAccessType accessType, const ArgumentMemoryLocation memoryLocation, const ArgumentId &customId="")
std::vector< DeviceInfo > GetDeviceInfo(const PlatformIndex platform) const
void SetReferenceComputation(const ArgumentId &id, ReferenceComputation computation)
ArgumentId AddArgumentVector(ComputeBuffer buffer, const size_t bufferSize, const ArgumentAccessType accessType, const ArgumentMemoryLocation memoryLocation, const ArgumentId &customId="")
void SetCompilerOptions(const std::string &options, const bool overrideDefault=false)
std::vector< KernelResult > LoadResults(const std::string &filePath, const OutputFormat format) const
void SaveResults(const std::vector< KernelResult > &results, const std::string &filePath, const OutputFormat format, const UserData &data={}) const
std::vector< PlatformInfo > GetPlatformInfo() const
void AddConstraint(const KernelId id, const std::vector< std::string > ¶meters, ConstraintFunction function)
void SetProfileBasedSearcher(const KernelId id, const std::string &modelPath, const bool useBuiltinModule=true, const uint batchSize=5, const uint neighborSize=100, const uint randomSize=10)
std::vector< KernelResult > Tune(const KernelId id, std::unique_ptr< StopCondition > stopCondition=nullptr, const std::optional< PreciseMeasurementParameters > &preciseParams=std::nullopt)
Tuner(const PlatformIndex platform, const DeviceIndex device, const ComputeApi api)
static void SetTimeUnit(const TimeUnit unit)
ArgumentId AddArgumentScalar(const void *data, const size_t dataSize, const ArgumentId &customId="")
KernelResult GetBestResult(const std::vector< KernelResult > &results) const
void InitializeConfigurationData(const KernelId id)
void SetProfiledDefinitions(const KernelId id, const std::vector< KernelDefinitionId > &definitionIds)
void AddParameter(const KernelId id, const std::string &name, const std::vector< T > &values, const std::string &group="")
Tuner(const ComputeApi api, const ComputeApiInitializer &initializer, std::vector< QueueId > &assignedQueueIds)
void SaveArgumentVector(const ArgumentId &id, const std::string &filePath)
void SetValidationMode(const ValidationMode mode)
void RemoveKernelDefinition(const KernelDefinitionId id)
KernelResult Run(const KernelId id, const KernelConfiguration &configuration, const std::vector< BufferOutputDescriptor > &output)
std::vector< KernelResult > Tune(const KernelId id, const KernelDimensions &dimensions, std::unique_ptr< StopCondition > stopCondition=nullptr, const std::optional< PreciseMeasurementParameters > &preciseParams=std::nullopt)
KernelResult TuneIteration(const KernelId id, const KernelDimensions &dimensions, const std::vector< BufferOutputDescriptor > &output, const bool recomputeReference=false, const std::optional< PreciseMeasurementParameters > &preciseParams=std::nullopt)
void SetAutomaticGlobalSizeCorrection(const bool flag)
static void SetLoggingLevel(const LoggingLevel level)
ArgumentId AddArgumentVector(const std::vector< T > &data, const ArgumentAccessType accessType, const ArgumentId &customId="")
Tuner(const PlatformIndex platform, const DeviceIndex device, const ComputeApi api, const uint32_t computeQueueCount)
KernelConfiguration CreateConfiguration(const KernelId id, const ParameterInput ¶meters) const
std::vector< KernelResult > TuneOptions(const KernelId id, const KernelConfiguration &baseConfiguration, const KernelDimensions &dimensions, std::unique_ptr< StopCondition > stopCondition=nullptr, const std::optional< PreciseMeasurementParameters > &preciseParams=std::nullopt)
void RemoveKernel(const KernelId id)
QueueId AddComputeQueue(ComputeQueue queue)
KernelDefinitionId AddKernelDefinition(const std::string &name, const std::string &source, const DimensionVector &globalSize, const DimensionVector &localSize, const std::vector< std::string > &typeNames={})
void AddGenericConstraint(const KernelId id, const std::vector< std::string > ¶meters, GenericConstraintFunction function)
ArgumentId AddArgumentVectorFromGenerator(const std::string &generatorFunction, const ArgumentDataType dataType, const size_t bufferSize, const size_t elementSize, const ArgumentAccessType accessType, const ArgumentMemoryLocation memoryLocation=ArgumentMemoryLocation::Device, const ArgumentManagementType managementType=ArgumentManagementType::Framework, const ArgumentId &customId="")
KernelDefinitionId GetKernelDefinitionId(const std::string &name, const std::vector< std::string > &typeNames={}) const
void SynchronizeQueue(const QueueId id)
void AddThreadModifier(const KernelId id, const std::vector< KernelDefinitionId > &definitionIds, const ModifierType type, const ModifierDimension dimension, const std::string ¶meter, const ModifierAction action)
uint64_t GetConfigurationsCount(const KernelId id) const
void ClearData(const KernelId id)
ArgumentId AddArgumentVectorFromFile(const std::string &filePath, const ArgumentDataType dataType, const size_t elementSize, const ArgumentAccessType accessType, const ArgumentMemoryLocation memoryLocation=ArgumentMemoryLocation::Device, const ArgumentManagementType managementType=ArgumentManagementType::Framework, const ArgumentId &customId="")
void SetSearcher(const KernelId id, std::unique_ptr< Searcher > searcher)
KernelResult Run(const KernelId id, const KernelConfiguration &configuration, const KernelDimensions &dimensions, const std::vector< BufferOutputDescriptor > &output)
void SetProfilingCounters(const std::vector< std::string > &counters)
static void SetLoggingTarget(std::ostream &outputTarget)
void SetReadOnlyArgumentCache(const bool flag)
KernelResult TuneIteration(const KernelId id, const std::vector< BufferOutputDescriptor > &output, const bool recomputeReference=false, const std::optional< PreciseMeasurementParameters > &preciseParams=std::nullopt)
void SetCompiler(const std::string &compiler)
void AddScriptSeparateCompilerParameter(const KernelId id, const std::string &name, const ParameterValueType valueType, const std::string &valueScript)
void SetGlobalSizeType(const GlobalSizeType type)
void AddCompilerParameter(const KernelId id, const std::string &name, const std::vector< std::string > &values={}, const std::string &group="")
std::vector< KernelResult > SimulateKernelTuning(const KernelId id, const std::vector< KernelResult > &results, const uint64_t iterations=0)
KernelDefinitionId AddKernelDefinitionFromFile(const std::string &name, const std::string &filePath, const DimensionVector &globalSize, const DimensionVector &localSize, const std::vector< std::string > &typeNames={})
ArgumentId AddArgumentVector(std::vector< T > &data, const ArgumentAccessType accessType, const ArgumentMemoryLocation memoryLocation, const ArgumentManagementType managementType, const bool referenceUserData, const ArgumentId &customId="")
void SetReferenceKernel(const ArgumentId &id, const KernelId referenceId, const KernelConfiguration &configuration, const KernelDimensions &dimensions={})
ArgumentId AddArgumentSymbol(const T &data, const ArgumentId &customId="", const std::string &symbolName="")
void AddScriptCompilerParameter(const KernelId id, const std::string &name, const ParameterValueType valueType, const std::string &valueScript, const std::string &group="")
ArgumentId AddArgumentScalar(const T &data, const ArgumentId &customId="")
void AddThreadModifier(const KernelId id, const std::vector< KernelDefinitionId > &definitionIds, const ModifierType type, const ModifierDimension dimension, const std::vector< std::string > ¶meters, ModifierFunction function)
static void SetLoggingTarget(const std::string &filePath)
void AddSeparateCompilerParameter(const KernelId id, const std::string &name, const std::vector< std::string > &values={})
void SetLauncher(const KernelId id, KernelLauncher launcher)
void ClearConfigurationData(const KernelId id)
std::string GetKernelSource(const KernelId id, const KernelConfiguration &configuration) const
void SetValueComparator(const ArgumentId &id, ValueComparator comparator)
Definition KttPlatform.h:41
std::map< KernelDefinitionId, std::pair< DimensionVector, DimensionVector > > KernelDimensions
Definition KttTypes.h:60
TimeUnit
Definition TimeUnit.h:13
GlobalSizeType
Definition GlobalSizeType.h:13
LoggingLevel
Definition LoggingLevel.h:13
ValidationMethod
Definition ValidationMethod.h:13
uint32_t DeviceIndex
Definition KttTypes.h:30
uint64_t ComputeActionId
Definition KttTypes.h:85
ValidationMode
Definition ValidationMode.h:15
ParameterValueType
Definition ParameterValueType.h:13
uint32_t QueueId
Definition KttTypes.h:35
ArgumentAccessType
Definition ArgumentAccessType.h:14
ModifierDimension
Definition ModifierDimension.h:14
uint64_t KernelId
Definition KttTypes.h:45
std::function< bool(const std::vector< const ParameterValue * > &)> GenericConstraintFunction
Definition KttTypes.h:105
std::function< bool(const std::vector< uint64_t > &)> ConstraintFunction
Definition KttTypes.h:100
ArgumentManagementType
Definition ArgumentManagementType.h:13
ArgumentDataType
Definition ArgumentDataType.h:13
uint64_t TransferActionId
Definition KttTypes.h:90
ComputeApi
Definition ComputeApi.h:13
void * ComputeQueue
Definition KttTypes.h:135
ArgumentMemoryType
Definition ArgumentMemoryType.h:14
std::function< void(void *)> ReferenceComputation
Definition KttTypes.h:115
ModifierAction
Definition ModifierAction.h:13
OutputFormat
Definition OutputFormat.h:13
std::function< bool(const void *, const void *)> ValueComparator
Definition KttTypes.h:120
void * ComputeBuffer
Definition KttTypes.h:140
ArgumentMemoryLocation
Definition ArgumentMemoryLocation.h:14
ModifierType
Definition ModifierType.h:13
uint32_t PlatformIndex
Definition KttTypes.h:25
std::function< uint64_t(const uint64_t, const std::vector< uint64_t > &)> ModifierFunction
Definition KttTypes.h:95
std::string ArgumentId
Definition KttTypes.h:50
std::vector< std::pair< std::string, ParameterValue > > ParameterInput
Definition KttTypes.h:65
uint64_t KernelDefinitionId
Definition KttTypes.h:40
std::map< std::string, std::string > UserData
Definition KttTypes.h:70
std::function< void(ComputeInterface &)> KernelLauncher
Definition KttTypes.h:110