8#include <llvm/ADT/StringRef.h>
10#include <unordered_map>
16#define HIP_SYMBOL(x) x
24 void *DevPtr =
nullptr;
26 assert(DevPtr &&
"Expected non-null device pointer for global");
32 dim3 BlockDim,
void **KernelArgs,
33 uint64_t ShmemSize, hipStream_t Stream) {
34 return hipLaunchKernel(KernelFunc, GridDim, BlockDim, KernelArgs, ShmemSize,
39 StringRef
KernelName,
const void *Image,
bool RelinkGlobalsByCopy,
40 const std::unordered_map<std::string, GlobalVarInfo> &VarNameToGlobalInfo) {
41 hipModule_t HipModule;
42 hipFunction_t KernelFunc;
45 if (RelinkGlobalsByCopy) {
46 for (
auto &[GlobalName, GVI] : VarNameToGlobalInfo) {
49 " without a concrete device address");
54 (GlobalName +
"$ptr").c_str()));
56 uint64_t PtrVal = (uint64_t)GVI.DevAddr;
61 hipModuleGetFunction(&KernelFunc, HipModule,
KernelName.str().c_str()));
67 dim3 BlockDim,
void **KernelArgs,
68 uint64_t ShmemSize, hipStream_t Stream) {
69 return hipModuleLaunchKernel(KernelFunc, GridDim.x, GridDim.y, GridDim.z,
70 BlockDim.x, BlockDim.y, BlockDim.z, ShmemSize,
71 Stream, KernelArgs,
nullptr);
void char * KernelName
Definition CompilerInterfaceDevice.cpp:54
#define HIP_SYMBOL(x)
Definition CoreDeviceHIP.h:16
#define proteusHipErrCheck(CALL)
Definition UtilsHIP.h:18
Definition CompiledLibrary.h:7
Definition MemoryCache.h:26
void reportFatalError(const llvm::Twine &Reason, const char *FILE, unsigned Line)
Definition Error.cpp:14
cudaError_t launchKernelDirect(void *KernelFunc, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, CUstream Stream)
Definition CoreDeviceCUDA.h:38
cudaError_t launchKernelFunction(CUfunction KernelFunc, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, CUstream Stream)
Definition CoreDeviceCUDA.h:78
void * resolveDeviceGlobalAddr(const void *Addr)
Definition CoreDeviceCUDA.h:26
CUfunction getKernelFunctionFromImage(StringRef KernelName, const void *Image, bool RelinkGlobalsByCopy, const std::unordered_map< std::string, GlobalVarInfo > &VarNameToGlobalInfo)
Definition CoreDeviceCUDA.h:50