Skip to content

Commit 81bcf35

Browse files
authored
Clean up bus ids (#3420)
1 parent 201d6c5 commit 81bcf35

File tree

4 files changed

+21
-26
lines changed

4 files changed

+21
-26
lines changed

openvm/src/lib.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -228,14 +228,14 @@ impl VmProverExtension<GpuBabyBearPoseidon2Engine, DenseRecordArena, PowdrExtens
228228
// TODO: here we make assumptions about the existence of some chips in the periphery. Make this more flexible
229229

230230
use crate::powdr_extension::trace_generator::cuda::PowdrPeripheryInstancesGpu;
231-
let range_checker = inventory
232-
.find_chip::<Arc<VariableRangeCheckerChipGPU>>()
233-
.next()
234-
.unwrap();
235231
let bitwise_lookup = inventory
236232
.find_chip::<Arc<BitwiseOperationLookupChipGPU<8>>>()
237233
.next()
238234
.cloned();
235+
let range_checker = inventory
236+
.find_chip::<Arc<VariableRangeCheckerChipGPU>>()
237+
.next()
238+
.unwrap();
239239
let tuple_range_checker = inventory
240240
.find_chip::<Arc<RangeTupleCheckerChipGPU<2>>>()
241241
.next()
@@ -264,6 +264,11 @@ impl VmProverExtension<GpuBabyBearPoseidon2Engine, DenseRecordArena, PowdrExtens
264264
range_checker.clone(),
265265
bitwise_lookup,
266266
tuple_range_checker,
267+
PeripheryBusIds {
268+
range_checker: range_checker_bus_id,
269+
bitwise_lookup: bitwise_lookup_bus_id,
270+
tuple_range_checker: tuple_range_checker_bus_id,
271+
},
267272
);
268273

269274
for precompile in &extension.precompiles {
@@ -275,11 +280,6 @@ impl VmProverExtension<GpuBabyBearPoseidon2Engine, DenseRecordArena, PowdrExtens
275280
extension.airs.clone(),
276281
extension.base_config.clone(),
277282
shared_chips_pair.clone(),
278-
PeripheryBusIds {
279-
range_checker: range_checker_bus_id,
280-
bitwise_lookup: bitwise_lookup_bus_id,
281-
tuple_range_checker: tuple_range_checker_bus_id,
282-
},
283283
);
284284
inventory.add_executor_chip(chip);
285285
}
@@ -288,6 +288,7 @@ impl VmProverExtension<GpuBabyBearPoseidon2Engine, DenseRecordArena, PowdrExtens
288288
}
289289
}
290290

291+
#[derive(Clone)]
291292
pub struct PeripheryBusIds {
292293
pub range_checker: u16,
293294
pub bitwise_lookup: Option<u16>,

openvm/src/powdr_extension/chip.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,6 @@ mod cuda {
146146
trace_generator::cuda::{PowdrPeripheryInstancesGpu, PowdrTraceGeneratorGpu},
147147
PowdrPrecompile,
148148
},
149-
PeripheryBusIds,
150149
};
151150

