C ++中高性能计算的资源

时间:2008-09-26 22:20:51

标签: c++ performance

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

9 个答案:

答案 0 :(得分:9)

几乎所有我听说过的HPC代码都是用于求解线性方程组或FFT的。下面是一些链接,至少在使用的库中启动你:

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

答案 1 :(得分:4)

即使不是FOSS,如果您需要执行这些操作所支持的任何操作,英特尔IPPMKL库可以真正为您节省大量时间(在开发和运行时)库(例如:信号处理,图像处理,矩阵数学)。当然,取决于您的平台,您是否可以从中受益。

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

答案 2 :(得分:3)

Trilinos套件库和软件包为HPC提供了广泛的中间件库,包括稀疏的迭代线性求解器;非线性求解器;本征求解器; ODE& DAE集成商包括敏感性分析;优化(入侵和黑盒);有限元界面;网格界面;预条件;所有这些软件包都是使用相当现代的C ++技术设计的(有Python API以及一些C和Fortran)。用于非常大规模的并行(5000+ CPU)模拟特殊后果(核武器设计)取得了巨大成功。这些软件包提供了一系列功能,远远高于BLAS等。

答案 3 :(得分:2)

第一件事可能是阅读MPI(Message Passing Interface)这是HPC节点互连中事实上的标准。

答案 4 :(得分:2)

尽管已有14年多的历史,Expression Templates的开创性工作仍被视为多年来最杰出的C ++工作。快速,高效,安全......我已经使用过这些技术而且非常了不起。

修改 如果上述链接仍然存在,则此处为alternate reference for Expression Templates。这篇DDJ文章引用了Veldhuizen的原创作品。

答案 5 :(得分:2)

查看Eigen Vector/Matrix library。 api非常优雅,由此产生的程序非常快(由于SSE2体系结构的显式向量化)。

答案 6 :(得分:1)

看看The ADAPTIVE Communication Environment (ACE)。它是C ++中高性能应用程序的模板和对象库。它具有很好的跨平台原语,可用于线程,网络等。

答案 7 :(得分:1)

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

您还可以查看http://en.wikipedia.org/wiki/Performance_analysis#Simple_manual_technique

答案 8 :(得分:0)

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

http://highscalability.com/

还有:

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