Go to the source code of this file.
TTL_simplex_buffering pipelines a pair of import and export transactions using three internal buffers, in rotation: each buffer interchangeably serves as input buffer and output buffer, such that in each iteration one buffer is used both to export then import and two buffers are used by compute for reading and writing.
With simplex buffering we're only waiting for previous iterations, so DMA transactions run mostly in parallel to computation, but serially with each other. Using the same buffer both for import and export is possible allowing us to overlap exporting from and importing to the same buffer.
The following table draws the pipelined actions performed in simplex buffering. It specifies which tile is processed in each iteration:
Action\Iteration | #-1 | #0 | #1 | #2 | #i (2:NumOfTiles-2) | #NumOfTiles-1 | #NumOfTiles | #NumOfTiles+1 |
---|---|---|---|---|---|---|---|---|
WaitExport | 0 | i-2 | NumOfTiles-3 | NumOfTiles-2 | NumOfTiles-1 | |||
Export | 0 | 1 | i-1 | NumOfTiles-2 | NumOfTiles-1 | |||
Wait Import | 0 | 1 | 2 | i | NumOfTiles-1 | |||
Import | 0 | 1 | 2 | 3 | i+1 | |||
Compute | 0 | 1 | 2 | i | NumOfTiles-1 |
Notice the prolog (at iteration number -1) and the 2 epilogs (at iterations number NumOfTiles and NumOfTiles+1) which add in total 3 extra iterations.
Definition in file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 448 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 900 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 1805 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 1352 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 674 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 1126 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 2031 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 1579 of file TTL_simplex_scheme.h.
|
inlinestatic |
Definition at line 222 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 351 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 803 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 1708 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 1255 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 577 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 1029 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 1934 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 1481 of file TTL_simplex_scheme.h.
|
inlinestatic |
Create a TTL_simplex_buffering_t and begin the buffering process.
int_base1 | The address of the first buffer to be used in local memory |
int_base2 | The address of the second buffer to be used in local memory |
int_base3 | The address of the third buffer to be used in local memory |
ext_tensor_in | The external tensor to import the input data from |
ext_tensor_out | The external tensor to export the output data to |
event_in | A pointer to the event to use for the inward (external to internal) transfer completion |
event_out | A pointer to the event to use for the inward (internal to external) transfer completion |
first_tile | The first tile to fetch for the scheme |
Solid description of TTL_double_double_buffering_t buffering here
Example:
This can be optimized and standardized using the TTL_step_buffering call.
Definition at line 125 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 374 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 826 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 1731 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 1278 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 600 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 1052 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 1957 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 1505 of file TTL_simplex_scheme.h.
|
inlinestatic |
Simple declarations for file ordering purposes
Definition at line 148 of file TTL_simplex_scheme.h.