Cache the result of cuModuleGetFunction
This function has measurable overhead due to locks inside the GPU driver. Caching the result was observed to improve perf by up to 15% in some models.

Note that we believe TF used to cache the value, so this is considered to be a regression fix.

cc @nluehr @pjannaty 