.\" Automatically generated by Pandoc 2.17.1.1 .\" .TH "MINIASYNC_VDM_DML" "7" "2022-09-04" "MINIASYNC - miniasync_dml version 0.2.1" "MINIASYNC Programmer's Manual" .hy .\" SPDX-License-Identifier: BSD-3-Clause .\" Copyright 2020-2022, Intel Corporation .SH NAME .PP \f[B]miniasync_vdm_dml\f[R] - \f[B]DML\f[R] implementation of \f[B]miniasync\f[R](7) virtual data mover .SH SYNOPSIS .IP .nf \f[C] #include #include \f[R] .fi .PP For general description of virtual data mover API, see \f[B]miniasync\f[R](7). .SH DESCRIPTION .PP \f[B]DML\f[R] data mover is an implementation of the virtual data mover based on the \f[I]Data Mover Library\f[R](\f[B]DML\f[R]). Every \f[B]DML\f[R] data mover operation executes under the control of \f[B]DML\f[R]. .PP \f[B]DML\f[R] data mover is separated from the primary \f[B]miniasync\f[R](7) library. It\[cq]s encapsulated by the \f[B]miniasync-vdm-dml\f[R](7) library that has dependency on the \f[B]DML\f[R] library. For information about \f[B]miniasync_vdm_dml\f[R]() library compilation, see \f[I]extras/dml/README.md\f[R] file. .PP \f[B]DML\f[R] data mover supports offloading certain computations to the hardware accelerators (e.g.\ Intel\[rg] Data Streaming Accelerator). To use this feature, make sure that \f[B]DML\f[R] library is installed with \f[B]DML_HW\f[R] option. For more information about \f[B]DML\f[R], see \f[B]\f[R]. An example of \f[B]DML\f[R] data mover API usage with flags can be found in \f[B]EXAMPLE\f[R] section. .PP When the future is polled for the first time the data mover operation will be executed asynchronously under the control of \f[B]DML\f[R] library. \f[B]DML\f[R] data mover does not block the calling thread. .PP To create a new \f[B]DML\f[R] data mover instance, use \f[B]data_mover_dml_new\f[R](3) function. .PP \f[B]DML\f[R] data mover provides the following flags: .IP \[bu] 2 \f[B]VDM_F_MEM_DURABLE\f[R] - write to destination is identified as write to durable memory .PP \f[B]DML\f[R] data mover supports following operations: .IP \[bu] 2 \f[B]vdm_memcpy\f[R](3) - memory copy operation .IP \[bu] 2 \f[B]vdm_memmove\f[R](3) - memory move operation .IP \[bu] 2 \f[B]vdm_memset\f[R](3) - memory set operation .IP \[bu] 2 \f[B]vdm_flush\f[R](3) - cache flush operation .PP \f[B]DML\f[R] data mover does not support notifier feature. For more information about notifiers, see \f[B]miniasync_future\f[R](7). .SH EXAMPLE .PP Example usage of \f[B]DML\f[R] data mover \f[B]vdm_memcpy\f[R](3) operation with \f[B]MINIASYNC_DML_F_MEM_DURABLE\f[R] flag: .IP .nf \f[C] struct data_mover_dml *dmd = data_mover_dml_new(); struct vdm *dml_mover = data_mover_dml_get_vdm(dmd); struct vdm_memcpy_future memcpy_fut = vdm_memcpy(dml_mover, dest, src, copy_size, MINIASYNC_DML_F_MEM_DURABLE); \f[R] .fi .SH SEE ALSO .PP \f[B]data_mover_dml_new\f[R](3), \f[B]data_mover_dml_get_vdm\f[R](3), \f[B]vdm_flush\f[R](3), \f[B]vdm_memcpy\f[R](3), \f[B]vdm_memmove\f[R](3), \f[B]vdm_memset\f[R](3), \f[B]miniasync\f[R](7), \f[B]miniasync_future\f[R](7), \f[B]miniasync_vdm\f[R](7), \f[B]\f[R] and \f[B]\f[R]