Improvement of the HPX core runtime - STEllAR-GROUP/hpx GitHub Wiki

Motivation

We are currently reaching the limit of the design of our core runtime library. We are faced with adding more and more features that enable optimizing certain aspects of the main HPX runtime.

A list of these features (please complete):* A locality can have various ways to communicate with other localities. Communication channels include, but are not limited to:

  • Shared memory
  • Ethernet
  • Infiniband
  • ...

A locality could also have more than one network interface that HPX might want to use to increase the throughput of parcels. To support these features, we need to query the localities for their capabilities and preferred way of communication. This information may also include the endianness and bitness of the two communication partners to allow further optimizations.

Other things which could be possibly be exposed are:

  • compression on the wire (compress payload in parcels to reduce bandwidth requirements)
  • chunking parcel message parcel sizes to improve network utilization
  • message coalescing, buffering policies, routing policies (this could be action specific)

Possible entities

  • NUMA awareness: while it is possible to allocate memory on a particular NUMA domain, HPX currently has no means to force executing code working on that memory right next to it.