Thrust is able to hide a variety of details from the coder and it is claimed that Thrust sets the parameters to some degree with respect to the system specifications. How does Thrust choose the best parameterization and how does it handle a variety of codes in different machines? What is Thrust's approach to implementing such a generic library?
Thrust uses a heuristic which attempts to maximize the potential occupancy of the CUDA kernels it launches.
A standalone version of the heuristic Thrust uses is here: