[Llvm-bgq-discuss] Initial port of HPX to BlueGene/Q using BGClang is complete

Thomas Heller thom.heller at gmail.com
Fri Oct 11 09:41:02 CDT 2013


Hello everyone,

As this is my first post to this list, let me quickly introduce myself:
My name is Thomas Heller and I am a (computer science) researcher at the 
University of Erlangen-Nurember working at the Chair for Computer 
Science 3 - Computer Architectures. My main interest lies in programming 
massively parallel architectures using advanced parallelization 
techniques. As such I am one of the developers of the HPX Runtime system 
(https://github.com/STEllAR-GROUP/hpx more on that later).

I am happy to announce that, thanks to the awesome help of Hal Finkel, 
the initial port of HPX to BlueGene/Q using BGClang is complete. You can 
find build instructions here:
https://github.com/STEllAR-GROUP/hpx#bluegeneq

There is one minor caveat which needs to be solved in order to use HPX 
efficiently on the BG/Q: We are using user level threads for our tasks. 
A fast and efficient user level context switching mechanism is essential 
to HPX's performance. So far, I was only able to get context switching 
based on POSIX's makecontext and swapcontext to work. We are also able 
to leverage Boost.Context, but the code for ppc64 seems to have bugs and 
currently doesn't work. As I am not proficient enough with the PowerPC 
A2 architecture, any help in getting some fast assembly routines working 
would be greatly appreciated.

For those of you who haven't heard about HPX, let me give you a small 
introduction:

HPX is a general purpose C++ runtime system for parallel and distributed 
applications of any scale. Even if that's quite a mouthful, we mean 
every word of it!

The goal of HPX is to create a high quality, freely available, open 
source implementation of the ParalleX 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 modelled after the interfaces defined by the 
C++11 ISO standard and adheres to the programming guidelines used by the 
Boost collection of C++ libraries.

What's so special about HPX?
  - HPX exposes an 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.
  - 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.

Best regards,
Thomas Heller


More information about the llvm-bgq-discuss mailing list