Error

#include <poplar/Error.hpp>
namespace poplar

Poplar classes and functions.

Enums

enum ErrorCode

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.

A connection between IPUs failed.

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.

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, ErrorCode error)
std::istream &operator>>(std::istream &is, ErrorCode &error)
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 and false otherwise. For a default constructed ErrorLocation this will return false.

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
ErrorLocation(core::ErrorLocation other)

Private Members

std::unique_ptr<core::ErrorLocation> impl

Friends

friend class Engine
friend struct ErrorLocationHash
friend std::ostream &operator<<(std::ostream &os, const ErrorLocation &location)
struct ErrorLocationHash
#include <Error.hpp>

Hash function for ErrorLocation.

Public Functions

size_t operator()(const ErrorLocation &location) const noexcept
namespace core