2008-09-26 27 views
14

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

+0

你的意思是在大型服务器的高处理能力,或减少小(PC或更小)的机器资源的消耗? – 2008-09-26 23:08:40

+0

我的意思是大服务器 – axs6791 2008-09-29 02:16:13

回答

8

几乎所有我听说的HPC代码都是用于解决线性方程或FFT的系统。下面有一些链接到您起步,至少在使用的库:

  • BLAS - 标准组例程的线性代数的 - 东西,如矩阵乘法
  • LAPACK - 一套标准的更高水平线性代数套路 - 东西一样LU分解。
  • ATLAS - 优化的BLAS实现
  • FFTW - 优化FFT实现
  • PBLAS - BLAS为分布式处理器
  • SCALAPACK - 分布式的LAPACK执行
  • MPI - 通信库,用于分布式系统。
  • PETSc - 可扩展非线性和线性求解器(用户可扩展的,接口上述多)
2

Trilinos套件库和包的提供广泛的中间件库HPC包括稀疏,迭代线性解算器的;非线性求解器;特征解算器; ODE & DAE集成器包括灵敏度分析;优化(侵入式和黑匣子);有限元界面;网格界面;预条件;等等。所有这些软件包都是使用相当现代的C++技术设计的(有Python API以及一些C和Fortran)。在非常大规模的并行(5000+ CPU)仿真中使用了非常成功的异常结果(核武器设计)。这些软件包提供了比BLAS等级高得多的一整套功能。

2

尽管已有14年以上的历史,但Expression Templates的开创性工作仍被认为是多年来最出色的C++工作。快速,高效,安全......我使用过这些技术,他们非常出色。

编辑: 如果上述链接仍然中断,这里是一个alternate reference for Expression Templates。这篇DDJ文章引用了Veldhuizen的原创作品。

4

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

(No:我不为英特尔工作,但他是我的一位满意的客户。)

1

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

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