  Sequential Monte Carlo is a family of algorithms for sampling from a sequence
of distributions. Some of these algorithms, such as particle filters, are
widely used in the physics and signal processing researches. More recent
developments have established their application in more general inference
problems such as Bayesian modeling.
  These algorithms have attracted considerable attentions in recent years as
they admit natural and scalable parallelizations. However, these algorithms are
perceived to be difficult to implement. In addition, parallel programming is
often unfamiliar to many researchers though conceptually appealing, especially
for sequential Monte Carlo related fields.
  A C++ template library is presented for the purpose of implementing general
sequential Monte Carlo algorithms on parallel hardware. Two examples are
presented: a simple particle filter and a classic Bayesian modeling problem.
