17. Glossary
Architecture
For more information, see the Poplar and PopLibs User Guide.
Bulk-synchronous parallel
For more information, see the IPU Programmer’s Guide.
-
For more information, see the IPU Programmer’s Guide.
Debug context
For more information, see the Poplar and PopLibs API Reference.
Flame graph
A visualisation of hierarchical data that is often used to show sampled stack traces of a program that has been profiled.
Liveness
For more information, see the Memory and Performance Optimisation Guide.
Always-live
An always-live variable is allocated an exclusive memory region for the entire lifetime of the graph execution, such as vertex code.
Not-always-live
It is not necessary to keep the content of not-always-live variables in memory throughout execution. Therefore, two variables that are not live at the same time can be allocated to the same location
Lowering
Lowered variable
To execute an application on the IPU, variables may need to be divided between tiles to satisfy memory constraints. Poplar maps global user-defined variables onto tiles by a process that is called lowering. During this process, Poplar typically translates each of these unlowered variables into a set of lowered variables which have specific tile allocations.
Memory
For more information, see the Poplar and PopLibs User Guide.
Memory bank
An area of memory that allows a single concurrent access only. A memory bank is 32 and 16 KiB in the Mk1 and Mk2 Colossus, respectively. Note that addresses are only contiguous in non-interleaved memory.
Memory element
In interleaved memory, an element is a pair of banks that allows access to 128 bits. In non-interleaved memory, it is a single bank that allows access to 64 bits.
Memory interference
Memory region
A tile’s memory is organised as two regions, each made up of banks. Concurrent accesses can be made to addresses in different banks.
Non-interleaved memory
Instructions can only be fetched from non-interleaved memory.
Interleaved memory
Interleaving allows for two 64-bit-aligned addresses to be accessed simultaneously.
Overflowed memory
If the memory required by an application exceeds the maximum memory available on a tile, part of it is overflowed.
Out-of-memory (OOM)
An application that is out of memory needs more memory than is available on one or more tiles and cannot be executed.
-
For more information, see the IPU Programmer’s Guide.
-
For more information, see the Poplar and PopLibs User Guide and IPU Programmer’s Guide.
-
External sync
Synchronisation between IPUs.
Internal sync
Synchronisation between all of the tiles on a single IPU.
-
Active tile
A tile is active in the context of a program step if it is involved in executing that step.
Tile balance
A measure of the fraction of tiles that are involved in executing a program step.
Unlowered variable
See lowering.
-
For more information, see the Poplar and PopLibs User Guide.
Vertex field
For more information, see the Poplar and PopLibs User Guide.
Vertex instance
An instance of a class that defines a vertex type.
Vertex source
A vertex is an instance of a class that can be written in C++ or assembly.
For more information, see the Poplar and PopLibs User Guide.
Vertex state
For more information, see the Poplar and PopLibs User Guide.
Vertex type
A class that defines a vertex in Poplar.
For more information, see the Poplar and PopLibs User Guide.