def get_async(self, stream=None, ary=None): if ary is None: ary = drv.pagelocked_empty(self.shape, self.dtype) ary = _as_strided(ary, strides=self.strides) else: assert ary.size == self.size assert ary.dtype == self.dtype assert ary.flags.forc assert self.flags.forc, "Array in get() must be contiguous" if self.size: drv.memcpy_dtoh_async(ary, self.gpudata, stream) return ary
def get(self, ary=None, astype=None, pagelocked=False): if ary is None: if pagelocked: ary = drv.pagelocked_empty(self.shape, self.dtype) else: ary = np.empty(self.shape, self.dtype) ary = _as_strided(ary, strides=self.strides) else: assert ary.size == self.size assert ary.dtype == self.dtype assert ary.flags.forc assert self.flags.forc, "Array in get() must be contiguous" if self.size: drv.memcpy_dtoh(ary, self.gpudata) if astype is not None: ary = ary.astype(astype) * 2 ** (self.iwl - 15) return ary
if self.size: _memcpy_discontig(self, ary, async=async, stream=stream) def set_async(self, ary, stream=None): return self.set(ary, async=True, stream=stream) def get(self, ary=None, pagelocked=False, async=False, stream=None): if ary is None: if pagelocked: ary = drv.pagelocked_empty(self.shape, self.dtype) else: ary = np.empty(self.shape, self.dtype) strides = _compact_strides(self) ary = _as_strided(ary, strides=strides) else: if self.size != ary.size: raise ValueError("self and ary must be the same size") if self.shape != ary.shape: from warnings import warn warn("get() between arrays of different shape is deprecated " "and will be removed in PyCUDA 2017.x", DeprecationWarning, stacklevel=2) ary = ary.reshape(self.shape) if self.dtype != ary.dtype: raise TypeError("self and ary must have the same dtype") if self.size: _memcpy_discontig(ary, self, async=async, stream=stream)