[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