diff --git a/pyopencl/__init__.py b/pyopencl/__init__.py index 2c673fda7371ea8cc4aacf80fc354060f42628a5..5f92e136a2f712b12e5a8fdd792db1e123a21ebc 100644 --- a/pyopencl/__init__.py +++ b/pyopencl/__init__.py @@ -1692,10 +1692,11 @@ def enqueue_copy(queue, dest, src, **kwargs): elif get_cl_header_version() >= (2, 0) and isinstance(dest, SVM): # to SVM - if isinstance(src, SVM): - src = src.mem + if not isinstance(src, SVM): + src = SVM(src) - return _cl._enqueue_svm_memcpy(queue, dest.mem, src, **kwargs) + is_blocking = kwargs.pop("is_blocking", True) + return _cl._enqueue_svm_memcpy(queue, is_blocking, dest, src, **kwargs) else: # assume to-host @@ -1723,7 +1724,9 @@ def enqueue_copy(queue, dest, src, **kwargs): elif isinstance(src, SVM): # from svm # dest is not a SVM instance, otherwise we'd be in the branch above - return _cl._enqueue_svm_memcpy(queue, dest, src.mem, **kwargs) + is_blocking = kwargs.pop("is_blocking", True) + return _cl._enqueue_svm_memcpy( + queue, is_blocking, SVM(dest), src, **kwargs) else: # assume from-host raise TypeError("enqueue_copy cannot perform host-to-host transfers") diff --git a/src/wrap_cl_part_2.cpp b/src/wrap_cl_part_2.cpp index 22d9f3c178ee245c0e553f4cbedc1bec83530f9d..4ef6afca9244a0f9e4bacca026e899d9519a1637 100644 --- a/src/wrap_cl_part_2.cpp +++ b/src/wrap_cl_part_2.cpp @@ -284,7 +284,7 @@ void pyopencl_expose_part_2(py::module &m) ; } - m.def("_enqueue_svm_memcpyw", enqueue_svm_memcpy, + m.def("_enqueue_svm_memcpy", enqueue_svm_memcpy, py::arg("queue"), py::arg("is_blocking"), py::arg("dst"),