Wednesday, April 12, 2017

PULSAR

"PULSAR version 2.0, released in November 2014, is a complete programming platform for large-scale distributed memory systems with multicore processors and hardware accelerators. PULSAR provides a simple abstraction layer over multithreading, message-passing, and multi-GPU, multi-stream programming. PULSAR offers a general-purpose programming model, suitable for a wide range of scientific and engineering applications. PULSAR was inspired by systolic arrays, popularized by Hsiang-Tsung Kung and Charles E. Leiserson.

The PULSAR programming model relies on the following five abstractions to define the processing pattern:
  • Virtual Systolic Array (VSA) is a set of VDPs connected with channels.
  • Virtual Data Processor (VDP) is the basic processing element in the VSA.
  • Channel is a point-to-point connection between a pair of VDPs.
  • Packet is the basic unit of information transferred in a channel.
  • Tuple is a unique VDP identifier.
It also relies on the following two abstractions to map the processing pattern to the actual hardware:
  • Thread is synonymous with a CPU thread or a collection of threads.
  • Device is synonymous with an accelerator device (GPU, Xeon Phi, etc.)
The sections to follow describe the roles of the different entities, how the VDP operation is defined, how the VSA is constructed, and how the VSA is mapped to the hardware. These operations are accessible to the user through PULSAR's Application Programming Interface (API), which is currently available with C bindings.

PULSAR runtime can handle the complexity of multithreading within each node and message-passing among all nodes.

PULSAR runtime can also handle the complexity of multithreading and GPU acceleration within each node, and message-passing among all nodes."

http://icl.cs.utk.edu/pulsar/index.html

Design and Implementation of the PULSAR Programming System for Large Scale Computing - http://superfri.org/superfri/article/view/121

No comments:

Post a Comment