From 24446d1081263a79a54770bd13dcecce1efc6625 Mon Sep 17 00:00:00 2001 From: Andreas Kloeckner Date: Tue, 17 May 2016 18:36:08 -0500 Subject: [PATCH] Be more careful when naming pyopencl host code (unbreaks meshmode) --- loopy/codegen/__init__.py | 5 ++++- loopy/codegen/device_mapping.py | 4 +++- loopy/compiled.py | 12 +++++------- loopy/target/__init__.py | 2 ++ loopy/target/pyopencl.py | 3 +++ loopy/version.py | 2 +- 6 files changed, 18 insertions(+), 10 deletions(-) diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py index d117daf51..6eef793c7 100644 --- a/loopy/codegen/__init__.py +++ b/loopy/codegen/__init__.py @@ -456,7 +456,10 @@ def generate_code_v2(kernel): allow_complex=allow_complex, var_name_generator=kernel.get_var_name_generator(), is_generating_device_code=False, - gen_program_name=kernel.name, + gen_program_name=( + kernel.target.host_program_name_prefix + + kernel.name + + kernel.target.host_program_name_suffix), schedule_index_end=len(kernel.schedule)) from loopy.codegen.result import generate_host_or_device_program diff --git a/loopy/codegen/device_mapping.py b/loopy/codegen/device_mapping.py index af6f9712a..2ea383169 100644 --- a/loopy/codegen/device_mapping.py +++ b/loopy/codegen/device_mapping.py @@ -37,7 +37,9 @@ def map_schedule_onto_host_or_device(kernel): from functools import partial kernel_name_gen = partial( kernel.get_var_name_generator(), - kernel.name + kernel.target.device_program_name_suffix) + kernel.target.device_program_name_prefix + + kernel.name + + kernel.target.device_program_name_suffix) from loopy.schedule import ( RunInstruction, EnterLoop, LeaveLoop, Barrier, diff --git a/loopy/compiled.py b/loopy/compiled.py index 3ef3ee27d..4111b8f53 100644 --- a/loopy/compiled.py +++ b/loopy/compiled.py @@ -542,8 +542,10 @@ def generate_arg_setup(gen, kernel, implemented_data_info, options): # }}} -def generate_invoker(kernel, implemented_data_info, host_code): +def generate_invoker(kernel, codegen_result): options = kernel.options + implemented_data_info = codegen_result.implemented_data_info + host_code = codegen_result.host_code() system_args = [ "_lpy_cl_kernels", "queue", "allocator=None", "wait_for=None", @@ -580,7 +582,7 @@ def generate_invoker(kernel, implemented_data_info, host_code): gen("_lpy_evt = {kernel_name}({args})" .format( - kernel_name=kernel.name, + kernel_name=codegen_result.host_program.name, args=", ".join( ["_lpy_cl_kernels", "queue"] + args @@ -754,11 +756,7 @@ class CompiledKernel: kernel=kernel, cl_kernels=cl_kernels, implemented_data_info=codegen_result.implemented_data_info, - invoker=generate_invoker( - kernel, - codegen_result.implemented_data_info, - codegen_result.host_code(), - )) + invoker=generate_invoker(kernel, codegen_result)) # {{{ debugging aids diff --git a/loopy/target/__init__.py b/loopy/target/__init__.py index b20967f67..3ec3a50b1 100644 --- a/loopy/target/__init__.py +++ b/loopy/target/__init__.py @@ -81,7 +81,9 @@ class TargetBase(object): # }}} + host_program_name_prefix = "" host_program_name_suffix = "_outer" + device_program_name_prefix = "" device_program_name_suffix = "" def split_kernel_at_global_barriers(self): diff --git a/loopy/target/pyopencl.py b/loopy/target/pyopencl.py index 7939dc764..a0f076788 100644 --- a/loopy/target/pyopencl.py +++ b/loopy/target/pyopencl.py @@ -269,6 +269,9 @@ class PyOpenCLTarget(OpenCLTarget): warnings) and support for complex numbers. """ + host_program_name_prefix = "_lpy_host_" + host_program_name_suffix = "" + def __init__(self, device=None, pyopencl_module_name="_lpy_cl"): # This ensures the dtype registry is populated. import pyopencl.tools # noqa diff --git a/loopy/version.py b/loopy/version.py index 627329e2c..7aaa9ca79 100644 --- a/loopy/version.py +++ b/loopy/version.py @@ -32,4 +32,4 @@ except ImportError: else: _islpy_version = islpy.version.VERSION_TEXT -DATA_MODEL_VERSION = "v29-islpy%s" % _islpy_version +DATA_MODEL_VERSION = "v31-islpy%s" % _islpy_version -- GitLab