Cast
#include <popops/Cast.hpp>
Casts between tensor types.
-
namespace popops
Common functions, such as elementwise and reductions.
Functions
-
poplar::Tensor cast(poplar::Graph &graph, const poplar::Tensor &src, const poplar::Type &dstType, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext = {})
Cast elements of the specified
src
tensor todstType
, returning the result as a new tensor.Note: If
dstType == src.elementType()
, then the operation is a copy.- Parameters
graph – The graph that the operation will be added to.
src – Source tensor to cast.
dstType – The type of the destination tensor.
prog – Program to add the cast operation to.
debugContext – Optional debug information.
- Returns
The resultant cast tensor.
-
poplar::Tensor cast(poplar::Graph &graph, const poplar::Tensor &src, const poplar::Type &dstType, const poplar::Tensor &metadata, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext = {})
Cast elements of the specified
src
tensor todstType
, returning the result as a new tensor.Note: If
dstType == src.elementType()
, then the operation is a copy.- Parameters
graph – The graph that the operation will be added to.
src – Source tensor to cast.
dstType – The type of the destination tensor.
metadata – A tensor of type QUARTER_METADATA initialised with the format and scale to use when casting to the destination tensor. The returned tensor will contain this metadata.
prog – Program to add the cast operation to.
debugContext – Optional debug information.
- Returns
The resultant cast tensor.
-
void castWithOutput(poplar::Graph &graph, const poplar::Tensor &src, const poplar::Tensor &dst, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext = {})
Cast elements of the specified
src
tensor into thedst
tensor.Note: If
dst.elementType() == src.elementType()
, then the operation is a copy.- Parameters
graph – The graph that the operation will be added to.
src – Source tensor to cast.
dst – The destination tensor to cast into.
prog – Program to add the cast operation to.
debugContext – Optional debug information.
-
poplar::program::Program cast(poplar::Graph &graph, poplar::Tensor src, poplar::Tensor dst, const poplar::DebugContext &debugContext = {})
Create a program to copy tensor casting between types (for example, half->float).
Precondition:
src.shape() == dst.shape()
Note: If
dst.elementType() == src.elementType()
, then the operation is just a copy.- Parameters
graph – The graph that the operation will be added to.
src – Source tensor.
dst – Destination tensor.
debugContext – Optional debug information.
- Returns
The program to perform this operation.
-
void cast(poplar::Graph &graph, poplar::Tensor src, poplar::Tensor dst, poplar::ComputeSet cs)
Create vertices to copy element wise from the
src
tensor to thedst
tensor casting between types (for example, half->float).The vertices are added to the specified compute set.
Precondition:
src.shape() == dst.shape()
- Parameters
graph – The graph that the operation will be added to.
src – Source tensor.
dst – Destination tensor.
cs – Compute set to add the vertices to.
-
poplar::Tensor cast(poplar::Graph &graph, poplar::Tensor src, const poplar::Type &dstType, poplar::ComputeSet cs, const poplar::DebugContext &debugContext = {})
Create vertices to cast elements of the specified
src
tensor todstType
, returning the result as a new tensor.The vertices are added to the specified compute set.
- Parameters
graph – The graph that the operation will be added to.
src – Source tensor.
dstType – Destination type.
cs – Compute set to add the vertices to.
debugContext – Optional debug information.
- Returns
Resultant destination tensor.
-
poplar::Tensor cast(poplar::Graph &graph, poplar::Tensor src, const poplar::Type &dstType, const poplar::Tensor &metadata, poplar::ComputeSet cs, const poplar::DebugContext &debugContext = {})
Create vertices to cast elements of the specified
src
tensor todstType
, returning the result as a new tensor.The vertices are added to the specified compute set.
- Parameters
graph – The graph that the operation will be added to.
src – Source tensor.
dstType – Destination type.
metadata – A tensor of type QUARTER_METADATA initialised with the format and scale to use when casting to the destination tensor. The returned tensor will contain this metadata.
cs – Compute set to add the vertices to.
debugContext – Optional debug information.
- Returns
Resultant destination tensor.
-
poplar::Tensor checkAccuracyWhenCast(poplar::Graph &graph, const poplar::Tensor &input, poplar::Type outputType, double tolerance, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext = {})
Helper function which checks the relative error in the tensor
input
when casting it to typeoutputType
.The result is a single element bool tensor which is set to true if the error is less than
tolerance
.Preconditions:
input.elementType() == FLOAT
outputType == HALF
input.numElements() == 1
- Parameters
graph – The graph that the operation will be added to.
input – Input tensor.
outputType – Output type after the cast operation.
tolerance – Allowed tolerance in error from cast operation.
prog – Program to add the check onto.
debugContext – Optional debug information.
- Throws
poputil::poplibs_error – If either
input
oroutputType
are not either half or float.- Returns
Boolean tensor indicating that the error is less than
tolerance
.
-
poplar::Tensor cast(poplar::Graph &graph, const poplar::Tensor &src, const poplar::Type &dstType, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext = {})