Skip to main content
QUICK REVIEW

[论文解读] Optimizing ccNUMA locality for task-parallel execution under OpenMP and TBB on multicore-based systems

Markus Wittmann, Georg Hager|arXiv (Cornell University)|Dec 30, 2010
Parallel Computing and Optimization Techniques参考文献 9被引用 12
一句话总结

本文提出一种软件层,通过将任务排序至针对特定内存局部性的队列中,优化ccNUMA系统上任务并行工作负载中的数据局部性,确保线程从其本地内存域处理数据。该方法在每个域内保持动态负载均衡的同时,最小化非本地内存访问,显著提升了OpenMP和TBB工作负载的性能,尤其在不规则或负载不均衡的工作负载下表现更优。

ABSTRACT

Task parallelism as employed by the OpenMP task construct or some Intel Threading Building Blocks (TBB) components, although ideal for tackling irregular problems or typical producer/consumer schemes, bears some potential for performance bottlenecks if locality of data access is important, which is typically the case for memory-bound code on ccNUMA systems. We present a thin software layer ameliorates adverse effects of dynamic task distribution by sorting tasks into locality queues, each of which is preferably processed by threads that belong to the same locality domain. Dynamic scheduling is fully preserved inside each domain, and is preferred over possible load imbalance even if nonlocal access is required, making this strategy well-suited for typical multicore-mutisocket systems. The effectiveness of the approach is demonstrated by using a blocked six-point stencil solver as a toy model.

研究动机与目标

  • 解决由于非本地内存访问导致的ccNUMA系统上任务并行应用程序性能下降的问题。
  • 在不修改OpenMP或TBB编程模型的前提下,实现有效的数据局部性优化。
  • 在最小化跨域内存访问的同时,保持每个局部性域内的动态负载均衡。
  • 评估局部性队列在真实ccNUMA硬件上不规则或负载不均衡工作负载中提升性能的有效性。
  • 将所提方法与现有机制(如TBB的亲和性分区器和轮转内存分配)进行比较。

提出的方法

  • 引入一种用户级软件层,根据数据的目标内存域将任务分类至多个局部性队列。
  • 将每个线程分配至特定的局部性域,并确保其主要处理来自本地队列的任务。
  • 在每个局部性域内保留动态调度机制,以维持负载均衡,即使任务需要访问非本地数据。
  • 使用工作窃取机制在负载失衡时跨域重新分配任务,优先考虑负载均衡而非严格局部性。
  • 使用标准OpenMP任务机制和TBB的parallel_for,配合自定义分区器或并发队列实现该机制。
  • 利用线程-核心亲和性及运行时检测的局部性域ID,将任务映射至合适的队列。

实验结果

研究问题

  • RQ1轻量级软件层能否有效提升ccNUMA系统上任务并行应用程序的数据局部性?
  • RQ2与原生TBB亲和性分区器相比,所提出的局部性队列机制在性能和可扩展性方面表现如何?
  • RQ3该方法在不规则或负载不均衡工作负载中,能在多大程度上减少非本地内存访问并提升带宽利用率?
  • RQ4该方法在优化内存局部性的同时,是否仍能维持动态负载均衡?
  • RQ5该技术能否有效应用于真实科学工作负载(如稀疏矩阵求解器或五点模板计算)?

主要发现

  • 局部性队列机制显著减少了非本地内存访问,在ccNUMA系统上提升了性能,尤其在不规则或负载不均衡的工作负载下效果显著。
  • 在AMD Istanbul系统上,该方法的性能接近最优轮转内存分配,优于朴素的动态调度。
  • TBB亲和性分区器的性能与局部性队列方法相当,但后者提供了更高的控制力和可扩展性。
  • 使用局部性队列与TBB的parallel_do构造相比内置分区器可能具有优势,尽管本研究未对此进行充分评估。
  • 即使不强制要求线程-核心亲和性,该方法依然有效,因为局部性域ID可在运行时确定。
  • 通过将队列与共享缓存层级关联,该方法可在稀疏矩阵求解器中实现时间阻塞和通信-计算重叠。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。