[−][src]Trait accel::memory::Memcpy
Copy data from one to another
Required methods
fn copy_from(&mut self, source: &Target)
Examples
- memcpy from page-locked host memory to device memory
let mut dest = DeviceMemory::<i32>::zeros(&ctx, 12); let src = PageLockedMemory::<i32>::zeros(&ctx, 12); dest.copy_from(&src);
- memcpy from device memory to page-locked host memory
let mut dest = PageLockedMemory::<i32>::zeros(&ctx, 12); let src = DeviceMemory::<i32>::zeros(&ctx, 12); dest.copy_from(&src);
- memcpy from device to device
let mut dest = DeviceMemory::<i32>::zeros(&ctx, 12); let src = DeviceMemory::<i32>::zeros(&ctx, 12); dest.copy_from(&src);
- memcpy from Rust slice to device memory
let mut dest = DeviceMemory::<i32>::zeros(&ctx, 12); let src = vec![0_i32; 12]; dest.copy_from(src.as_slice()); // requires explicit cast to slice
- memcpy from device memory to Rust slice
let mut dest = vec![0_i32; 12]; let src = DeviceMemory::<i32>::zeros(&ctx, 12); dest.copy_from(&src);
- Cannot copy between different types
ⓘThis example deliberately fails to compile
let mut dest = DeviceMemory::<i64>::zeros(&ctx, 12); let src = PageLockedMemory::<i32>::zeros(&ctx, 12); dest.copy_from(&src); // compile fail
- Panics if sizes are different
let mut dest = DeviceMemory::<i32>::zeros(&ctx, 24); let src = PageLockedMemory::<i32>::zeros(&ctx, 12); dest.copy_from(&src); // will panic
Panics
- if
self
andsrc
are identical - if sizes of memory mismatch
fn copy_from_async<'a>(&'a mut self, src: &'a Target) -> BoxFuture<'a, ()>
Copy data in async manner
use accel::*; #[tokio::main] async fn main() { let device = Device::nth(0).unwrap(); let ctx = device.create_context(); let mut dest = DeviceMemory::<f32>::zeros(&ctx, 12); let src = PageLockedMemory::<f32>::zeros(&ctx, 12); dest.copy_from_async(&src).await; }
- Arrays are captured until await:
let future = dest.copy_from_async(&src); println!("src[0] = {}", src[0]); // Source is always accessible as usual &-reference future.await;
ⓘThis example deliberately fails to compile
let future = dest.copy_from_async(&src); println!("dest[0] = {}", dest[0]); // Destination is not accessible until .await future.await;
Implementations on Foreign Types
impl<T: Scalar, Dim: Dimension> Memcpy<Array<T, Dim>> for [T]
[src]
fn copy_from(&mut self, src: &Array<T, Dim>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
impl<T: Scalar> Memcpy<[T]> for [T]
[src]
fn copy_from(&mut self, src: &[T])
[src]
fn copy_from_async<'a>(&'a mut self, src: &'a [T]) -> BoxFuture<'a, ()>
[src]
impl<T: Scalar> Memcpy<DeviceMemory<T>> for [T]
[src]
fn copy_from(&mut self, src: &DeviceMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar> Memcpy<PageLockedMemory<T>> for [T]
[src]
fn copy_from(&mut self, src: &PageLockedMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar> Memcpy<RegisteredMemory<'_, T>> for [T]
[src]
fn copy_from(&mut self, src: &RegisteredMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
Implementors
impl<'_, '_, T: Scalar> Memcpy<RegisteredMemory<'_, T>> for RegisteredMemory<'_, T>
[src]
fn copy_from(&mut self, src: &RegisteredMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar> Memcpy<[T]> for RegisteredMemory<'_, T>
[src]
fn copy_from(&mut self, src: &[T])
[src]
fn copy_from_async<'a>(&'a mut self, src: &'a [T]) -> BoxFuture<'a, ()>
[src]
impl<'_, T: Scalar> Memcpy<DeviceMemory<T>> for RegisteredMemory<'_, T>
[src]
fn copy_from(&mut self, src: &DeviceMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar> Memcpy<PageLockedMemory<T>> for RegisteredMemory<'_, T>
[src]
fn copy_from(&mut self, src: &PageLockedMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar> Memcpy<RegisteredMemory<'_, T>> for DeviceMemory<T>
[src]
fn copy_from(&mut self, src: &RegisteredMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar> Memcpy<RegisteredMemory<'_, T>> for PageLockedMemory<T>
[src]
fn copy_from(&mut self, src: &RegisteredMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar, Dim: Dimension> Memcpy<Array<T, Dim>> for RegisteredMemory<'_, T>
[src]
fn copy_from(&mut self, src: &Array<T, Dim>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
impl<'_, T: Scalar, Dim: Dimension> Memcpy<RegisteredMemory<'_, T>> for Array<T, Dim>
[src]
fn copy_from(&mut self, src: &RegisteredMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a RegisteredMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar> Memcpy<[T]> for DeviceMemory<T>
[src]
fn copy_from(&mut self, src: &[T])
[src]
fn copy_from_async<'a>(&'a mut self, src: &'a [T]) -> BoxFuture<'a, ()>
[src]
impl<T: Scalar> Memcpy<[T]> for PageLockedMemory<T>
[src]
fn copy_from(&mut self, src: &[T])
[src]
fn copy_from_async<'a>(&'a mut self, src: &'a [T]) -> BoxFuture<'a, ()>
[src]
impl<T: Scalar> Memcpy<DeviceMemory<T>> for DeviceMemory<T>
[src]
fn copy_from(&mut self, src: &DeviceMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar> Memcpy<DeviceMemory<T>> for PageLockedMemory<T>
[src]
fn copy_from(&mut self, src: &DeviceMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar> Memcpy<PageLockedMemory<T>> for DeviceMemory<T>
[src]
fn copy_from(&mut self, src: &PageLockedMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar> Memcpy<PageLockedMemory<T>> for PageLockedMemory<T>
[src]
fn copy_from(&mut self, src: &PageLockedMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar, Dim: Dimension> Memcpy<[T]> for Array<T, Dim>
[src]
fn copy_from(&mut self, src: &[T])
[src]
fn copy_from_async<'a>(&'a mut self, src: &'a [T]) -> BoxFuture<'a, ()>
[src]
impl<T: Scalar, Dim: Dimension> Memcpy<Array<T, Dim>> for DeviceMemory<T>
[src]
fn copy_from(&mut self, src: &Array<T, Dim>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
impl<T: Scalar, Dim: Dimension> Memcpy<Array<T, Dim>> for PageLockedMemory<T>
[src]
fn copy_from(&mut self, src: &Array<T, Dim>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a Array<T, Dim>
) -> BoxFuture<'a, ()>
impl<T: Scalar, Dim: Dimension> Memcpy<DeviceMemory<T>> for Array<T, Dim>
[src]
fn copy_from(&mut self, src: &DeviceMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a DeviceMemory<T>
) -> BoxFuture<'a, ()>
impl<T: Scalar, Dim: Dimension> Memcpy<PageLockedMemory<T>> for Array<T, Dim>
[src]
fn copy_from(&mut self, src: &PageLockedMemory<T>)
[src]
fn copy_from_async<'a>(
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>
[src]
&'a mut self,
src: &'a PageLockedMemory<T>
) -> BoxFuture<'a, ()>