• Stars
    star
    2,355
  • Rank 18,734 (Top 0.4 %)
  • Language
    C++
  • License
    Boost Software Li...
  • Created almost 12 years ago
  • Updated 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

The C++ Standard Library for Parallelism and Concurrency

HPX master branch build status HPX Code Quality Assessment HPX coverage report OpenSSF Best Practices Citations file for HPX JOSS Paper about HPX Latest software release of HPX

Documentation: latest, development (master)

HPX Logo


HPX is a C++ Standard Library for Concurrency and Parallelism. It implements all of the corresponding facilities as defined by the C++ Standard. Additionally, in HPX we implement functionalities proposed as part of the ongoing C++ standardization process. We also extend the C++ Standard APIs to the distributed case.

The goal of HPX is to create a high quality, freely available, open source implementation of a new programming model for conventional systems, such as classic Linux based Beowulf clusters or multi-socket highly parallel SMP nodes. At the same time, we want to have a very modular and well designed runtime system architecture which would allow us to port our implementation onto new computer system architectures. We want to use real-world applications to drive the development of the runtime system, coining out required functionalities and converging onto a stable API which will provide a smooth migration path for developers.

The API exposed by HPX is not only modeled after the interfaces defined by the C++11/14/17/20 ISO standard, it also adheres to the programming guidelines used by the Boost collection of C++ libraries. We aim to improve the scalability of today's applications and to expose new levels of parallelism which are necessary to take advantage of the exascale systems of the future.

What's so special about HPX?

  • HPX exposes a uniform, standards-oriented API for ease of programming parallel and distributed applications.
  • It enables programmers to write fully asynchronous code using hundreds of millions of threads.
  • HPX provides unified syntax and semantics for local and remote operations.
  • HPX makes concurrency manageable with dataflow and future based synchronization.
  • It implements a rich set of runtime services supporting a broad range of use cases.
  • HPX exposes a uniform, flexible, and extendable performance counter framework which can enable runtime adaptivity
  • It is designed to solve problems conventionally considered to be scaling-impaired.
  • HPX has been designed and developed for systems of any scale, from hand-held devices to very large scale systems.
  • It is the first fully functional implementation of the ParalleX execution model.
  • HPX is published under a liberal open-source license and has an open, active, and thriving developer community.

Governance

The HPX project is a meritocratic, consensus-based community project. Anyone with an interest in the project can join the community, contribute to the project design and participate in the decision making process. This document describes how that participation takes place and how to set about earning merit within the project community.

Documentation

If you plan to use HPX we suggest to start with the latest released version which can be downloaded here.

To quickly get started with HPX on most Linux distributions you can read the quick start guide here. Detailed instructions on building and installing HPX on various platforms can be found here. The full documentation for the latest release of HPX can always be found here.

If you would like to work with the cutting edge version of this repository (master branch) the documentation can be found here. We strongly recommend that you follow the current health status of the master branch by looking at our continuous integration results website. While we try to keep the master branch stable and usable, sometimes new bugs trick their way into the code base. The CircleCI continuous integration service additionally tracks the current build status for the master branch: HPX master branch build status.

We use Codacy to assess the code quality of this project: HPX Code Quality Assessment. For our coverage analysis, we also rely on Codacy to present the results: HPX coverage report.

If you can't find what you are looking for in the documentation or you suspect you've found a bug in HPX we very much encourage and appreciate any issue reports through the issue tracker for this Github project.

If you have any questions feel free to ask it over at StackOverflow and tag the question with hpx.

For a full list of support options please see our Support page.

Code of conduct

We have adopted a code of conduct for this project. Please refer to this document if you would like to know more about the expectations for members of our community, with regard to how they will behave toward each other.

Please find the project's gpg key, which is used to sign HPX releases here.

Citing

In publications, please use our paper in The Journal of Open Source Software as the main citation for HPX: JOSS Paper about HPX. For referring to the latest release of HPX please use: Latest software release of HPX.

Acknowledgements

We have used a free open-source license of PVS-Studio, a static analyzer for C++ code to check our code base.

Past and current funding and support for HPX is listed here

More Repositories

1

phylanx

An Asynchronous Distributed C++ Array Processing Toolkit
C++
74
star
2

octotiger

Astrophysics program simulating the evolution of star systems based on the fast multipole method on adaptive Octrees
C++
45
star
3

blaze_tensor

3D Tensors for Blaze (https://bitbucket.org/blaze-lib/blaze)
C++
34
star
4

hpxcl

This repository contains components that will support percolation via OpenCL and CUDA
C++
31
star
5

tutorials

This repository contains material for HPX tutorials given by members of the STE||AR-Group
TeX
31
star
6

HPXAndroid

This repository contains Android Makefiles to build the HPX core libraries along with some helper functionality to spawn HPX from within an Android application and call back from HPX to the Android applicaion
C++
17
star
7

blaze_cuda

WIP Β· CUDA compatibility for Blaze Β· https://bitbucket.org/blaze-lib/blaze
Cuda
14
star
8

cpp_lectures_2016

C++ Summer Lecture Series 2016
C++
12
star
9

cppnow2013_ot

Code examples from Bryce Adelstein-Lelbach's 2013 C++Now talk about object transmission with Boost.Asio and Boost.Serialization
C++
10
star
10

octopus

An HPX octree-based 3D AMR framework
C++
9
star
11

blaze

Fork of the Blaze library for compatibility with Blaze CUDA Β· https://bitbucket.org/blaze-lib/blaze Β· https://github.com/STEllAR-GROUP/blaze_cuda
C++
9
star
12

cxx-demangler

C++
7
star
13

hpx-kokkos

HPX/Kokkos interoperability library
C++
6
star
14

hpxflow

A unified Batch and Stream Processing framework, with added advantage of HPX
C++
6
star
15

hpxc

HPX C Interface
C++
5
star
16

hpx-local

The C++ Standard Library for Parallelism and Concurrency (on-node functionality)
C++
4
star
17

hpxML

Research Repository for Machine Learning Algorithms
C++
4
star
18

OctoTigerBuildChain

Build chain to build octotiger on x86, ppc64le, and cray
Shell
4
star
19

docker_build_env

This repository contains a base docker image that is suitable to build HPX.
Dockerfile
4
star
20

miniapps

This repository holds a collection of mini applications from various sources ported to HPX.
C++
4
star
21

hpxpi

HPXPI is an implementation of XPI (eXtreme ParalleX Interface) on top of the HPX runtime system
C++
4
star
22

had_amr

C++
3
star
23

hpxla

HPX Linear Algebra Library
C++
3
star
24

NBody

Repository for NBody experiments
C++
3
star
25

hpxca

HPX Container Algorithms
C++
3
star
26

TilingSolver

Python
2
star
27

hpx-docs

Generated documentation for HPX (https://github.com/STEllAR-GROUP/hpx)
HTML
1
star
28

hpx_script

Bindings for HPX for various scripting languages, currently Python and Lua.
C++
1
star
29

NAIRI_20

Consolidate the NSF NAIRI 2020 proposal effort
1
star
30

phylanx_plugin

Example plugin for Phylanx
C++
1
star
31

stellar_archive

Public repository for the distribution of slides, code samples, and other learning tools
1
star
32

parallelnumericalintegration

C++
1
star
33

chess

Parallel, distributed chess
C++
1
star
34

chapel_hpx

Chapel examples, hand-converted to HPX
Python
1
star
35

P0361

P0361: Invoking Algorithms Asynchronously (ISO C++ proposal)
HTML
1
star
36

GrayScottTasks

Julia
1
star
37

phylanx_halide

Phylanx plugin wrapping Halide functionalities
C++
1
star