Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add a srs key loading bench #1474

Merged
merged 8 commits into from
Jul 6, 2021
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions filecoin-proofs/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,7 @@ blst = [
[[bench]]
name = "preprocessing"
harness = false

[[bench]]
name = "aggregation"
harness = false
166 changes: 166 additions & 0 deletions filecoin-proofs/benches/aggregation.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
use std::sync::Once;
use std::time::Duration;

use criterion::{black_box, criterion_group, criterion_main, Criterion, Throughput};
use filecoin_proofs::{
caches::{get_stacked_srs_key, get_stacked_srs_verifier_key},
get_seal_inputs, PoRepConfig, PoRepProofPartitions, SectorShape2KiB, SectorShape32GiB,
SectorSize, POREP_PARTITIONS, SECTOR_SIZE_2_KIB, SECTOR_SIZE_32_GIB,
};
use rand::{thread_rng, Rng};
use storage_proofs_core::{api_version::ApiVersion, is_legacy_porep_id};

static INIT_LOGGER: Once = Once::new();
fn init_logger() {
INIT_LOGGER.call_once(|| {
fil_logger::init();
});
}

fn bench_seal_inputs(c: &mut Criterion) {
let params = vec![1, 256, 512, 1024];

let mut rng = thread_rng();

let porep_id_v1_1: u64 = 5; // This is a RegisteredSealProof value

let mut porep_id = [0u8; 32];
porep_id[..8].copy_from_slice(&porep_id_v1_1.to_le_bytes());
assert!(!is_legacy_porep_id(porep_id));

let config = PoRepConfig {
sector_size: SectorSize(SECTOR_SIZE_2_KIB),
partitions: PoRepProofPartitions(
*POREP_PARTITIONS
.read()
.expect("POREP_PARTITIONS poisoned")
.get(&SECTOR_SIZE_2_KIB)
.expect("unknown sector size"),
),
porep_id,
api_version: ApiVersion::V1_1_0,
};
let comm_r: [u8; 32] = [5u8; 32];
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no need to specify the type

let comm_d: [u8; 32] = [6u8; 32];
let prover_id: [u8; 32] = [7u8; 32];

let ticket = rng.gen();
let seed = rng.gen();
let sector_id = rng.gen::<u64>().into();

let mut group = c.benchmark_group("bench_seal_inputs");
for iterations in params {
group
.bench_function(format!("get-seal-inputs-{}", iterations), |b| {
b.iter(|| {
for _ in 0..iterations {
get_seal_inputs::<SectorShape2KiB>(
config, comm_r, comm_d, prover_id, sector_id, ticket, seed,
)
.expect("get seal inputs failed");
}
});
})
.sample_size(10)
.throughput(Throughput::Bytes(iterations as u64))
.warm_up_time(Duration::from_secs(1));
}

group.finish();
}

fn bench_stacked_srs_key(c: &mut Criterion) {
init_logger();
let params = vec![128, 256, 512, 1024];

let porep_id_v1_1: u64 = 5; // This is a RegisteredSealProof value

let mut porep_id = [0u8; 32];
porep_id[..8].copy_from_slice(&porep_id_v1_1.to_le_bytes());
assert!(!is_legacy_porep_id(porep_id));

let config = PoRepConfig {
sector_size: SectorSize(SECTOR_SIZE_32_GIB),
partitions: PoRepProofPartitions(
*POREP_PARTITIONS
.read()
.expect("POREP_PARTITIONS poisoned")
.get(&SECTOR_SIZE_32_GIB)
.expect("unknown sector size"),
),
porep_id,
api_version: ApiVersion::V1_1_0,
};

let mut group = c.benchmark_group("bench-stacked-srs-key");
for num_proofs_to_aggregate in params {
group.bench_function(
format!("get-stacked-srs-key-{}", num_proofs_to_aggregate),
|b| {
b.iter(|| {
black_box(
get_stacked_srs_key::<SectorShape32GiB>(config, num_proofs_to_aggregate)
.expect("get stacked srs key failed"),
)
})
},
);
}

group.finish();
}

fn bench_stacked_srs_verifier_key(c: &mut Criterion) {
init_logger();
let params = vec![128, 256, 512, 1024];

let porep_id_v1_1: u64 = 5; // This is a RegisteredSealProof value

let mut porep_id = [0u8; 32];
porep_id[..8].copy_from_slice(&porep_id_v1_1.to_le_bytes());
assert!(!is_legacy_porep_id(porep_id));

let config = PoRepConfig {
sector_size: SectorSize(SECTOR_SIZE_32_GIB),
partitions: PoRepProofPartitions(
*POREP_PARTITIONS
.read()
.expect("POREP_PARTITIONS poisoned")
.get(&SECTOR_SIZE_32_GIB)
.expect("unknown sector size"),
),
porep_id,
api_version: ApiVersion::V1_1_0,
};

let mut group = c.benchmark_group("bench-stacked-srs-verifier-key");
for num_proofs_to_aggregate in params {
group
.bench_function(
format!("get-stacked-srs-verifier-key-{}", num_proofs_to_aggregate),
|b| {
b.iter(|| {
black_box(
get_stacked_srs_verifier_key::<SectorShape32GiB>(
config,
num_proofs_to_aggregate,
)
.expect("get stacked srs key failed"),
)
})
},
)
.sample_size(10)
.warm_up_time(Duration::from_secs(1));
}

group.finish();
}

criterion_group!(
benches,
bench_seal_inputs,
bench_stacked_srs_key,
bench_stacked_srs_verifier_key,
);
criterion_main!(benches);
2 changes: 1 addition & 1 deletion filecoin-proofs/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,14 @@
#![warn(clippy::unnecessary_wraps)]
#![allow(clippy::upper_case_acronyms)]

pub mod caches;
pub mod constants;
pub mod param;
pub mod parameters;
pub mod pieces;
pub mod types;

mod api;
mod caches;
mod commitment_reader;

pub use api::*;
Expand Down
Loading