Profiling 从ifort 11.1构建的评测代码生成了\uuuPowr8i4例程,它是什么?
我用Intel 11.1构建了一个Fortran代码。我使用-p选项构建它,以便生成分析数据。当我检查这些结果时,有一些例程不是我代码的一部分。我猜他们是被英特尔放在那里的。这些措施包括:Profiling 从ifort 11.1构建的评测代码生成了\uuuPowr8i4例程,它是什么?,profiling,intel-fortran,Profiling,Intel Fortran,我用Intel 11.1构建了一个Fortran代码。我使用-p选项构建它,以便生成分析数据。当我检查这些结果时,有一些例程不是我代码的一部分。我猜他们是被英特尔放在那里的。这些措施包括: __powr8i4 __intel_new_memset __intel_fast_memset __intel_fast_memset.J __intel_fast_memcpy __intel_new_memcpy __intel_fast_memcpy.J 还有其他的。当我在没有优化的情况下构建代码时
__powr8i4
__intel_new_memset
__intel_fast_memset
__intel_fast_memset.J
__intel_fast_memcpy
__intel_new_memcpy
__intel_fast_memcpy.J
还有其他的。当我在没有优化的情况下构建代码时,代码不会在其中花费太多时间。除了结果显示3.3%的时间使用功率8I4。然而,当我通过优化构建代码时,这个数字会上升到35%左右。我似乎无法找出这些例程是什么,但它们混淆了我的结果,因为我想知道在哪里可以优化代码 大多数程序在调用子例程(通常是库子例程)时会花费大量的周期,因此,如果只查看独占(自)时间,就会看到所看到的内容
- 因此,第1点是看包容性(自我加被叫方)时间
- 因此,第2点是使用一个在“挂钟”时间而不是“CPU”时间工作的分析器,除非您确定自己没有做太多I/O(有时您认为自己没有做I/O,但在某些子程序层的深处,猜猜看——它在做I/O。)
- 第三点是,如果可能的话,使用一个分析器,为您提供行级别的包含时间百分比。 (百分比是最有用的数字,因为它告诉您,如果您能够以某种方式删除该行代码,您将节省多少总时间。此外,它不会受到系统中竞争进程的太大影响。) 这种分析器的一个例子是
- 我所做的是调试程序下的程序状态,看看是否能真正理解它在每个示例中所做的事情。 你可以找到其他方法找不到的东西。 (有些人说这并不准确,但它是准确的——关于什么是重要的。重要的是问题是什么,而不是它的确切成本。) 这就是第四点