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.hpp>

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

Public Member Functions

void * resolveDeviceGlobalAddr (const void *Addr)
 
void setLaunchBoundsForKernel (Module &M, Function &F, size_t GridSize, int BlockSize)
 
std::unique_ptr< Module > extractModule (BinaryInfo &BinInfo)
 
void codegenPTX (Module &M, StringRef DeviceArch, SmallVectorImpl< char > &PTXStr)
 
std::unique_ptr< MemoryBuffer > codegenObject (Module &M, StringRef DeviceArch)
 
CUfunction getKernelFunctionFromImage (StringRef KernelName, const void *Image)
 
cudaError_t launchKernelFunction (CUfunction KernelFunc, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, CUstream Stream)
 
HashT getModuleHash (BinaryInfo &BinInfo)
 
- 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)
 
Module & getModule (JITKernelInfo &KernelInfo)
 
void getLambdaJitValues (JITKernelInfo &KernelInfo, SmallVector< RuntimeConstant > &LambdaJitValuesVec)
 
void insertRegisterVar (const char *VarName, const void *Addr)
 
void registerLinkedBinary (FatbinWrapperT *FatbinWrapper, const char *ModuleId)
 
void registerFatBinary (void *Handle, FatbinWrapperT *FatbinWrapper, const char *ModuleId)
 
void registerFatBinaryEnd ()
 
void registerFunction (void *Handle, void *Kernel, char *KernelName, int32_t *RCIndices, int32_t *RCTypes, int32_t NumRCs)
 
bool containsJITKernelInfo (const void *Func)
 
std::optional< std::reference_wrapper< JITKernelInfo > > getJITKernelInfo (const void *Func)
 
HashT getStaticHash (JITKernelInfo &KernelInfo)
 
void finalize ()
 
- Public Member Functions inherited from proteus::JitEngine
void optimizeIR (Module &M, StringRef Arch, char OptLevel='3', unsigned CodegenOptLevel=3)
 
bool isProteusDisabled ()
 
void enable ()
 
void disable ()
 

Static Public Member Functions

static JitEngineDeviceCUDAinstance ()
 

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 >
void * CurHandle
 
std::unordered_map< std::string, FatbinWrapperT * > ModuleIdToFatBinary
 
std::unordered_map< const void *, BinaryInfoHandleToBinaryInfo
 
SmallVector< std::string > GlobalLinkedModuleIds
 
SmallPtrSet< void *, 8 > GlobalLinkedBinaries
 
- Public Attributes inherited from proteus::JitEngine
InitLLVMTargets Init
 
- Protected Member Functions inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
 JitEngineDevice ()
 
 ~JitEngineDevice ()
 
std::unique_ptr< Module > linkJitModule (SmallVector< std::unique_ptr< Module > > &LinkedModules, std::unique_ptr< Module > LTOModule=nullptr)
 
LLVMContext & getLLVMContext ()
 
- Protected Member Functions inherited from proteus::JitEngine
void getRuntimeConstantValues (void **KernelArgs, const ArrayRef< int32_t > RCIndices, const ArrayRef< int32_t > RCTypes, SmallVector< RuntimeConstant > &RCVec)
 
void runCleanupPassPipeline (Module &M)
 
 JitEngine ()
 
std::string mangleSuffix (HashT &HashValue)
 
- Protected Attributes inherited from proteus::JitEngineDevice< JitEngineDeviceCUDA >
JitCache< KernelFunction_tCodeCache
 
JitStorageCache< KernelFunction_tStorageCache
 
std::string DeviceArch
 
std::unordered_map< std::string, const void * > VarNameToDevPtr
 
DenseMap< const void *, JITKernelInfoJITKernelInfoMap
 
- Protected Attributes inherited from proteus::JitEngine
struct { 
 
   bool   PROTEUS_USE_STORED_CACHE 
 
   bool   PROTEUS_SET_LAUNCH_BOUNDS 
 
   bool   PROTEUS_SPECIALIZE_ARGS 
 
   bool   PROTEUS_SPECIALIZE_DIMS 
 
   bool   PROTEUS_USE_HIP_RTC_CODEGEN 
 
   bool   PROTEUS_DISABLE 
 
   bool   PROTEUS_DUMP_LLVM_IR 
 
   bool   PROTEUS_RELINK_GLOBALS_BY_COPY 
 
   bool   PROTEUS_ASYNC_COMPILATION 
 
   int   PROTEUS_ASYNC_THREADS 
 
   bool   PROTEUS_ASYNC_TEST_BLOCKING 
 
   bool   PROTEUS_USE_LIGHTWEIGHT_KERNEL_CLONE 
 
Config 
 

Member Function Documentation

◆ codegenObject()

std::unique_ptr< MemoryBuffer > JitEngineDeviceCUDA::codegenObject ( Module &  M,
StringRef  DeviceArch 
)

◆ codegenPTX()

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

◆ extractModule()

std::unique_ptr< Module > JitEngineDeviceCUDA::extractModule ( BinaryInfo BinInfo)

◆ getKernelFunctionFromImage()

CUfunction JitEngineDeviceCUDA::getKernelFunctionFromImage ( StringRef  KernelName,
const void *  Image 
)

◆ getModuleHash()

HashT JitEngineDeviceCUDA::getModuleHash ( BinaryInfo BinInfo)

◆ instance()

JitEngineDeviceCUDA & JitEngineDeviceCUDA::instance ( )
static

◆ launchKernelFunction()

cudaError_t JitEngineDeviceCUDA::launchKernelFunction ( CUfunction  KernelFunc,
dim3  GridDim,
dim3  BlockDim,
void **  KernelArgs,
uint64_t  ShmemSize,
CUstream  Stream 
)

◆ resolveDeviceGlobalAddr()

void * JitEngineDeviceCUDA::resolveDeviceGlobalAddr ( const void *  Addr)

◆ setLaunchBoundsForKernel()

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

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