Skip to content

Grid divisors cannot be integer #264

Open
@stijnh

Description

@stijnh

Currently, grid divisors (grid_div_x,y,z) must be either a string or a lambda. Using an integer results in the following exception:

  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/interface.py", line 676, in tune_kernel
    results = strategy.tune(searchspace, runner, tuning_options)
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/strategies/brute_force.py", line 10, in tune
    return runner.run(searchspace.sorted_list(), tuning_options)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/runners/sequential.py", line 87, in run
    self.dev.compile_and_benchmark(self.kernel_source, self.gpu_args, params, self.kernel_options, tuning_options)
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/core.py", line 539, in compile_and_benchmark
    instance = self.create_kernel_instance(kernel_source, kernel_options, params, verbose)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/core.py", line 664, in create_kernel_instance
    threads, grid = util.setup_block_and_grid(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/util.py", line 781, in setup_block_and_grid
    grid = get_grid_dimensions(current_problem_size, params, grid_div, block_size_names)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/util.py", line 427, in get_grid_dimensions
    divisors = [
               ^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/util.py", line 428, in <listcomp>
    get_dimension_divisor(d, block_size_names[i], params)
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/util.py", line 424, in get_dimension_divisor
    [int(eval(replace_param_occurrences(s, params))) for s in divisor_list]
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/util.py", line 424, in <listcomp>
    [int(eval(replace_param_occurrences(s, params))) for s in divisor_list]
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/site-packages/kernel_tuner/util.py", line 768, in replace_param_occurrences
    for part in re.split("([a-zA-Z0-9_]+)", string):
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/sheldens/miniconda3/lib/python3.11/re/__init__.py", line 206, in split
    return _compile(pattern, flags).split(string, maxsplit)

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions