部件号: AM62P
尊敬的团队:
据我的理解、它使用“memcpy"来“来加载 BW。 从示例中可以看出、PERF 计数器在 memcpy 操作之前和之后启动。 但我怀疑、计数器是否在 memcpy 操作过程中运行? 它如何测量 BW 在这里? 我想知道 DDR 中性能计数器对于任何应用测量 BW 的作用。
理解 — 启动计数器+运行应用+停止计数器、但从上面的代码来看、我不会观察到这种行为。 在这里有人帮我。
此致、
Shriya
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
部件号: AM62P
尊敬的团队:
据我的理解、它使用“memcpy"来“来加载 BW。 从示例中可以看出、PERF 计数器在 memcpy 操作之前和之后启动。 但我怀疑、计数器是否在 memcpy 操作过程中运行? 它如何测量 BW 在这里? 我想知道 DDR 中性能计数器对于任何应用测量 BW 的作用。
理解 — 启动计数器+运行应用+停止计数器、但从上面的代码来看、我不会观察到这种行为。 在这里有人帮我。
此致、
Shriya
您好、James:
感谢您的快速响应和澄清。 在这种情况下,我有一个疑问。 假设我正在运行工作负载、例如 GPU 三角。 我需要在工作负载期间监视 DDR 计数器。 所以根据解释-
1.读取计数器值。
2.运行 GPU 工作负载。
3.读取计数器值。
获取获得获得获得 BW 所需读数和时间的差异。 这是正确的吗?
参考 DDR 性能示例后、我感到困惑、因为它没有这样计算 BW。
代码片段 :
//重置计数器、在快照窗口中获取 BW 值、此处为 2 秒。
ddr_statsResetDdrLoadCalcAll();
ddr_perfStatsAccumate();
//工作负载
memcpy (gDdrTestRxBuf、gDdrTestTxBulkBuf、DDR_perf_APP_10MB_SIZE);
// 在快照窗口中获取 BW 值、此处为 2 秒。
ddr_perfStatsAccumate();
DdrPerfApp_performanceStatusPrint();
在上述情况下,我们不会测量前后的差异。 那么我们如何进行测量 WORKFLOAD 期间的 BW ? 这是我的怀疑。
请在这里帮助我。
谢谢你。
Shriya
感谢信息,是的,我已经研究了->DDR_perfStatsAccumulate 它获得了 totaltime、totalread.totalwrite 值和复制到结构(这是在工作负载之前),并 在工作负载后再次读取 DDR_perfStatsAccumulate 。
查询 -
1.我清楚的时间,它如何计算出两个快照之间的差异。 但从反面角度来看、这是代码的一部分并不明确-
在第二个快照窗口中、当计数器正在运行时、它如何记录 lastcnt 值(第一个快照的值)来计算差值?
2.我目前正在使用 DDR perf 来测量 GPU 工作负载以获得 GPU 带宽。 我使用的是 GPU Workload、而不是 memcpy。 这会有帮助吗? 如果我的进度有误、请指导我。
谢谢、
Shriya