The Cilkprof Scalability Profiler

The Cilkprof Scalability Profiler
复制标题

Cilkprof 可扩展性分析器

DOI:
--
复制
发表时间:
2015
期刊:
ACM Symposium on Parallelism in Algorithms and Architectures
影响因子:
--
通讯作者:
C. Leiserson
C. Leiserson
中科院分区:
--
文献类型:
--
作者:
T. Schardl;Bradley C. Kuszmaul;I. Lee;W. Leiserson;C. Leiserson

文献摘要

被引文献

相似文献

CILKPROF是用于多线程CILK计算的可扩展性分析器。与其前身CILKVIEW不同,该CILKVIEW仅分析CILK计算的整个程序可伸缩性,Cilkprof收集工作(串行运行时间)和计算中每个呼叫站点的Span(临界路径长度)数据,以评估每个呼叫站点的多少贡献进行整体工作和跨度。以这种方式对工作进行分析和跨度,使程序员能够在CILK程序中快速诊断可扩展性瓶颈。尽管收集这些测量结果所需的详细信息和数量,但在平行计算的串行运行时间内,CILKPROF仅以恒定的渐近降低而运行。作为Cilkprof有用性的一个例子,我们使用Cilkprof在1800线平行的广度优先搜索(PBFS)代码中诊断可扩展性瓶颈。通过检查Cilkprof与源代码同时的输出,我们可以在PBFS例程中的呼叫站点中归零,该程序强加了可扩展性瓶颈。然后,一个次要的代码修改将PBF的并行性提高了5倍。使用Cilkprof,我们花了不到两个小时才能找到并修复一个可扩展性错误,直到那时,该错误已经避开了几个月。本文描述了CILKPROF算法,并使用摊销参数在理论上证明了Cilkprof与应用程序的本机串行运行时间相比,CILKPROF仅产生恒定开销。 CILKPROF是由编译器仪器实施的,也就是说,通过修改LLVM编译器以将仪器插入用户程序中。在16个应用基准的套件上,Cilkprof造成仅1.9的几何均值开销,而最大乘法开销仅为7.4,而没有仪器的基准。
Cilkprof is a scalability profiler for multithreaded Cilk computations. Unlike its predecessor Cilkview, which analyzes only the whole-program scalability of a Cilk computation, Cilkprof collects work (serial running time) and span (critical-path length) data for each call site in the computation to assess how much each call site contributes to the overall work and span. Profiling work and span in this way enables a programmer to quickly diagnose scalability bottlenecks in a Cilk program. Despite the detail and quantity of information required to collect these measurements, Cilkprof runs with only constant asymptotic slowdown over the serial running time of the parallel computation. As an example of Cilkprof's usefulness, we used Cilkprof to diagnose a scalability bottleneck in an 1800-line parallel breadth-first search (PBFS) code. By examining Cilkprof's output in tandem with the source code, we were able to zero in on a call site within the PBFS routine that imposed a scalability bottleneck. A minor code modification then improved the parallelism of PBFS by a factor of 5. Using Cilkprof, it took us less than two hours to find and fix a scalability bug which had, until then, eluded us for months. This paper describes the Cilkprof algorithm and proves theoretically using an amortization argument that Cilkprof incurs only constant overhead compared with the application's native serial running time. Cilkprof was implemented by compiler instrumentation, that is, by modifying the LLVM compiler to insert instrumentation into user programs. On a suite of 16 application benchmarks, Cilkprof incurs a geometric-mean multiplicative overhead of only 1.9 and a maximum multiplicative overhead of only 7.4 compared with running the benchmarks without instrumentation.