You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
state.start_test.store(true, std::memory_order_release); // _mm_pause can be exited conditionally, spam hit L3
5638
-
while (state.counter == 0) {}
5658
+
// warm-up to settle caches, scheduler and frequency boosts
5659
+
for (int i = 0; i < 1000; ++i) {
5660
+
trigger_vmexit(dummy_res, 0x0, 0);
5661
+
for (int j = 0; j < 8; ++j) _mm_lfence();
5662
+
}
5639
5663
5640
5664
while (valid < BATCH_SIZE) {
5641
-
// interpolated so that any turbo boost, thermal throttling, speculation (for the loop overhead itself, not for the serializing instructions), etc affects both samples
5665
+
// interpolated so that any turbo boost, thermal throttling, speculation (for the loop overhead itself, not for the serializing instructions), etc affects samples equally
5642
5666
u64 v_pre, v_post, r_pre, r_post, sync;
5643
5667
5644
5668
sync = state.counter; while (state.counter == sync); // infer if counter got enough quantum momentum (so its currently scheduled)
0 commit comments