问题标签 [papi]

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 回答
287 浏览

c++ - 链接 PAPI 时出现迂腐错误

我正在尝试在 Arch Linux x86_64 中构建一些使用 PAPI 5.4.3.0 库的项目。

为简单起见,我在这两个文件中复制了我不理解的内容:

A.cpp

B.cpp

编译它(到目标文件)时,我得到以下信息:

为什么-pedantic标志会引发错误,而不是警告?(2)

为什么第 3 次运行没有引发任何问题(仅通过切换包含)?

0 投票
0 回答
75 浏览

c - 指令缓存访问 (PAPI)

我目前正在使用 PAPI 对一些代码进行基准测试。

我获得的预设值之一是 PAPI_L1_ICA,即对 L1 指令高速缓存执行的指令高速缓存访​​问量。

据我所见,代码受此支配,因为算法的运行时间和 PAPI_L1_ICA 似乎或多或少相当,而其他指标,如分支错误预测、缓存未命中、tlb 未命中和 CPU 指令,通常确实如此不解释运行时间的行为。

我的问题是,什么定义了触发 L1 指令缓存访问的操作?根据我的测量,访问量约为 150.000,而例如完成的指令 PAPI_TOT_INS 的数量仅为大约 10.000。他们不应该有点平等吗?

0 投票
1 回答
281 浏览

python - 如何修复 libpapi.so.* 在运行带有跟踪的 (py)COMPS 时无法打开共享对象文件?

当我尝试在激活了跟踪系统的情况下运行一些 COMPSs 应用程序时,我收到以下错误:

我正在使用 ubuntu,并且我已经使用 apt-get 从包中安装了 COMPS。要启动我使用的应用程序:

我已经安装了 PAPI 库:

编辑:我使用的是 1.4 版

0 投票
1 回答
82 浏览

python - 修复 COMPS 跟踪错误:线程 X evtset X (papi_hwc.c:*) 的 PAPI_read 失败

我正在尝试在激活了跟踪系统(额外)的情况下运行 COMPS。我首先遇到了安装问题,但由于这个问题我解决了:

如何修复 libpapi.so.* 在运行带有跟踪的 (py)COMPS 时无法打开共享对象文件?

但是,现在我面临一个新的 PAPI 问题。COMPSs 运行时似乎已正确加载,但 Extrae 报告此错误:

尽管我得到了错误:

但是在启动运行时后,我在一个无限循环中得到了这个:

即使他们没有硬件 PAPI 计数器,我也希望能够获得跟踪。如何禁用它们或修复错误?

0 投票
1 回答
429 浏览

c++11 - 如何将 PAPI 与 C++11 std:thread 一起使用?

我想使用 PAPI 来获取std::thread 程序中所有 C++11 线程的总计数器。

Threads 上的 PAPI 文档说:

PAPI 库中的线程支持可以通过在 C 中调用以下低级函数来初始化:int PAPI_thread_init(unsigned long(*handle)(void));

手柄在哪里

指向以无符号长整数形式返回当前线程 ID 的例程的指针。

例如,对于 pthread,句柄是pthread_self. 但是,我不知道 C++11 应该是什么std::thread。使用与 PAPI 不同的东西也更有意义。

0 投票
1 回答
2993 浏览

c++ - 为什么 Perf 和 Papi 为 L3 缓存引用和未命中提供不同的值?

我正在做一个项目,我们必须实现一个理论上证明是缓存友好的算法。简单来说,如果N是输入,B是每次缓存未命中时在缓存和 RAM 之间传输的元素数,算法将需要O(N/B)访问 RAM。

我想证明这确实是实践中的行为。为了更好地理解如何测量各种与缓存相关的硬件计数器,我决定使用不同的工具。一个是Perf,另一个是PAPI库。不幸的是,我使用这些工具越多,我就越不了解它们到底在做什么。

我正在使用 Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz,8 GB RAM,L1 缓存 256 KB,L2 缓存 1 MB,L3 缓存 6 MB。高速缓存行大小为 64 字节。我想那一定是块的大小B

让我们看下面的例子:

每个节点需要 8 个字节,这意味着一个缓存行可以容纳 8 个节点,所以我应该预计大约1000000/8 = 125000L3 缓存未命中。

没有优化(no -O3),这是 perf 的输出:

它非常接近我们的预期。现在假设我们使用 PAPI 库。

这是我得到的输出:

为什么这两种工具之间有如此大的差异?

0 投票
1 回答
28 浏览

performancecounter - 计数发生在主内存上特定内存地址的读/写次数

我想开发一个工具,将内存地址作为输入,然后计算主内存上这些内存地址发生的读/写次数。

是否有任何工具(如 PAPI、Perfmon2)可以帮助我实现这一目标?

谢谢

0 投票
1 回答
223 浏览

papi - 使用 papi 监控正在运行的进程的性能计数器

如何使用 PAPI 监控已运行进程的硬件计数器?

任何帮助将不胜感激。

谢谢舒佳

0 投票
1 回答
786 浏览

c - 性能计数器值使用 papi attach 返回零

我正在尝试使用 PAPI 读取硬件性能计数器,并编写了以下代码:

我使用以下命令编译它:

我像这样运行它:

其中 7865 是正在运行的进程的进程 ID。

问题是它显示零值而不是显示计数器值。

谁能让我知道它为什么会这样?为什么它没有获得价值?

0 投票
3 回答
827 浏览

linux - 我们如何知道 CPU 内置的硬件性能计数器的确切数量?

在我对硬件性能计数器做了几篇阅读之后,我可以声称所有的英特尔处理器都支持硬件性能计数器。因此,为了访问这些额外的硬件寄存器,即硬件性能计数器,我使用了经常用于访问和配置这些计数器的 PAPI 基础设施。

当我使用 papi_avail 实用程序报告有关数字硬件计数器的信息时,看到了意外的值,即相对于图,数字硬件计数器:0。可能吗?

关于我的处理器型号(英特尔酷睿 i7),我认为这是不正确的值。

我非常感谢您能提供的任何帮助。