有几种方法/方法可以提高 HPC 应用程序的性能。其中一种方法是基于硬件架构微调应用程序。这种微调主要是在多核架构上完成的。为了使用这种方法,人们应该真正了解底层硬件架构,例如内存、插槽数、每个插槽的核心数、L1/L2 缓存、GFlops 等......
尽管这些技术术语看起来很熟悉,但我仍然不清楚它在应用程序性能方面的确切含义。
任何人都可以建议一个我可以从性能方面了解硬件架构的好地方/书。
有几种方法/方法可以提高 HPC 应用程序的性能。其中一种方法是基于硬件架构微调应用程序。这种微调主要是在多核架构上完成的。为了使用这种方法,人们应该真正了解底层硬件架构,例如内存、插槽数、每个插槽的核心数、L1/L2 缓存、GFlops 等......
尽管这些技术术语看起来很熟悉,但我仍然不清楚它在应用程序性能方面的确切含义。
任何人都可以建议一个我可以从性能方面了解硬件架构的好地方/书。
将代码调整到目标硬件架构非常重要。但是,除非您有大量的时间和资源,否则对于各种可用的系统来说这是不可能的。
优化遵循 80-20 规则。付出 20% 的努力,就能获得 80% 的收益。除此之外,您的回报将开始减少。
这是我遵循的过程: 1) 为您的目标架构获取最佳编译器。有时 GNU 可能是特定平台的最佳编译器,不要感到惊讶。2) 通读编译器的“代码优化”部分。3) 识别正确的标志来为目标平台生成最佳代码。但是,请确保使用您尝试的每个优化级别来验证代码的结果。更高的优化级别会影响代码的正确性。4)确保您需要的任何库都针对该系统进行了优化。例如,数学库、BLAS 库等。 5) 特别注意平台特定的硬件功能,如 SSE (SIMD)、内核或加速器的数量。您可能需要修改代码或向编译器提供提示,以便更好地针对这些功能优化代码。
您必须为每个目标平台执行此操作。到这个时候,您应该以最少的努力看到最大的收益。
如果您需要提高性能,几乎总是要求您重写代码以确保充分利用硬件功能。
不,没有这方面的书。最接近的是通常由供应商(IBM 红皮书、英特尔、AMD、Cray)免费提供的“优化手册”。
例如:support.amd.com/us/Processor_TechDocs/25112.PDF http://www.intel.com/products/processor/manuals/ http://www.ibm.com/developerworks/wikis/download/attachments/137167333 /Power6_optimization.pdf?version=1
这些是这些平台最有效的资源。您应该旨在为您的目标平台找到此类资源。