invocation, and results in a less biased measurement. This
            is important because CUDA synchronization time is non-
            trivial (order single to low double digit microseconds)
            and would otherwise bias the measurement.
  blocked_autorange sets block_size by running a warmup period,
  increasing block size until timer overhead is less than 0.1% of
  the overall computation. This value is then used for the main
  measurement loop.

  Returns:
     A *Measurement* object that contains measured runtimes and
     repetition counts, and can be used to compute statistics.
     (mean, median, etc.)

  Return type:
     *Measurement*

collect_callgrind(number: int, , repeats: None, collect_baseline: bool, retain_out_file: bool) -> CallgrindStats
   collect_callgrind(number: int, , repeats: int, collect_baseline: bool, retain_out_file: bool) -> Tuple[CallgrindStats, ...]
  Collect instruction counts using Callgrind.
