Proteus
Programmable JIT compilation and optimization for C/C++ using LLVM
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Attributes | List of all members
proteus::Dispatcher Class Referenceabstract

#include <Dispatcher.hpp>

Inheritance diagram for proteus::Dispatcher:
Inheritance graph
[legend]

Public Member Functions

virtual std::unique_ptr< MemoryBuffer > compile (std::unique_ptr< LLVMContext > Ctx, std::unique_ptr< Module > M, HashT ModuleHash)=0
 
virtual std::unique_ptr< MemoryBuffer > lookupObjectModule (HashT ModuleHash)=0
 
virtual DispatchResult launch (StringRef KernelName, LaunchDims GridDim, LaunchDims BlockDim, ArrayRef< void * > KernelArgs, uint64_t ShmemSize, void *Stream, std::optional< MemoryBufferRef > ObjectModule)=0
 
virtual DispatchResult launch (void *KernelFunc, LaunchDims GridDim, LaunchDims BlockDim, ArrayRef< void * > KernelArgs, uint64_t ShmemSize, void *Stream)=0
 
virtual StringRef getTargetArch () const =0
 
template<typename RetOrSig , typename... ArgT>
auto run (StringRef FuncName, std::optional< MemoryBufferRef > ObjectModule, ArgT &&...Args)
 
virtual void * getFunctionAddress (StringRef FunctionName, std::optional< MemoryBufferRef > ObjectModule)=0
 

Static Public Member Functions

static DispatchergetDispatcher (TargetModelType TargetModel)
 

Protected Attributes

TargetModelType TargetModel
 

Member Function Documentation

◆ compile()

virtual std::unique_ptr< MemoryBuffer > proteus::Dispatcher::compile ( std::unique_ptr< LLVMContext >  Ctx,
std::unique_ptr< Module >  M,
HashT  ModuleHash 
)
pure virtual

Implemented in proteus::DispatcherHost.

◆ getDispatcher()

Dispatcher & proteus::Dispatcher::getDispatcher ( TargetModelType  TargetModel)
static

◆ getFunctionAddress()

virtual void * proteus::Dispatcher::getFunctionAddress ( StringRef  FunctionName,
std::optional< MemoryBufferRef >  ObjectModule 
)
pure virtual

Implemented in proteus::DispatcherHost.

◆ getTargetArch()

virtual StringRef proteus::Dispatcher::getTargetArch ( ) const
pure virtual

Implemented in proteus::DispatcherHost.

◆ launch() [1/2]

virtual DispatchResult proteus::Dispatcher::launch ( StringRef  KernelName,
LaunchDims  GridDim,
LaunchDims  BlockDim,
ArrayRef< void * >  KernelArgs,
uint64_t  ShmemSize,
void *  Stream,
std::optional< MemoryBufferRef >  ObjectModule 
)
pure virtual

Implemented in proteus::DispatcherHost.

◆ launch() [2/2]

virtual DispatchResult proteus::Dispatcher::launch ( void *  KernelFunc,
LaunchDims  GridDim,
LaunchDims  BlockDim,
ArrayRef< void * >  KernelArgs,
uint64_t  ShmemSize,
void *  Stream 
)
pure virtual

Implemented in proteus::DispatcherHost.

◆ lookupObjectModule()

virtual std::unique_ptr< MemoryBuffer > proteus::Dispatcher::lookupObjectModule ( HashT  ModuleHash)
pure virtual

Implemented in proteus::DispatcherHost.

◆ run()

template<typename RetOrSig , typename... ArgT>
auto proteus::Dispatcher::run ( StringRef  FuncName,
std::optional< MemoryBufferRef >  ObjectModule,
ArgT &&...  Args 
)
inline

Member Data Documentation

◆ TargetModel

TargetModelType proteus::Dispatcher::TargetModel
protected

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