Abstract
Task-based programming models have demonstrated their efficiency in the development of scientific applications on modern high-performance platforms. They allow delegation of the management of parallelization to the runtime system (RS), which is in charge of the data coherency, the scheduling, and the assignment of the work to the computational units. However, some applications have a limited degree of parallelism such that no matter how efficient the RS implementation, they may not scale on modern multicore CPUs. In this paper, we propose using speculation to unleash the parallelism when it is uncertain if some tasks will modify data, and we formalize a new methodology to enable speculative execution in a graph of tasks. This description is partially implemented in our new C++ RS called SPETABARU, which is capable of executing tasks in advance if some others are not certain to modify the data. We study the behavior of our approach to compute Monte Carlo and replica exchange Monte Carlo simulations.
Highlights
Parallel CPUs are everywhere, from mobile phones to high-performance computing nodes
In ‘Motivation Example: Monte Carlo Simulations’, we describe the MC and replica exchange Monte Carlo (REMC) simulations and discuss how they are usually parallelized as a motivation to our work
We provided the first results of using speculation in task-based runtime system (RS)’s
Summary
Parallel CPUs are everywhere, from mobile phones to high-performance computing nodes. Some write dependencies are not true because a task might not modify the data, but this cannot be known in advance This motivated us to look to the side of speculative execution, with a primary objective of improving the scalability of the MC/REMC algorithms. It continues by computing the new energy with this domain that moved at line 11. At line 13, we use the Metropolis formula to decide, based on the energy difference and temperature, if the change has to be accepted. // Accept the move (or do nothing) if random_01() ≤ metropolis(new_energy, energy, temperature) domains ← replace(domains, d, new_d) energy ← new_energy end end end Replica exchange Monte Carlo simulation (REMC).
Published Version (Free)
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.