C++高性能计算资源

17

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


1
你是指大型服务器的高处理吞吐量,还是小型(个人电脑或更小)机器上降低资源消耗? - Fabio Ceconello
你可能想考虑一下这个:https://github.com/ohhmm/openmind/blob/77d79f62ded371579ed2812850b81a9f30d2693e/omnn/math/test/08_System.cpp#L620 - Sergei Krivonos
9个回答

12

我所听说的实际上所有高性能计算代码都是用于解决线性方程组或FFT的。以下是一些链接,至少可以让你了解使用的库:

  • BLAS - 标准的线性代数例程集合——例如矩阵乘法。
  • LAPACK - 标准的高级线性代数例程集合——例如LU分解。
  • ATLAS - 优化的BLAS实现。
  • FFTW - 优化的FFT实现。
  • PBLAS - 分布式处理器的BLAS。
  • SCALAPACK - 分布式LAPACK实现。
  • MPI - 用于分布式系统的通信库。
  • PETSc - 可扩展的非线性和线性求解器(可由用户扩展,接口远超以上库)。

4
尽管不是开源软件,但英特尔 IPPMKL 库可以在进行任何这些库支持的操作(例如:信号处理、图像处理、矩阵数学)时节省大量时间(无论是在开发还是运行时)。当然,这取决于您的平台是否能够从中受益。

(不,我不是英特尔的员工,但我是他们的忠实客户。)


3

Trilinos软件包提供了广泛的中间件库,包括稀疏、迭代线性求解器;非线性求解器;特征值求解器;ODE&DAE积分器,包括灵敏度分析;优化(侵入式和黑盒);有限元接口;网格接口;预处理器等,所有这些包都使用较为现代的C ++技术设计(也有Python API以及一些C和Fortran)。它们在大规模并行(5000+个CPU)的重要仿真(核武器设计)中得到了极大的成功。这些软件包提供了比BLAS等更高级别的功能套件。


2

2
尽管已经有14年的历史,但表达式模板(Expression Templates)的开创性工作仍被认为是近年来最出色的C++工作之一。快速、高效、安全...我使用过这些技术,它们真的非常出色。 编辑: 如果上面的链接仍然无法访问,这里有一个表达式模板的备用参考。这篇DDJ文章引用了Veldhuizen的原始工作。

谢谢Tom。希望DDJ的文章有所帮助。 - Pat Notz
链接在存档中:https://web.archive.org/web/20090421155750/http://ubiety.uwaterloo.ca/~tveldhui/papers/Expression-Templates/exprtmpl.html - Jaroslav Svestka

2

看看Eigen向量/矩阵库。它的API非常优雅,由于SSE2架构的显式向量化,得到的程序速度非常快。


1

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


1
无论你写什么,从一开始就为性能设计多少,很有可能它都会受益于性能调优。通常来说,程序越大,受益越多。这个是一个简单而有效的进行调优的方法。它基于“深度采样”技术,这种技术在强调测量的同时也能够提供准确的诊断。
你也可以查看http://en.wikipedia.org/wiki/Performance_analysis#Simple_manual_technique

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接