..
    Copyright (C) 2026 Dimitra Karatza

    SPDX-License-Identifier: BSL-1.0
    Distributed under the Boost Software License, Version 1.0. (See accompanying
    file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)

.. _tutorials:

=========
Tutorials
=========

This section provides structured, video-based learning resources for |hpx|. The tutorials
complement the reference documentation with guided, example-driven explanations of core
concepts and advanced features.

Each tutorial introduces the relevant concepts and then applies them step by step through practical
code examples. The focus is on demonstrating how to design, implement, and reason about parallel
and distributed applications using |hpx|. While the main documentation emphasizes API descriptions
and detailed reference material, the tutorial series adopts a practical, code-oriented approach.

The tutorials are intended for a broad audience: from beginners setting up HPX for the first time
to advanced users exploring performance tuning, custom executors, and SIMD vectorization. Together,
they form a structured learning path that lowers the entry barrier while progressively introducing
more advanced features.

The complete video series is available on YouTube:

`HPX Tutorial Playlist <https://www.youtube.com/watch?v=OZWTmrlWUF0&list=PL7vEgTL3FalZkvNqssEP9-tXQ5rEwZy2l&index=1>`_

The code is available on Github:

`HPX Tutorial Code <https://github.com/STEllAR-GROUP/HPX_Tutorials_Code>`

Available Modules
-----------------

* **Introduction to |hpx|**
   Foundational overview of |hpx|, including its architecture, design principles, and key
   capabilities in the context of high-performance computing.

* **Building |hpx| on Windows/Unix**
   Step-by-step guidance on installing |hpx| and setting up the environment based on your
   operating system.

* **Running |hpx| applications**
   Demonstation on how to build and run a simple Hello World example using |hpx|.

* **Algorithms in |hpx|**
   Overview of the parallel algorithms provided by |hpx| and explanation on how execution
   policies unlock high-performance C++ computing.

* **Vectorization and SIMD in |hpx|**
   Introduction to data-parallel programming, SIMD execution policies, and vectorization
   techniques relevant to modern C++ and HPC workloads.

* **Futures and Asynchronous Programming**
   Explanation of the asynchronous programming model in |hpx|, including futures, `async`,
   and dataflow-based execution patterns.

* **Performance Analysis and Optimization**
   Guidance on profiling |hpx| applications, analyzing performance counters, identifying
   bottlenecks, and applying optimization strategies.

* **Task Scheduling and Custom Executors**
   Detailed discussion of the execution model in |hpx|, built-in executors, and mechanisms
   for defining custom execution strategies.

* **Migration Guides**
   Best practices and recommendations for transitioning from other HPC frameworks to |hpx|.

* **HPX in Practice**
   Examples of open-source libraries and applications using |hpx|, illustrating real-world
   usage patterns and ecosystem integration.



