6 dim3 BlockDim,
void **KernelArgs,
7 uint64_t ShmemSize,
void *Stream) {
12 static const bool IsProteusDisabledEnvVar =
13 getEnvOrDefaultBool(
"PROTEUS_DISABLE",
false);
15 if (IsProteusDisabledEnvVar) {
17 Kernel, GridDim, BlockDim, KernelArgs, ShmemSize,
18 static_cast<typename JitDeviceImplT::DeviceStream_t
>(Stream));
21 auto &Jit = JitDeviceImplT::instance();
22 if (Jit.isProteusDisabled()) {
24 Kernel, GridDim, BlockDim, KernelArgs, ShmemSize,
25 static_cast<typename JitDeviceImplT::DeviceStream_t
>(Stream));
28 auto OptionalKernelInfo = Jit.getJITKernelInfo(
Kernel);
29 if (!OptionalKernelInfo) {
31 Kernel, GridDim, BlockDim, KernelArgs, ShmemSize,
32 static_cast<typename JitDeviceImplT::DeviceStream_t
>(Stream));
35 auto &KernelInfo = OptionalKernelInfo.value().get();
36 const auto &CGConfig = Config::get().getCGConfig(KernelInfo.getName());
37 if (
const auto &TunedGridDim = CGConfig.gridDim())
38 GridDim = dim3((*TunedGridDim)[0], (*TunedGridDim)[1], (*TunedGridDim)[2]);
39 if (
const auto &TunedBlockDim = CGConfig.blockDim())
41 dim3((*TunedBlockDim)[0], (*TunedBlockDim)[1], (*TunedBlockDim)[2]);
43 if (Config::get().ProteusDebugOutput) {
44 Logger::logs(
"proteus") <<
"JIT Launch Kernel\n";
45 Logger::logs(
"proteus") <<
"=== Kernel Info\n";
46 Logger::logs(
"proteus") <<
"KernelName " << KernelInfo.getName() <<
"\n";
47 Logger::logs(
"proteus") <<
"Grid " << GridDim.x <<
", " << GridDim.y <<
", "
49 Logger::logs(
"proteus") <<
"Block " << BlockDim.x <<
", " << BlockDim.y
50 <<
", " << BlockDim.z <<
"\n";
51 Logger::logs(
"proteus") <<
"KernelArgs " << KernelArgs <<
"\n";
52 Logger::logs(
"proteus") <<
"ShmemSize " << ShmemSize <<
"\n";
53 Logger::logs(
"proteus") <<
"Stream " << Stream <<
"\n";
54 Logger::logs(
"proteus") <<
"=== End Kernel Info\n";
57 return Jit.compileAndRun(
58 KernelInfo, GridDim, BlockDim, KernelArgs, ShmemSize,
59 static_cast<typename JitDeviceImplT::DeviceStream_t
>(Stream));
auto __proteus_launch_kernel_internal(void *Kernel, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, void *Stream)
Definition CompilerInterfaceDeviceInternal.h:5
cudaError_t launchKernelDirect(void *KernelFunc, dim3 GridDim, dim3 BlockDim, void **KernelArgs, uint64_t ShmemSize, CUstream Stream)
Definition CoreDeviceCUDA.h:41