Skip to content

Commit 95a081c

Browse files
committed
Consistently name empiricial constraints
1 parent 06e6d8d commit 95a081c

File tree

11 files changed

+58
-51
lines changed

11 files changed

+58
-51
lines changed

autoprecompiles/src/adapter.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::{fmt::Display, sync::Arc};
66
use powdr_number::FieldElement;
77
use serde::{Deserialize, Serialize};
88

9-
use crate::DataDrivenConstraints;
9+
use crate::EmpiricalConstraints;
1010
use crate::{
1111
blocks::{BasicBlock, Instruction, Program},
1212
constraint_optimizer::IsBusStateful,
@@ -46,13 +46,19 @@ pub trait PgoAdapter {
4646
config: &PowdrConfig,
4747
vm_config: AdapterVmConfig<Self::Adapter>,
4848
labels: BTreeMap<u64, Vec<String>>,
49-
execution_stats: DataDrivenConstraints,
49+
empirical_constraints: EmpiricalConstraints,
5050
) -> Vec<AdapterApcWithStats<Self::Adapter>> {
5151
let filtered_blocks = blocks
5252
.into_iter()
5353
.filter(|block| !Self::Adapter::should_skip_block(block))
5454
.collect();
55-
self.create_apcs_with_pgo(filtered_blocks, config, vm_config, labels, execution_stats)
55+
self.create_apcs_with_pgo(
56+
filtered_blocks,
57+
config,
58+
vm_config,
59+
labels,
60+
empirical_constraints,
61+
)
5662
}
5763

5864
fn create_apcs_with_pgo(
@@ -61,7 +67,7 @@ pub trait PgoAdapter {
6167
config: &PowdrConfig,
6268
vm_config: AdapterVmConfig<Self::Adapter>,
6369
labels: BTreeMap<u64, Vec<String>>,
64-
execution_stats: DataDrivenConstraints,
70+
empirical_constraints: EmpiricalConstraints,
6571
) -> Vec<AdapterApcWithStats<Self::Adapter>>;
6672

6773
fn pc_execution_count(&self, _pc: u64) -> Option<u32> {

autoprecompiles/src/data_driven_constraints.rs renamed to autoprecompiles/src/empirical_constraints.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use crate::{
1111

1212
/// "Constraints" that were inferred from execution statistics.
1313
#[derive(Serialize, Deserialize, Clone, Default)]
14-
pub struct DataDrivenConstraints {
14+
pub struct EmpiricalConstraints {
1515
/// For each program counter, the range constraints for each column.
1616
/// The range might not hold in 100% of cases.
1717
pub column_ranges_by_pc: BTreeMap<u32, Vec<(u32, u32)>>,
@@ -30,22 +30,22 @@ pub struct DebugInfo {
3030
}
3131

3232
#[derive(Serialize, Deserialize)]
33-
pub struct ExecutionStatsJson {
34-
pub execution_stats: DataDrivenConstraints,
33+
pub struct EmpiricalConstraintsJson {
34+
pub empirical_constraints: EmpiricalConstraints,
3535
pub debug_info: DebugInfo,
3636
}
3737

38-
pub fn add_ai_constraints<A: Adapter>(
39-
execution_stats: &DataDrivenConstraints,
38+
pub fn add_empirical_constraints<A: Adapter>(
39+
empirical_constraints: &EmpiricalConstraints,
4040
subs: &[Vec<u64>],
4141
block: &BasicBlock<A::Instruction>,
4242
columns: impl Iterator<Item = AlgebraicReference>,
4343
) -> (
4444
Vec<SymbolicConstraint<A::PowdrField>>,
4545
Vec<SymbolicConstraint<A::PowdrField>>,
4646
) {
47-
let range_constraints = &execution_stats.column_ranges_by_pc;
48-
let equivalence_classes_by_block = &execution_stats.equivalence_classes_by_block;
47+
let range_constraints = &empirical_constraints.column_ranges_by_pc;
48+
let equivalence_classes_by_block = &empirical_constraints.equivalence_classes_by_block;
4949

5050
let mut range_analyzer_constraints = Vec::new();
5151
let mut equivalence_analyzer_constraints = Vec::new();

autoprecompiles/src/lib.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::adapter::{Adapter, AdapterApc, AdapterVmConfig};
22
use crate::blocks::BasicBlock;
33
use crate::bus_map::{BusMap, BusType};
4-
use crate::data_driven_constraints::{add_ai_constraints, DataDrivenConstraints};
4+
use crate::empirical_constraints::{add_empirical_constraints, EmpiricalConstraints};
55
use crate::evaluation::AirStats;
66
use crate::expression_conversion::algebraic_to_grouped_expression;
77
use crate::symbolic_machine_generator::convert_machine_field_type;
@@ -27,7 +27,7 @@ pub mod adapter;
2727
pub mod blocks;
2828
pub mod bus_map;
2929
pub mod constraint_optimizer;
30-
pub mod data_driven_constraints;
30+
pub mod empirical_constraints;
3131
pub mod evaluation;
3232
pub mod execution_profile;
3333
pub mod expression;
@@ -423,7 +423,7 @@ pub fn build<A: Adapter>(
423423
vm_config: AdapterVmConfig<A>,
424424
degree_bound: DegreeBound,
425425
apc_candidates_dir_path: Option<&Path>,
426-
execution_stats: &DataDrivenConstraints,
426+
empirical_constraints: &EmpiricalConstraints,
427427
) -> Result<AdapterApc<A>, crate::constraint_optimizer::Error> {
428428
let start = std::time::Instant::now();
429429

@@ -433,12 +433,13 @@ pub fn build<A: Adapter>(
433433
&vm_config.bus_map,
434434
);
435435

436-
let (range_analyzer_constraints, _equivalence_analyzer_constraints) = add_ai_constraints::<A>(
437-
execution_stats,
438-
&column_allocator.subs,
439-
&block,
440-
machine.main_columns(),
441-
);
436+
let (range_analyzer_constraints, _equivalence_analyzer_constraints) =
437+
add_empirical_constraints::<A>(
438+
empirical_constraints,
439+
&column_allocator.subs,
440+
&block,
441+
machine.main_columns(),
442+
);
442443

443444
let labels = [("apc_start_pc", block.start_pc.to_string())];
444445
metrics::counter!("before_opt_cols", &labels)

autoprecompiles/src/pgo/cell/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::{
1313
blocks::BasicBlock,
1414
evaluation::EvaluationResult,
1515
pgo::cell::selection::parallel_fractional_knapsack,
16-
DataDrivenConstraints, PowdrConfig,
16+
EmpiricalConstraints, PowdrConfig,
1717
};
1818

1919
mod selection;
@@ -92,7 +92,7 @@ impl<A: Adapter + Send + Sync, C: Candidate<A> + Send + Sync> PgoAdapter for Cel
9292
config: &PowdrConfig,
9393
vm_config: AdapterVmConfig<Self::Adapter>,
9494
labels: BTreeMap<u64, Vec<String>>,
95-
execution_stats: DataDrivenConstraints,
95+
empirical_constraints: EmpiricalConstraints,
9696
) -> Vec<AdapterApcWithStats<Self::Adapter>> {
9797
tracing::info!(
9898
"Generating autoprecompiles with cell PGO for {} blocks",
@@ -132,7 +132,7 @@ impl<A: Adapter + Send + Sync, C: Candidate<A> + Send + Sync> PgoAdapter for Cel
132132
vm_config.clone(),
133133
config.degree_bound,
134134
config.apc_candidates_dir_path.as_deref(),
135-
&execution_stats,
135+
&empirical_constraints,
136136
)
137137
.ok()?;
138138
let candidate = C::create(

autoprecompiles/src/pgo/instruction.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{
44
adapter::{Adapter, AdapterApcWithStats, AdapterVmConfig, PgoAdapter},
55
blocks::BasicBlock,
66
pgo::create_apcs_for_all_blocks,
7-
DataDrivenConstraints, PowdrConfig,
7+
EmpiricalConstraints, PowdrConfig,
88
};
99

1010
pub struct InstructionPgo<A> {
@@ -30,7 +30,7 @@ impl<A: Adapter> PgoAdapter for InstructionPgo<A> {
3030
config: &PowdrConfig,
3131
vm_config: AdapterVmConfig<Self::Adapter>,
3232
_labels: BTreeMap<u64, Vec<String>>,
33-
execution_stats: DataDrivenConstraints,
33+
empirical_constraints: EmpiricalConstraints,
3434
) -> Vec<AdapterApcWithStats<Self::Adapter>> {
3535
tracing::info!(
3636
"Generating autoprecompiles with instruction PGO for {} blocks",
@@ -71,7 +71,7 @@ impl<A: Adapter> PgoAdapter for InstructionPgo<A> {
7171
);
7272
}
7373

74-
create_apcs_for_all_blocks::<Self::Adapter>(blocks, config, vm_config, execution_stats)
74+
create_apcs_for_all_blocks::<Self::Adapter>(blocks, config, vm_config, empirical_constraints)
7575
}
7676

7777
fn pc_execution_count(&self, pc: u64) -> Option<u32> {

autoprecompiles/src/pgo/mod.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use strum::{Display, EnumString};
66
use crate::{
77
adapter::{Adapter, AdapterApcWithStats, AdapterVmConfig, ApcWithStats},
88
blocks::BasicBlock,
9-
DataDrivenConstraints, PowdrConfig,
9+
EmpiricalConstraints, PowdrConfig,
1010
};
1111

1212
mod cell;
@@ -77,7 +77,7 @@ fn create_apcs_for_all_blocks<A: Adapter>(
7777
blocks: Vec<BasicBlock<A::Instruction>>,
7878
config: &PowdrConfig,
7979
vm_config: AdapterVmConfig<A>,
80-
execution_stats: DataDrivenConstraints,
80+
empirical_constraints: EmpiricalConstraints,
8181
) -> Vec<AdapterApcWithStats<A>> {
8282
let n_acc = config.autoprecompiles as usize;
8383
tracing::info!("Generating {n_acc} autoprecompiles in parallel");
@@ -98,7 +98,7 @@ fn create_apcs_for_all_blocks<A: Adapter>(
9898
vm_config.clone(),
9999
config.degree_bound,
100100
config.apc_candidates_dir_path.as_deref(),
101-
&execution_stats,
101+
&empirical_constraints,
102102
)
103103
.unwrap()
104104
})

autoprecompiles/src/pgo/none.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use crate::{
44
adapter::{Adapter, AdapterApcWithStats, AdapterVmConfig, PgoAdapter},
55
blocks::BasicBlock,
66
pgo::create_apcs_for_all_blocks,
7-
DataDrivenConstraints, PowdrConfig,
7+
EmpiricalConstraints, PowdrConfig,
88
};
99

1010
pub struct NonePgo<A> {
@@ -29,7 +29,7 @@ impl<A: Adapter> PgoAdapter for NonePgo<A> {
2929
config: &PowdrConfig,
3030
vm_config: AdapterVmConfig<Self::Adapter>,
3131
_labels: BTreeMap<u64, Vec<String>>,
32-
execution_stats: DataDrivenConstraints,
32+
empirical_constraints: EmpiricalConstraints,
3333
) -> Vec<AdapterApcWithStats<Self::Adapter>> {
3434
// cost = number_of_original_instructions
3535
blocks.sort_by(|a, b| b.statements.len().cmp(&a.statements.len()));
@@ -43,6 +43,6 @@ impl<A: Adapter> PgoAdapter for NonePgo<A> {
4343
);
4444
}
4545

46-
create_apcs_for_all_blocks::<Self::Adapter>(blocks, config, vm_config, execution_stats)
46+
create_apcs_for_all_blocks::<Self::Adapter>(blocks, config, vm_config, empirical_constraints)
4747
}
4848
}

openvm/src/customize_exe.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use crate::memory_bus_interaction::OpenVmMemoryBusInteraction;
1313
use crate::opcode::branch_opcodes_bigint_set;
1414
use crate::powdr_extension::chip::PowdrAir;
1515
use crate::utils::UnsupportedOpenVmReferenceError;
16-
use crate::{execution_stats, OriginalCompiledProgram};
16+
use crate::{empirical_constraints, OriginalCompiledProgram};
1717
use crate::{CompiledProgram, SpecializedConfig};
1818
use itertools::Itertools;
1919
use openvm_instructions::instruction::Instruction as OpenVmInstruction;
@@ -219,7 +219,7 @@ pub fn customize<'a, P: PgoAdapter<Adapter = BabyBearOpenVmApcAdapter<'a>>>(
219219
})
220220
.collect();
221221

222-
let execution_stats = execution_stats(
222+
let empirical_constraints = empirical_constraints(
223223
exe.clone(),
224224
SpecializedConfig::new(
225225
original_config.clone(),
@@ -236,7 +236,7 @@ pub fn customize<'a, P: PgoAdapter<Adapter = BabyBearOpenVmApcAdapter<'a>>>(
236236
&config,
237237
vm_config,
238238
labels,
239-
execution_stats,
239+
empirical_constraints,
240240
);
241241
metrics::gauge!("total_apc_gen_time_ms").set(start.elapsed().as_millis() as f64);
242242

openvm/src/execution_stats.rs renamed to openvm/src/empirical_constraints.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ use openvm_stark_backend::p3_matrix::dense::DenseMatrix;
66
use openvm_stark_sdk::openvm_stark_backend::p3_field::PrimeField32;
77
use openvm_stark_sdk::p3_baby_bear::BabyBear;
88
use powdr_autoprecompiles::blocks::BasicBlock;
9-
use powdr_autoprecompiles::data_driven_constraints::{
10-
DataDrivenConstraints, DebugInfo, ExecutionStatsJson,
9+
use powdr_autoprecompiles::empirical_constraints::{
10+
DebugInfo, EmpiricalConstraints, EmpiricalConstraintsJson,
1111
};
1212
use std::collections::hash_map::Entry;
1313
use std::collections::BTreeMap;
@@ -30,24 +30,24 @@ struct Trace {
3030
rows_by_pc: HashMap<u32, Vec<usize>>,
3131
}
3232

33-
pub fn execution_stats(
33+
pub fn empirical_constraints(
3434
exe: Arc<VmExe<BabyBear>>,
3535
vm_config: SpecializedConfig,
3636
inputs: StdIn,
3737
blocks: &[BasicBlock<Instr<BabyBear>>],
38-
) -> DataDrivenConstraints {
38+
) -> EmpiricalConstraints {
3939
let (trace, debug_info) = collect_trace(exe, vm_config, inputs);
40-
let execution_stats = generate_execution_stats(blocks, trace);
40+
let empirical_constraints = generate_empirical_constraints(blocks, trace);
4141

4242
// Export to disk
43-
let export = ExecutionStatsJson {
44-
execution_stats: execution_stats.clone(),
43+
let export = EmpiricalConstraintsJson {
44+
empirical_constraints: empirical_constraints.clone(),
4545
debug_info,
4646
};
4747
let json = serde_json::to_string_pretty(&export).unwrap();
48-
std::fs::write("execution_stats.json", json).unwrap();
48+
std::fs::write("empirical_constraints.json", json).unwrap();
4949

50-
execution_stats
50+
empirical_constraints
5151
}
5252

5353
fn collect_trace(
@@ -136,10 +136,10 @@ fn collect_trace(
136136
(trace, debug_info)
137137
}
138138

139-
fn generate_execution_stats(
139+
fn generate_empirical_constraints(
140140
blocks: &[BasicBlock<Instr<BabyBear>>],
141141
trace: Trace,
142-
) -> DataDrivenConstraints {
142+
) -> EmpiricalConstraints {
143143
// Block ID -> instruction count mapping
144144
let instruction_counts = blocks
145145
.iter()
@@ -236,7 +236,7 @@ fn generate_execution_stats(
236236
})
237237
.collect();
238238

239-
DataDrivenConstraints {
239+
EmpiricalConstraints {
240240
column_ranges_by_pc: column_ranges_by_pc.into_iter().collect(),
241241
equivalence_classes_by_block: intersected_equivalence_classes,
242242
}

openvm/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#![cfg_attr(feature = "tco", feature(explicit_tail_calls))]
44
#![cfg_attr(feature = "tco", feature(core_intrinsics))]
55

6-
use crate::execution_stats::execution_stats;
6+
use crate::empirical_constraints::empirical_constraints;
77
use derive_more::From;
88
use eyre::Result;
99
use itertools::Itertools;
@@ -74,7 +74,7 @@ use crate::powdr_extension::{PowdrExtensionExecutor, PowdrPrecompile};
7474
mod air_builder;
7575
pub mod bus_map;
7676
pub mod cuda_abi;
77-
mod execution_stats;
77+
mod empirical_constraints;
7878
pub mod extraction_utils;
7979
pub mod opcode;
8080
pub mod symbolic_instruction_builder;

0 commit comments

Comments
 (0)