From f69deec7c1cdba758dab0fc63a7ae7a9d3b7a01c Mon Sep 17 00:00:00 2001 From: Stephan Seitz <stephan.seitz@fau.de> Date: Sun, 23 Feb 2020 18:18:08 +0100 Subject: [PATCH] Avoid calling .get in BoundaryHandling.to_cpu which does not work for OpenCL --- pystencils/boundaries/boundaryhandling.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pystencils/boundaries/boundaryhandling.py b/pystencils/boundaries/boundaryhandling.py index 4056874ed..5a60ca6eb 100644 --- a/pystencils/boundaries/boundaryhandling.py +++ b/pystencils/boundaries/boundaryhandling.py @@ -96,21 +96,21 @@ class BoundaryHandling: fi = flag_interface self.flag_interface = fi if fi is not None else FlagInterface(data_handling, name + "Flags") + if ParallelDataHandling and isinstance(self.data_handling, ParallelDataHandling): + array_handler = PyCudaArrayHandler() + else: + array_handler = self.data_handling.array_handler + def to_cpu(gpu_version, cpu_version): gpu_version = gpu_version.boundary_object_to_index_list cpu_version = cpu_version.boundary_object_to_index_list for obj, cpu_arr in cpu_version.items(): - gpu_version[obj].get(cpu_arr) + array_handler.download(gpu_version[obj], cpu_arr) def to_gpu(gpu_version, cpu_version): gpu_version = gpu_version.boundary_object_to_index_list cpu_version = cpu_version.boundary_object_to_index_list - if ParallelDataHandling and isinstance(self.data_handling, ParallelDataHandling): - array_handler = PyCudaArrayHandler() - else: - array_handler = self.data_handling.array_handler - for obj, cpu_arr in cpu_version.items(): if obj not in gpu_version or gpu_version[obj].shape != cpu_arr.shape: gpu_version[obj] = array_handler.to_gpu(cpu_arr) -- GitLab