We compare automatically and manually parallelized NAS Benchmarks in order to identify code sections that differ. We discuss opportunities for advancing automatic parallelizers. We find ten patterns that pose challenges for current parallelization technology. We also measure the potential impact of advanced techniques that could perform the needed transformations automatically. While some of our findings are not surprising and difficult to attain -- compilers need to get better at identifying parallelism in outermost loops and in loops containing function calls -- other opportunities are within reach and can make a difference. They include combining loops into parallel regions, avoiding load imbalance, and improving reduction parallelization. Advancing compilers through the study of hand-optimized code is a necessary path to move the forefront of compiler research. Very few recent papers have pursued this goal, however. The present work tries to fill this void.
翻译:我们自动和人工地对NAS基准进行比较,以确定不同的代码部分。我们讨论了推进自动平行装置的机会。我们发现了对当前平行技术构成挑战的10种模式。我们还测量了能够自动进行所需转换的先进技术的潜在影响。虽然我们的一些发现并不令人惊讶,也难以实现。尽管我们的一些发现并不令人惊讶,但汇编者需要更好地在外环和含有功能电话的循环中确定平行之处,其他机会也能够发挥作用。它们包括连接平行区域,避免负载不平衡,以及改进减少平行化。通过手动优化代码研究推进编纂者,这是推进编纂者研究前沿的一个必要途径。然而,最近的论文很少追求这一目标。目前的工作试图填补这一空白。