File size: 2,811 Bytes
be99550 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | // π BioPhys μ€μκ° μ°μ κ°λ ν΅ν© μμ€ν
(src/bin/run_live_system.rs)
#[path="../korean_telemetry.rs"] mod korean_telemetry;
#[path="../parallel_engine.rs"] mod parallel_engine;
use std::time::Instant;
use parallel_engine::{LargeScaleEngine, PhaseState};
use korean_telemetry::TelemetryReporter;
fn main() {
println!("============================================================");
println!(" π [BioPhys ν΅ν© κ°λ] μ€μκ° μ€νΈλ¦Ό β ν΅ νμ΅ β λμν ν
λ λ©νΈλ¦¬");
println!("============================================================\n");
let grid_size = 512; // 262,144 λ
Έλ
let total_nodes = grid_size * grid_size;
let mut engine = LargeScaleEngine::new(grid_size);
println!("βοΈ μμ€ν
μ΄κΈ°ν μλ£ (262,144κ° 8λ μμ λ
Έλ κ°λ μ€λΉ)");
println!("π μ°μ μ€μκ° μ¬μ΄ν΄ κ°λ μμ...\n");
let num_cycles = 6;
let start_all = Instant::now();
for cycle in 1..=num_cycles {
let t_cycle_start = Instant::now();
// 1. μΈλΆ μ€μκ° μΉ μ€νΈλ¦Ό νλ μμ± λ° μ£Όμ
let wave_freq = (cycle as f32) * 0.5;
for (i, b) in engine.bedrock.iter_mut().enumerate() {
let x = (i % grid_size) as f32 / grid_size as f32;
let y = (i / grid_size) as f32 / grid_size as f32;
let signal = ((x * wave_freq * 6.28).sin() + (y * wave_freq * 6.28).cos()) * 0.5;
*b = (*b * 0.6) + (signal * 0.4); // ν΅/λμν μ νΈ μ΅ν©
}
// 2. 26λ§ λ
Έλ 16μ½μ΄ λ©ν°μ€λ λ λ³λ ¬ μν μ μ΄ μ°μ°
let avg_energy = engine.step_parallel();
// 3. νκ΅μ΄ μ€μκ° ν
λ λ©νΈλ¦¬ 리ν¬ν
let sample: Vec<f32> = engine.topsoil[0..10_000].iter().map(|p| p.value()).collect();
let report = TelemetryReporter::analyze(&sample, avg_energy, cycle);
let cycle_dur = t_cycle_start.elapsed().as_secs_f64() * 1000.0;
print!("{}", report);
println!(" ββ μ¬μ΄ν΄ μ²λ¦¬ μλ: {:.2} ms (μ΄λΉ {:.1}ν μ°μ μ¬μ΄ν΄ κ°λ₯)\n", cycle_dur, 1000.0 / cycle_dur);
}
let total_dur = start_all.elapsed().as_secs_f64();
println!("============================================================");
println!(" π μ°μ μμ€ν
κ°λ κ²°κ³Ό μμ½");
println!("============================================================");
println!(" β±οΈ μ΄ κ°λ μκ° : {:.4} μ΄", total_dur);
println!(" π μ΄ μ°μ° λ
Έλ μ : {:.2} Million Nodes ({:?} nodes total)", (total_nodes * num_cycles) as f64 / 1e6, total_nodes * num_cycles);
println!(" β‘ μμ μ± μν : μ μ μλ ΄ (Homeostasis νν μ μ§)");
println!("============================================================");
}
|