关于 07/03_prefetch/06 运行结果的疑问

未关闭
#31 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
25/100
Issue 类型
缺陷
描述清晰度
需要澄清
活跃度
停滞
技术栈
cpp
领域
hpc, performance

调研方向

Start with the 07/03_prefetch/06 example and reproduce the two benchmark runs on the reported Intel i5-13500, Ubuntu 24.04, and GCC 13.2. Compare the results with and without #pragma omp parallel for; the issue is resolved when the effect of the pragma and the differing benchmark timings are explained or documented.

由索引模型根据 Issue 内容生成。

描述

hi, 小彭老师好。关于 07/03_prefetch/06 例子运行结果我有一些疑问,望指正。
我的平台是 Intel i5-13500, Ubuntu 24.04, gcc version 13.2.0
在运行 07/03_prefetch/06 这个例子时,
去掉例子中的 #pragma omp parallel for 才能得到与课程中类似的结果。我不清楚 #pragma omp parallel for 是否除了并行之外还有其他的优化?

原始版本运行结果

从运行结果可以看到,BM_write_stream_then_read 跟 BM_write_streamed 运行耗时相近,似乎读对 stream 指令并没有影响

-----------------------------------------------------------------------
Benchmark                             Time             CPU   Iterations
-----------------------------------------------------------------------
BM_read                        25228152 ns     18180668 ns           38
BM_write                       32696238 ns     25309548 ns           33
BM_write_streamed              19530899 ns     17132181 ns           36
BM_write_stream_then_read      19586335 ns     17525509 ns           43
BM_write_streamed_ps           19550735 ns     14485110 ns           39
BM_write_streamed_ps_skipped   37094026 ns     26238143 ns           26
BM_read_and_write              36829027 ns     33520956 ns           22

image

去除 #pragma omp parallel for 版本运行结果

从运行结果可以看到,BM_write_stream_then_read 运行耗时显著比 BM_write_streamed 长

-----------------------------------------------------------------------
Benchmark                             Time             CPU   Iterations
-----------------------------------------------------------------------
BM_read                        38213301 ns     38207623 ns           19
BM_write                       52209723 ns     52203705 ns           13
BM_write_streamed              34738316 ns     34735390 ns           20
BM_write_stream_then_read      40930259 ns     40927256 ns           17
BM_write_streamed_ps           17725541 ns     17724305 ns           36
BM_write_streamed_ps_skipped   36891533 ns     36889477 ns           19
BM_read_and_write              44972351 ns     44969916 ns           12

image

主要语言
C++
星标
4.2k
派生
554
PR 合并指标
30 天内没有已合并 PR

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

parallel101/course 的其他 Issue

查看 parallel101/course 的全部 Issue

相似的 Issue

更多 C++ Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。