Poplar and PopLibs
FullyConnected.hpp File Reference

Fully-connected layers using sparse tensors. More...

#include <poplar/Graph.hpp>
#include <poplar/OptionFlags.hpp>
#include <poplar/Program.hpp>
#include <popsparse/FullyConnectedParams.hpp>
#include <popsparse/PlanningCache.hpp>
#include <popsparse/SparseTensor.hpp>

Go to the source code of this file.

Namespaces

namespace  popsparse
 Support for sparse matrices.
 
namespace  popsparse::dynamic
 Support for dynamic sparse matrices.
 

Functions

SparseTensor popsparse::dynamic::createFullyConnectedWeights (poplar::Graph &graph, const poplar::Type &inputType, const FullyConnectedParams &params, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}, PlanningCache *cache=nullptr)
 Create a sparse tensor that is used as the weights W for a fully connected layer. More...
 
poplar::Tensor popsparse::dynamic::createFullyConnectedInput (poplar::Graph &graph, const poplar::Type &inputType, const FullyConnectedParams &params, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}, PlanningCache *cache=nullptr)
 Create a dense tensor that is used as the input activations for a fully connected layer. More...
 
poplar::Tensor popsparse::dynamic::fullyConnectedFwd (poplar::Graph &graph, const SparseTensor &weights, const poplar::Tensor &activations, const FullyConnectedParams &fcParams, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}, PlanningCache *cache=nullptr)
 Run a fully connected forward (or inference) pass. More...
 
poplar::Tensor popsparse::dynamic::fullyConnectedGradA (poplar::Graph &graph, const SparseTensor &weights, const poplar::Tensor &gradients, const FullyConnectedParams &fcParams, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}, PlanningCache *cache=nullptr)
 Run a fully connected GradA pass. More...
 
poplar::Tensor popsparse::dynamic::fullyConnectedSparseGradW (poplar::Graph &graph, const poplar::Tensor sparsityMetaInfo, const poplar::Tensor &gradA, const poplar::Tensor &activations, const FullyConnectedParams &fcParams, poplar::program::Sequence &prog, const poplar::DebugContext &debugContext={}, const poplar::OptionFlags &options={}, PlanningCache *cache=nullptr)
 Run a fully connected GradW pass to compute sparse gradients. More...
 
std::tuple< unsigned, unsigned, unsigned > popsparse::dynamic::fullyConnectedDenseGradWSerialSplits (const poplar::Graph &graph, const poplar::Type &inputType, const FullyConnectedParams &fcParams, const poplar::OptionFlags &options_={}, PlanningCache *cache=nullptr)
 Report the serial splitting of a dense gradW output given the memory proportion limit given in options. More...
 

Detailed Description

Fully-connected layers using sparse tensors.