【发布时间】:2008-09-26 22:20:51
【问题描述】:
我正在寻找详细介绍使用 C++ 进行高性能计算的编程技术的书籍或在线资源。
【问题讨论】:
-
您是指大型服务器中的高处理吞吐量,还是减少小型(PC 或更小的)机器中的资源消耗?
标签: c++ performance
我正在寻找详细介绍使用 C++ 进行高性能计算的编程技术的书籍或在线资源。
【问题讨论】:
标签: c++ performance
即使不是 FOSS,如果您需要执行这些库支持的任何操作(例如:信号处理、图像处理、矩阵数学)。当然,能否从中受益取决于您的平台。
(不:我不为英特尔工作,但我是他们的快乐客户。)
【讨论】:
Trilinos 库和包套件为 HPC 提供了广泛的中间件库,包括稀疏、迭代线性求解器;非线性求解器;特征求解器; ODE & DAE 积分器,包括敏感性分析;优化(侵入性和黑盒);有限元接口;网状接口;预处理器;等等。所有这些包都是使用相当现代的 C++ 技术设计的(有 Python API 以及一些 C 和 Fortran)。在非常大规模的并行(5000+ CPU)模拟中使用了异常后果(核武器设计)并取得了巨大成功。这些软件包提供了一套比 BLAS 等更高级别的功能。
【讨论】:
第一件事可能是阅读MPI(Message Passing Interface),这是 HPC 节点互连中的事实标准。
【讨论】:
查看Eigen Vector/Matrix library。 api 非常优雅,生成的程序非常快(由于 SSE2 架构的显式矢量化)..
【讨论】:
尽管 14 岁以上,Expression Templates 的开创性工作仍然被认为是多年来最杰出的 C++ 工作。快速、高效、安全……我已经使用了这些技术,它们真的很了不起。
编辑: 如果上面的链接仍然断开,这里是alternate reference for Expression Templates。这篇 DDJ 文章引用了 Veldhuizen 的原创作品。
【讨论】:
看看The ADAPTIVE Communication Environment (ACE)。它是用于 C++ 中高性能应用程序的模板和对象库。它具有出色的线程、网络等跨平台原语。
【讨论】:
无论您编写什么内容,以及您从一开始就为性能设计了多少,很有可能它会从性能调整中受益。通常程序越大,受益越多。 THIS 是一种简单有效的调优方法。它基于“深度采样”,一种在不强调测量的同时提供准确诊断的技术。
你也可以看看http://en.wikipedia.org/wiki/Performance_analysis#Simple_manual_technique
【讨论】:
高可扩展性 - 构建更大、更快、更可靠的网站。
还有:
【讨论】: