Skip to content

Commit 00b1a2c

Browse files
committed
ParallelFrontend scenario added for -Zthreads=8 run, check only
1 parent 4bfa110 commit 00b1a2c

8 files changed

Lines changed: 35 additions & 5 deletions

File tree

collector/src/bin/collector.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ fn generate_diffs(
177177
return vec![];
178178
}
179179
match scenario {
180-
Scenario::Full | Scenario::IncrFull | Scenario::IncrUnchanged => {
180+
Scenario::Full | Scenario::IncrFull | Scenario::IncrUnchanged | Scenario::ParallelFrontend => {
181181
vec![format!("{:?}", scenario)]
182182
}
183183
Scenario::IncrPatched => (0..benchmark.patches.len())

collector/src/compile/benchmark/mod.rs

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,13 @@ impl Benchmark {
451451
.await?;
452452
}
453453

454+
if scenarios.contains(&Scenario::ParallelFrontend) {
455+
self.mk_cargo_process(toolchain, cwd, profile, backend, target)
456+
.processor(processor, Scenario::ParallelFrontend, "ParFront", None)
457+
.run_rustc(true)
458+
.await?;
459+
}
460+
454461
// Rustdoc does not support incremental compilation
455462
if !profile.is_doc() {
456463
// An incremental build from scratch (slowest incremental case).
@@ -524,6 +531,10 @@ impl Benchmark {
524531
if scenario.is_incr() && profile.is_doc() {
525532
return false;
526533
}
534+
// Testing parallel frontend only for 'check' profile
535+
if *scenario == Scenario::ParallelFrontend && *profile != Profile::Check {
536+
return false;
537+
}
527538

528539
let benchmark = database::Benchmark::from(self.name.0.as_str());
529540
let profile: database::Profile = (*profile).into();
@@ -532,7 +543,7 @@ impl Benchmark {
532543

533544
match scenario {
534545
// For these scenarios, we can simply check if they were benchmarked or not
535-
Scenario::Full | Scenario::IncrFull | Scenario::IncrUnchanged => {
546+
Scenario::Full | Scenario::IncrFull | Scenario::IncrUnchanged | Scenario::ParallelFrontend => {
536547
let test_case = CompileTestCase {
537548
benchmark,
538549
profile,
@@ -542,6 +553,7 @@ impl Benchmark {
542553
Scenario::Full => database::Scenario::Empty,
543554
Scenario::IncrFull => database::Scenario::IncrementalEmpty,
544555
Scenario::IncrUnchanged => database::Scenario::IncrementalFresh,
556+
Scenario::ParallelFrontend => database::Scenario::ParallelFrontend,
545557
Scenario::IncrPatched => unreachable!(),
546558
},
547559
};

collector/src/compile/benchmark/scenario.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ pub enum Scenario {
55
IncrFull,
66
IncrUnchanged,
77
IncrPatched,
8+
ParallelFrontend,
89
}
910

1011
impl Scenario {
@@ -14,11 +15,12 @@ impl Scenario {
1415
Scenario::IncrFull,
1516
Scenario::IncrUnchanged,
1617
Scenario::IncrPatched,
18+
Scenario::ParallelFrontend,
1719
]
1820
}
1921

2022
pub fn all_non_incr() -> Vec<Scenario> {
21-
vec![Scenario::Full]
23+
vec![Scenario::Full, Scenario::ParallelFrontend]
2224
}
2325

2426
pub fn is_incr(self) -> bool {

collector/src/compile/execute/bencher.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ impl Processor for BenchProcessor<'_> {
173173
Scenario::Full => database::Scenario::Empty,
174174
Scenario::IncrFull => database::Scenario::IncrementalEmpty,
175175
Scenario::IncrUnchanged => database::Scenario::IncrementalFresh,
176+
Scenario::ParallelFrontend => database::Scenario::ParallelFrontend,
176177
Scenario::IncrPatched => {
177178
let patch = data.patch.unwrap();
178179
database::Scenario::IncrementalPatch(patch.name)

collector/src/compile/execute/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ impl PerfTool {
112112
| ProfileTool(LlvmIr)
113113
| ProfileTool(Eprintln) => true,
114114
// only incremental
115-
ProfileTool(DepGraph) => scenario != Scenario::Full,
116-
ProfileTool(LlvmLines) => scenario == Scenario::Full,
115+
ProfileTool(DepGraph) => !matches!(scenario, Scenario::Full | Scenario::ParallelFrontend),
116+
ProfileTool(LlvmLines) => matches!(scenario, Scenario::Full | Scenario::ParallelFrontend),
117117
}
118118
}
119119
}
@@ -409,6 +409,9 @@ impl<'a> CargoProcess<'a> {
409409
match self.profile {
410410
Profile::Check => {
411411
cmd.arg("--profile").arg("check");
412+
if Some(Scenario::ParallelFrontend) == self.processor_etc.as_ref().map(|v| v.1) {
413+
cmd.env("RUSTC_THREAD_COUNT", "8");
414+
}
412415
}
413416
Profile::Clippy => {
414417
cmd.arg("--profile").arg("check");

database/src/lib.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,8 @@ pub enum Scenario {
286286
IncrementalFresh,
287287
/// Cache is mostly up-to-date but some code has been changed
288288
IncrementalPatch(PatchName),
289+
/// Parallel frontend
290+
ParallelFrontend,
289291
}
290292

291293
intern!(pub struct PatchName);
@@ -297,6 +299,7 @@ impl std::str::FromStr for Scenario {
297299
"full" => Scenario::Empty,
298300
"incr-full" => Scenario::IncrementalEmpty,
299301
"incr-unchanged" => Scenario::IncrementalFresh,
302+
"par-front" => Scenario::ParallelFrontend,
300303
_ => {
301304
if let Some(stripped) = s.strip_prefix("incr-patched: ") {
302305
Scenario::IncrementalPatch(PatchName::from(stripped))
@@ -314,6 +317,7 @@ impl fmt::Display for Scenario {
314317
Scenario::Empty => write!(f, "full"),
315318
Scenario::IncrementalEmpty => write!(f, "incr-full"),
316319
Scenario::IncrementalFresh => write!(f, "incr-unchanged"),
320+
Scenario::ParallelFrontend => write!(f, "par-front"),
317321
Scenario::IncrementalPatch(name) => write!(f, "incr-patched: {name}"),
318322
}
319323
}
@@ -325,6 +329,7 @@ impl Scenario {
325329
Scenario::Empty => "full".to_string(),
326330
Scenario::IncrementalEmpty => "incr-full".to_string(),
327331
Scenario::IncrementalFresh => "incr-unchanged".to_string(),
332+
Scenario::ParallelFrontend => "par-front".to_string(),
328333
Scenario::IncrementalPatch(name) => format!("incr-patched-{name}"),
329334
}
330335
}
@@ -345,9 +350,14 @@ impl Ord for Scenario {
345350
(Scenario::IncrementalFresh, Scenario::Empty) => Ordering::Greater,
346351
(Scenario::IncrementalFresh, Scenario::IncrementalEmpty) => Ordering::Greater,
347352
(Scenario::IncrementalFresh, _) => Ordering::Less,
353+
(Scenario::ParallelFrontend, Scenario::Empty) => Ordering::Greater,
354+
(Scenario::ParallelFrontend, Scenario::IncrementalEmpty) => Ordering::Greater,
355+
(Scenario::ParallelFrontend, Scenario::IncrementalFresh) => Ordering::Greater,
356+
(Scenario::ParallelFrontend, _) => Ordering::Less,
348357
(Scenario::IncrementalPatch(_), Scenario::Empty) => Ordering::Greater,
349358
(Scenario::IncrementalPatch(_), Scenario::IncrementalEmpty) => Ordering::Greater,
350359
(Scenario::IncrementalPatch(_), Scenario::IncrementalFresh) => Ordering::Greater,
360+
(Scenario::IncrementalPatch(_), Scenario::ParallelFrontend) => Ordering::Greater,
351361
(Scenario::IncrementalPatch(a), Scenario::IncrementalPatch(b)) => {
352362
if a == "println" {
353363
Ordering::Less

site/src/load.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ impl SiteCtxt {
9999
database::Scenario::Empty,
100100
database::Scenario::IncrementalEmpty,
101101
database::Scenario::IncrementalFresh,
102+
database::Scenario::ParallelFrontend,
102103
database::Scenario::IncrementalPatch("println".into()),
103104
]
104105
}

site/src/request_handlers/dashboard.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ pub async fn handle_dashboard(
126126
Scenario::Empty => cases.clean_averages = points,
127127
Scenario::IncrementalEmpty => cases.base_incr_averages = points,
128128
Scenario::IncrementalFresh => cases.clean_incr_averages = points,
129+
Scenario::ParallelFrontend => cases.clean_averages = points,
129130
// we only have println patches here
130131
Scenario::IncrementalPatch(_) => cases.println_incr_averages = points,
131132
}

0 commit comments

Comments
 (0)