4. The PopLibs libraries
The PopLibs libraries provide application-level functions that can be used in programs for the IPU. The available libraries are listed in the table below.
Library |
Description |
---|---|
|
Linear algebra functions (matrix multiplications, convolutions) |
|
Functions used in neural networks (for example, non-linearities, pooling and loss functions) |
|
Functions for operations on tensors in control programs (elementwise functions and reductions) |
|
Functions for populating tensors with random numbers |
|
Functions for operating on sparse tensors |
|
General utility functions for building graphs |
Examples using the library functions can be found on the Graphcore GitHub.
For details of all the functions in the PopLibs libraries, see the Poplar and PopLibs API Reference.
4.1. Using PopLibs
The PopLibs libraries are in the lib
directory of the Poplar installation. Each
library has its own include directory and library object file. For
example, the include files for the popops
library are in the include/popops
directory:
#include <include/popops/ElementWise.hpp>
You will need to link the relevant PopLibs libraries with your program, in addition to the Poplar library. For example:
$ g++ -std=c++11 my-program.cpp -lpoplar -lpopops
Some libraries are dependent on other libraries, which you will also need to link with your program. See the Poplar and PopLibs API Reference for details.