Poplar and PopLibs
Pad.hpp
Go to the documentation of this file.
1// Copyright (c) 2016 Graphcore Ltd. All rights reserved.
8#ifndef popops_Pad_hpp
9#define popops_Pad_hpp
10#include <poplar/Graph.hpp>
11#include <poplar/Program.hpp>
12#include <vector>
13
14namespace popops {
15
16// Some general comments:
17// Constant padding requires a Graph, as a Variable is created. This is
18// the reason for separate API functions for constant padding and other
19// paddings.
20
21namespace padding {
22
24enum class Type {
29 EDGE,
35};
36
38enum class MappingMethod {
40 NONE,
42 ZERO,
47 EDGE
48
49};
50
51} // namespace padding
52
69 const std::vector<std::ptrdiff_t> &paddingLower,
70 const std::vector<std::ptrdiff_t> &paddingUpper, float val = 0.0f,
71 padding::MappingMethod mappingMethod = padding::MappingMethod::ZERO);
72
74pad(poplar::Graph &graph, const poplar::Tensor &t,
75 const std::vector<std::ptrdiff_t> &paddingLower,
76 const std::vector<std::ptrdiff_t> &paddingUpper, int val,
77 padding::MappingMethod mappingMethod = padding::MappingMethod::ZERO);
78
80pad(poplar::Graph &graph, const poplar::Tensor &t,
81 const std::vector<std::ptrdiff_t> &paddingLower,
82 const std::vector<std::ptrdiff_t> &paddingUpper, const poplar::Tensor &val,
83 padding::MappingMethod mappingMethod = padding::MappingMethod::ZERO);
85
100pad(poplar::Graph &graph, const poplar::Tensor &t, std::ptrdiff_t paddingLower,
101 std::ptrdiff_t paddingUpper, unsigned dim, float val = 0.0f,
102 padding::MappingMethod mappingMethod = padding::MappingMethod::ZERO);
103
105pad(poplar::Graph &graph, const poplar::Tensor &t, std::ptrdiff_t paddingLower,
106 std::ptrdiff_t paddingUpper, unsigned dim, int val,
107 padding::MappingMethod mappingMethod = padding::MappingMethod::ZERO);
108
110pad(poplar::Graph &graph, const poplar::Tensor &t, std::ptrdiff_t paddingLower,
111 std::ptrdiff_t paddingUpper, unsigned dim, const poplar::Tensor &val,
112 padding::MappingMethod mappingMethod = padding::MappingMethod::ZERO);
114
124 const std::vector<std::ptrdiff_t> &paddingLower,
125 const std::vector<std::ptrdiff_t> &paddingUpper,
126 padding::Type type);
127
136poplar::Tensor pad(const poplar::Tensor &t, std::ptrdiff_t paddingLower,
137 std::ptrdiff_t paddingUpper, unsigned dim,
138 padding::Type type);
139
140} // namespace popops
141
142#endif // popops_Pad_hpp
Type
Padding types as per numpy.pad.
Definition: Pad.hpp:24
@ EDGE
Also known as nearest-neighbour padding, each new pad element has its value set to that of the pre-pa...
@ REFLECT
The tensor is reflected outwards.
MappingMethod
Methods to map added padding elements to tiles.
Definition: Pad.hpp:38
@ ZERO
Set tile mapping of padding element to tile 0 for the graph.
This class represents a graph program to be executed on the IPU.
Definition: Graph.hpp:52
A reference to a subset of tensor elements.
Definition: Tensor.hpp:38
Common functions, such as elementwise and reductions.
Definition: AllTrue.hpp:15
poplar::Tensor pad(poplar::Graph &graph, const poplar::Tensor &t, const std::vector< std::ptrdiff_t > &paddingLower, const std::vector< std::ptrdiff_t > &paddingUpper, float val=0.0f, padding::MappingMethod mappingMethod=padding::MappingMethod::ZERO)
Return a tensor with constant padding added.