  In this paper we present KLARAPTOR (Kernel LAunch parameters RAtional Program
estimaTOR), a new tool built on top of the LLVM Pass Framework and NVIDIA CUPTI
API to dynamically determine the optimal values of kernel launch parameters of
a CUDA program P. To be precise, we describe a novel technique to statically
build (at the compile time of P) a so-called rational program R. Using a
performance prediction model, and knowing particular data and hardware
parameters of P at runtime, the program R can automatically and dynamically
determine the values of launch parameters of P that will yield optimal
performance. Our technique can be applied to parallel programs in general, as
well as to generic performance prediction models which account for program and
hardware parameters. We are particularly interested in programs targeting
manycore accelerators. We have implemented and successfully tested our
technique in the context of GPU kernels written in CUDA using the MWP-CWP
performance prediction model.
