-
Notifications
You must be signed in to change notification settings - Fork 0
88 lines (76 loc) · 2.58 KB
/
Copy patharm-benchmark.yml
File metadata and controls
88 lines (76 loc) · 2.58 KB
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
name: ARM64 BLAKE3 Benchmark
on:
push:
branches: [main]
workflow_dispatch:
jobs:
arm-benchmark:
runs-on: ubuntu-24.04-arm
steps:
- uses: actions/checkout@v4
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@nightly
with:
targets: aarch64-unknown-none
components: rust-src
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y qemu-system-arm binutils-aarch64-linux-gnu nasm
- name: Clone standalone benchmark
run: |
mkdir -p standalone_bench
cat > standalone_bench/Cargo.toml << 'TOML'
[package]
name = "arm_bench"
version = "0.1.0"
edition = "2021"
[[bin]]
name = "arm_bench"
path = "main.rs"
[dependencies]
blake3 = "1.8.3"
TOML
cat > standalone_bench/main.rs << 'RUST'
use std::time::Instant;
fn main() {
let data = b"axiom os arm64 blake3 benchmark data";
let iterations = 10000u64;
for _ in 0..1000 { let _ = blake3::hash(data); }
let start = Instant::now();
for _ in 0..iterations { let _ = blake3::hash(data); }
let elapsed = start.elapsed();
println!("AXIOM OS Native ARM64 BLAKE3 Benchmark");
println!("Platform: {}", std::env::consts::ARCH);
println!("Iterations: {}", iterations);
println!("ns/op: {}", elapsed.as_nanos() as u64 / iterations);
println!("us/op: {}", elapsed.as_micros() as u64 / iterations);
let hash = blake3::hash(data);
println!("Hash: {:02x?}", &hash.as_bytes()[..8]);
}
RUST
- name: Run native ARM64 benchmark
run: |
cd standalone_bench
cargo run --release 2>&1 | tee ../native_arm_benchmark.txt
cat ../native_arm_benchmark.txt
- name: Build ARM64 kernel binary
run: |
cargo build --bin axiom_os_arm --target aarch64-axiom.json -Z build-std=core,alloc --release
aarch64-linux-gnu-objcopy -O binary target/aarch64-axiom/release/axiom_os_arm target/aarch64-axiom/release/axiom_os_arm.bin
- name: Run kernel in QEMU
run: |
timeout 30 qemu-system-aarch64 \
-machine virt \
-cpu cortex-a57 \
-nographic \
-device loader,file=target/aarch64-axiom/release/axiom_os_arm.bin,addr=0x41000000,cpu-num=0 \
-device loader,addr=0x41000000,cpu-num=0 \
-m 256M 2>&1 | tee benchmark_output.txt || true
- name: Upload results
uses: actions/upload-artifact@v4
with:
name: arm-benchmark-results
path: |
benchmark_output.txt
native_arm_benchmark.txt