From 224cb8c3eb970620dd0f14fa1a6c713c608028a6 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner <inform@tiker.net> Date: Thu, 23 Jun 2016 18:48:32 -0500 Subject: [PATCH] Fix device kernel naming --- loopy/schedule/device_mapping.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/loopy/schedule/device_mapping.py b/loopy/schedule/device_mapping.py index 77a07f000..714aa7b3e 100644 --- a/loopy/schedule/device_mapping.py +++ b/loopy/schedule/device_mapping.py @@ -34,16 +34,24 @@ def map_schedule_onto_host_or_device(kernel): from loopy.kernel import kernel_state assert kernel.state == kernel_state.SCHEDULED + from functools import partial + device_prog_name_gen = partial( + kernel.get_var_name_generator(), + kernel.target.device_program_name_prefix + + kernel.name + + kernel.target.device_program_name_suffix) + if not kernel.target.split_kernel_at_global_barriers(): new_schedule = ( - [CallKernel(kernel_name=kernel.name, + [CallKernel(kernel_name=device_prog_name_gen(), extra_args=[], extra_inames=[])] + list(kernel.schedule) + [ReturnFromKernel(kernel_name=kernel.name)]) kernel = kernel.copy(schedule=new_schedule) else: - kernel = map_schedule_onto_host_or_device_impl(kernel) + kernel = map_schedule_onto_host_or_device_impl( + kernel, device_prog_name_gen) return restore_and_save_temporaries( add_extra_args_to_schedule(kernel)) @@ -648,7 +656,7 @@ def add_extra_args_to_schedule(kernel): return kernel.copy(schedule=new_schedule) -def map_schedule_onto_host_or_device_impl(kernel): +def map_schedule_onto_host_or_device_impl(kernel, device_prog_name_gen): schedule = kernel.schedule loop_bounds = get_block_boundaries(schedule) @@ -739,13 +747,10 @@ def map_schedule_onto_host_or_device_impl(kernel): # Assign names, extra_inames to CallKernel / ReturnFromKernel instructions inames = [] - from functools import partial - kernel_name_gen = partial( - kernel.get_var_name_generator(), - kernel.name + kernel.target.device_program_name_suffix) + for idx, sched_item in enumerate(new_schedule): if isinstance(sched_item, CallKernel): - last_kernel_name = kernel_name_gen() + last_kernel_name = device_prog_name_gen() new_schedule[idx] = sched_item.copy( kernel_name=last_kernel_name, extra_inames=list(inames)) -- GitLab