diff --git a/loopy/target/pyopencl_execution.py b/loopy/target/pyopencl_execution.py
index e67c49c59a845e4f90efdedbb1e513b5c72cf875..b6c58ce472e1139b05914bea34036d6f8a85adf2 100644
--- a/loopy/target/pyopencl_execution.py
+++ b/loopy/target/pyopencl_execution.py
@@ -180,6 +180,10 @@ class PyOpenCLExecutionWrapperGenerator(ExecutionWrapperGeneratorBase):
                     if not issubclass(arg.arg_class, KernelArgument):
                         continue
 
+                    is_written = arg.base_name in kernel.get_written_variables()
+                    if is_written:
+                        gen("%s = %s.get(queue=queue)" % (arg.name, arg.name))
+
             gen("")
 
         if options.return_dict: