我正在寻找有关使用C ++进行高性能计算的编程技术的书籍或在线资源。
答案 0 :(得分:9)
几乎所有我听说过的HPC代码都是用于求解线性方程组或FFT的。下面是一些链接,至少在使用的库中启动你:
答案 1 :(得分:4)
即使不是FOSS,如果您需要执行这些操作所支持的任何操作,英特尔IPP和MKL库可以真正为您节省大量时间(在开发和运行时)库(例如:信号处理,图像处理,矩阵数学)。当然,取决于您的平台,您是否可以从中受益。
(不:我不为英特尔工作,但我们是他们的快乐客户。)
答案 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)
高可扩展性 - 构建更大,更快,更可靠的网站。
还有: