Performance 需要参考:硬件架构和性能改进[HPC/并行计算]

Performance 需要参考:硬件架构和性能改进[HPC/并行计算],performance,reference,hpc,parallel-processing,Performance,Reference,Hpc,Parallel Processing,有几种方法可以提高HPC应用程序的性能。其中一种方法是基于硬件架构对应用程序进行微调。这种微调主要在多核架构上完成。为了使用这种方法,人们应该真正了解底层硬件架构,如内存、套接字数量、每个套接字的内核数量、一级/二级缓存、GFlops等 尽管这些技术术语看起来很熟悉,但我仍然不清楚它在应用程序性能方面的确切含义 有谁能推荐一个好地方/一本书,让我从中了解硬件体系结构的性能。将代码调整到目标硬件体系结构是非常重要的。但是,除非您有大量的时间和资源,否则对于各种各样的可用系统来说,这是不可能做到的

有几种方法可以提高HPC应用程序的性能。其中一种方法是基于硬件架构对应用程序进行微调。这种微调主要在多核架构上完成。为了使用这种方法,人们应该真正了解底层硬件架构,如内存、套接字数量、每个套接字的内核数量、一级/二级缓存、GFlops等

尽管这些技术术语看起来很熟悉,但我仍然不清楚它在应用程序性能方面的确切含义


有谁能推荐一个好地方/一本书,让我从中了解硬件体系结构的性能。

将代码调整到目标硬件体系结构是非常重要的。但是,除非您有大量的时间和资源,否则对于各种各样的可用系统来说,这是不可能做到的

优化遵循80-20规则。您可以通过20%的努力获得80%的收益。除此之外,你的回报将开始减少

以下是我遵循的过程: 1) 为您的目标体系结构获取最佳编译器。有时候GNU可能是特定平台的最佳编译器,不要惊讶。 2) 通读编译器的“代码优化”部分。 3) 确定正确的标志,为目标平台生成最佳代码。但是,请确保您在尝试的每一级优化中都验证了代码的结果。更高的优化级别将影响代码的正确性。 4) 确保您需要的所有库都针对该系统进行了优化。例如,数学库、BLAS库等。 5) 特别注意特定于平台的硬件功能,如SSE(SIMD)、内核数或加速器数。您可能需要修改代码或向编译器提供提示,以便更好地针对这些功能优化代码

您必须为每个目标平台执行此操作。此时,您应该会看到以最小的努力获得最大的好处

如果您需要提高性能,它几乎总是要求您重写代码,以确保充分利用硬件功能

没有,没有这方面的书。最接近的是供应商(IBM红皮书、英特尔、AMD、克雷)通常免费提供的“优化手册”

例: support.amd.com/us/Processor_TechDocs/25112.PDF http://www.ibm.com/developerworks/wikis/download/attachments/137167333/Power6_optimization.pdf?version=1


这些是这些平台最有效的资源。您应该致力于为您的目标平台找到此类资源。

将代码调整到目标硬件体系结构是非常重要的。但是,除非您有大量的时间和资源,否则对于各种各样的可用系统来说,这是不可能做到的

优化遵循80-20规则。您可以通过20%的努力获得80%的收益。除此之外,你的回报将开始减少

以下是我遵循的过程: 1) 为您的目标体系结构获取最佳编译器。有时候GNU可能是特定平台的最佳编译器,不要惊讶。 2) 通读编译器的“代码优化”部分。 3) 确定正确的标志,为目标平台生成最佳代码。但是,请确保您在尝试的每一级优化中都验证了代码的结果。更高的优化级别将影响代码的正确性。 4) 确保您需要的所有库都针对该系统进行了优化。例如,数学库、BLAS库等。 5) 特别注意特定于平台的硬件功能,如SSE(SIMD)、内核数或加速器数。您可能需要修改代码或向编译器提供提示,以便更好地针对这些功能优化代码

您必须为每个目标平台执行此操作。此时,您应该会看到以最小的努力获得最大的好处

如果您需要提高性能,它几乎总是要求您重写代码,以确保充分利用硬件功能

没有,没有这方面的书。最接近的是供应商(IBM红皮书、英特尔、AMD、克雷)通常免费提供的“优化手册”

例: support.amd.com/us/Processor_TechDocs/25112.PDF http://www.ibm.com/developerworks/wikis/download/attachments/137167333/Power6_optimization.pdf?version=1

这些是这些平台最有效的资源。你应该为你的目标平台寻找这样的资源