Loading...
Searching...
No Matches
_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:

- node_ops.h