C++高性能计算的资源

Resources for high performance computing in C++

本文关键字:资源 计算 高性能 C++      更新时间:2023-10-16

我正在寻找书籍或在线资源,详细介绍使用C++进行高性能计算的编程技术。

实际上我听说过的所有HPC代码都是用于求解线性方程或FFT的系统。这里有一些链接,至少可以在使用的库中开始:

  • BLAS - 线性代数的标准例程集 - 矩阵乘法之类的东西
  • LAPACK - 标准的高级线性代数例程集 - 像LU分解这样的东西。
  • ATLAS - 优化的 BLAS 实施
  • FFTW - 优化的FFT实现
  • PBLAS - 用于分布式处理器的 BLAS
  • SCALAPACK - 分布式 LAPACK 实现
  • MPI - 分布式系统的通信库。
  • PETSc - 可扩展的非线性和线性求解器(用户可扩展,接口远高于此)

尽管不是 FOSS,但如果您需要执行英特尔 IPP 和 MKL 库支持的任何操作(例如:信号处理、图像处理、矩阵数学),它们确实可以为您节省大量时间(无论是在开发中还是在运行时)。当然,这取决于您的平台是否可以从中受益。

(不:我不为英特尔工作,但我是他们的快乐客户。

Trilinos 库和软件包套件为 HPC 提供了广泛的中间件库,包括稀疏迭代线性求解器; 非线性求解器; 特征求解器;ODE 和 DAE 积分器,包括灵敏度分析;优化(侵入式和黑匣子);有限元接口;网状接口;预调理剂;等。 所有这些包都是使用相当现代的C++技术设计的(有Python API以及一些C和Fortran)。 在非常大规模的并行(5000+ CPU)模拟中使用了特殊后果(核武器设计),并取得了巨大成功。 这些软件包提供了一套比 BLAS 等级别高得多的功能。

第一件事可能是阅读有关MPI(消息传递接口)的信息,这是HPC节点互连中的事实标准。

查看特征向量/矩阵库。该 API 非常优雅,生成的程序速度非常快(由于 SSE2 架构的显式矢量化)。

尽管已有 14+ 岁,但表达式模板的开创性工作仍然被认为是多年来最杰出的C++工作之一。 快速、高效、安全...我用过这些技术,它们真的很了不起。

编辑:如果上述链接仍然断开,下面是表达式模板的替代参考。 这篇DDJ文章引用了Veldhuizen的原著。

看看自适应通信环境(ACE)。 它是一个模板和对象库,用于C++中的高性能应用程序。 它具有用于线程、网络等的出色跨平台原语。

无论你写了什么,以及你从一开始就设计了多少性能,它很有可能从性能调优中受益。通常程序越大,受益就越大。这是进行该调整的简单有效的方法。它基于"深度采样",这是一种在降低测量的同时提供诊断准确性的技术。

你也可以看看 http://en.wikipedia.org/wiki/Performance_analysis#Simple_manual_technique

高可扩展性 - 构建更大、更快、更可靠的网站。

http://highscalability.com/

还有:

http://www.ddj.com/hpc-high-performance-computing/