Parameter VocabularyΒΆ

There are certain tunable parameters that have special meaning in Kernel Tuner. This document specifies which parameters are special and what there uses are when auto-tuning GPU kernels.

In general, it is best to avoid using these parameter names for purposes other than the ones indicated in this document.

kernel_tuner # is inserted by Kernel Tuner to signal the code is compiled using the tuner

block_size_* # reserved for thread block dimensions
grid_size_* # reserved for grid dimensions, if you want to tune these use problem_size

compiler_opt_* # reserved for future support for tuning compiler options

loop_unroll_factor_* # reserved for tunable parameters that specify loop unrolling factors

nvml_* # reserved for tunable parameters and outputs related to NVML
nvml_pwr_limit # use NVML to set power limit
nvml_gr_clock # use NVML to set graphics clock
nvml_mem_clock # use NVML to set memory clock

cuda_* # reserved for setting parameters related to CUDA kernel execution
cuda_sm_percentage # set the percentage of active SMs (requires cuda-python)

There are also a number of names that Kernel Tuner uses for reporting benchmarking results. Because these are reported along with the tunable parameters, it is generally a good idea to not use these names for any tunable parameters.

time* # reserved for time measurements

# Information that can be observed using kernel_tuner.nvml.NVMLObserver:
nvml_energy
nvml_power
power_readings
core_freq
mem_freq
temperature

# Information observed using kernel_tuner.observers.PowerSensor
ps_energy  # Energy in Joules
ps_power   # Power in Watts