GSoD 2024 Project Ideas - STEllAR-GROUP/hpx GitHub Wiki

HPX Education Initiative - STE||AR Group

About HPX

HPX is a C++ standard-conforming library for concurrency and parallelism, managed by The STE||AR Group. It implements all the APIs and facilities defined by the C++ Standard and extends these to distributed computing cases. Additionally, the implementation covers functionalities proposed in the ongoing C++ standardization process. Beyond aligning with the C++11/14/17/20/23 ISO standard, the HPX API also follows the programming guidelines of the Boost collection of C++ libraries.

The STE||AR Group aims to develop high-quality, freely available, open-source programming models suitable for all scales, from Raspberry Pis and multi-socket SMP nodes to Beowulf clusters with thousands of nodes. The HPX runtime system's development is application-driven, ensuring API robustness and stability. Engaging with application developers has facilitated a smooth transition for users to this new system.

The HPX community focuses on enhancing the scalability of current applications and unlocking the potential of future systems by exposing parallelism at all levels, from threads to tasks.

About HPX Documentation

Project’s current issues

HPX is a popular library that garners the attention of professionals, researchers, and students alike. However, the lack of educational resources and the complexity of the HPX library pose several challenges for our users. As a sophisticated library with advanced features, newcomers frequently find it difficult to grasp advanced concepts and best practices. Offering structured educational content can streamline the learning curve for effectively utilizing HPX.

We propose creating a pilot open-source educational program that provides a range of learning materials, including video tutorials, documentation, blog posts, and an AI-powered tutor. This program aims to promote modern and safe programming practices, especially in high-performance computing (HPC) settings, by utilizing the HPX library's APIs. It seeks to educate and empower users and developers with safe and modern programming models and practices.

Project’s scope

The aim of the project is to: As part of our mission at the STE||AR Group , we are committed to: (1) developing modern, safe, and scalable high-performance computing (HPC) software solutions, and (2) supporting community education by disseminating knowledge and developing skills. With the increasing demand for HPC, driven by the expanding availability of data and computational resources, we propose to launch an initiative to create a suite of modern, open-source, and structured learning resources for the HPX community. This initiative aims to create a wealth of educational content in the form of video tutorials (example), user manuals, and blog posts. The following topics will be covered:

  1. Introduction to HPX: This aims at providing a foundational understanding of HPX, discussing its architecture, key features, and the rationale behind its design. The goal is to present HPX capabilities in the context of HPC.

  2. Getting Started with HPX: Targeting beginners and those new to HPX, this series will offer a step-by-step guide on setting up the HPX environment, installing dependencies, and executing simple applications. Our aim here is to lower the entry barrier for new users.

  3. Parallel Algorithms in HPX: Here, we will delve into various algorithms implemented in HPX and their use cases in real-world applications.

  4. Vectorization and SIMD in HPX: In this module, we will cover common parallelization techniques in HPC and introduce their corresponding HPX APIs.

  5. Futures and Asynchronous Programming: We will explore HPX's capabilities in asynchronous programming, detailing how futures and async functionalities can be leveraged to write efficient, non-blocking code. We will use real-world examples to demonstrate these concepts, providing users with practical use cases.

  6. Performance Analysis and Optimization: A crucial skill in HPC is the ability to analyze and optimize performance. This module will introduce tools and methodologies for profiling HPX applications, guiding users in identifying bottlenecks and optimizing code for better performance.

  7. Task Scheduling and Custom Executors: Understanding HPX's task scheduling and the creation of custom executors is vital for developing scalable applications. This module will provide in-depth explanations and examples to facilitate understanding of advanced HPX features for developing custom execution orders and strategies to exploit concurrency across tasks.

  8. HPX for Distributed Computing: Distributed computing is a cornerstone of HPC. This section will showcase HPX features that facilitate distributed programming, covering setup, configuration, and effective resource management in distributed applications.

  9. Migration Guides: For users transitioning from other HPC frameworks to HPX, this series will offer guidance and best practices to help adopt HPX.

  10. HPX in Practice: In this module, we will review open-source libraries and applications that use HPX to familiarize users with the HPX ecosystem.

Beyond content generation, we plan to improve our AI-Powered tutor developed as a proof of concept. The goal is to refine this tool, enhancing its quality and accuracy. The proposed improvements will make it a more effective educational resource, furthering users' understanding of HPX in a dynamic and interactive manner.

As this is an extensive list of project ideas, we will consider hiring two technical writers to perform the work. Depending on their expertise and interests, we'll assign tasks accordingly. Our primary focus will be on the first five topics, prioritizing their execution. The remaining five topics will serve as stretch goals, offering additional opportunities for exploration and development as resources permit.

We believe the proposed work will benefit both HPX users and the HPC community in general. We will cover core ideas in high-performance computing and use the HPX API to demonstrate these concepts. By presenting the materials in video and blog post formats, we plan to accommodate different learning styles and preferences, ensuring that users can engage with the content in the most effective way for them. In short, we aim to empower developers, researchers, and students with the knowledge and skills necessary to leverage HPX in their HPC applications.