StarPU Internal Handbook
|
#include <node_ops.h>
Data Fields | |
copy_interface_func_t | copy_interface_to [STARPU_MAX_RAM+1] |
copy_interface_func_t | copy_interface_from [STARPU_MAX_RAM+1] |
copy_data_t | copy_data_to [STARPU_MAX_RAM+1] |
copy_data_t | copy_data_from [STARPU_MAX_RAM+1] |
copy2d_data_t | copy2d_data_to [STARPU_MAX_RAM+1] |
copy2d_data_t | copy2d_data_from [STARPU_MAX_RAM+1] |
copy3d_data_t | copy3d_data_to [STARPU_MAX_RAM+1] |
copy3d_data_t | copy3d_data_from [STARPU_MAX_RAM+1] |
void(* | wait_request_completion )(struct _starpu_async_channel *async_channel) |
unsigned(* | test_request_completion )(struct _starpu_async_channel *async_channel) |
int(* | is_direct_access_supported )(unsigned node, unsigned handling_node) |
uintptr_t(* | malloc_on_node )(unsigned dst_node, size_t size, int flags) |
void(* | free_on_node )(unsigned dst_node, uintptr_t addr, size_t size, int flags) |
map_t | map [STARPU_MAX_RAM+1] |
unmap_t | unmap [STARPU_MAX_RAM+1] |
update_map_t | update_map [STARPU_MAX_RAM+1] |
char * | name |
Reference all the methods for copying data from this kind of device to another kind of device.
copy_interface_func_t _starpu_node_ops::copy_interface_to[STARPU_MAX_RAM+1] |
Request copying a data interface from this type of node to another type of node. As a first start, you can just use the generic _starpu_copy_interface_any_to_any.
copy_interface_func_t _starpu_node_ops::copy_interface_from[STARPU_MAX_RAM+1] |
Request copying a data interface to this type of node from another type of node. As a first start, you can just use the generic _starpu_copy_interface_any_to_any.
copy_data_t _starpu_node_ops::copy_data_to[STARPU_MAX_RAM+1] |
Request copying a piece of data from this type of node to another type of node. This method is required at least for STARPU_CPU_RAM.
copy_data_t _starpu_node_ops::copy_data_from[STARPU_MAX_RAM+1] |
Request copying a piece of data to this type of node from another type of node. This method is required at least for STARPU_CPU_RAM.
copy2d_data_t _starpu_node_ops::copy2d_data_to[STARPU_MAX_RAM+1] |
Request copying a 2D piece of data (i.e. matrix tile with an ld) from this type of node to another type of node. This method is optional.
copy2d_data_t _starpu_node_ops::copy2d_data_from[STARPU_MAX_RAM+1] |
Request copying a 2D piece of data (i.e. matrix tile with an ld) to this type of node from another type of node. This method is optional.
copy3d_data_t _starpu_node_ops::copy3d_data_to[STARPU_MAX_RAM+1] |
Request copying a 3D piece of data (i.e. block piece with ldy and ldz) from this type of node to another type of node. This method is optional.
copy3d_data_t _starpu_node_ops::copy3d_data_from[STARPU_MAX_RAM+1] |
Request copying a 3D piece of data (i.e. block piece with ldy and ldz) to this type of node from another type of node. This method is optional.
void(* _starpu_node_ops::wait_request_completion) (struct _starpu_async_channel *async_channel) |
Wait for the completion of asynchronous request async_channel
.
unsigned(* _starpu_node_ops::test_request_completion) (struct _starpu_async_channel *async_channel) |
Test whether asynchronous request async_channel
has completed.
int(* _starpu_node_ops::is_direct_access_supported) (unsigned node, unsigned handling_node) |
Return whether inter-device transfers are possible between node
and handling_node
. If this returns 0, copy_interface_to will always be called with CPU RAM as either source or destination. If this returns 1, copy_interface_to may be called with both source and destination in device memory.
handling_node
is the node that will initiate the transfer. This allows to prefer starting from the driver itself.
uintptr_t(* _starpu_node_ops::malloc_on_node) (unsigned dst_node, size_t size, int flags) |
Allocate size
bytes of data on node dst_node
. flags
can contain STARPU_MALLOC_* flags, only useful for CPU memory
void(* _starpu_node_ops::free_on_node) (unsigned dst_node, uintptr_t addr, size_t size, int flags) |
Free data addr
, which was a previous allocation of size
bytes of data on node dst_node
with flags flags
map_t _starpu_node_ops::map[STARPU_MAX_RAM+1] |
Map data a piece of data to this type of node from another type of node. This method is optional
unmap_t _starpu_node_ops::unmap[STARPU_MAX_RAM+1] |
Unmap data a piece of data to this type of node from another type of node. This method is optional
update_map_t _starpu_node_ops::update_map[STARPU_MAX_RAM+1] |
Update cache coherency for the mapping of a piece of data to this type of node from another type of node. This method is optional
char* _starpu_node_ops::name |
Name of the type of memory, for debugging