Error
#include <poplar/Error.hpp>
-
namespace poplar
Poplar classes and functions.
Enums
-
enum class ErrorCode : unsigned
Unique error codes for all the possible errors.
These errors can also be simulated using Engine::simulateError().
Floating point exceptions will always be generated for simulated errors. For real errors, floating point exceptions must be enabled for these exceptions to be generated.
Values:
-
enumerator NONE = 0
Not an error.
-
enumerator UNKNOWN
The error does not have an error code yet.
-
enumerator TRAP
The tile raises a debug exception event.
-
enumerator FLOATING_POINT_INVALID_OPERATION
The tile failed to execute a floating point operation because it is invalid, for example multiplying a number by a NaN.
-
enumerator FLOATING_POINT_DIVIDE_BY_ZERO
The tile tried to divide a floating point number by zero.
-
enumerator FLOATING_POINT_OVERFLOW
The tile performed some floating point operation that caused a floating point number to overflow.
-
enumerator TILE_MEMORY_BANK_CONFLICT
Two or more threads on the tile tried to access the same memory bank at the same time.
-
enumerator INVALID_EXCHANGE_CONFIGURATION
The tile tried to configure how it communicates with other tiles incorrectly.
-
enumerator INVALID_ADDRESS
The tile tried to access memory that it does not have access to.
-
enumerator INVALID_OPERAND
The tile tried to execute an instruction with an invalid operand.
-
enumerator INVALID_PROGRAM_COUNTER
The tile’s program counter does not point to a valid region of memory.
-
enumerator INVALID_INSTRUCTION
The tile tried to execute an invalid instruction.
-
enumerator EXCHANGE_ERROR
The tile failed to successfully communicate with other tiles.
-
enumerator MEMORY_ERROR
The tile has detected one or more memory parity errors indicating that data may be corrupted.
-
enumerator IPUSOFTERR
Same as memory error but reported via the SOC rather than tile exception.
-
enumerator LINK_DOWN
A connection between IPUs failed.
-
enumerator HOST_LINK_DOWN
The connection between the host and the IPUs failed.
-
enumerator HOST_SYNC_TIMEOUT
The host didn’t receive any communication from the IPUs for a timeout period.
This error can be caused by a large number of things, such as: IPU deadlock, host miscommunication and some types of hardware error.
-
enumerator IPU_MEMORY_FAILURE
GCDA has determined that an excessive number of parity errors have occurred on a particular tile of an IPU, and marked this device as malfunctioning.
When this occurs Poplar will get a MEMORY_ERROR or IPUSOFTERR and the GCDA health check will report a failure.
-
enumerator NONE = 0
Functions
-
StringRef errorCodeToString(ErrorCode error)
Convert a poplar::ErrorCode code to a string.
- Throws
poplar::poplar_error – If
error
cannot be converted to a string.
-
ErrorCode errorCodeFromString(StringRef error)
Convert a string to a poplar::ErrorCode code.
- Throws
poplar::poplar_error – If
error
cannot be converted to a poplar::ErrorCode.
-
std::ostream &operator<<(std::ostream &os, const ErrorLocation &location)
-
struct ErrorLocation
- #include <Error.hpp>
Uniquely identify the location of an error within a Poplar Device.
Public Functions
-
explicit operator bool() const noexcept
- Returns
true
if ErrorLocation has been set andfalse
otherwise. For a default constructed ErrorLocation this will returnfalse
.
-
unsigned getTile() const noexcept
- Returns
The tile on which the error will occur or has occurred.
-
bool operator==(const ErrorLocation &rhs) const noexcept
-
bool operator!=(const ErrorLocation &rhs) const noexcept
-
ErrorLocation() noexcept
-
ErrorLocation(ErrorLocation const &other)
-
ErrorLocation(ErrorLocation &&other) noexcept
-
~ErrorLocation() noexcept
-
ErrorLocation &operator=(ErrorLocation other) noexcept
Friends
- friend class Engine
- friend struct ErrorLocationHash
-
friend std::ostream &operator<<(std::ostream &os, const ErrorLocation &location)
-
explicit operator bool() const noexcept
-
struct ErrorLocationHash
- #include <Error.hpp>
Hash function for ErrorLocation.
Public Functions
-
size_t operator()(const ErrorLocation &location) const noexcept
-
size_t operator()(const ErrorLocation &location) const noexcept
-
namespace core
-
enum class ErrorCode : unsigned