NVSL/cfiddle

`perf_counters` are handled as a special case for invocation descriptions.

Closed this issue · 0 comments

You can't run a piece of code with different sets of perf counters. For instance, this doesn't work:

run(b, "foo", perf_counters=arg_map([[cycles], [instructions]])

The underlying problem is that arg_map treats singles values as lists of length 1:

>>> arg_map(a=1)
[{'a': 1}]

For perf_counters the desired behavior would be

>>> arg_map(a=[4])
[{'a': [4]}]

But, instead we get

>>> arg_map(a=[4])
[{'a': 4}]

run_list() circumvents this problems by not passing the perf_counter argument through arg_map().