diff --git a/loopy/codegen/__init__.py b/loopy/codegen/__init__.py index d117daf5109324a88b7c3a6c08bf2d9961ae3ae4..6eef793c7cf8294e7f8fad11a0757d59898d7ac7 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 af6f9712a73da22cdc461a76444adaf0dd4b9e6e..2ea3831694418e0b13323c2bc6da64bfe3cf7e7c 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 3ef3ee27dd77daff398303a1715882199b8ec6d4..4111b8f530cbc4c8e7fb8d79aabf005a44924574 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 b20967f67dac4482ddd3a0a148e35f6e9d744be8..3ec3a50b11f72a2975ac4366d495326bfcb69b37 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 7939dc764114387a2d1f2a10bf361fd7d06c13ba..a0f0767880ac62d57aad7d327364df0f871b68cc 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 627329e2c54a62ed2af6358f1d7e94fd7e9624c5..7aaa9ca7929dc8102ab94382e9cb9627c847dba6 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