Tensor Tiling Library
 
Loading...
Searching...
No Matches
TTL_duplex_scheme.h File Reference

Go to the source code of this file.

Data Structures

struct  TTL_duplex_const_void_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_char_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_uchar_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_int_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_uint_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_short_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_ushort_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_long_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 
struct  TTL_duplex_const_ulong_tensor_buffering_t
 Data required to perform duplex buffer pipelining. More...
 

Functions

static TTL_io_void_tensor_t TTL_step_buffering (TTL_duplex_const_void_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_void_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_void_tensor_t ext_tensor_in, __local void *int_base_in, TTL_ext_void_tensor_t ext_tensor_out, __local void *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_void_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_char_tensor_t TTL_step_buffering (TTL_duplex_const_char_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_char_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_char_tensor_t ext_tensor_in, __local char *int_base_in, TTL_ext_char_tensor_t ext_tensor_out, __local char *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_char_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_uchar_tensor_t TTL_step_buffering (TTL_duplex_const_uchar_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_uchar_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_uchar_tensor_t ext_tensor_in, __local uchar *int_base_in, TTL_ext_uchar_tensor_t ext_tensor_out, __local uchar *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_uchar_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_int_tensor_t TTL_step_buffering (TTL_duplex_const_int_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_int_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_int_tensor_t ext_tensor_in, __local int *int_base_in, TTL_ext_int_tensor_t ext_tensor_out, __local int *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_int_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_uint_tensor_t TTL_step_buffering (TTL_duplex_const_uint_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_uint_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_uint_tensor_t ext_tensor_in, __local uint *int_base_in, TTL_ext_uint_tensor_t ext_tensor_out, __local uint *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_uint_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_short_tensor_t TTL_step_buffering (TTL_duplex_const_short_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_short_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_short_tensor_t ext_tensor_in, __local short *int_base_in, TTL_ext_short_tensor_t ext_tensor_out, __local short *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_short_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_ushort_tensor_t TTL_step_buffering (TTL_duplex_const_ushort_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_ushort_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_ushort_tensor_t ext_tensor_in, __local ushort *int_base_in, TTL_ext_ushort_tensor_t ext_tensor_out, __local ushort *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_ushort_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_long_tensor_t TTL_step_buffering (TTL_duplex_const_long_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_long_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_long_tensor_t ext_tensor_in, __local long *int_base_in, TTL_ext_long_tensor_t ext_tensor_out, __local long *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_long_tensor_buffering_t *const duplex_buffering)
 
static TTL_io_ulong_tensor_t TTL_step_buffering (TTL_duplex_const_ulong_tensor_buffering_t *const duplex_buffering, TTL_tile_t tile_next_import, TTL_tile_t tile_current_export)
 
static TTL_duplex_const_ulong_tensor_buffering_t TTL_start_duplex_buffering (TTL_ext_ulong_tensor_t ext_tensor_in, __local ulong *int_base_in, TTL_ext_ulong_tensor_t ext_tensor_out, __local ulong *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
 Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
 
static void TTL_finish_buffering (TTL_duplex_const_ulong_tensor_buffering_t *const duplex_buffering)
 

Detailed Description

Given pair of blocking import and export that can execute concurrently, TTL_duplex_buffering issues them together and then waits on both to complete, hopefully executing them in parallel to each other. This scheme uses two internal buffers, one for the import and one for the export. Note that the export is pipelined to pair the import of the current tile with the export of previous tile.

The following table draws the pipelined actions performed in duplex buffering. It specifies which tile is processed in each iteration:

Action\Iteration #0 #1 #i (2:NumOfTiles-1) #NumOfTiles-
Import 0 1 i
Wait Import 0 1 i
Compute 0 1 i
Export 0 i-1 NumOfTiles-1
WaitExport 0 i-1 NumOfTiles-1

Notice the epilog (#NumOfTiles) which is an extra iteration.

When including this file the following must be defined

#define TTL_TENSOR_TYPE void #define TTL_TENSOR_TYPE uchar etc

Definition in file TTL_duplex_scheme.h.

Function Documentation

◆ TTL_finish_buffering() [1/9]

static void TTL_finish_buffering ( TTL_duplex_const_char_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 511 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [2/9]

static void TTL_finish_buffering ( TTL_duplex_const_int_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 1026 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [3/9]

static void TTL_finish_buffering ( TTL_duplex_const_long_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 2056 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [4/9]

static void TTL_finish_buffering ( TTL_duplex_const_short_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 1541 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [5/9]

static void TTL_finish_buffering ( TTL_duplex_const_uchar_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 769 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [6/9]

static void TTL_finish_buffering ( TTL_duplex_const_uint_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 1283 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [7/9]

static void TTL_finish_buffering ( TTL_duplex_const_ulong_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 2314 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [8/9]

static void TTL_finish_buffering ( TTL_duplex_const_ushort_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 1799 of file TTL_duplex_scheme.h.

◆ TTL_finish_buffering() [9/9]

static void TTL_finish_buffering ( TTL_duplex_const_void_tensor_buffering_t *const duplex_buffering)
inlinestatic

Definition at line 254 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [1/9]

static TTL_duplex_const_char_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_char_tensor_t ext_tensor_in,
__local char * int_base_in,
TTL_ext_char_tensor_t ext_tensor_out,
__local char * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);
static TTL_duplex_const_void_tensor_buffering_t TTL_start_duplex_buffering(TTL_ext_void_tensor_t ext_tensor_in, __local void *int_base_in, TTL_ext_void_tensor_t ext_tensor_out, __local void *int_base_out, TTL_event_t(*events)[2], TTL_tile_t first_tile)
Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.
event_t TTL_event_t
TTL_event_t is a pseudonym for OpenCL event_t.
static TTL_event_t TTL_get_event()
Return an empty event of type TTL_event_t.


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 440 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [2/9]

static TTL_duplex_const_int_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_int_tensor_t ext_tensor_in,
__local int * int_base_in,
TTL_ext_int_tensor_t ext_tensor_out,
__local int * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 955 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [3/9]

static TTL_duplex_const_long_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_long_tensor_t ext_tensor_in,
__local long * int_base_in,
TTL_ext_long_tensor_t ext_tensor_out,
__local long * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 1985 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [4/9]

static TTL_duplex_const_short_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_short_tensor_t ext_tensor_in,
__local short * int_base_in,
TTL_ext_short_tensor_t ext_tensor_out,
__local short * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 1469 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [5/9]

static TTL_duplex_const_uchar_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_uchar_tensor_t ext_tensor_in,
__local uchar * int_base_in,
TTL_ext_uchar_tensor_t ext_tensor_out,
__local uchar * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 697 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [6/9]

static TTL_duplex_const_uint_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_uint_tensor_t ext_tensor_in,
__local uint * int_base_in,
TTL_ext_uint_tensor_t ext_tensor_out,
__local uint * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 1212 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [7/9]

static TTL_duplex_const_ulong_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_ulong_tensor_t ext_tensor_in,
__local ulong * int_base_in,
TTL_ext_ulong_tensor_t ext_tensor_out,
__local ulong * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 2242 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [8/9]

static TTL_duplex_const_ushort_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_ushort_tensor_t ext_tensor_in,
__local ushort * int_base_in,
TTL_ext_ushort_tensor_t ext_tensor_out,
__local ushort * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 1727 of file TTL_duplex_scheme.h.

◆ TTL_start_duplex_buffering() [9/9]

static TTL_duplex_const_void_tensor_buffering_t TTL_start_duplex_buffering ( TTL_ext_void_tensor_t ext_tensor_in,
__local void * int_base_in,
TTL_ext_void_tensor_t ext_tensor_out,
__local void * int_base_out,
TTL_event_t(*) events[2],
TTL_tile_t first_tile )
inlinestatic

Create a TTL_DUPLEX_BUFFERING_TYPE and begin the buffering process.

Parameters
ext_tensor_inA tensor describing the input in global memory
int_base_inThe address of the local import buffer.
ext_tensor_outA tensor describing the output in global memory
int_base_outThe address of the local export buffer.
eventsA pointer to a list of 2 events. The first event in the list will be used for imports, the second event in the list will be used for exports.
first_tileThe first tile to fetch for the scheme
Returns
The TTL_DUPLEX_BUFFERING_TYPE created from the input parameters.

The first event in the list will be used for imports, the second event in the list will be used for exports.

Example:

TTL_duplex_buffering_t buffering_scheme = TTL_start_duplex_buffering(
ext_base_in, ext_layout_in, l_buffers[0],
ext_base_out, ext_layout_out, l_buffers[1],
&events);


Returns
The TTL_duplex_buffering_t created from the input parameters.

Solid description of duplex buffering here.

The simplest form of duplex buffering takes the following flow.

This can be optimized and standardized using the TTL_step_buffering call.

Definition at line 183 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [1/9]

static TTL_io_char_tensor_t TTL_step_buffering ( TTL_duplex_const_char_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 458 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [2/9]

static TTL_io_int_tensor_t TTL_step_buffering ( TTL_duplex_const_int_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 973 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [3/9]

static TTL_io_long_tensor_t TTL_step_buffering ( TTL_duplex_const_long_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 2003 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [4/9]

static TTL_io_short_tensor_t TTL_step_buffering ( TTL_duplex_const_short_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 1487 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [5/9]

static TTL_io_uchar_tensor_t TTL_step_buffering ( TTL_duplex_const_uchar_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 715 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [6/9]

static TTL_io_uint_tensor_t TTL_step_buffering ( TTL_duplex_const_uint_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 1230 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [7/9]

static TTL_io_ulong_tensor_t TTL_step_buffering ( TTL_duplex_const_ulong_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 2260 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [8/9]

static TTL_io_ushort_tensor_t TTL_step_buffering ( TTL_duplex_const_ushort_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 1745 of file TTL_duplex_scheme.h.

◆ TTL_step_buffering() [9/9]

static TTL_io_void_tensor_t TTL_step_buffering ( TTL_duplex_const_void_tensor_buffering_t *const duplex_buffering,
TTL_tile_t tile_next_import,
TTL_tile_t tile_current_export )
inlinestatic

Definition at line 201 of file TTL_duplex_scheme.h.