问题标签 [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.
c - 使用 Papi 获取 retval、清理、销毁失败
我正在尝试使用 papi 进行测试,但我遇到了一些我不明白为什么会发生的错误。我在网上找不到他们的任何东西。代码如下
我正在使用PAPI和 C。
在输出文件中,我只看到以下内容:
我不明白为什么 ret、ret2、cleanup 和 destroy 失败。为什么?
performance - PAPI 计数器问题
我编写了以下代码来获取 L3 缓存未命中信息。
但是我得到一个错误和计数器的零值,如下所示。有什么问题?
我用 papi_avail -a 检查了可用的计数器,并且似乎支持这些计数器。CPU 信息如下。
无名输出
cpu - How to monitor the utilization of cores on Xeon Phi at 10Hz?
I've been trying to measure/monitor the utilization of all those 60 cores on Xeon Phi (Knights Corner, in-order processors) at a relatively high frequency, say, at least every 0.1s which yields to 10Hz.
I tried the latest PAPI library. But it only supports PAPI_TOT_INS which is the counter of completed instructions. This won't work because I actually need something related to the instructions issued every 0.1s, not finished. Several instructions issued at different cycles may finish at the same cycle. The issue of instructions is influenced by whether the core is halted or not.
Other commands available like 'top' and 'perf' operate at 1Hz which is too slow for my measurement. I need a higher frequency. And, I also need to synchronize the measurement with vital phases of my codes. So, the Intel Vtune Profile does not work for me either.
Is there a possible way for me to monitor the issue of instructions on Xeon Phi or any other activities linked to their utilizations? I understand that those hardware counters are there, but to read them seems very challenging to me. Maybe I can deduce this utilization by measuring the CPU time of each thread?
Thanks.
c - 如何衡量并行程序的整体性能(使用 papi)
我问自己什么是衡量并行程序性能(以失败计)的最佳方法。我读到了 papi_flops。这似乎适用于串行程序。但我不知道如何衡量并行程序的整体性能。
我想测量一个 blas/lapack 函数的性能,在我下面的 gemm 示例中。但我也想测量其他功能,特别是操作次数未知的功能。(在 gemm 的情况下,ops 是已知的(ops(gemm) = 2*n^3),所以我可以将性能计算为操作数和执行时间的函数。)库(我使用的是 Intel MKL) 自动生成线程。所以我不能单独测量每个线程的性能然后降低它。
这是我的例子:
这是一个输出(对于矩阵大小 200):
我们可以看到函数 gemm 的执行时间是可伸缩的。但我正在测量的失败只是线程 0 的性能。
我的问题是:如何衡量整体表现?我很感激任何意见。
papi - papi_avail: 没有可用的事件
我想进入 PAPI。我在 Debian GNU/Linux 上有 5.3.2.0 版。papi_avail
只是告诉我没有可用的硬件事件:
我在文档和常见问题解答中都找不到任何内容。有谁知道这里有什么问题?
intel - 使用 Intel trace Collector&Analyzer 和 PAPI 获取计数器
大家好,我正在尝试使用 Intel Trace Collector 和 PAPI 获取计数器,但 stf 跟踪文件(使用 Intel Analyzer 打开)不提供计数器。
按照收集器指南,我编辑了 conf 文件,添加了我要收集的计数器:
- 计数器“PAPI_FP_OPS”开启
- 计数器“PAPI_BR_CN”开启
- 计数器“PAPI_TOT_INS”开启
我设置了 VT_CONFIG 环境变量来指向这个文件。
编译行是:
mpiifort -r8 -O3 -xHost -fp-model 源 -traceback 文件。F90 -L$VT_SLIB_DIR -L。-lVT -L$PAPI_ROOT/lib64 -lpapi $VT_ADD_LIBS -o file.exe
怎么了?
提前致谢。
c++ - 向量化代码时缓存未命中次数增加
我使用 SSE 4.2 和 AVX 2 对 2 个向量之间的点积进行了向量化,如下所示。该代码是使用带有 -O2 优化标志的 GCC 4.8.4 编译的。正如预期的那样,两者的性能都变得更好(并且 AVX 2 比 SSE 4.2 更快),但是当我使用 PAPI 分析代码时,我发现未命中的总数(主要是 L1 和 L2)增加了很多:
没有矢量化:
使用 SSE 4.2:
使用 AVX 2:
我的代码可能有问题还是这种行为正常?
AVX 2 代码:
SSE 4.2 代码:
非向量化代码:
编辑:非矢量化代码的组装:
Edit2:您可以在下面找到较大 N 的向量化代码和非向量化代码之间的 L1 缓存未命中比较(x 标签上的 N 和 y 标签上的 L1 缓存未命中)。基本上,对于较大的 N,矢量化版本中的未命中率仍然比非矢量化版本中的多。
powerpc - Power8 上的 PM_DATA_ALL* 和 PM_DATA* 事件有什么区别?
在使用 Power8 处理器评估内存性能时,我遇到perf
了理解事件PM_DATA_ALL_*
和PM_DATA_*
. 大多数计数器在两个版本中都存在,但oprofile 文档中的描述和 inpapi_native_avail
相同,例如:
PM_DATA_FROM_LMEM
如果 MMCR1[16] 为 1,则处理器的数据高速缓存从本地芯片的内存中重新加载,因为只有按需加载或按需加载加上预取。
我虽然会通过测量一些数据来找出差异。如果我提供足够大的任务,我可以观察到*_ALL
版本具有更高值的预期差异。我理解使用perf
.
那么这些事件的全部内容到底是什么?
c - 如何正确使用 papi_native_avail 获取 BG/Q 系统上的网络性能监控事件?
我正在尝试使用 BG Torus 互连在 BG/Q 系统上收集网络性能计数器数据。我正在使用 PAPI,因为这似乎是最推荐的方式,另一个选项是 bgpm 库,我认为该系统上没有安装它。(locate bgpm
什么都没给我。)
我正在尝试获取系统上所有可用计数器的名称。所以我运行papi_native_avail
,它返回一堆事件。例如,以下是网络类别的摘录:
papi_native_avail
段错误,但我认为这无关紧要。
所以我在这一点上的理解是我应该能够使用事件名称并从中获取事件代码PAPI_event_name_to_code()
,但这似乎不起作用。我猜这些不是该函数所期望的事件名称。所以有人可以解释一下:
我在哪里可以找到 BG/Q 的所有网络活动?
我如何获得这些事件的代码?
为了完整起见,这是我的代码和输出:
输出:
caching - 总缓存未命中数少于数据缓存未命中数 (PAPI_L1_DCM > PAPI_L1_TCM)
对于我的应用程序 (SpMV),我的数据缓存未命中 (PAPI_L1_DCM) 多于 1 级缓存中的总缓存未命中 (PAPI_L1_TCM)。怎么可能?对于 2 级,这些值是可以的。也就是说,PAPI 计数器提供的内容:
此外,我的缓存访问低于一个级别的缓存未命中。我无法自己解释。
也许 papi_avail 输出可以解释。了解英特尔对寻址 PAPI 计数器的确切解释也很好,但我在手册中没有找到它:http: //www.intel.com/content/www/us/en/architecture-and -technology/64-ia-32-architectures-optimization-manual.html