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

#include <JitEngineDeviceCUDA.h>

Inheritance diagram for proteus::JitEngineDeviceCUDA:
Inheritance graph
[legend]
Collaboration diagram for proteus::JitEngineDeviceCUDA:
Collaboration graph
[legend]

Public Member Functions

void setLaunchBoundsForKernel (Module &M, Function &F, size_t GridSize, int BlockSize)
 
void extractModules (BinaryInfo &BinInfo)
 
std::unique_ptr< Module > tryExtractKernelModule (BinaryInfo &BinInfo, StringRef KernelName, LLVMContext &Ctx)
 
void codegenPTX (Module &M, StringRef DeviceArch, SmallVectorImpl< char > &PTXStr)
 
HashT getModuleHash (BinaryInfo &BinInfo)
 
std::unique_ptr< MemoryBuffer > codegenObject (Module &M, SmallPtrSetImpl< void * > &GlobalLinkedBinaries, const CodeGenerationConfig &CGConfig)
 
std::unique_ptr< Dispatcher > createDispatcher ()
 
- Public Member Functions inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
DeviceError_t compileAndRun (JITKernelInfo &KernelInfo, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, typename DeviceTraits< JitEngineDeviceCUDA >::DeviceStream_t Stream)
 
std::pair< std::unique_ptr< Module >, std::unique_ptr< MemoryBuffer > > extractKernelModule (BinaryInfo &BinInfo, StringRef KernelName, LLVMContext &Ctx)
 
void extractModuleAndBitcode (JITKernelInfo &KernelInfo)
 
Module & getModule (JITKernelInfo &KernelInfo)
 
MemoryBufferRef getBitcode (JITKernelInfo &KernelInfo)
 
void getLambdaJitValues (SmallVector< uint64_t > &LambdaCalleeInfo, LambdaCallsiteRuntimeConstantsMap &LambdaJitValuesMap)
 
void registerVar (void *Handle, const char *VarName, const void *HostAddr, uint64_t VarSize)
 
void registerLinkedBinary (void *Handle, FatbinWrapperT *FatbinWrapper, const char *ModuleId)
 
void registerFatBinary (void *Handle, FatbinWrapperT *FatbinWrapper, const char *ModuleId)
 
void finalizeRegistration ()
 
void registerFunction (void *Handle, void *Kernel, char *KernelName, ArrayRef< RuntimeConstantInfo * > RCInfoArray)
 
void registerLambdaCallsiteLocation (void *Kernel, uint64_t LambdaID, uint32_t CallsiteIndex, uint32_t KernelArgIndex, int64_t Offset, RuntimeConstantType StorageType)
 
bool containsJITKernelInfo (const void *Func)
 
std::optional< std::reference_wrapper< JITKernelInfo > > getJITKernelInfo (const void *Func)
 
HashT getStaticHash (JITKernelInfo &KernelInfo)
 
StringRef getDeviceArch () const
 
- Public Member Functions inherited from proteus::JitEngine
bool isProteusDisabled ()
 
void enable ()
 
void disable ()
 

Static Public Member Functions

static JitEngineDeviceCUDA & instance ()
 
static bool optimizesBeforeCodegen (CodegenOption)
 

Additional Inherited Members

- Public Types inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
using DeviceError_t = typename DeviceTraits< JitEngineDeviceCUDA >::DeviceError_t
 
using DeviceStream_t = typename DeviceTraits< JitEngineDeviceCUDA >::DeviceStream_t
 
using KernelFunction_t = typename DeviceTraits< JitEngineDeviceCUDA >::KernelFunction_t
 
- Public Attributes inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
std::unordered_map< std::string, FatbinWrapperT * > ModuleIdToFatBinary
 
std::unordered_map< const void *, BinaryInfo > HandleToBinaryInfo
 
SmallPtrSet< void *, 8 > GlobalLinkedBinaries
 
- Public Attributes inherited from proteus::JitEngine
InitLLVMTargets Init
 
- Protected Member Functions inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
 JitEngineDevice ()
 
 ~JitEngineDevice ()
 
Dispatcher & getDispatcher ()
 
- Protected Member Functions inherited from proteus::JitEngine
SmallVector< RuntimeConstant > getRuntimeConstantValues (void **KernelArgs, ArrayRef< RuntimeConstantInfo * > RCInfoArray)
 
 JitEngine ()
 
- Protected Attributes inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
std::unique_ptr< Dispatcher > Dispatch
 
std::string DeviceArch
 
DenseMap< const void *, JITKernelInfo > JITKernelInfoMap
 
DenseMap< const void *, LambdaCallsiteLocationMap > PendingLambdaCallsiteLocationInfo
 
std::unique_ptr< CompilerAsync > AsyncCompiler
 

Member Function Documentation

◆ codegenObject()

std::unique_ptr< MemoryBuffer > JitEngineDeviceCUDA::codegenObject ( Module &  M,
SmallPtrSetImpl< void * > &  GlobalLinkedBinaries,
const CodeGenerationConfig &  CGConfig 
)

◆ codegenPTX()

void proteus::JitEngineDeviceCUDA::codegenPTX ( Module &  M,
StringRef  DeviceArch,
SmallVectorImpl< char > &  PTXStr 
)

◆ createDispatcher()

std::unique_ptr< Dispatcher > JitEngineDeviceCUDA::createDispatcher ( )

◆ extractModules()

void JitEngineDeviceCUDA::extractModules ( BinaryInfo &  BinInfo)

◆ getModuleHash()

HashT JitEngineDeviceCUDA::getModuleHash ( BinaryInfo &  BinInfo)

◆ instance()

JitEngineDeviceCUDA & JitEngineDeviceCUDA::instance ( )
static

◆ optimizesBeforeCodegen()

static bool proteus::JitEngineDeviceCUDA::optimizesBeforeCodegen ( CodegenOption  )
inlinestatic

◆ setLaunchBoundsForKernel()

void proteus::JitEngineDeviceCUDA::setLaunchBoundsForKernel ( Module &  M,
Function &  F,
size_t  GridSize,
int  BlockSize 
)

◆ tryExtractKernelModule()

std::unique_ptr< Module > JitEngineDeviceCUDA::tryExtractKernelModule ( BinaryInfo &  BinInfo,
StringRef  KernelName,
LLVMContext &  Ctx 
)

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