StarPU Internal Handbook
_starpu_node_ops Struct Reference

#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
 

Detailed Description

Reference all the methods for copying data from this kind of device to another kind of device.

Field Documentation

◆ copy_interface_to

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_from

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_to

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_from

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_to

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_from

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_to

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_from

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.

◆ wait_request_completion

void(* _starpu_node_ops::wait_request_completion) (struct _starpu_async_channel *async_channel)

Wait for the completion of asynchronous request async_channel.

◆ test_request_completion

unsigned(* _starpu_node_ops::test_request_completion) (struct _starpu_async_channel *async_channel)

Test whether asynchronous request async_channel has completed.

◆ is_direct_access_supported

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.

◆ malloc_on_node

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

◆ free_on_node

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

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

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

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

◆ name

char* _starpu_node_ops::name

Name of the type of memory, for debugging


The documentation for this struct was generated from the following file: