ct-clmsn / nim-hpx

Nim wrapper for STE||AR HPX

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Nim is a system language emphasizing productivity. STE||AR HPX is a high performance computing (HPC)/supercomputing runtime system. nim-hpx provides a STE||AR HPX wrapper for Nim.

nim-hpx wraps STE||AR HPX's asynchronous global address space and parallelism feature set. nim-hpx provides Nim developers tooling to implement HPC applications targeting single node/multicore systems and distributed memory systems (multi-node/multicore systems).

Currently Supports

  • futures
  • local/remote asynchronous function execution
  • local/distributed partitionedSeq, partitionedTable
  • parallel foreach, reduce, transform, transformReduce

TODO

  • channels
  • collective communications
  • SPMD support
  • coarrays
  • asynchronous remote method invocation on classes (components and component actions)

Documentation

Please visit the Wiki for more details!

Installation Requirements

Dependencies:

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

Application compilation

  • make sure all dependencies are installed
  • update PKG_CONFIG_PATH making sure it points to hpx_applications.pc (usually $(HPX_INSTALL_DIR)/lib/pkgconfig)
  • modify the makefile provided to compile the test program suite

Running Programs

srun -n4 --mpi=pmi2 ./test_initfin

This library is designed to be run on an HPC system that manages jobs using the following workload managers: Slurm, PBS, etc.

Examples

The directory 'tests/' provides several examples regarding how to utilize this library.

Licenses

  • Boost Version 1.0 (2022-)

Date

20 April 2022

Author

Christopher Taylor

Special Thanks

  • The STE||AR HPX Group
  • The Nim community

Dependencies

About

Nim wrapper for STE||AR HPX

License:Boost Software License 1.0


Languages

Language:Nim 98.1%Language:Makefile 1.8%Language:Shell 0.1%