有几种方式/方法可以提高HPC应用程序的性能。其中一种方法是基于硬件架构对应用程序进行微调。这种微调主要是在多核架构上完成的。为了使用这种方法,人们应该真正了解底层的硬件体系结构,如内存、no.of插槽、每个插槽的no.of核心、L1/L2缓存、GFlops等。
尽管这些技术术语看起来很熟悉,但我仍然不清楚它在应用程序性能方面的确切含义。
有没有人能推荐一个好的地方/书,让我从性能上了解硬件架构。
发布于 2011-05-06 23:47:04
将代码调优到目标硬件体系结构非常重要。但是,除非您有大量的时间和资源,否则对于种类繁多的可用系统是不可能做到这一点的。
优化遵循80-20规则。你可以用20%的努力获得80%的收益。除此之外,你的回报将开始减少。
下面是我遵循的流程: 1)获得最适合你的目标架构的编译器。有时GNU可能是特定平台上最好的编译器,请不要惊讶。2)通读编译器的“代码优化”部分。3)识别正确的标志,以便为目标平台生成最佳代码。但是,请确保使用您尝试的每个级别的优化来验证代码的结果。更高的优化级别会影响代码的正确性。4)确保您需要的任何库都针对该系统进行了优化。对于ex、数学库、BLAS库等,请特别关注特定于平台的硬件特性,如SSE (SIMD)、内核数量或加速器。YOu可能需要修改代码或向编译器提供提示,以便针对这些功能更好地优化代码。
对于每个目标平台,您都必须这样做。到了这个时候,您应该可以看到最小的工作量带来的最大好处。
如果您需要获得更高的性能,几乎总是需要重写代码,以确保充分利用硬件特性。
不,没有这方面的书。最接近的是供应商免费提供的“优化手册”(IBM redbooks,Intel,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
这些是这些平台最有效的资源。您应该致力于为您的目标平台找到这样的资源。
https://stackoverflow.com/questions/5775240
复制相似问题