问题标签 [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 投票
1 回答
323 浏览

javascript - 使用 vtune 和 jitprofiling.h 支持编译 nodejs

我唯一的目的是使用 vTune 对 Node.js 下的 JavaScript 代码进行分析。

我尝试按照这篇文章中出现的步骤进行操作:Profiling Nodejs with vTune,但我没有运气。

我使用的是 Debian 7 x86_64,我的 vTune Amplifier XE 版本是 2015(评估模式)。这些模块是在启动时加载的service sep3_15 start,我可以用lsmod. 另外,我构建了jitprofilingvTune 提供的示例项目,它可以工作(我可以看到动态内容)。所以,我的问题是构建带有 vTune 支持的 Node.js。

如果我执行上述步骤,并且只vcbuild.bat nosign使用./configureand进行更改,make则会收到错误“../src/node.cc:22:67: fatal error: v8-vtune.h: No such file or directory”,并且继续正确编译的唯一解决方案是在中添加下一行node.gyp

这是获取包含(v8-vtune.h)和编译节点的唯一方法。

但是当使用 vTune Amplifier 导入时,我看不到Dynamic codeJS 的源代码。

我尝试了许多不同的事情,例如构建节点以使用./configure --build甚至进行调试./configure --debug --gdb,然后强制从 执行node二进制文件out/Debug/node,而不是从out/Release/node. 我可以看到它具有符号定义(strings node | wc -l比发布版本大得多),因为它在使用 vTune 进行分析时不会引发警告。虽然我可以看到所有节点源代码,但我看不到Dynamic code.

我什至试图强制变量gdbjit=onvtunejit=ondeps/v8/Makefile

我尝试使用每晚构建 0.11.11 和最新的 0.11.14。

我不知道该怎么做。

编辑:我正在使用不同的选项进行更多的编译(如上所述)。最后,我可以看到它在 0.11.12 版本之前是如何工作的,但 0.11.13 和 0.11.14 都没有。

0 投票
1 回答
284 浏览

c++ - 如何在 Linux (Ubuntu) 中为 VTune Amplifier 调整 Qt Creator

英特尔 VTune 放大器不显示来自 Qt Creator 的 C++ 项目的源代码(仅程序集)。我该如何解决?

0 投票
2 回答
271 浏览

c++ - 使用 Intel VTune Amplifier 进行 OpenMP 程序分析:什么是“kmp print storage map gtip”

我尝试分析与英特尔 OpenMP 和英特尔 Composer XE 2014 并行化的 C++ 程序的缩放行为。当我运行“高级热点分析”时,我得到一个名为“kmp print”的库函数storage map gtip”消耗了整个运行时间中第二长的部分。我用谷歌搜索了这个例程的含义,但没有得到结果。这个例程是否与我在这部分算法中使用的 std::map 数据结构相关?提前致谢!

编辑现在我消除了一个障碍,可以加快一切。但现在一个新的热点开始发挥作用。突然,当我进行 Locks & Wait 分析时,我的第一个位置是“OMP Join Barrier mkl_blas_daxpy_omp:115”和“OMP Join Barrier mkl_blas_dcopy:155”。但我没有明确调用任何 mkl 例程。我该如何调查这个更远?

0 投票
2 回答
1019 浏览

c++ - 如何解释英特尔 VTune 放大器的 Locks&Waits

我尝试使用 OpenMP 将我的 C++ 程序的一个热点并行化,但它无法扩展。虽然 1 个线程需要 25 秒,但 2 个线程只需要 21 秒。我使用 Intel VTune Amplifier 进行了 Locks & Wait 分析,但它并没有真正帮助我。看起来像:

VTune 放大器的结果

我特别不明白 mkl_blas_dcopy 来自哪里以及它调用它的内容(即使我删除了我的并行区域,我也有这个调用和时间轴中的第二个线程)。

我试图从 Top-Down Tree 中获取更多信息,但这对我并没有真正的帮助。

在此处输入图像描述

高级热点分析也没有给我更多信息。为了确定问题,我必须如何解决这个问题?

附加信息:在我的整体运行时差很多之前,但我在串行代码中做了很多优化,可以提高性能,但在那之后我的代码没有更多的可扩展性。

提前谢谢了!

编辑:这里还有时间线,没有显示任何过渡,与我放大的距离无关。在这种情况下,我使用了另一个具有 8 个线程的测试用例。 在此处输入图像描述

0 投票
1 回答
1173 浏览

profiler - vtune 函数调用计数

vtune 放大器 2015 使用什么技术来估计函数调用计数?

我知道它没有提供准确的信息。我想,它使用调用计数 = 函数占用的总时钟周期/单个函数运行的时钟周期

是这样吗?或者有任何分析器可以提供呼叫计数信息而不会造成太多开销。

0 投票
3 回答
1366 浏览

intel-vtune - 如何查找 i7 处理器的每条指令的周期

根据教程,我试图在带有 vtune 放大器 XE 2011 的 i7 处理器上查看程序的 CPI 值。(在 win8 x64 上),观点

  • 硬件事件计数
  • 硬件事件样本计数
  • 轻量级热点
  • 硬件问题

将播下CPI值。但在我的版本中,我只有轻量级热点。事情是当我试图分析它时,它给出了一个“不支持的架构类型”的按摩。谁能告诉我

如何在 i7 x64bit win8 和使用 vtune 2011 上查看程序的 CPI?如果不可能,为什么?或者哪个版本(或任何其他方式)可以测量上述系统上的 CPI?

0 投票
1 回答
155 浏览

c++ - 是什么导致我的代码中的缓存未命中?

我正在尝试优化在并行区域(OpenMP)中调用的部分代码。我使用 Intel VTune Amplifier 2015 进行了内存访问分析,对结果有点困惑。我使用 Intel Composer 2015 重复了优化级别 O1、O2 和 O3 的分析,但结果是相同的。放大器声称,大多数 LLC 未命中出现在以下三行中:

数据是对齐的,因为稍后会在矢量化代码中对其进行访问。我不能在这里发布整个代码,因为它有版权。这大约是这个函数中总缓存未命中的 75%,尽管后面的代码中有很多计算和其他数组。对于 O0 优化,我得到了更现实的结果,因为那里的线条像

但是整个执行过程需要更多的时间(这很清楚)。但我可以相信哪些结果?或者我可以使用哪些替代软件进行测试。

提前致谢!

0 投票
1 回答
1165 浏览

c++ - start_thread 克隆大部分时间都在并行程序中 - 并行化错误或错误报告?

我目前正在对 C++ 程序进行并行化,以提高其在多核系统上的性能。使用 OpenMP 并考虑挑战(线程同步、数据访问等),我们终于找到了使整个程序并行的方法,但性能提升并没有压倒性的优势。

使用英特尔 VTune Amplifier,我进行了热点搜索,发现几乎在每个应该并行执行的函数调用中,来自 libgomp.so 的“start_thread clone”所花费的时间都比函数的实际执行时间要长:

英特尔 VTune 结果图像

这确实出乎意料,因为我检查过,在当前的 OpenMP 实现中,从并行和串行区域切换几乎没有任何损失。根据这个讨论

线程在您的程序启动时启动(或第一次需要,取决于实现)。在其他任何地方暂停你的程序,你会注意到线程仍然存在

我这样做了,在调试器中停止了程序,在第一个并行区域之前只有一个线程,之后,无论我在哪里停止(并行或串行区域),都有多个线程。所以我确信每次“重生”新线程都不应该有任何开销。

现在 VTune 以不同的方式告诉我,就我能理解的测量结果而言。有人可以在这里帮助我吗?

0 投票
1 回答
149 浏览

profiling - VTune Amplifier XE 2015 架构分析

我最近下载了 VTune Amplifier XE 2015 来分析应用程序。

为了进行分析,我想从建筑和微建筑事件的角度进行分析。我发现在开始新分析时可以获得微架构分析,但无法找到如何获得架构分析(例如:存储指令退役、加载指令退役、近调用指令等)

有没有办法获得架构分析?

感谢您的帮助和时间。

0 投票
1 回答
1162 浏览

c++ - VTune 中未显示某些函数调用

我发现一些代码非常慢(将 10 秒的应用程序变成 60 秒的应用程序)。我发现使用“随机暂停应用程序并查看它在哪里”技巧的慢代码。慢代码位于第 3 方许可函数调用中,该函数调用正在检查许可服务器以获取有效许可。

当我尝试使用 Intel 的 VTune 放大器进行分析时,这个缓慢的函数调用并没有显示为花费太多时间。我不知道为什么,但我猜函数调用在等待许可证服务器响应或类似的东西时必须休眠,这会欺骗 VTune 不将其识别为瓶颈。有没有办法让 VTune 识别这样的呼叫?