问题标签 [intel-vtune]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1735 浏览

java - 优化 SSE 代码

我目前正在为需要一些性能改进的 Java 应用程序开发 C 模块(请参阅背景改进网络编码编码的性能)。我尝试使用 SSE-intrinsics 优化代码,它的执行速度比 Java 版本快一些(~20%)。但是,它仍然不够快。

不幸的是,我在优化 C 代码方面的经验有些有限。因此,我很想获得一些关于如何改进当前实施的想法。

构成热点的内部循环如下所示:

0 投票
1 回答
3829 浏览

optimization - 分析时,大部分时间都花在 nvoglv64.dll 中。我应该推断什么?

我正在使用 Intel VTune Amplifier 分析 C++ 应用程序。大多数时间似乎都花在了 nvoglv64.dll 中,更准确地说是在 DrvPresentBuffers 和/或 KeSynchoronizeExecution 中。请注意,我有一个 NVIDA GeoForce 显卡。

我是我正在分析的应用程序的新手,我正在寻找瓶颈和优化的低效成果。由于大部分时间似乎都花在了这个 NVIDIA dll 上,我不知道如何解码分析结果。

我想知道我的应用程序端的那些调用在哪里,以便了解我的应用程序。有人可以给我一些提示开始吗:

  • 当应用程序调用 DrvPresentBuffers 时,我应该查看什么样的调用(在我的应用程序端)
  • 我在哪里可以获得有关如何分析、理解和优化显卡 dll 中存在瓶颈的应用程序的更多信息。
0 投票
1 回答
431 浏览

performance - OpenMP、VTune、空闲线程

我使用 VTune 来检查我的代码的并发性。是输出的屏幕截图。您可以看到,有一些初始阶段有 1 个线程,然后是约 0.3 秒的密集多线程工作(棕色尖峰),然后是近 3 秒的空闲(没有棕色“CPU”,只有绿色“运行”)。

知道什么会导致线程处于绿色空闲状态吗?我的代码应该在完成所有密集计算后返回,没有理由再等待 3 秒......

0 投票
2 回答
656 浏览

mingw - 带有 mingw 的 Vtune 分析器

我在 64 位平台上使用 MinGW 来编译一个简单的 c++ 测试应用程序:

使用 -g3 标志 test.exe 现在应该包含用于分析它的所有必要符号信息......这是正确的吗?

当我使用 VTune Amplifyer XE 进行热点分析时,它会显示如下调用堆栈:

单击其中一项时,它会向我显示汇编代码,并且对于最上面的元素,它会显示:“无法显示源代码和汇编代码”。

如果我在 VTune 项目设置中指定源代码/二进制目录,这不会改变。

我应该如何编译我的程序或设置 VTune 以获得更有意义的结果?

0 投票
1 回答
640 浏览

ios - 有什么方法可以让 Time Profiler Instrument 对大型功能更有效?

我目前正在为 iOS 使用 Xcode 的 Time Profiler Instrument。一个功能非常大。是的,将其拆分成更小的内联会更加智能。但是,有没有办法伪造堆栈级别或让仪器处理如此大的函数,以便更容易确定实际上慢速部分是什么?

在 AMD Code Analyst 和 Intel VTune 中,您可以看到函数的图表,以便您确定不同的减速区域。我基本上想知道是否有适用于 iOS 设备的 Xcode 等价物。

0 投票
1 回答
838 浏览

c - 循环展开对内存绑定数据的影响

我一直在使用一段受内存密集限制的代码。我试图通过手动实现缓存阻塞、sw 预取、循环展开等在单个内核中对其进行优化。即使缓存阻塞显着提高了性能。但是,当我引入循环展开时,性能会大大下降。

我在所有测试用例中都使用带有编译器标志 -O2 和 -ipo 的 Intel icc 进行编译。

我的代码与此类似(3D 25 点模板):

当我在最内层循环(维度 i)上进行循环展开并分别以展开因子 2、4、8 分别在 x、y、z 方向上展开时,我在所有 9 种情况下都会出现性能下降,即在方向 x 上展开 2,展开在 y 方向上展开 2,在 z 方向上展开 2,在 x 方向上展开 4 ... 等等。但是当我在最外面的循环(维度 k)上执行循环展开 8 倍(也有 2 和 4)时,我获得 v.good 性能改进,甚至比缓存阻塞更好。

我什至尝试使用 Intel Vtune 分析我的代码。这似乎是主要由于远程 DRAM 服务的 1.LLC 未命中和 2.LLC 负载未命中造成的瓶颈。

