Currently, multi/many-core CPUs are considered standard in most types of computers including, mobile phones, PCs or supercomputers. However, the parallelization of applications as well as refactoring/design of applications for efficient hardware usage remains restricted to experts who have advanced technical knowledge and who can invest time tuning their software. In this context, the compilation community has proposed different methods for automatic parallelization, but their focus is traditionally on loops and nested loops with the support of polyhedral techniques. In this study, we propose a new approach to transform sequential C++ source code into a task-based parallel one by inserting annotations. We explain the different mechanisms we used to create tasks at each function/method call, and how we can limit the number of tasks. Our method can be implemented on top of the OpenMP 4.0 standard. It is compiler-independent and can rely on external well-optimized OpenMP libraries. Finally, we provide preliminary performance results that illustrate the potential of our method.
翻译:目前,在包括移动电话、PC或超级计算机在内的大多数类型的计算机中,多/多核心CPU被认为是标准的,但是,应用的平行化和对高效硬件使用应用的重新设定/设计仍然局限于具有先进技术知识的专家和能够投入时间调整软件的专家。在这方面,汇编界提出了自动平行化的不同方法,但传统上,这些方法的重点是在多元技术支持下的循环和嵌套循环。在本研究中,我们提出一种新的方法,通过插入说明将连续的C++源代码转换成基于任务的平行代码。我们解释了我们用于为每个功能/方法呼叫创建任务的不同机制,以及我们如何限制任务的数量。我们的方法可以在OpenMP4.0标准之上实施。它依赖编译者,并且可以依靠外部精密的 OpenMP 图书馆。最后,我们提供了初步的绩效结果,说明我们的方法的潜力。