首页> 外文会议>IEEE International Parallel Distributed Processing Symposium >CFD Builder: A Library Builder for Computational Fluid Dynamics
【24h】

CFD Builder: A Library Builder for Computational Fluid Dynamics

机译:CFD Builder:用于计算流体动力学的库生成器

获取原文

摘要

Computational Fluid Dynamics is an important area in scientific computing. The weak scaling of codes is well understood with about two decades of experiences using MPI. As a result, per-node performance has become very crucial to the overall machine performance. However, despite the use of multi-threading, obtaining good performance at each core is still extremely challenging. The challenges are primarily due to memory bandwidth limitations and difficulties in using short SIMD engines effectively. This work is about the techniques and a tool to improve in-core performance. Fundamental to the strategy is a hierarchical data layout made of small cubical structures of the problem states that can fit well in the cache hierarchy. The difficulties in computing the spatial derivatives (also called near neighbor computation in the literature) in a hierarchical data layout are well known, hence, such a data layout has rarely been used in finite difference codes. This work discusses how to program relatively easily for such a hierarchical data layout, the inefficiencies in this programming strategy, and how to overcome the inefficiencies. The key technique to eliminate the overheads is called pipeline-for-reuse. It is followed by a storage optimization called maximal array contraction. Both pipeline-for-reuse and maximal array contraction are highly tedious and error-prone. Therefore, we built a source-to-source translator called CFD Builder to automate the transformations using directives. The directive based approach leverages domain experts' knowledge about the code, and eliminates the need for complex analysis before program transformations. We demonstrated the effectiveness of this approach using three different applications on two different architectures and two different compilers. We see up to 6.92 performance improvement using such an approach. We believe such an approach could enable library and application writers to build efficient CFD libraries.
机译:计算流体动力学是科学计算中的重要领域。大约二十年来使用MPI的经验已经很好地理解了代码的弱缩放。结果,每个节点的性能对于整个计算机的性能变得至关重要。但是,尽管使用了多线程,但在每个内核上获得良好的性能仍然极具挑战性。这些挑战主要是由于内存带宽的限制以及有效使用短SIMD引擎的困难。这项工作是关于提高内核性能的技术和工具。该策略的基础是由问题状态的小立方结构组成的分层数据布局,可以很好地适合高速缓存层次结构。在分层数据布局中计算空间导数(在文献中也称为近邻计算)的困难是众所周知的,因此,这种数据布局很少用于有限差分码中。这项工作讨论了如何针对此类分层数据布局相对容易地进行编程,该编程策略中的低效率以及如何克服这种低效率。消除开销的关键技术称为重复使用管道。接下来是称为最大数组收缩的存储优化。重用管道和最大数组收缩都非常繁琐且容易出错。因此,我们构建了一个名为CFD Builder的源到源转换器,以使用指令自动进行转换。基于指令的方法利用了领域专家对代码的了解,并且消除了在程序转换之前进行复杂分析的需要。我们在两个不同的体系结构和两个不同的编译器上使用了三个不同的应用程序,证明了这种方法的有效性。使用这种方法,我们可以看到高达6.92的性能提升。我们相信,这种方法可以使库和应用程序编写者构建高效的CFD库。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号