我无法理解为什么展开最内层最快的循环会导致性能下降,而展开最外层、最慢的维度会带来性能提升。然而,后一种情况的这种改进是当我使用 icc 编译时使用 -O2 和 -ipo 时。

我不确定如何解释这些统计数据。有人可以帮助阐明这一点。

0 投票
2 回答
1451 浏览

c - 是否可以在二进制文件而不是整个二进制文件中的某些代码片段上使用 vtune?

我正在将小型库的使用添加到现有的大型软件中,并希望分析(在查找器详细信息中,而不仅仅是 in&out rdtsc() 或 gettimeofday 调用)开销及其对小型库的归属。使用 rdtsc() 之类的东西,我可以了解调用我的库函数所具有的延迟,但我无法进行延迟归因,除非我还能够查看分支是否没有被很好地预测,缓存是否工作不正常等等。我研究了 PAPI,因为我想象着在更大的二进制文件的上下文中查看进出库中例程的某些硬件事件,但似乎我需要一个特定的内核模块才能让 PAPI 为我工作(Linux 2.6. 18 && Intel Xeon 5570)...有专门为 Intel 处理器设计的 Vtune,但它看起来像

有没有办法让我使用 Vtune 来实现我的目标,或者可能有什么方法可以让我访问这些计数器而无需修补我的内核?

0 投票
1 回答
252 浏览

windows - 定期运行英特尔的 VTune

在先前版本的 VTune 中,有一个名为 dsep.exe 的程序,可用于定期从 VTune 轮询硬件计数器(特别是与 DRAM 读/写相关)。这使我能够及时收集有关每个实例的计数器数据,而不是最后的一个摘要。

不幸的是,该工具已在 64 位操作系统中被弃用。有谁知道定期(例如,每 1 秒)从 VTune(或 Windows 中的其他程序)获取硬件计数器数据的方法?

在此先感谢您的帮助。

0 投票
1 回答
889 浏览

c++ - 了解 VTune 报告

这是对现有线程(http://stackoverflow.com/questions/12724887/caching-in-a-high-performance-financial-application)的跟进 - 我发现阻碍我的应用程序的不是缓存。长话短说,我有一个应用程序在一个函数中花费了 70% 的运行时间(22 秒中有 15 秒)。因此,我想尽可能地缩短此函数的运行时间,因为该函数的设想用途是用于更大的数据(即 22 秒不是计划的运行时间:)

问题是 VTune 的输出让我感到困惑,代码似乎在绝对意想不到的地方花费了大量时间。我的想法已经用完了,所以我在这里发布了我的项目以及分析器结果。

看看有罪的 evaluateExits() 函数,这些事情让我感到困惑:

1/ 该函数恰好花费 2.2 秒调用一个内联函数,该函数返回 1 而不管参数如何(第 425 行,this->contractManager->contractCount())。注意:无论参数如何,函数返回 1 的版本是可能的情况之一,所以我不能把“contractCount=1”放在那里。来自虚拟表指针的重定向能否占用这 2.2 秒(contractCount() 是一个虚拟方法)?

2/ 该函数在 min(uint1, uint2) (第 432 行)上花费了 3.3 秒,尽管我使用的 wmin 版本应该尽可能对 CPU 友好。

3/函数在第512行花费了1.6s,这是一个非常微不足道的操作,被调用的函数不是虚拟的..

所以问题是:为什么这三行代码要花这么多时间?我在看什么?以及如何优化我的代码以使其运行得更快?我应该用应用于整个数组的 SSE 版本的 min 替换 wmin() 吗?

非常感谢任何输入。丹尼尔

编辑: 查看程序集,我发现在 1/ 情况下,确实是 vfptr 使代码“变慢”。我用 Don Clugston 的 fastdelegate 替换了对虚函数的调用,但性能没有发生任何变化(我不知道为什么)。由于南丁格尔的评论,附件现在应该包含所有必要的文件。但是,该二进制文件无法成功运行,因为它连接到有 100 MB 数据的共享内存。

所以,我在这里这里附上整个项目以及 VTune 的结果

0 投票
1 回答
889 浏览

c++ - VSPerf VS2010 和其他分析工具没有拾取 pdb

尝试使用 VSPerfCmd(VS2010 分析器)以及 Intel VTune Amplifier XE 2013 进行分析:对于 .vsp 文件中的 VsPerfCmd,可以获得一些结果。但是,profer 没有选择 pdb。应用程序的某些部分没有可用的代码。

这是否已经发生在您身上,您是否知道是否应该打开某些编译器选项以获得完整的配置文件?

profiler 在哪个目录中查找 .pdb 信息?

谢谢