  Dynamic Parallelism (DP) is a runtime feature of the GPU programming model
that allows GPU threads to execute additional GPU kernels, recursively. Apart
from making the programming of parallel hierarchical patterns easier, DP can
also speedup problems that exhibit a heterogeneous data layout by focusing,
through a subdivision process, the finite GPU resources on the sub-regions that
exhibit more parallelism. However, doing an optimal subdivision process is not
trivial, as there are different parameters that play an important role in the
final performance of DP. Moreover, the current programming abstraction for DP
also introduces an overhead that can penalize the final performance. In this
work we present a subdivision cost model for problems that exhibit self similar
density (SSD) workloads (such as fractals), in order understand what parameters
provide the fastest subdivision approach. Also, we introduce a new subdivision
implementation, named \textit{Adaptive Serial Kernels} (ASK), as a smaller
overhead alternative to CUDA's Dynamic Parallelism. Using the cost model on the
Mandelbrot Set as a case study shows that the optimal scheme is to start with
an initial subdivision between $g=[2,16]$, then keep subdividing in regions of
$r=2,4$, and stop when regions reach a size of $B \sim 32$. The experimental
results agree with the theoretical parameters, confirming the usability of the
cost model. In terms of performance, the proposed ASK approach runs up to $\sim
60\%$ faster than Dynamic Parallelism in the Mandelbrot set, and up to
$12\times$ faster than a basic exhaustive implementation, whereas DP is up to
$7.5\times$.
