Open MPI logo

Portable Linux Processor Affinity (PLPA)

  |   Home   |   Support   |   FAQ   |  

Note that this project is deprecated by the Portable Hardware Locality (hwloc) project!

The PLPA and libtopology projects have merged to form the new Portable Hardware Locality (hwloc) project. hwloc therefore represents the evolution of both projects. PLPA distributions will continue to be available, but the software is not likely will not evolve. All future work is being done on hwloc.


Current stable version: 1.3.2

The Portable Linux Processor Affinity (PLPA) library does the following, regardless of your Linux distribution, kernel version, and GLibc version:

  • Provide consistent behavior
  • Provide binary compatibility of processor affinity
  • Provide a common API and set of abstractions

PLPA is an attempt to solve the problem that there are multiple API's for processor affinity within Linux. Specifically, the functions sched_setaffinity() and sched_getaffinity() have numbers and types of parameters depending on your Linux vendor and/or version of GLibc. This is quite problematic for applications attempting to use processor affinity in Linux for compile-time, link-time, and run-time reasons.

The PLPA provides a single processor affinity API that developers can write to in order to get both consistent behavior and binary compatibility across different Linux installations (assuming that you have an executable that is otherwise binary Linux portable, of course).

This library was developed by the Open MPI team as a standalone project that can be used by the Linux community. Specifically: it is distributed independently of Open MPI and does not require any part of Open MPI for its compile-, link-, or run-time functionality.