use backend_comparison::persistence::save; use burn::tensor::{backend::Backend, Distribution, Shape, Tensor}; use burn_common::benchmark::{run_benchmark, Benchmark}; pub struct BinaryBenchmark { shape: Shape, device: B::Device, } impl Benchmark for BinaryBenchmark { type Args = (Tensor, Tensor); fn name(&self) -> String { "binary".into() } fn shapes(&self) -> Vec> { vec![self.shape.dims.clone()] } fn execute(&self, (lhs, rhs): Self::Args) { let _ = lhs + rhs; } fn prepare(&self) -> Self::Args { let lhs = Tensor::random(self.shape.clone(), Distribution::Default, &self.device); let rhs = Tensor::random(self.shape.clone(), Distribution::Default, &self.device); (lhs, rhs) } fn sync(&self) { B::sync(&self.device); } } #[allow(dead_code)] fn bench( device: &B::Device, feature_name: &str, url: Option<&str>, token: Option<&str>, ) { let benchmark = BinaryBenchmark:: { shape: [32, 512, 1024].into(), device: device.clone(), }; save::( vec![run_benchmark(benchmark)], device, feature_name, url, token, ) .unwrap(); } fn main() { backend_comparison::bench_on_backend!(); }