多核计算与OpenCL在异构系统中的应用
1. 多核处理器在HPC系统中的应用
在高性能计算(HPC)系统中,多核处理器常搭配MPI和OmpSs编程模型使用。在这种环境下,应用程序采用混合编程方式,即使用MPI处理节点间的数据传输,使用OmpSs或OpenMP支持共享内存并行性。
通过将应用程序任务化,OmpSs能够消除通常会导致工作或通信不平衡的同步障碍。这种特性以及改进的MPI + OmpSs互操作性,使得所研究的应用程序(如NTChem和Linpack)获得了更好的性能。
不过,当前仍存在一些关键问题亟待解决:
- 编程支持工具 :对于当前的HPC系统而言,编程的简易性是一项挑战。执行环境变得过于复杂,难以全面理解其行为。因此,应用程序开发周期需要并行编程支持工具提供指导以及执行和性能分析。
- 负载均衡 :在对称多处理(SMP)集群中,高效运行多个共享相同节点的应用程序是另一个挑战。随着SMP节点的核心数量增长到32、64甚至更多,这一点尤为重要。在这方面,应用程序可以在资源未被使用时利用分时资源。目前有一些方法将工作负载管理与应用程序执行相结合,允许应用程序根据核心使用情况动态扩展或收缩。此外,动态负载均衡方法通过透明检测应用程序中的空闲资源,在MPI进程之间重新分配核心。
- 弹性 :由于HPC计算环境的规模不断增大,弹性比以往更受关注。针对基于任务的系统,正在开发新的弹性技术。这些技术为运行时系统提出了容错设计,能够检测和解决应用程序数据中的错误。解决方案包括对粗粒度任务进行重新执行和检查点设置。对于细粒度任务,输入数据会添