Poplar and PopLibs
SparsePartitioner.hpp
Go to the documentation of this file.
1// Copyright (c) 2020 Graphcore Ltd. All rights reserved.
7#ifndef _poplibs_popsparse_SparsePartitioner_hpp_
8#define _poplibs_popsparse_SparsePartitioner_hpp_
9
10#include <poplar/Interval.hpp>
11#include <poplar/OptionFlags.hpp>
12#include <poplar/Target.hpp>
13#include <poplar/Type.hpp>
18#include <string>
19#include <vector>
20
21namespace popsparse {
22
23class PartitionerImpl;
24
25namespace dynamic {
26
28template <typename T> struct SparsityDataImpl {
30 std::vector<std::size_t> metaInfo;
31
33 std::vector<T> nzValues;
34};
35
42template <typename T> class Partitioner {
43 std::string name;
44
45public:
46 const PartitionerImpl &getImpl() const { return *impl; }
47
48 Partitioner(const FullyConnectedParams &params, const poplar::Type &dataType,
49 const poplar::Target &target, const poplar::OptionFlags &options,
50 PlanningCache *cache = {}, std::string name = "");
51
52 Partitioner(const MatMulParams &params, const poplar::Type &dataType,
53 const poplar::Target &target, const poplar::OptionFlags &options,
54 PlanningCache *cache = {}, std::string name = "");
55
57
61
65
69
74 const SparsityDataImpl<T> &sparsityDataImpl) const;
75
79 const SparsityDataImpl<T> &sparsityDataImpl) const;
80
84 const SparsityDataImpl<T> &sparsityDataImpl) const;
85
87 std::array<std::vector<std::size_t>, 3> getPlanPartitions(void) const;
88
90 std::size_t getmetaInfoBucketElements(void) const;
91
92private:
93 std::unique_ptr<PartitionerImpl> impl;
94};
95
96} // namespace dynamic
97} // namespace popsparse
98#endif // _poplibs_popsparse_SparsePartitioner_hpp_
Parameters used for fully-connected layers using sparse tensors.
Definitions for sparse matrix multiply operations.
Storage formats for a block sparse matrix.
A set of option/value string flags to be used in various APIs.
Definition: OptionFlags.hpp:24
A target representation.
Definition: Target.hpp:69
Class representing device data types.
Definition: Type.hpp:42
Class to translate and encode sparsity information for a fully connected layer.
Definition: SparsePartitioner.hpp:42
SparsityDataImpl< T > createSparsityDataImpl(const COOMatrix< T > &matrix_) const
Creates implementation sparsity representation for a coordinate (COO) format matrix.
std::size_t getmetaInfoBucketElements(void) const
Fetch the number of elements in a meta info bucket.
COOMatrix< T > sparsityDataImplToCOOMatrix(const SparsityDataImpl< T > &sparsityDataImpl) const
Create a coordinate (COO) representation matrix from implementation sparsity representation.
CSCMatrix< T > sparsityDataImplToCSCMatrix(const SparsityDataImpl< T > &sparsityDataImpl) const
Create compressed sparse columns (CSC) representation from implementation sparsity representation.
CSRMatrix< T > sparsityDataImplToCSRMatrix(const SparsityDataImpl< T > &sparsityDataImpl) const
Create compressed sparse rows (CSR) representation from implementation sparsity representation.
SparsityDataImpl< T > createSparsityDataImpl(const CSRMatrix< T > &matrix_) const
Creates implementation sparsity representation for a compressed sparse rows (CSR) matrix.
std::array< std::vector< std::size_t >, 3 > getPlanPartitions(void) const
Fetch the partitions in X, Y and Z to reveal the plan.
SparsityDataImpl< T > createSparsityDataImpl(const CSCMatrix< T > &matrix_) const
Create implementation sparsity representation for a compressed sparse columns (CSC) matrix.
Class used to cache the calculation of plans for dynamically sparse operations.
Definition: PlanningCache.hpp:26
Support for sparse matrices.
Definition: codelets.hpp:8
Fully-connected layers using sparse tensors.
Block Sparse matrix stored as coordinate (COO) or triplets format.
Definition: SparseStorageFormats.hpp:38
Sparse matrix stored in compressed sparse columns (CSC) format for a matrix of size [M x N].
Definition: SparseStorageFormats.hpp:85
Sparse matrix stored in compressed sparse rows (CSR) format for a matrix of size [M x N].
Definition: SparseStorageFormats.hpp:136
Encoding of sparsity representation.
Definition: SparsePartitioner.hpp:28
std::vector< std::size_t > metaInfo
Meta information representing sparsity for each tile.
Definition: SparsePartitioner.hpp:30
std::vector< T > nzValues
The non-zero values of the sparse matrix.
Definition: SparsePartitioner.hpp:33