LLVM 17.0.0git
Public Member Functions | Static Public Member Functions | List of all members
llvm::InteractiveModelRunner Class Reference

A MLModelRunner that asks for advice from an external agent, or host. More...

#include "llvm/Analysis/InteractiveModelRunner.h"

Inheritance diagram for llvm::InteractiveModelRunner:
Inheritance graph
Collaboration diagram for llvm::InteractiveModelRunner:
Collaboration graph

Public Member Functions

 InteractiveModelRunner (LLVMContext &Ctx, const std::vector< TensorSpec > &Inputs, const TensorSpec &Advice, StringRef OutboundName, StringRef InboundName)
void switchContext (StringRef Name) override
virtual ~InteractiveModelRunner ()
- Public Member Functions inherited from llvm::MLModelRunner
 MLModelRunner (const MLModelRunner &)=delete
MLModelRunneroperator= (const MLModelRunner &)=delete
virtual ~MLModelRunner ()=default
template<typename T >
T evaluate ()
template<typename T , typename I >
TgetTensor (I FeatureID)
template<typename T , typename I >
const TgetTensor (I FeatureID) const
void * getTensorUntyped (size_t Index)
const void * getTensorUntyped (size_t Index) const
Kind getKind () const
virtual void switchContext (StringRef Name)

Static Public Member Functions

static bool classof (const MLModelRunner *R)

Additional Inherited Members

- Public Types inherited from llvm::MLModelRunner
enum class  Kind : int {
  Unknown , Release , Development , NoOp ,
- Protected Member Functions inherited from llvm::MLModelRunner
 MLModelRunner (LLVMContext &Ctx, Kind Type, size_t NrInputs)
virtual void * evaluateUntyped ()=0
void setUpBufferForTensor (size_t Index, const TensorSpec &Spec, void *Buffer)
- Protected Attributes inherited from llvm::MLModelRunner
const Kind Type

Detailed Description

A MLModelRunner that asks for advice from an external agent, or host.

It uses 2 files - ideally named pipes - one to send data to that agent, and one to receive advice. The data exchange uses the training logger (Utils/TrainingLogger.h) format. Specifically, the compiler will send the log header, set the context, and send observations; the host is expected to reply with a tensor value after each observation as a binary buffer that's conforming to the shape of the advice. Interleaved, the data closely resembles the training log for a log where we don't capture the reward signal.

Note that the correctness of the received data is the responsibility of the host. In particular, if insufficient data were sent, the compiler will block when waiting for an advice.

Note that the host can either open the pipes RW, or open first the pipe to the compiler - i.e. the "Inbound" - and then the "Outbound", to avoid deadlock. This is because the compiler first tries to open the inbound (which will hang until there's a writer on the other end).

Definition at line 41 of file InteractiveModelRunner.h.

Constructor & Destructor Documentation

◆ InteractiveModelRunner()

InteractiveModelRunner::InteractiveModelRunner ( LLVMContext Ctx,
const std::vector< TensorSpec > &  Inputs,
const TensorSpec Advice,
StringRef  OutboundName,
StringRef  InboundName 

◆ ~InteractiveModelRunner()

InteractiveModelRunner::~InteractiveModelRunner ( )

Member Function Documentation

◆ classof()

static bool llvm::InteractiveModelRunner::classof ( const MLModelRunner R)

Definition at line 48 of file InteractiveModelRunner.h.

References llvm::MLModelRunner::Interactive.

◆ switchContext()

void llvm::InteractiveModelRunner::switchContext ( StringRef  Name)

Reimplemented from llvm::MLModelRunner.

Definition at line 51 of file InteractiveModelRunner.h.

References Name.

The documentation for this class was generated from the following files: