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::JitEngineDeviceHIP Class Reference

#include <JitEngineDeviceHIP.hpp>

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

Public Member Functions

void * resolveDeviceGlobalAddr (const void *Addr)
 
void setLaunchBoundsForKernel (Module &M, Function &F, size_t GridSize, int BlockSize)
 
void setKernelDims (Module &M, dim3 &GridDim, dim3 &BlockDim)
 
std::unique_ptr< Module > extractModule (BinaryInfo &BinInfo)
 
std::unique_ptr< MemoryBuffer > codegenObject (Module &M, StringRef DeviceArch)
 
hipFunction_t getKernelFunctionFromImage (StringRef KernelName, const void *Image)
 
hipError_t launchKernelFunction (hipFunction_t KernelFunc, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, hipStream_t Stream)
 
HashT getModuleHash (BinaryInfo &BinInfo)
 
- Public Member Functions inherited from proteus::JitEngineDevice< JitEngineDeviceHIP >
DeviceError_t compileAndRun (JITKernelInfo &KernelInfo, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, typename DeviceTraits< JitEngineDeviceHIP >::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 JitEngineDeviceHIPinstance ()
 
static const SmallVector< StringRef > gridDimXFnName ()
 
static const SmallVector< StringRef > gridDimYFnName ()
 
static const SmallVector< StringRef > gridDimZFnName ()
 
static const SmallVector< StringRef > blockDimXFnName ()
 
static const SmallVector< StringRef > blockDimYFnName ()
 
static const SmallVector< StringRef > blockDimZFnName ()
 
static const SmallVector< StringRef > blockIdxXFnName ()
 
static const SmallVector< StringRef > blockIdxYFnName ()
 
static const SmallVector< StringRef > blockIdxZFnName ()
 
static const SmallVector< StringRef > threadIdxXFnName ()
 
static const SmallVector< StringRef > threadIdxYFnName ()
 
static const SmallVector< StringRef > threadIdxZFnName ()
 

Additional Inherited Members

- Public Types inherited from proteus::JitEngineDevice< JitEngineDeviceHIP >
using DeviceError_t = typename DeviceTraits< JitEngineDeviceHIP >::DeviceError_t
 
using DeviceStream_t = typename DeviceTraits< JitEngineDeviceHIP >::DeviceStream_t
 
using KernelFunction_t = typename DeviceTraits< JitEngineDeviceHIP >::KernelFunction_t
 
- Public Attributes inherited from proteus::JitEngineDevice< JitEngineDeviceHIP >
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< JitEngineDeviceHIP >
 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< JitEngineDeviceHIP >
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

◆ blockDimXFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::blockDimXFnName ( )
inlinestatic

◆ blockDimYFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::blockDimYFnName ( )
inlinestatic

◆ blockDimZFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::blockDimZFnName ( )
inlinestatic

◆ blockIdxXFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::blockIdxXFnName ( )
inlinestatic

◆ blockIdxYFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::blockIdxYFnName ( )
inlinestatic

◆ blockIdxZFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::blockIdxZFnName ( )
inlinestatic

◆ codegenObject()

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

◆ extractModule()

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

◆ getKernelFunctionFromImage()

hipFunction_t JitEngineDeviceHIP::getKernelFunctionFromImage ( StringRef  KernelName,
const void *  Image 
)

◆ getModuleHash()

HashT JitEngineDeviceHIP::getModuleHash ( BinaryInfo BinInfo)

◆ gridDimXFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::gridDimXFnName ( )
inlinestatic

◆ gridDimYFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::gridDimYFnName ( )
inlinestatic

◆ gridDimZFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::gridDimZFnName ( )
inlinestatic

◆ instance()

JitEngineDeviceHIP & JitEngineDeviceHIP::instance ( )
static

◆ launchKernelFunction()

hipError_t JitEngineDeviceHIP::launchKernelFunction ( hipFunction_t  KernelFunc,
dim3  GridDim,
dim3  BlockDim,
void **  KernelArgs,
uint64_t  ShmemSize,
hipStream_t  Stream 
)

◆ resolveDeviceGlobalAddr()

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

◆ setKernelDims()

void proteus::JitEngineDeviceHIP::setKernelDims ( Module &  M,
dim3 &  GridDim,
dim3 &  BlockDim 
)

◆ setLaunchBoundsForKernel()

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

◆ threadIdxXFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::threadIdxXFnName ( )
inlinestatic

◆ threadIdxYFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::threadIdxYFnName ( )
inlinestatic

◆ threadIdxZFnName()

static const SmallVector< StringRef > proteus::JitEngineDeviceHIP::threadIdxZFnName ( )
inlinestatic

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