Grant Mercer and I had the opportunity to present our talk, ‘Parallelizing the STL’, at Cppcon 2015. We both consider ourselves lucky for being able to attend the conference. The buzz of the atmosphere and C++ community was truly exciting to witness. Attendees were both from all over the world and performance critical industries ranging from gaming and finance to scientific computing. As Jon Kalb highlighted in his talk, C++ is receiving a resurgence for several performance related reasons: Moore’s Law is coming to end and the subsequent shift to multi-core architectures, increased computational demands from the private sector, and the rise of power constrained mobile architectures. Combined with the interest in the standardization process, C++17 and beyond, there was a palpable excitement.
The buzz was only complemented by the number of great talks. The opening keynote by Bjarne Stroustrup introduced the C++ core guidelines (github.com/isocpp/CppCoreGuidelines) to limit resource leaks, ensure static type safety and provide proscriptive guidelines that teams can follow. The idea is to support open dialogue so that better tools can be used and cleaner code can be written. The guidelines were a theme of the conference. Herb Sutter’s day 2 keynote showed off what the upcoming editions of Microsoft visual studio can catch. Aside from a push to more compatible C++ tools, upcoming language features were shown. Friday’s keynote by Eric Niebler demonstrated the upcoming ranges proposal. He introduced programming with his ranges library that he hopes to be in the future STL2. Using ranges, he created a calendar that had no for loops, used lazy evaluation and had immutable types that can serve to limit bugs.
Grant and I delivered our talk on Tuesday where we introduced how the parallel algorithms are implemented inside of HPX and how the application developer can communicate with the algorithm. We wanted to highlight first that the we can communicate the with algorithms via execution policies and there associated executors and executor parameters and second, that we did this through a generic partitioning scheme. As this being my first talk, I was quite nervous! Luckily, there were other students and certainly, a little bit nerves doesn’t outweigh getting to be a part of the C++ community.
As a build up for our Supercomputing tutorial, the STE||AR Group has put together a promotional video to generate interest in HPX. The video gives viewer a high level overview of what HPX is and what will be discussed at the tutorial. The SC15 Tutorials Committee will circulate this and other tutorial videos on its YouTube playlist. We would like to thank our colleague Randy Dannenberg and his students for helping us put this together!
Howdy! The STE||AR Group welcomes you to participate in a hands on HPX tutorial which will be given this year in Austin, Texas as part of the SC Tutorials program. STE||AR Fellows from Louisiana State University, Friedrich-Alexander Universitat, Lawrence Berkeley National Laboratory, and University of Oregon will present “Massively Parallel Task-Based Programming wih HPX” which will consist of five parts:
HPX: a New Paradigm – A high level overview of the kinds of parallel programming problems C++11/14 and HPX were designed to address. The presentation will focus on use of futures, including waiting for a future, chaining subsequent actions to a future, and composing futures both within and across machines.
An Introduction using Lua – This section of the tutorial will demonstrate HPX concepts by utilizing a Lua wrappers library. Examples of a simple serial Lua code will be converted, step by step to run in parallel on a single machine, and then in a distributed environment. We intend for this part of the tutorial to explain the mindset behind HPX applications without necessarily needing to be intimately familiar with the C++11/14 standard. Interactive code execution will be made available through a web site, as well as through a virtual machine.
Digging into the C++ – This section of the tutorial will start with teaching the basic C++11/14 concurrency mechanisms, then branch out to writing HPX applications using simple serial code examples (similar to the Lua code) which will be transformed into fully parallelized, distributed applications.
GPUs and Xeon Phis – Here we will demonstrate how the HPX concepts introduced in the previous sections can be seamlessly integrated with the use of accelerators and co-processors. We will demonstrate how by simply recompiling the application on the device you can run HPX code on the Xeon Phi. Additionally, we will introduce the HPXCL library which enables users to take advantage of the GPU, the CPU or the Phi by integrating OpenCL kernels into their codes and distributing them across a heterogeneous machine.
Performance Analysis of HPX – Finally, we will introduce the TAU Performance System and the policy engine APEX for instrumentation of the applications and runtime. The hands-on session will include an exercise for performance assessment using these performance evaluation tools.
By the end of this tutorial, we hope that participants will have a clear understanding of the HPX approach to parallelism, as well as some hands on experience writing HPX applications. We plan to target C++ application developers, researchers, and programmers who are interested in application scalability, performance evaluation, and distributed computing. We are very excited to have the opportunity to present HPX in such a visible venue as the SC Tutorial program. Don’t forget to stop by after the tutorial and say hi at the Louisiana State University booth on the showroom floor. See you in November!
The STE||AR Group has implemented executors in HPX which, as proposed by the C++ standardization proposal called ‘Parallel Algorithms Need Executors’ (document number N4406), are objects that choose where and how a function call is completed. This is a step in the right direction for HPX and parallelism because executors give more flexibility on how and where task based work should be accomplished and gives the programmer a means to compose executors nicely with execution policies inside of algorithm implementations. Continue reading →
The STE||AR Group is proud to announce the release of HPX v0.9.10! In this release our team has focused on making large scale runs simple and reliable. With these changes we have currently shown the ability to run HPX applications on up to 24,000 cores! Other major features include new parcel-port (network-layer) implementations, variadic template support, more parallel algorithms, and the first distributed data structure, hpx::vector. Continue reading →
The STE||AR Group is proud to announce that it has been accepted as a mentoring organization in the Google Summer of Code 2015 (GSoC) program! This program pays students to work on open source projects for three months over the summer. While the timeline is short, the experience can leave a lasting impression. In fact, some of us met professionally through past GSoC programs. The next step in the process is for students who wish to participate to write proposals for the work that they would like to do over the summer. To get some ideas of what STE||AR projects are available, please checkout our GSoC Project Ideas page here. We encourage all interested students to contact us with their questions and project ideas at email@example.com. We are looking forward to a great summer of code!
The STE||AR Group is proud to announce a new formal release of HPX (V0.9.8) — a C++ runtime system for parallel and distributed applications of any scale. While this release is mainly based on contributions made by partners of the STE||AR Group from the Louisiana State University Baton Rouge (LA, USA) and the Friedrich-Alexander University Erlangen (Germany), it would not have been possible without the help of many people from all over the world. Thanks to everybody involved!
The first formal version of HPXPI (V0.1.0) is now available for download! Over the past few months the STE||AR Fellows at Louisiana State University, have been hard at work finalizing the first fully functional, open source implementation of the XPI specification. This release goes along with the next major release of the HPX runtime system (V0.9.8) which is used as the underlying implementation and which gives it a solid foundation ensuring high performance and wide portability. It is released as open source software under the Boost software license. Continue reading →
The STE||AR Group proudly announces the first release candidate of HPX (V0.9.8)! This release is mainly based on contributions made by partners from the Louisiana State University Baton Rouge (LA, USA) and the Friedrich-Alexander University Erlangen (Germany). Please see here for the release notes. Continue reading →
The release candidate 1 of the first formal version of HPXPI (V0.1.0) is now available for download! Over the past few months the STE||AR Fellows at Louisiana State University, have been hard at work finalizing the first fully functional, open source implementation of the XPI specification. This release goes along with the next major release of the HPX runtime system (V0.9.8) which is used as the underlying implementation and which gives it a solid foundation ensuring high performance and wide portability. It is released as open source software under the Boost software license. Continue reading →