152151
pub struct PowdrChipGpu {
@@ -161,21 +160,15 @@ mod cuda {
161160
original_airs: OriginalAirs<BabyBear>,
162161
base_config: OriginalVmConfig,
163162
periphery: PowdrPeripheryInstancesGpu,
164-
periphery_bus_ids: PeripheryBusIds,
165163
) -> Self {
166164
let PowdrPrecompile {
167165
name,
168166
apc,
169167
apc_record_arena_gpu: apc_record_arena,
170168
..
171169
} = precompile;
172-
let trace_generator = PowdrTraceGeneratorGpu::new(
173-
apc,
174-
original_airs,
175-
base_config,
176-
periphery,
177-
periphery_bus_ids,
178-
);
170+
let trace_generator =
171+
PowdrTraceGeneratorGpu::new(apc, original_airs, base_config, periphery);
179172

180173
Self {
181174
name,

openvm/src/powdr_extension/trace_generator/cuda/mod.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ use crate::{
3131
executor::OriginalArenas,
3232
trace_generator::{common::create_dummy_airs, cuda::inventory::create_dummy_chip_complex},
3333
},
34-
BabyBearSC, Instr, PeripheryBusIds,
34+
BabyBearSC, Instr,
3535
};
3636

3737
mod inventory;
@@ -177,7 +177,6 @@ pub struct PowdrTraceGeneratorGpu {
177177
pub original_airs: OriginalAirs<BabyBear>,
178178
pub config: OriginalVmConfig,
179179
pub periphery: PowdrPeripheryInstancesGpu,
180-
pub periphery_bus_ids: PeripheryBusIds,
181180
}
182181

183182
impl PowdrTraceGeneratorGpu {
@@ -186,14 +185,12 @@ impl PowdrTraceGeneratorGpu {
186185
original_airs: OriginalAirs<BabyBear>,
187186
config: OriginalVmConfig,
188187
periphery: PowdrPeripheryInstancesGpu,
189-
periphery_bus_ids: PeripheryBusIds,
190188
) -> Self {
191189
Self {
192190
apc,
193191
original_airs,
194192
config,
195193
periphery,
196-
periphery_bus_ids,
197194
}
198195
}
199196

@@ -346,17 +343,17 @@ impl PowdrTraceGeneratorGpu {
346343
let periphery = &self.periphery.real;
347344

348345
// Range checker
349-
let var_range_bus_id = self.periphery_bus_ids.range_checker as u32;
346+
let var_range_bus_id = self.periphery.bus_ids.range_checker as u32;
350347
let var_range_count = &periphery.range_checker.count;
351348

352349
// Tuple checker
353350
let tuple_range_checker_chip = periphery.tuple_range_checker.as_ref().unwrap();
354-
let tuple2_bus_id = self.periphery_bus_ids.tuple_range_checker.unwrap() as u32;
351+
let tuple2_bus_id = self.periphery.bus_ids.tuple_range_checker.unwrap() as u32;
355352
let tuple2_sizes = tuple_range_checker_chip.sizes;
356353
let tuple2_count_u32 = tuple_range_checker_chip.count.as_ref();
357354

358355
// Bitwise lookup; NUM_BITS is fixed at 8 in CUDA
359-
let bitwise_bus_id = self.periphery_bus_ids.bitwise_lookup.unwrap() as u32;
356+
let bitwise_bus_id = self.periphery.bus_ids.bitwise_lookup.unwrap() as u32;
360357
let bitwise_count_u32 = periphery.bitwise_lookup_8.as_ref().unwrap().count.as_ref();
361358

362359
// Launch GPU apply-bus to update periphery histograms on device

openvm/src/powdr_extension/trace_generator/cuda/periphery.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::powdr_extension::trace_generator::common::DummyExecutor;
1+
use crate::{powdr_extension::trace_generator::common::DummyExecutor, PeripheryBusIds};
22
use openvm_circuit::arch::{
33
AirInventory, AirInventoryError, ChipInventory, ChipInventoryError, ExecutorInventoryBuilder,
44
ExecutorInventoryError, VmCircuitExtension, VmExecutionExtension, VmProverExtension,
@@ -27,6 +27,8 @@ pub struct PowdrPeripheryInstancesGpu {
2727
pub real: SharedPeripheryChipsGpu,
2828
/// The dummy chips used for all APCs. They share the range checker but create new instances of the bitwise lookup chip and the tuple range checker.
2929
pub dummy: SharedPeripheryChipsGpu,
30+
/// The bus ids of the periphery
31+
pub bus_ids: PeripheryBusIds,
3032
}
3133

3234
#[derive(Clone)]
@@ -41,6 +43,7 @@ impl PowdrPeripheryInstancesGpu {
4143
range_checker: Arc<VariableRangeCheckerChipGPU>,
4244
bitwise_8: Option<Arc<BitwiseOperationLookupChipGPU<8>>>,
4345
tuple_range_checker: Option<Arc<RangeTupleCheckerChipGPU<2>>>,
46+
bus_ids: PeripheryBusIds,
4447
) -> Self {
4548
Self {
4649
real: SharedPeripheryChipsGpu {
@@ -73,6 +76,7 @@ impl PowdrPeripheryInstancesGpu {
7376
})
7477
}),
7578
},
79+
bus_ids,
7680
}
7781
}
7882
}

0 commit comments

Comments
 (0)