Skip to content

Commit 8b6b683

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

8 files changed

Lines changed: 46 additions & 5 deletions

File tree

collector/src/bin/collector.rs

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

collector/src/compile/benchmark/mod.rs

Lines changed: 16 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,10 @@ 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
547+
| Scenario::IncrFull
548+
| Scenario::IncrUnchanged
549+
| Scenario::ParallelFrontend => {
536550
let test_case = CompileTestCase {
537551
benchmark,
538552
profile,
@@ -542,6 +556,7 @@ impl Benchmark {
542556
Scenario::Full => database::Scenario::Empty,
543557
Scenario::IncrFull => database::Scenario::IncrementalEmpty,
544558
Scenario::IncrUnchanged => database::Scenario::IncrementalFresh,
559+
Scenario::ParallelFrontend => database::Scenario::ParallelFrontend,
545560
Scenario::IncrPatched => unreachable!(),
546561
},
547562
};

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: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,12 @@ 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) => {
116+
!matches!(scenario, Scenario::Full | Scenario::ParallelFrontend)
117+
}
118+
ProfileTool(LlvmLines) => {
119+
matches!(scenario, Scenario::Full | Scenario::ParallelFrontend)
120+
}
117121
}
118122
}
119123
}
@@ -409,6 +413,10 @@ impl<'a> CargoProcess<'a> {
409413
match self.profile {
410414
Profile::Check => {
411415
cmd.arg("--profile").arg("check");
416+
if Some(Scenario::ParallelFrontend) == self.processor_etc.as_ref().map(|v| v.1)
417+
{
418+
cmd.env("RUSTC_THREAD_COUNT", "8");
419+
}
412420
}
413421
Profile::Clippy => {
414422
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)