[FR] `PredictNumItersNeeded()` 1.4 correction factor
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 5/5
- Thời gian dự kiến
- Hơn một tuần
- Mức phù hợp với người mới
- 30/100
- Loại issue
- Tính năng
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Đình trệ
- Công nghệ
- cpp
- Lĩnh vực
- performance
Hướng nghiên cứu
Bắt đầu với PredictNumItersNeeded() trong src/benchmark_runner.cc và tái hiện hành vi đã được báo cáo bằng --benchmark_min_time=1s và 0.71s. Xem lại logic thời gian lặp xung quanh và phần thảo luận để xác định mục đích của hệ số hiệu chỉnh; được xem là hoàn tất khi có một phương án đã được thống nhất, vẫn giữ nguyên ngữ nghĩa của thời gian tối thiểu mà không gây ra phần vượt quá mức được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Problem description
In the function PredictNumItersNeeded() there is this 1.4 correction factor.
This causes the time running the experiment to exceed by ~40% the time specified by --benchmark_min_time.
Of course, --benchmark_min_time denotes the minimum amount of time to run the benchmark, but an overrun of 40% seems excessive.
This is particularly relevant in supercomputers, where CPU time is expensive.
- Why is this estimation done, instead of stopping the iterations when the accumulated "iteration time" exceeds the target time?
- Is there a reason for selecting 1.4 as a correction factor?
- In cases where the execution times are not stable, could this prediction be wrong by a large margin?
Suggested solution
I suggest either removing the correction factor or making it configurable (with a default value of 1.0).
Example
As shown in the following output (executed with --benchmark_min_time=1s) the real execution time is ~1.4s: $7039 \times 198481 = 1397107759$, $8775 \times 160984 = 1412634600$, ...
------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------------------------------------
GNU-TBB/std::adjacent_difference/double/1024/manual_time 7039 ns 7022 ns 198481 bytes_per_second=6.50968Gi/s
GNU-TBB/std::adjacent_find/double/1024/manual_time 8775 ns 8702 ns 160984 bytes_per_second=2.61075Gi/s
GNU-TBB/std::all_of/double/1024/manual_time 7704 ns 7529 ns 199585 bytes_per_second=2.97387Gi/s
GNU-TBB/std::any_of/double/1024/manual_time 4707 ns 4625 ns 301878 bytes_per_second=4.86754Gi/s
When executing the same code with --benchmark_min_time=0.71s ($1/1.4 \simeq 0.71$), the execution times are much closer to 1s: $7681 \times 134530 = 1033324930$, $9265 \times 103410 = 958093650$, ...
------------------------------------------------------------------------------------------------------------------------
Benchmark Time CPU Iterations UserCounters...
------------------------------------------------------------------------------------------------------------------------
GNU-TBB/std::adjacent_difference/double/1024/manual_time 7681 ns 7615 ns 134530 bytes_per_second=5.96565Gi/s
GNU-TBB/std::adjacent_find/double/1024/manual_time 9265 ns 9175 ns 103410 bytes_per_second=2.47288Gi/s
GNU-TBB/std::all_of/double/1024/manual_time 7996 ns 7572 ns 110333 bytes_per_second=2.86519Gi/s
GNU-TBB/std::any_of/double/1024/manual_time 4656 ns 4680 ns 192865 bytes_per_second=4.92025Gi/s
- Ngôn ngữ chính
- C++
- Star
- 10.5k
- Fork
- 1.8k
- Merge trung bình
- 1 ngày 15 giờ
- Pull request đã merge (30 ngày)
- 28
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Không có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của google/benchmark
-
[BUG] Confusing title in docs/platform_specific_build_instructions.mdCó thể đã có người làm @skryabae đã nhận 30 ngày trước. Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 88/100
Maintainer thường phản hồi trong vòng 1 ngày
-
[BUG] Memory manager counts allocations not part of benchmarkCó thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
google/benchmark#2149 · 5 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
[FR] Add native Zig bindings via top-level `bindings/zig`Có thể làm lại được Pull request cho issue này đã bị đóng mà không được merge. Đang mở
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 42/100
google/benchmark#2266 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
google/benchmark#2235 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 5/5 Hơn một tuần Mức phù hợp với người mới 20/100
google/benchmark#2195 · 3 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của google/benchmark
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
-
status:needs-triage
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 74/100
PX4/PX4-Autopilot#29698 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
go perft exits when EvalFile is unavailableCó thể đã có người làm @Muawiya-contact đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
official-stockfish/Stockfish#7292 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 77/100
arvidn/libtorrent#9149 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Upstream report: MSVC rejects a designated initializer in a dependent template argument (C2131)Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
rhalbersma/tabula#72 ·