Skip to content
ct-clmsn edited this page Apr 29, 2022 · 7 revisions

Why?

Nim-HPX provides Nim users the parallel and distributed computing functionality found in STE||AR HPX. Nim developers using this library get the following tools: asynchronous function support (local/remote), parallel algorithms, distributed vectors and coarray support, block-level SPMD (single-program many data) support, futures/promises, await/dataflow, and asynchronous method execution (local/remote).

How?

Nim-HPX requires the following dependencies:

  • pkg-config
  • cmake
  • hwloc
  • tcmalloc
  • papi
  • Boost
  • APEX
  • STE||AR HPX

It's recommended that everything but APEX and STE||AR HPX be installed using your GNU/Linux distributions package manager. Here's a quick explanation of each dependency and what it offers.

pkg-config

A software dependency management tool for build tools (GNU autotools, make, CMake, etc); Nim-HPX relies on this to point the Nim compiler to your STE||AR HPX installation.

A software build tool used to compile and install STE||AR HPX

A software library that collects and organizes hardware information from the OS.

A memory management library that supports multithreaded software. The library usually distributed as part of google-perftools or as tcmalloc-minimal.

A software library that provides convenient access to hardware counters implemented in a processor.

A collection of C++ software libraries that have been vetted by several people involved in the ISO Standards Committee.

A performance monitoring and measurement library for asynchronous, many-task, runtime systems (AMR/AMT). It provides AMR/AMT the ability to adapt performance during execution.

An asynchronous, many-task, runtime system.

What?

Nim-HPX provides the current API (work-in-progress):

  • Locality Information
  • Futures, Promises
  • Parallel Algorithms
  • Local/Remote Asynchronous Function Support
  • Local/Remote Asynchronous Method Support
  • Distributed Sequences and Coarrays
  • SPMD (single-program many-data) Support
  • Await/Data-flow
Clone this wiki locally