HPX at C++Now! 2012

C++Now! 2012 will start May 14th. Based on the successful traditions of 5 years of BoostCon, which was the main face-to-face event for all things C++ and Boost, this new conference will present leading speakers from the whole C++ community. The conference highlights the new state of C++ (from the new Standard), and the need to continually look to the future so the language remains useful to the C++ community. Its focus will be the new C++11 language Standard and as usual Boost: what’s new in C++, its Standard library, and in the Boost libraries, how to write and maintain them, how to evangelize or to deploy Boost within your organization. The new C++ Standard, but also the infrastructure and process of Boost, its vision and mission – no matter what you are interested in, it all comes together in the C++Now! sessions. In short, C++Now! promises to be one of the major events in 2012 when it comes to C++. Continue reading

Integrating HPX into existing applications

Having your application work with HPX is unfortunately not as simple as just linking against it. However it can be rather straightforward or rather complex based on the type of application that is trying to be integrated. The complexity derives from the overall design of the application. If the application was designed to be parallel, then integrating should be relatively straightforward. However HPX is not some magic wand that will make your application work in parallel. Applications that are serial or that rely too heavily on global variables will have a more difficult time in integrating. Most parallel applications have already identified the sections of code that do the most work and have abstracted them out to use the parallel library of their choice.
Continue reading

What’s the minimal HPX Program

Writing applications with HPX is not difficult. We tried to develop an API which conforms to the usual semantics of with the host language C++. This post is a first in a planned series of articles meant to introduce the concepts of writing HPX applications. As any introduction to a new programming language or programming paradigm, we will start with writing the smallest possible program (historically, this is a program which prints “Hello World!” only). Even if it’s very small it will give sufficient material to explain basic concepts.

Continue reading

HPX V0.8.1 Released

I’m happy to announce the V0.8.1 point release. This is HPX’s first point release, and the second release in the V0.8 line. We made the decision to put out a point release earlier this week to address bugs in the V0.8.0 release which have since been fixed.

You can download the release files from the downloads page. The release note are available from here. Please feel free to try the examples and let us know what you think. The best way to get in contact with us is to leave a comment on this page or to send a mail to gopx@cct.lsu.edu.

No further release in the V0.8 line are scheduled, but more point releases will be made if needed. The next scheduled release is the V1.0 in June.

Benchmarking User Level Threads

One of the core features of HPX is our lightweight user-level threading. User-level threading implements a second layer of thread infrastructure on top of OS-threads (e.g. thread implementations provided by the operating system or kernel). This form of threading is also called hybrid or M:N (mapping N user threads onto M OS-threads) threading.

We recently conducted a benchmark of the scalability of lightweight user-level threads in the face of extremely fine-grained parallelism. Fine-grained parallelism refers to the division of work into very small parallel tasks. By making the tasks very small, the task scheduler is able to load balance more efficiently in the face of highly dynamic applications.

This article presents details of the benchmark we used, and a comparison of HPX with three other software libraries which provide lightweight user-level threading (Qthreads, TBB and SWARM). Continue reading

HPX V0.8.0 Released

We are very proud to announce the release of version 0.8.0 of our High Performance ParalleX (HPX) parallel runtime system. This is our third formal release, and we would like to thank everyone involved for their hard work which has made this release possible. You can download the release files from the downloads page. The release note are available from here. Please feel free to try the examples and let us know what you think. The best way to get in contact with us is to leave a comment on this page or to send a mail to gopx@cct.lsu.edu. We have made substantial progress since the previous release last November. We have had roughly 1000 commits since the last release and we closed approximately 70 tickets (bugs, feature requests, etc.). This post will expand on some of the most important changes we have made. Continue reading

Is ParalleX This Year’s Model?

This is an interview John Moore held with Hartmut Kaiser, the lead of the STE||AR group at CCT. Source: Intelligence in Software.

Scientific application developers have masses of computing power at their disposal with today’s crop of high-end machines and clusters. The trick, however, is harnessing that power effectively. Earlier this year, Louisiana State University’s Center for Computation & Technology (CCT) released its approach to the problem: an open-source runtime system implementation of the ParalleX execution model. ParalleX aims to replace, at least for some types of applications, the Communicating Sequential Processes (CSP) model and the well-established Message Passing Interface (MPI), a programming model for high-performance computing. The runtime system, dubbed High Performance ParalleX (HPX) is a library of C++ functions that targets parallel computing architectures. Hartmut Kaiser — lead of CCT’s Systems Technology, Emergent Parallelism, and Algorithm Research (STE||AR) group and adjunct associate research professor of the Department of Computer Science at LSU — recently discussed ParalleX with Intelligence in Software. Continue reading

AGAS R&D in 2011

My work in the STE||AR group focuses on the research and development of the Active Global Address Space (AGAS). AGAS is a set of addressing services that form a hierarchical namespace spanning all resources in a particular computation. AGAS aims to ease the difficulty of programming across local virtual memory boundaries by exposing a global addressing system that can be used to address both local and remote objects. AGAS is an extension of the PGAS model used by frameworks such as X10, Chapel, UPC and Co-Array Fortran. Unlike PGAS, which statically partitions a global address space into logical blocks, AGAS supports the dynamic addition or subtraction of hardware resources and the migration of globally named objects.

This poster outlines major AGAS developments from 2011. In addition to expanding our understanding of the AGAS model, these developments have realized substantial usability and performance benefits for HPX applications. Continue reading

Solving the n-body Problem Using HPX

The n-body problem, i.e. the prediction of the motion of a group of objects that interact with each other under the influence of a force, is a method that continues to present a computational challenge to scientist in a broad range of application areas, like astrophysics or computational biology. Existing codes are usually scaling-challenged causing overly long runtimes for real-world problem sizes. We hope to overcome some of the challenges that face computing an n-body problem by using a message driven, inherently asynchronous approach based on the HPX (High-Performance ParalleX) library.  Continue reading