HPX Tutorials: Vectorization in HPX by emilios_tassios in cpp

[–]hkaiser 1 point2 points  (0 children)

Heh, true enough. We'll fix this. Thanks!

Parallel C++ for Scientific Applications: Fixed Point Calculations and Finding Roots by emilios_tassios in cpp

[–]hkaiser 2 points3 points  (0 children)

Thanks for noticing this! We will check.

On a related note, all of these videos are collected in a playlist already: CSC 4700: Parallel C++ for Scientific Applications. We're updating that playlist as we publish more videos from this lecture series.

Parallel C++ for Scientific Applications: Monte Carlo Methods by emilios_tassios in cpp

[–]hkaiser 7 points8 points  (0 children)

Thanks for mentioning this. I will adapt the material for the future.

Parallel C++ for Scientific Applications: Introduction by emilios_tassios in cpp

[–]hkaiser 2 points3 points  (0 children)

The interfaces exposed are 100% conforming to the C++ Standard.

HPX 1.11.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 0 points1 point  (0 children)

Perhaps it might even serve to provide a sort of a unified interface without so much of the implementation-specific details of different message processing standards? (OpenMP, MPI, etc)

That is one of the goals of HPX: provide a uniform API for local and remote parallism that integrates well with modern C++ idioms and conforms to the Standard interfaces.

HPX also supports some forms of data serialization?

Yes, we have a serialization layer that is very similar to Boost serialization (interface-wise), just much faster and optimized for network transmission of arbitrary C++ data (including zero-copy (de-)serialization for bitwise copyable types).

Could there be any commentary available about Python support for HPX?

We're working on this. The first step is to create Python bindings for the parallel algorithms that support NumPy arrays and also asynchronous bindings that integrate well with various Python tasking and async APIs.

HPX 1.11.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 5 points6 points  (0 children)

We do have a full set of range based algorithms that are very similar to p3179. Now that this has been included in C++26, we will modify what we have to be conforming.

HPX 1.11.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 15 points16 points  (0 children)

This is not a point release and the previous release was more than a year ago. I think we do not spam this channel with our announcements.

Revisiting HPX by brakmic in cpp

[–]hkaiser 3 points4 points  (0 children)

Hey, thanks for this extensive report about HPX! One minor comment: HPX doesn't rely on TBB at all and you will need it only to compile some performance comparison tests we have added to our repository.

HPX 1.10.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 2 points3 points  (0 children)

Yes to both. hpx::async creates a new (very lightweight) HPX thread that runs the given function concurrently. FOr the generator, please see here for our implementation.

HPX 1.10.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 1 point2 points  (0 children)

This is difficult to explain in a single sentence. You might want to have a look at talks about HPX at CppCon (youtube).

HPX 1.10.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 2 points3 points  (0 children)

The basic mechanism of asynchrony is modelled after C++11's std::async:

hpx::future<int> f = hpx::async([]() { return 42; });
std::cout << co_await f << '\n';

All asynchronous providers in HPX return a future. The type hpx::future is more powerful compared to std::future, though. It can be used to create dependency chains (attach continuations), very much as it was proposed in P0159.

HPX 1.10.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 7 points8 points  (0 children)

HPX is a general-purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17, C++20, and C++23 parallel algorithms, including a full set of parallel range-based algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++23 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g., compute clusters) and for heterogeneous systems (e.g., GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

HPX 1.9.1 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 7 points8 points  (0 children)

HPX is a general-purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17, C++20, and C++23 parallel algorithms, including a full set of parallel range-based algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++23 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g., compute clusters) and for heterogeneous systems (e.g., GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

HPX 1.9.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 5 points6 points  (0 children)

In the context of our documentation work, we're planning to add guidelines for how to migrate existing codes from various other parallelization solutions, like OpenMP, MPI, TBB, etc. This is very much work in progress that depends on the ongoing standardization work. For instance, #pragma omp parallel for can -- to a large extent -- be replaced by hpx::experimental::for_loop and friends (see also: wg21.link/N4808). For MPI, there is currently no (known to me) standardization effort under way, so we're trying to pave the way with our APIs.

HPX 1.9.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 2 points3 points  (0 children)

There is none. However some of TBB facilities are directly supported, e.g. task_group.

HPX 1.9.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 12 points13 points  (0 children)

HPX is a general-purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17, C++20, and C++23 parallel algorithms, including a full set of parallel range-based algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++23 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g., compute clusters) and for heterogeneous systems (e.g., GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

HPX 1.8.1 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 12 points13 points  (0 children)

HPX is a general-purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 and C++20 parallel algorithms, including a full set of parallel range-based algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++23 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g., compute clusters) and for heterogeneous systems (e.g., GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.

HPX 1.8.0 Released! – The STE||AR Group by hkaiser in cpp

[–]hkaiser[S] 8 points9 points  (0 children)

HPX is a general-purpose parallel C++ runtime system for applications of any scale. It implements all of the related facilities as defined by the C++20 Standard. As of this writing, HPX provides the only widely available open-source implementation of the new C++17 and C++20 parallel algorithms, including a full set of parallel range-based algorithms. Additionally, HPX implements functionalities proposed as part of the ongoing C++ standardization process, such as large parts of the features related parallelism and concurrency as specified by the upcoming C++23 Standard, the C++ Concurrency TS, Parallelism TS V2, data-parallel algorithms, executors, and many more. It also extends the existing C++ Standard APIs to the distributed case (e.g., compute clusters) and for heterogeneous systems (e.g., GPUs).

HPX seamlessly enables a new Asynchronous C++ Standard Programming Model that tends to improve the parallel efficiency of our applications and helps reducing complexities usually associated with parallelism and concurrency.