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.

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.

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