From 1c6330c57888f6d1b9b4577ed2dd674f5a6b4981 Mon Sep 17 00:00:00 2001 From: Aman-Amith-Shastry Date: Fri, 20 Dec 2024 16:09:35 -0500 Subject: [PATCH 1/8] Functional iterator for single axis for Tensor (not TensorView) --- src/tensor/data_buffer/data_owned.rs | 18 ++ src/tensor/data_buffer/data_view.rs | 12 +- src/tensor/iterator/iterator_base.rs | 116 +++++++++++++ src/tensor/iterator/mod.rs | 3 + src/tensor/iterator/tensor_iterator.rs | 26 +++ tests/tensor.rs | 218 +++++++++++++++++++++---- 6 files changed, 363 insertions(+), 30 deletions(-) create mode 100644 src/tensor/iterator/iterator_base.rs create mode 100644 src/tensor/iterator/tensor_iterator.rs diff --git a/src/tensor/data_buffer/data_owned.rs b/src/tensor/data_buffer/data_owned.rs index 5cbf156..5edc257 100644 --- a/src/tensor/data_buffer/data_owned.rs +++ b/src/tensor/data_buffer/data_owned.rs @@ -43,6 +43,24 @@ impl DataOwned { } } + // pub fn new_from_ref(data: Vec<&T>) -> Self { + // if data.is_empty() { + // panic!("Tensor::from() failed, cannot create data buffer from empty data"); + // } + // + // // take control of the data so that Rust doesn't drop it once the vector goes out of scope + // let mut data = ManuallyDrop::new(data); + // + // // safe to unwrap because we've checked length above + // let ptr = data.as_mut_ptr(); + // + // Self { + // len: data.len(), + // capacity: data.capacity(), + // ptr: NonNull::new(ptr).unwrap(), + // } + // } + pub fn from(data: impl Flatten + Homogenous) -> Self { Self::new(data.flatten()) } diff --git a/src/tensor/data_buffer/data_view.rs b/src/tensor/data_buffer/data_view.rs index 00ae571..7a1df97 100644 --- a/src/tensor/data_buffer/data_view.rs +++ b/src/tensor/data_buffer/data_view.rs @@ -1,3 +1,4 @@ +use std::mem::ManuallyDrop; use crate::tensor::data_buffer::{DataBuffer, DataOwned}; use crate::tensor::dtype::RawDataType; use std::ops::Index; @@ -12,7 +13,7 @@ pub struct DataView { impl DataView { pub(in crate::tensor) fn from_buffer(value: &B, offset: usize, len: usize) -> Self where - B: DataBuffer, + B: DataBuffer, { assert!(offset + len <= value.len()); Self { @@ -20,6 +21,15 @@ impl DataView { len, } } + + pub(in crate::tensor) fn from_vec_ref(vec: Vec, offset: usize, len: usize) -> Self { + assert!(offset + len <= vec.len()); + let mut data = ManuallyDrop::new(vec); + Self { + ptr: NonNull::new(data.as_mut_ptr()).unwrap(), + len, + } + } } impl From<&DataOwned> for DataView { diff --git a/src/tensor/iterator/iterator_base.rs b/src/tensor/iterator/iterator_base.rs new file mode 100644 index 0000000..a724e72 --- /dev/null +++ b/src/tensor/iterator/iterator_base.rs @@ -0,0 +1,116 @@ +use crate::data_buffer::{DataBuffer, DataOwned, DataView}; +use crate::dtype::RawDataType; +use crate::{tensor, TensorView}; + +#[non_exhaustive] +pub struct IteratorBase<'a, T, B> +where + T: RawDataType, + B: DataBuffer, +{ + data_buffer: &'a B, + axis: usize, + shape: Vec, + stride: Vec, + indices: usize, + iter_count: isize, +} + +impl<'a, T, B> IteratorBase<'a, T, B> +where + T: RawDataType, + B: DataBuffer, +{ + pub(super) fn from( + data_buffer: &'a B, + axis: usize, + shape: Vec, + stride: Vec, + indices: usize, + ) -> Self { + Self { + data_buffer, + axis, + shape, + stride, + indices, + iter_count: 0, + } + } +} + +impl<'a, T, B> Iterator for IteratorBase<'a, T, B> +where + T: RawDataType, + B: DataBuffer, +{ + type Item = TensorView; + + fn next(&mut self) -> Option { + match self.iter_count < self.shape[self.axis] as isize { + false => None, + true => unsafe { + let mut ptr_offset = 0isize; + let mut data_vec: Vec = Vec::new(); + + let mut new_shape = self.shape.clone(); + let mut new_stride = self.stride.clone(); + + for i in 0..self.axis { + new_stride[i] = new_stride[i] / new_shape[self.axis]; + } + new_shape.remove(self.axis); + new_stride.remove(self.axis); + + let mut buffer_count: Vec = vec![0; self.axis + 1]; + + for _i in 0..self.indices { + // Calculating offset on each iteration works like a counter, where each digit is an element + // in an array/vector with a base corresponding to the shape at the index of the digit. + // In the 'units' place, the 'base' is the stride at the axis of iteration. + // These 'digits' are maintained in buffer_count + + let mut curr_axis = self.axis as isize; + data_vec.push( + *self + .data_buffer + .const_ptr() + .offset(self.iter_count * self.stride[self.axis] as isize + ptr_offset), + ); + + buffer_count[curr_axis as usize] += 1; + ptr_offset += 1; + while curr_axis >= 0 + && ((curr_axis == self.axis as isize + && buffer_count[curr_axis as usize] == self.stride[self.axis]) + || (curr_axis != self.axis as isize + && buffer_count[curr_axis as usize] + == self.shape[curr_axis as usize])) + { + buffer_count[curr_axis as usize] = 0; + curr_axis -= 1; + + if curr_axis < 0 { + break; + } + buffer_count[curr_axis as usize] += 1; + ptr_offset = (buffer_count[curr_axis as usize] + * self.stride[curr_axis as usize]) + as isize; + } + } + + let data_buffer = DataView::from_vec_ref(data_vec.clone(), 0, data_vec.len()); + + self.iter_count += 1; + + Some(TensorView { + data: data_buffer, + shape: new_shape.clone(), + stride: new_stride.clone(), + ndims: new_shape.len(), + }) + }, + } + } +} diff --git a/src/tensor/iterator/mod.rs b/src/tensor/iterator/mod.rs index 29d8ee3..8a39489 100644 --- a/src/tensor/iterator/mod.rs +++ b/src/tensor/iterator/mod.rs @@ -4,5 +4,8 @@ pub mod buffer_iterator; pub(super) mod collapse_contiguous; pub mod flat_index_generator; pub mod flat_iterator; +mod iterator_base; +mod tensor_iterator; pub use flat_iterator::*; +pub use tensor_iterator::*; \ No newline at end of file diff --git a/src/tensor/iterator/tensor_iterator.rs b/src/tensor/iterator/tensor_iterator.rs new file mode 100644 index 0000000..efcc1d4 --- /dev/null +++ b/src/tensor/iterator/tensor_iterator.rs @@ -0,0 +1,26 @@ +use crate::data_buffer::{DataBuffer, DataOwned}; +use crate::dtype::RawDataType; +use crate::iterator::iterator_base::IteratorBase; +use crate::{Axis, Tensor}; + +pub trait TensorIterator { + type Buffer: DataBuffer; + fn iter(&self, axis: Axis) -> IteratorBase; +} + +impl TensorIterator for Tensor { + type Buffer = DataOwned; + fn iter(&self, axis: Axis) -> IteratorBase { + assert!( + axis.0 < self.ndims, + "Axis must be smaller than number of dimensions!" + ); + IteratorBase::from( + &self.data, + axis.0, + self.shape.clone(), + self.stride.clone(), + self.size() / self.shape[axis.0], + ) + } +} diff --git a/tests/tensor.rs b/tests/tensor.rs index c2df1c9..51b7d90 100644 --- a/tests/tensor.rs +++ b/tests/tensor.rs @@ -200,10 +200,7 @@ fn slice_along_nd() { #[test] fn slice_homogenous() { - let a = Tensor::from([ - [[1, 2, 3], [4, 5, 6]], - [[7, 8, 9], [10, 11, 12]], - ]); + let a = Tensor::from([[[1, 2, 3], [4, 5, 6]], [[7, 8, 9], [10, 11, 12]]]); let slice = a.slice([1, 1]); @@ -312,7 +309,10 @@ fn flat_iter() { ]); let slice: Vec<_> = a.flat_iter().collect(); - assert_eq!(slice, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]); + assert_eq!( + slice, + [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27] + ); let b = a.slice(s![.., 0]); let slice: Vec<_> = b.flat_iter().collect(); @@ -342,8 +342,9 @@ fn flatten() { assert_eq!(b.len(), &18); assert_eq!(b.ndims(), 1); - let correct = Tensor::from([10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27]); + let correct = Tensor::from([ + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + ]); assert_eq!(b, correct); let b = a.slice(s![.., 0]).flatten(); @@ -368,9 +369,7 @@ fn flatten() { #[test] fn squeeze_first_dimension() { - let a = Tensor::from([ - [[[1, 2, 3], [4, 5, 6]]], - ]); + let a = Tensor::from([[[[1, 2, 3], [4, 5, 6]]]]); let b = a.squeeze(); assert_eq!(b.shape(), &[2, 3]); assert_eq!(b.stride(), &[3, 1]); @@ -378,9 +377,7 @@ fn squeeze_first_dimension() { #[test] fn squeeze_multiple_dimensions() { - let a = Tensor::from([ - [[[[1, 2, 3]], [[4, 5, 6]]]], - ]); + let a = Tensor::from([[[[[1, 2, 3]], [[4, 5, 6]]]]]); let b = a.squeeze(); assert_eq!(b.shape(), &[2, 3]); assert_eq!(b.stride(), &[3, 1]); @@ -435,7 +432,7 @@ fn unsqueeze_random_dimension_last_axis() { } #[test] -fn full_i32(){ +fn full_i32() { let a = Tensor::full(3, vec![2, 3]); assert_eq!(a.shape(), &[2, 3]); assert_eq!(a.stride(), &[3, 1]); @@ -447,8 +444,8 @@ fn full_i32(){ } #[test] -fn full_f64(){ - let a = Tensor::full(3.2,vec![4, 6, 2]); +fn full_f64() { + let a = Tensor::full(3.2, vec![4, 6, 2]); assert_eq!(a.shape(), &[4, 6, 2]); let b = a.flatten(); let b_len = *b.len(); @@ -458,8 +455,8 @@ fn full_f64(){ } #[test] -fn full_bool(){ - let a: Tensor = Tensor::full(true,vec![3, 5, 3]); +fn full_bool() { + let a: Tensor = Tensor::full(true, vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); let b = a.flatten(); @@ -470,7 +467,7 @@ fn full_bool(){ } #[test] -fn ones_u8(){ +fn ones_u8() { let a: Tensor = Tensor::ones(vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); @@ -482,7 +479,7 @@ fn ones_u8(){ } #[test] -fn ones_i32(){ +fn ones_i32() { let a: Tensor = Tensor::ones(vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); @@ -494,7 +491,7 @@ fn ones_i32(){ } #[test] -fn ones_1d(){ +fn ones_1d() { let a: Tensor = Tensor::ones(vec![4]); assert_eq!(a.shape(), &[4]); let a_len = *a.len(); @@ -504,7 +501,7 @@ fn ones_1d(){ } #[test] -fn ones_f64(){ +fn ones_f64() { let a: Tensor = Tensor::ones(vec![4]); assert_eq!(a.shape(), &[4]); let a_len = *a.len(); @@ -514,7 +511,7 @@ fn ones_f64(){ } #[test] -fn ones_bool(){ +fn ones_bool() { let a: Tensor = Tensor::ones(vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); @@ -526,7 +523,7 @@ fn ones_bool(){ } #[test] -fn zeroes_u8(){ +fn zeroes_u8() { let a: Tensor = Tensor::zeros(vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); @@ -538,7 +535,7 @@ fn zeroes_u8(){ } #[test] -fn zeroes_i32(){ +fn zeroes_i32() { let a: Tensor = Tensor::zeros(vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); @@ -550,7 +547,7 @@ fn zeroes_i32(){ } #[test] -fn zeroes_1d(){ +fn zeroes_1d() { let a: Tensor = Tensor::zeros(vec![4]); assert_eq!(a.shape(), &[4]); let a_len = *a.len(); @@ -560,7 +557,7 @@ fn zeroes_1d(){ } #[test] -fn zeroes_f64(){ +fn zeroes_f64() { let a: Tensor = Tensor::zeros(vec![4]); assert_eq!(a.shape(), &[4]); let a_len = *a.len(); @@ -570,7 +567,7 @@ fn zeroes_f64(){ } #[test] -fn zeroes_bool(){ +fn zeroes_bool() { let a: Tensor = Tensor::zeros(vec![3, 5, 3]); assert_eq!(a.shape(), &[3, 5, 3]); assert_eq!(a.stride(), &[15, 3, 1]); @@ -579,4 +576,167 @@ fn zeroes_bool(){ for i in 0..b_len { assert_eq!(b[i], false); } -} \ No newline at end of file +} + +#[test] +fn basic_iteration() { + let a = Tensor::from([[1, 2, 3], [4, 5, 6]]); + // println!("{:?}", a.shape()); + for row in a.iter(Axis(0)) { + print!("{:?} ", row[0]); + print!("{:?} ", row[1]); + println!("{:?}", row[2]); + } +} + +#[test] +fn single_dimension_iteration() { + let a = Tensor::from([1, 2, 3, 4, 5, 6]); + // println!("{:?}", a.shape()); + let v_iter: Vec<_> = a.iter(Axis(0)).collect(); + println!("{:?}", v_iter); +} + +#[test] +fn three_dimension_iteration() { + let a = Tensor::from([ + [[10, 11, 12], [13, 14, 15]], + [[16, 17, 18], [19, 20, 21]], + [[22, 23, 24], [25, 26, 27]], + ]); + + // a.shape() = [3, 2, 3] + // a.stride() = [6, 3, 1] + + // for t in a.iter(Axis(0)) { + // print!("{:?} ", t[[0, 0]]); + // print!("{:?} ", t[[0, 1]]); + // println!("{:?} ", t[[0, 2]]); + // + // print!("{:?} ", t[[1, 0]]); + // print!("{:?} ", t[[1, 1]]); + // println!("{:?} ", t[[1, 2]]); + // + // println!(); + // } + + // for t in a.iter(Axis(1)){ + // print!("{:?} ", t[[0, 0]]); + // print!("{:?} ", t[[0, 1]]); + // println!("{:?} ", t[[0, 2]]); + // + // print!("{:?} ", t[[1, 0]]); + // print!("{:?} ", t[[1, 1]]); + // println!("{:?} ", t[[1, 2]]); + // + // print!("{:?} ", t[[2, 0]]); + // print!("{:?} ", t[[2, 1]]); + // println!("{:?} ", t[[2, 2]]); + // println!(); + // } + + for t in a.iter(Axis(2)){ + println!("{:?} ", t.shape()); + + print!("{:?} ", t[[0, 0]]); + println!("{:?} ", t[[0, 1]]); + + print!("{:?} ", t[[1, 0]]); + println!("{:?} ", t[[1, 1]]); + + print!("{:?} ", t[[2, 0]]); + println!("{:?} ", t[[2, 1]]); + println!(); + } +} + +#[test] +fn four_dimension_iteration() { + let a = [ + [ + [[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]], + ], + ]; + + let tensor = Tensor::from(a); + + println!("{:?}", tensor.shape()); + println!("{:?}", tensor.stride()); + + for t in tensor.iter(Axis(0)){ + print!("{:?} ", t[[0, 0, 0]]); + print!("{:?} ", t[[0, 0, 1]]); + print!("{:?} ", t[[0, 0, 2]]); + + print!("{:?} ", t[[0, 1, 0]]); + print!("{:?} ", t[[0, 1, 1]]); + print!("{:?} ", t[[0, 1, 2]]); + + print!("{:?} ", t[[1, 0, 0]]); + print!("{:?} ", t[[1, 0, 1]]); + print!("{:?} ", t[[1, 0, 2]]); + + print!("{:?} ", t[[1, 1, 0]]); + print!("{:?} ", t[[1, 1, 1]]); + print!("{:?} ", t[[1, 1, 2]]); + + print!("{:?} ", t[[2, 0, 0]]); + print!("{:?} ", t[[2, 0, 1]]); + print!("{:?} ", t[[2, 0, 2]]); + + print!("{:?} ", t[[2, 1, 0]]); + print!("{:?} ", t[[2, 1, 1]]); + print!("{:?} ", t[[2, 1, 2]]); + + print!("{:?} ", t[[3, 0, 0]]); + print!("{:?} ", t[[3, 0, 1]]); + print!("{:?} ", t[[3, 0, 2]]); + + print!("{:?} ", t[[3, 1, 0]]); + print!("{:?} ", t[[3, 1, 1]]); + print!("{:?} ", t[[3, 1, 2]]); + + println!(); + + } + + // for t in tensor.iter(Axis(1)) { + // print!("{:?} ", t[[0, 0, 0]]); + // print!("{:?} ", t[[0, 0, 1]]); + // print!("{:?} ", t[[0, 0, 2]]); + // print!("{:?} ", t[[0, 1, 0]]); + // print!("{:?} ", t[[0, 1, 1]]); + // print!("{:?} ", t[[0, 1, 2]]); + // + // print!("{:?} ", t[[1, 0, 0]]); + // print!("{:?} ", t[[1, 0, 1]]); + // print!("{:?} ", t[[1, 0, 2]]); + // print!("{:?} ", t[[1, 1, 0]]); + // print!("{:?} ", t[[1, 1, 1]]); + // print!("{:?} ", t[[1, 1, 2]]); + // + // print!("{:?} ", t[[2, 0, 0]]); + // print!("{:?} ", t[[2, 0, 1]]); + // print!("{:?} ", t[[2, 0, 2]]); + // print!("{:?} ", t[[2, 1, 0]]); + // print!("{:?} ", t[[2, 1, 1]]); + // print!("{:?} ", t[[2, 1, 2]]); + // + // println!(); + // } +} From f9d50287b56bfebb778c11927b20c16e7961fc6a Mon Sep 17 00:00:00 2001 From: Aman-Amith-Shastry Date: Sun, 12 Jan 2025 09:48:37 -0500 Subject: [PATCH 2/8] Performance testing for ones constructor --- Cargo.toml | 7 ++-- benches/flat_iter_f32.py | 33 ------------------ benches/flat_iter_f32.rs | 20 ----------- benches/{zeroes_f32.py => ones_f32.py} | 10 +++--- benches/{zeroes_f32.rs => ones_f32.rs} | 5 ++- .../__pycache__/profile.cpython-311.pyc | Bin 3390 -> 3390 bytes .../__pycache__/suite.cpython-311.pyc | Bin 3154 -> 3459 bytes .../__pycache__/util.cpython-311.pyc | Bin 1593 -> 1953 bytes benches/perfprofiler/profile.py | 1 - benches/perfprofiler/suite.py | 4 +++ benches/perfprofiler/util.py | 4 +++ 11 files changed, 16 insertions(+), 68 deletions(-) delete mode 100644 benches/flat_iter_f32.py delete mode 100644 benches/flat_iter_f32.rs rename benches/{zeroes_f32.py => ones_f32.py} (64%) rename benches/{zeroes_f32.rs => ones_f32.rs} (75%) diff --git a/Cargo.toml b/Cargo.toml index e6c593d..429a4e5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -8,12 +8,9 @@ name = "fill_f32" path = "benches/fill_f32.rs" [[bin]] -name = "zeroes_f32" -path = "benches/zeroes_f32.rs" +name = "ones_f32" +path = "benches/ones_f32.rs" -[[bin]] -name = "flat_iter_f32" -path = "benches/flat_iter_f32.rs" [dependencies] cpu-time = "1.0.0" diff --git a/benches/flat_iter_f32.py b/benches/flat_iter_f32.py deleted file mode 100644 index 1a2f71a..0000000 --- a/benches/flat_iter_f32.py +++ /dev/null @@ -1,33 +0,0 @@ -import numpy as np -import torch - -from perfprofiler import * - - -class TensorFlatIter(TimingSuite): - def __init__(self, n): - self.n = n - - self.ndarray: np.ndarray = np.zeros(n, dtype="float32") - self.tensor_cpu = torch.zeros(n, dtype=torch.float32) - - @measure_performance("NumPy") - def run(self): - for e in self.ndarray.flat: - pass - - - @measure_performance("PyTorch CPU") - def run(self): - for e in self.tensor_cpu.flatten(): - pass - - @measure_rust_performance("Chela CPU", target="flat_iter_f32") - def run(self, executable): - return self.run_rust(executable, self.n) - - -if __name__ == "__main__": - sizes = [2 ** n for n in range(9, 25)] - results = TensorFlatIter.profile_each(sizes, n=10) - plot_results(sizes, results, "tensor.flat_iter() CPU time vs length") diff --git a/benches/flat_iter_f32.rs b/benches/flat_iter_f32.rs deleted file mode 100644 index 26d6027..0000000 --- a/benches/flat_iter_f32.rs +++ /dev/null @@ -1,20 +0,0 @@ -use chela::*; -use std::env; - -use cpu_time::ProcessTime; - - -fn profile(size: usize) -> u128 { - let mut tensor: Tensor = Tensor::zeros(size); - - let start = ProcessTime::now(); - for _ in tensor.flatiter(){} - start.elapsed().as_nanos() -} - -fn main() { - let args: Vec = env::args().collect(); - let size = args[1].parse::().unwrap(); - - println!("{}", profile(size)); -} diff --git a/benches/zeroes_f32.py b/benches/ones_f32.py similarity index 64% rename from benches/zeroes_f32.py rename to benches/ones_f32.py index 8520f81..0d807d2 100644 --- a/benches/zeroes_f32.py +++ b/benches/ones_f32.py @@ -3,10 +3,8 @@ from perfprofiler import * -class TensorZeroes(TimingSuite): +class TensorOnes(TimingSuite): def __init__(self, n): - self.tensor_cpu = None - self.ndarray = None self.n = n @measure_performance("NumPy") @@ -17,11 +15,11 @@ def run(self): def run(self): self.tensor_cpu = torch.zeros(self.n, dtype=torch.float32) - @measure_rust_performance("Chela CPU", target="zeroes_f32") + @measure_rust_performance("Chela CPU", target="ones_f32") def run(self, executable): return self.run_rust(executable, self.n) if __name__ == "__main__": sizes = [2 ** n for n in range(9, 25)] - results = TensorZeroes.profile_each(sizes, n=10) - plot_results(sizes, results, "tensor.zeroes() CPU time vs length") \ No newline at end of file + results = TensorOnes.profile_each(sizes, n=10) + plot_results(sizes, results, "tensor.ones() CPU time vs length") \ No newline at end of file diff --git a/benches/zeroes_f32.rs b/benches/ones_f32.rs similarity index 75% rename from benches/zeroes_f32.rs rename to benches/ones_f32.rs index 18f6fdc..e667eaf 100644 --- a/benches/zeroes_f32.rs +++ b/benches/ones_f32.rs @@ -1,11 +1,10 @@ use chela::*; use std::env; - use cpu_time::ProcessTime; fn profile(size: usize) -> u128 { let start = ProcessTime::now(); - let mut tensor: Tensor = Tensor::zeros(size); + let tensor: Tensor = Tensor::ones(size); start.elapsed().as_nanos() } @@ -13,5 +12,5 @@ fn main() { let args: Vec = env::args().collect(); let size = args[1].parse::().unwrap(); - println!("{}", profile(size)); + println!("{}", profile(size)); } \ No newline at end of file diff --git a/benches/perfprofiler/__pycache__/profile.cpython-311.pyc b/benches/perfprofiler/__pycache__/profile.cpython-311.pyc index 616703a470b705761bcd331031b57c1c77885715..6fdfe17743c15be67e8dc4f25d9159ee96ad4357 100644 GIT binary patch delta 44 vcmdldwNHw7IWI340}!xWYfj&=kynOSREmK|@q&`g1uokLb`UI514;t`0Nx6+ delta 44 vcmdldwNHw7IWI340}vb*sz~3skynOSREB{^@q&`g1uokLb`UI514;t`01XPI diff --git a/benches/perfprofiler/__pycache__/suite.cpython-311.pyc b/benches/perfprofiler/__pycache__/suite.cpython-311.pyc index 616345b942ab848309e82e4457a23a4abc5d9eb8..c26216db1de87476d925d49e36b39ce5b246f9e9 100644 GIT binary patch delta 509 zcmca4(JalkoR^o20SH*GHK(VsZRESd%-AsbHM2}Ta~e|$a|=rpYYJm3TPk}hM;enP zNFf*i@BRzfO=O$O<-V%;!WWQX3*ri#T}BF zo0*p$T$)*udW)?nwWPEtFL`nm%WmP7tbV^36>c$vXfobnEzU^I$yqtsgVlg><>X4% zAjZ#=&#(r7)VUNX08K4Y0TJ3jqL>9pC;&l`7?5#`y{I%VKDnTvN*Ku^J*c1@NRuIu zm@LND%c!(@3EMnIM$5_090@{}5Y4H@r8yuG@$u;gSGmlU~xM5RH5IEVnbvPc$2 zfJ`f1KiP##iO7s_B19*kR%wSF{LoKutagB za;9*ku%>dQFs6dkaHq0Qwquc$WNTqv22{5is+xfziYJ9Vm_d_saskUlVNF)QUyKU3 z7(z4|Z?P6J4rH^X zGo)}VVvJ%>VGL%_OAo-D5jZuEG1WOy^l*#Lvq&em?EMsI~Sj{;3 z9+UFq<1EsXWtcUSnI%EifdS9}7QZ49AiGEuM2LY1aS$O3B#N1Ugn~j5Cy=_uot&Rr zkeQPjpIlH-qzDud0;#YD5)BM@xkRpTDK1dH$fb6LORd5A#^h+0rHoRO8CkVi)qpC* zCmXUFYs&*!MIf#wN09`GEe#_0fy6E5;*z2wusq1*BDKj~tZH1EKqk=j48=1i?_%{= a=3!>koWcBo0Z1)?P+&F^!8MtSO& float: value = subprocess.check_output(f"{executable} {''.join(map(str, argv))}", shell=True) return int(value) + def run_cpp(self, executable, *argv) -> float: + value = subprocess.check_output(f"{executable} {''.join(map(str, argv))}", shell=True) + return int(value) + def profile(*args, **kwargs) -> dict[str, Result]: raise NotImplementedError() # implemented by TimingSuiteMeta diff --git a/benches/perfprofiler/util.py b/benches/perfprofiler/util.py index c2cc00e..960f5c2 100644 --- a/benches/perfprofiler/util.py +++ b/benches/perfprofiler/util.py @@ -15,6 +15,10 @@ def compile_rust(target: str) -> str: out = out.split(b"\n")[-3] return json.loads(out)["executable"] +def compile_cpp(target: str) -> str: + out = subprocess.check_output(f"") + out = out.split(b"\n")[-3] + return json.loads(out)["executable"] def get_method_class(method) -> str: return method.__qualname__.split(".")[0] From 20c4e36122b0283089049d745caf265b731f1139 Mon Sep 17 00:00:00 2001 From: Aman-Amith-Shastry Date: Sun, 12 Jan 2025 10:01:39 -0500 Subject: [PATCH 3/8] Removed pycache directory, merged Cargo.toml file --- benches/ones_f32.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benches/ones_f32.py b/benches/ones_f32.py index 0d807d2..d4736dc 100644 --- a/benches/ones_f32.py +++ b/benches/ones_f32.py @@ -9,11 +9,11 @@ def __init__(self, n): @measure_performance("NumPy") def run(self): - self.ndarray = np.zeros(self.n, dtype="float32") + np.ones(self.n, dtype="float32") @measure_performance("PyTorch CPU") def run(self): - self.tensor_cpu = torch.zeros(self.n, dtype=torch.float32) + torch.ones(self.n, dtype=torch.float32) @measure_rust_performance("Chela CPU", target="ones_f32") def run(self, executable): From aaeac21ef481eec199847f9d1616152e3110c085 Mon Sep 17 00:00:00 2001 From: Aman Shastry <73488475+Aman-Amith-Shastry@users.noreply.github.com> Date: Sun, 12 Jan 2025 10:06:49 -0500 Subject: [PATCH 4/8] Delete benches/perfprofiler/__pycache__ directory Signed-off-by: Aman Shastry <73488475+Aman-Amith-Shastry@users.noreply.github.com> --- .../__pycache__/__init__.cpython-311.pyc | Bin 260 -> 0 bytes .../__pycache__/plot.cpython-311.pyc | Bin 2537 -> 0 bytes .../__pycache__/profile.cpython-311.pyc | Bin 3390 -> 0 bytes .../__pycache__/result.cpython-311.pyc | Bin 1424 -> 0 bytes .../__pycache__/suite.cpython-311.pyc | Bin 3459 -> 0 bytes .../__pycache__/util.cpython-311.pyc | Bin 1953 -> 0 bytes 6 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 benches/perfprofiler/__pycache__/__init__.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/plot.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/profile.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/result.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/suite.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/util.cpython-311.pyc diff --git a/benches/perfprofiler/__pycache__/__init__.cpython-311.pyc b/benches/perfprofiler/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 7425c310cf9be86e2cb9de79585baf2960ed0d79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmZ3^%ge<81X>@8(j9>GV-N=hn4pZ$azMs(h7^Vr#vFza2+atknSeA?FoP!ZOGcm~ zO~zY{T7H_$w^)lyGfPr$u@@BOr)B1(-eM`p$uC*S@EK&{FDL!b;?$yI{lwhFyyA?+ z;*z3D{i4$1lK7O=GX3O?)SN{9q|`hhqgcNnwI~g0Mv;Ded}dx|NqoFsLFF$Fo80`A s(wtPgB9Qw*b{Fddi4V+-jEpxJL@vP44F<6bFm!`K_yQ^_;sELa0QmJrvj6}9 diff --git a/benches/perfprofiler/__pycache__/plot.cpython-311.pyc b/benches/perfprofiler/__pycache__/plot.cpython-311.pyc deleted file mode 100644 index d64c7b374c79fa26c8491d382ed9774432f594a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2537 zcmcIlO-vg{6rTNG+fYcL5CR0#v}xQ{xFwLLDxqoZ!A{v+uom z^WMBS-z|&F~zfc~gjsGa}G}A(~QL zo{@o;4B1c&)$lwJXA}?eAmfP9gjMXpUMzRjETag&M;p!9W4vZ?5!qgO!`U5djrK00>o>jxUrX|mVhA~uQ7)oJjV09(Un%!EE=sB%^727X2xa8P z7?->mDPKcS!-5RTs2NYj3s^x<tbEt8zjU4PjAngsgZ>p^}JO^~emvoyC*KM%*T1~I<3|_)U z%VAmug8J}I1o&+h@HWdd6oe9qMeSG`>vgPwoFTRi-kmWR)=(5>(Df5bT!xzizS;mm z`&ZP&FX1B%@~`=ozH8_)ddyQXj{a{Q#r(-fr+zy1Bsq98)!vuC{6X3!Og|V}M@jMlodn%>0#h6XoZ0v;M+MGo~k=mbuuxpaa zi#A{c?(Ed=*ThjgZ&1;mwH5+C$}JLBFjcSOB5aC^DK_%jB01q&sKSl??|WC9w~PXP%~& z&f8rpUD?l`i%RbEWn2{7OJaLLY~Skg|ImBC_g>$Fz6w&LVRyLQyeuu>EW23$B?7oE zcAPJDoL~06LiD_~W6k@G_wI19wZGKbzbtL3-mhBjwA|(He!Ss(I{dp(n4DT}DXP;Y zb-JKVmtk7DqpWhPXY;Rb;AN$#4wclQg4?%5Id|zV(f_CD|GBpiyaK)0KT+zRD2i80 z;?;t9bxZM85GVCMQ++Gm)pJF)r=<22)SmJoau)CSt;@N~*~^T)bZa~}o^>A=^=|qC z{M1;WnI3_kKTE9{3&R!RB0;Wx$(!uV_Rl*p{RSp38pv6gBs z_KJ+!d&_M-)n4&PUcQ20$jX&=)Y)C`=&mT;TuTMPaCa(yGVg4RJYw}(S~fvmPZzD(NlS; z*daT(1*f@R!o91oH+i`H758>(xVM9}t}3sjkMfcxr|foYp3N3H2S>*T*cT+-Rm$pMD{TpXw8(7k0l3?476ZTS*bsdO{36-}5p zTPo@%j1%}{oUK@RDH$TvF+9=8gLg|rD{f*>DPxiwc)96Gc?%azPqgv{>_y6?l*Oi* zp`%RE^n6;mjElOb(C`@25b7|VR3`bNm5g{o)-dyQM7{z1!|C@TIW*vV+s!w!7Y7cRN%iOjy*|^$P--X&b`S6V|mim2w9c9&3R@=(z z^PP}dTib<`Mr0Piixf&RG)>afwyOfT3rW;LIZo&9$W_kf!0q|9vE_6rjkeu)0o>=t zbFRHFy8w%^JZy8LSgZ3aD$zRnid#$agr*=C6VzXZ-k%i6>lE(?w=Zf1%+xoj4v9pK z%+slW4xvait3nB8-8jm$Fx{O+Q=aN-VfxE#++#M}H2n8*T>`#cZ{ z<7TQ$<0f+K*{`z$%@#YKlueZN6@o3lh+_OBrXV(#-#vx|_BqdKYv5_M&ilKhv1^cO%J~o(Jn3OT(r`o_3 z{2vjTLdn+3&?qc3{jfKT9ArSf3`|X$n!r7}Q%4&Yns2uj+fx@GS^)a>(XByOxyURB zZc6W5=EH>EF-ad&kWgOa6b0ugputB{08EDgF;37#wo| diff --git a/benches/perfprofiler/__pycache__/result.cpython-311.pyc b/benches/perfprofiler/__pycache__/result.cpython-311.pyc deleted file mode 100644 index 623310c6a9cce9e232cb86ceaace18c0a90e9d99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 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 Date: Sun, 12 Jan 2025 10:07:05 -0500 Subject: [PATCH 5/8] Delete profile/perfprofiler/__pycache__ directory Signed-off-by: Aman Shastry <73488475+Aman-Amith-Shastry@users.noreply.github.com> --- .../__pycache__/__init__.cpython-311.pyc | Bin 297 -> 0 bytes .../__pycache__/profile.cpython-311.pyc | Bin 2350 -> 0 bytes .../__pycache__/suite.cpython-311.pyc | Bin 2392 -> 0 bytes .../__pycache__/util.cpython-311.pyc | Bin 672 -> 0 bytes 4 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 profile/perfprofiler/__pycache__/__init__.cpython-311.pyc delete mode 100644 profile/perfprofiler/__pycache__/profile.cpython-311.pyc delete mode 100644 profile/perfprofiler/__pycache__/suite.cpython-311.pyc delete mode 100644 profile/perfprofiler/__pycache__/util.cpython-311.pyc diff --git a/profile/perfprofiler/__pycache__/__init__.cpython-311.pyc b/profile/perfprofiler/__pycache__/__init__.cpython-311.pyc deleted file mode 100644 index 8e97bca942041fac961ce95ffca64c8787a68edb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmZ3^%ge<81Z(aWrF#JB#~=<2FhLog<$#Ro3@HpLj5!Rsj8Tk?AU0DDQ!aB9Gmy<3 z%%I8gk`bs#lkpaJNM>$kUV3n8W=SfLE1a8}SX^3^8efoFl$KwVo0ylJ>Zi$ai?tY} zpokf$=@xrIQGQxxPHGVgkhhZIGmvEX<)j~4oLW?@p9s`aoRL^uQdFs5R9ajTpORXp zpPZ4Jlc*2XrVlb2W`urxd}dx|NqoFsLFF$Fo80`A(wtPgB9JFR4lLFO5+9fu85wUd S$X!51HyAW7U_(V5Ks^9LOH&&F diff --git a/profile/perfprofiler/__pycache__/profile.cpython-311.pyc b/profile/perfprofiler/__pycache__/profile.cpython-311.pyc deleted file mode 100644 index 5dbe4e7d448e3a37b34163f7a1aef50abcea2cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2350 zcma)7-D?|15a0WfPSV-J7uj(>CD&)KL16Hx<7WKXvxbvZ9cO?Cs6Y%>8y| zc6Vm)*Pfmzg7*7gWHHJk^fwjS4P?I^I50d!8qydY6__l;P@dJ<0+;1{p40g(4?0d4 zvLO~>4u>Bz2t9!}Xju_QG+q-PFpE`C@3mvo1F;3Kp ztindW=wb8r=8D7DUTsb99jz&5(=$10%VL{zV%^p?b~T0&jcy7c_K7wQbm1Q%jtXkuZ0h7Ssw&Z))x!0puZqgF<(OHO65U(Rb`-XdeBB2;KHH>#<{3 zJOT0!>lPdcN~I2GGPf;Etc+Sv4QolYY_gIeCCgSc{ADJ$gmpDjB<4b1$C)A~3r9R@ zE60i}htVmTxjC~?oL)V11Q?sr&77)R(_@{FJ>bzg4Wx|feKSF?3DwuPy>0u)L63EMi0RSfl9i1*{sLP$YT7PD>t_(=EUBJYFS>0KNZ} zKSpiSR&~X<$0%OJDuD;Zytho?Sdk|#l#HC6H^Gu+tHky=YG0sm%aQ<*dae7Dd+BYn+HUxQ6*^v$?^GvyEe>5;4B8+SJEw2&xF z_@u%#6DO?S97l9P?(RX2IHg@g#q0J8B>Ww!dxUSiNq zj5HFXZep}D+msTO52~Luq@*h)>r!%09&qK04SB?sM=IC%rGaY6mCo%-7j~ozwfXJI zpFeF#cL~VeZk~ z_I%^)l}fZa*$_|di9OZ+dhaast>x{0_k1Q0fHuUNu6VQV_x)IZo$n{TuwlX0hX}Sy z#OSICn%%UF4`d);LseAJ0s|MONb3Shi0v*R3iV5937GGhhp%w2YA@WC8r!*bzzMS3 ze;u&sFr9B3EUkYBK@i;BAu~p3sAGu8(`7sQ>k*0RS^wJg{ZbkRxd(kTP1=On*Jt%3eVwAVIJd#V7fH{Jn_f4D^FI!&C!W(;#*-?Ox5}u;-zN%WF;P)LU6hGv5+^ZF}kGB zQ$ai@UJ?Yk41g3xUH}4aTP!CGw$MvR6iIO0iNFz^mX3QNd!?8+771Oq7t5Ktj{VZJ z2;Fl+57HBiQlYp)1}M+d`-zMOXkE3e;KuMcsCY6=)g0V=eo$UmQQ*(4DE^HZc%{X9 zC{7hjt)$~=@-~R{Piy@Nq{T4|(?n)pMHVrBo?M{>R0_vLfdH@38fJnYKD z<#pwG9Nem+xy7Ose4rs!df>>PVM{(lBSlm~J@n=(J@v$UyS8H|yxslHoA+kk%)EK; z?VqEg!vyH@KYZasg^+)-(^Z<}5R;hHCPkX3l$eq!+fq@=OGP;^2Ytm>ifUe^ zL?ZLVRM&{9F>O;OWE;Ma@{vFn0bP_u9uFPRM$PB~%@3KwS4d{$8BWPi5xwX!Zd|k3 zGl~L9L`r<=x@9vF?=X6id5cS?3xh|Bj4v?Vv*a%!mD&Gh+J`g~QbI?d?u-PAO2Rx^5ZH=elX-|=go*C*@cE!K>mZN<+vqG$JDI>}{J z5e1`g5?vR=x?Wr|%Qo^cUB6j2>`=pT!C*^|2%khgfiTpCC@}6xfJ*P#NgSzs*;Zur zy*4=vp%I)v5Mt;)q`h|l_CqWPFPSN(X39*xE}6=jx(Oq;acn?&%~at&BVwe_V*{o! zl;ZI1y$&!Kc!Q>Xq8XZlJV@l0yo<$>&5F$NnE3_gOB_;1G5CTjwC`_W>!Q_kI`js{ z&Pt+h{khJqPJqJ2`-IyXd$Tz<(;Ay;L}vmYJj2oa0Vq_w=ls{zUuX*&|u>62?^5Y zM)zWfsaP=n4{A!jWYIt9&vaFDK0076D2L%;4pdWKVALcuB;)DVt)5SmdcF~{V1!I=ohmBldH)(y^$ z<-oFtaORe6&lS|-$AeiN0nWnW0u)3X)UL3M>&z%Dt{nZJ&$<9>zCKF>)F~YVly_~icL3S(@*2c+U!H689&jA zpJ)?x^vq6jwwCxc)kwY#Z`}*qt(##BxUQ{hyW^?ag@-4bv=)Gw*})ve35R5O`vC9@!mCGO?!uOdt#V6cmkf^E2N_@fgtTopfsI=slfnsyAk2;=a%mjEigr!7%+ zwoQ7V5pBFJy@E1;twhl5!*dz*Yv1gT2vp%(xB?WJA=r))>?@ZU78?9#;LjPvN*Fa5 z;X)~UmL0?lABBEccF_R-k__9{^#g}^89f))@lQAwQY;kiBY?I{DcvEd#^Br52%T$? zw+_EM`>dK1bDyef=2{OIEX$2tI+2{saHP B72W^< diff --git a/profile/perfprofiler/__pycache__/util.cpython-311.pyc b/profile/perfprofiler/__pycache__/util.cpython-311.pyc deleted file mode 100644 index 4ad94fc416ab2595590480113c2999a65dd5e126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmZWm&r2IY6n-;_k{=GXH5UtN5HGo8o1W9qgY;B|qFw|E%kCsu+_-UOQ%KoD4no)B z!9q)S}B1(A^l zXE1?I2Ta(3buh^aQ`kC{c-nEFk9 zS|KLgNqDdbFV8))ON+?f%XmsdZ24A|zEU!U$w3z3AL&39JlIH~8mxU%^M~%GSKtK1 z7}9dFfaX60#0Kn)Kj!LORC(F73|HohwqxkFETIz-)bq(1gu6DJX9}b5 zK;Qqizx{XhF)=^_|+Q%=|!SY%;6`5i%g-LDfr|5_HNQo x_R??LOCpU8mvbbX5WZ`e2_*~@#kylQZC(;@qWQDv^kamOK8=%ieRvIF{XGtOn|S~L From 50e8c020687ef2c249fefe09c0510480fd68c43f Mon Sep 17 00:00:00 2001 From: Aman-Amith-Shastry Date: Sun, 12 Jan 2025 10:14:14 -0500 Subject: [PATCH 6/8] Removed cpp run and compile functions --- benches/perfprofiler/.DS_Store | Bin 0 -> 6148 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 260 -> 0 bytes .../__pycache__/plot.cpython-311.pyc | Bin 2537 -> 0 bytes .../__pycache__/profile.cpython-311.pyc | Bin 3390 -> 0 bytes .../__pycache__/result.cpython-311.pyc | Bin 1424 -> 0 bytes .../__pycache__/suite.cpython-311.pyc | Bin 3459 -> 0 bytes .../__pycache__/util.cpython-311.pyc | Bin 1953 -> 0 bytes benches/perfprofiler/suite.py | 4 ---- benches/perfprofiler/util.py | 5 ----- profile/perfprofiler/.DS_Store | Bin 0 -> 6148 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 297 -> 0 bytes .../__pycache__/profile.cpython-311.pyc | Bin 2350 -> 0 bytes .../__pycache__/suite.cpython-311.pyc | Bin 2392 -> 0 bytes .../__pycache__/util.cpython-311.pyc | Bin 672 -> 0 bytes 14 files changed, 9 deletions(-) create mode 100644 benches/perfprofiler/.DS_Store delete mode 100644 benches/perfprofiler/__pycache__/__init__.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/plot.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/profile.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/result.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/suite.cpython-311.pyc delete mode 100644 benches/perfprofiler/__pycache__/util.cpython-311.pyc create mode 100644 profile/perfprofiler/.DS_Store delete mode 100644 profile/perfprofiler/__pycache__/__init__.cpython-311.pyc delete mode 100644 profile/perfprofiler/__pycache__/profile.cpython-311.pyc delete mode 100644 profile/perfprofiler/__pycache__/suite.cpython-311.pyc delete mode 100644 profile/perfprofiler/__pycache__/util.cpython-311.pyc diff --git a/benches/perfprofiler/.DS_Store b/benches/perfprofiler/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..e83c9471d9e4f6669ecdfca7167ed21fc836a391 GIT binary patch literal 6148 zcmeHKO-sW-5PhpX6ng2=WBx(#AA}MwB3_DKW7?)vs5PXC;4MGhH#4gej2=soS=fEE z^R=_DbTU-&SYw9@#Ym!aR7veKR$HLPJ8S>0 zzo^^QU3Y97dfZ}3>k%z?_JS0Tc*Pza<%-%AIpbRP6c3zNXjEI$UgAJ`N0jJ>SyGOj z&I)Yk`$mm%w$}_R>JCvOxoge0B{p1ji)XGZE2Mu`ejh9UWpC&BQ+Q3zfHU9>I0GkQ zfOodE>CDhaXTTY72EG`O^C4ju%p&%NdUSBmCjfCmwKmG~mXMevVivJCq=hY5DA7Vg zd}0I(r#^{(S;XGZ!Vz?3=7}qRK3;;ZPJN>82$`Xe&VVy8WZ=@KbGiR-_?H=d@8(j9>GV-N=hn4pZ$azMs(h7^Vr#vFza2+atknSeA?FoP!ZOGcm~ zO~zY{T7H_$w^)lyGfPr$u@@BOr)B1(-eM`p$uC*S@EK&{FDL!b;?$yI{lwhFyyA?+ z;*z3D{i4$1lK7O=GX3O?)SN{9q|`hhqgcNnwI~g0Mv;Ded}dx|NqoFsLFF$Fo80`A s(wtPgB9Qw*b{Fddi4V+-jEpxJL@vP44F<6bFm!`K_yQ^_;sELa0QmJrvj6}9 diff --git a/benches/perfprofiler/__pycache__/plot.cpython-311.pyc b/benches/perfprofiler/__pycache__/plot.cpython-311.pyc deleted file mode 100644 index d64c7b374c79fa26c8491d382ed9774432f594a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2537 zcmcIlO-vg{6rTNG+fYcL5CR0#v}xQ{xFwLLDxqoZ!A{v+uom z^WMBS-z|&F~zfc~gjsGa}G}A(~QL zo{@o;4B1c&)$lwJXA}?eAmfP9gjMXpUMzRjETag&M;p!9W4vZ?5!qgO!`U5djrK00>o>jxUrX|mVhA~uQ7)oJjV09(Un%!EE=sB%^727X2xa8P z7?->mDPKcS!-5RTs2NYj3s^x<tbEt8zjU4PjAngsgZ>p^}JO^~emvoyC*KM%*T1~I<3|_)U z%VAmug8J}I1o&+h@HWdd6oe9qMeSG`>vgPwoFTRi-kmWR)=(5>(Df5bT!xzizS;mm z`&ZP&FX1B%@~`=ozH8_)ddyQXj{a{Q#r(-fr+zy1Bsq98)!vuC{6X3!Og|V}M@jMlodn%>0#h6XoZ0v;M+MGo~k=mbuuxpaa zi#A{c?(Ed=*ThjgZ&1;mwH5+C$}JLBFjcSOB5aC^DK_%jB01q&sKSl??|WC9w~PXP%~& z&f8rpUD?l`i%RbEWn2{7OJaLLY~Skg|ImBC_g>$Fz6w&LVRyLQyeuu>EW23$B?7oE zcAPJDoL~06LiD_~W6k@G_wI19wZGKbzbtL3-mhBjwA|(He!Ss(I{dp(n4DT}DXP;Y zb-JKVmtk7DqpWhPXY;Rb;AN$#4wclQg4?%5Id|zV(f_CD|GBpiyaK)0KT+zRD2i80 z;?;t9bxZM85GVCMQ++Gm)pJF)r=<22)SmJoau)CSt;@N~*~^T)bZa~}o^>A=^=|qC z{M1;WnI3_kKTE9{3&R!RB0;Wx$(!uV_Rl*p{RSp38pv6gBs z_KJ+!d&_M-)n4&PUcQ20$jX&=)Y)C`=&mT;TuTMPaCa(yGVg4RJYw}(S~fvmPZzD(NlS; z*daT(1*f@R!o91oH+i`H758>(xVM9}t}3sjkMfcxr|foYp3N3H2S>*T*cT+-Rm$pMD{TpXw8(7k0l3?476ZTS*bsdO{36-}5p zTPo@%j1%}{oUK@RDH$TvF+9=8gLg|rD{f*>DPxiwc)96Gc?%azPqgv{>_y6?l*Oi* zp`%RE^n6;mjElOb(C`@25b7|VR3`bNm5g{o)-dyQM7{z1!|C@TIW*vV+s!w!7Y7cRN%iOjy*|^$P--X&b`S6V|mim2w9c9&3R@=(z z^PP}dTib<`Mr0Piixf&RG)>afwyOfT3rW;LIZo&9$W_kf!0q|9vE_6rjkeu)0o>=t zbFRHFy8w%^JZy8LSgZ3aD$zRnid#$agr*=C6VzXZ-k%i6>lE(?w=Zf1%+xoj4v9pK z%+slW4xvait3nB8-8jm$Fx{O+Q=aN-VfxE#++#M}H2n8*T>`#cZ{ z<7TQ$<0f+K*{`z$%@#YKlueZN6@o3lh+_OBrXV(#-#vx|_BqdKYv5_M&ilKhv1^cO%J~o(Jn3OT(r`o_3 z{2vjTLdn+3&?qc3{jfKT9ArSf3`|X$n!r7}Q%4&Yns2uj+fx@GS^)a>(XByOxyURB zZc6W5=EH>EF-ad&kWgOa6b0ugputB{08EDgF;37#wo| diff --git a/benches/perfprofiler/__pycache__/result.cpython-311.pyc b/benches/perfprofiler/__pycache__/result.cpython-311.pyc deleted file mode 100644 index 623310c6a9cce9e232cb86ceaace18c0a90e9d99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1424 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 float: value = subprocess.check_output(f"{executable} {''.join(map(str, argv))}", shell=True) return int(value) - def run_cpp(self, executable, *argv) -> float: - value = subprocess.check_output(f"{executable} {''.join(map(str, argv))}", shell=True) - return int(value) - def profile(*args, **kwargs) -> dict[str, Result]: raise NotImplementedError() # implemented by TimingSuiteMeta diff --git a/benches/perfprofiler/util.py b/benches/perfprofiler/util.py index 960f5c2..2bb704f 100644 --- a/benches/perfprofiler/util.py +++ b/benches/perfprofiler/util.py @@ -15,11 +15,6 @@ def compile_rust(target: str) -> str: out = out.split(b"\n")[-3] return json.loads(out)["executable"] -def compile_cpp(target: str) -> str: - out = subprocess.check_output(f"") - out = out.split(b"\n")[-3] - return json.loads(out)["executable"] - def get_method_class(method) -> str: return method.__qualname__.split(".")[0] diff --git a/profile/perfprofiler/.DS_Store b/profile/perfprofiler/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0$kUV3n8W=SfLE1a8}SX^3^8efoFl$KwVo0ylJ>Zi$ai?tY} zpokf$=@xrIQGQxxPHGVgkhhZIGmvEX<)j~4oLW?@p9s`aoRL^uQdFs5R9ajTpORXp zpPZ4Jlc*2XrVlb2W`urxd}dx|NqoFsLFF$Fo80`A(wtPgB9JFR4lLFO5+9fu85wUd S$X!51HyAW7U_(V5Ks^9LOH&&F diff --git a/profile/perfprofiler/__pycache__/profile.cpython-311.pyc b/profile/perfprofiler/__pycache__/profile.cpython-311.pyc deleted file mode 100644 index 5dbe4e7d448e3a37b34163f7a1aef50abcea2cf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2350 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 B72W^< diff --git a/profile/perfprofiler/__pycache__/util.cpython-311.pyc b/profile/perfprofiler/__pycache__/util.cpython-311.pyc deleted file mode 100644 index 4ad94fc416ab2595590480113c2999a65dd5e126..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 672 zcmZWm&r2IY6n-;_k{=GXH5UtN5HGo8o1W9qgY;B|qFw|E%kCsu+_-UOQ%KoD4no)B z!9q)S}B1(A^l zXE1?I2Ta(3buh^aQ`kC{c-nEFk9 zS|KLgNqDdbFV8))ON+?f%XmsdZ24A|zEU!U$w3z3AL&39JlIH~8mxU%^M~%GSKtK1 z7}9dFfaX60#0Kn)Kj!LORC(F73|HohwqxkFETIz-)bq(1gu6DJX9}b5 zK;Qqizx{XhF)=^_|+Q%=|!SY%;6`5i%g-LDfr|5_HNQo x_R??LOCpU8mvbbX5WZ`e2_*~@#kylQZC(;@qWQDv^kamOK8=%ieRvIF{XGtOn|S~L From 0891d9f356688bf4cfa5756c4d94658fa4a3cba1 Mon Sep 17 00:00:00 2001 From: Aman Shastry <73488475+Aman-Amith-Shastry@users.noreply.github.com> Date: Sun, 12 Jan 2025 10:30:04 -0500 Subject: [PATCH 7/8] Delete benches/perfprofiler/.DS_Store Signed-off-by: Aman Shastry <73488475+Aman-Amith-Shastry@users.noreply.github.com> --- benches/perfprofiler/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 benches/perfprofiler/.DS_Store diff --git a/benches/perfprofiler/.DS_Store b/benches/perfprofiler/.DS_Store deleted file mode 100644 index e83c9471d9e4f6669ecdfca7167ed21fc836a391..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeHKO-sW-5PhpX6ng2=WBx(#AA}MwB3_DKW7?)vs5PXC;4MGhH#4gej2=soS=fEE z^R=_DbTU-&SYw9@#Ym!aR7veKR$HLPJ8S>0 zzo^^QU3Y97dfZ}3>k%z?_JS0Tc*Pza<%-%AIpbRP6c3zNXjEI$UgAJ`N0jJ>SyGOj z&I)Yk`$mm%w$}_R>JCvOxoge0B{p1ji)XGZE2Mu`ejh9UWpC&BQ+Q3zfHU9>I0GkQ zfOodE>CDhaXTTY72EG`O^C4ju%p&%NdUSBmCjfCmwKmG~mXMevVivJCq=hY5DA7Vg zd}0I(r#^{(S;XGZ!Vz?3=7}qRK3;;ZPJN>82$`Xe&VVy8WZ=@KbGiR-_?H=d Date: Sun, 12 Jan 2025 10:30:26 -0500 Subject: [PATCH 8/8] Delete profile/perfprofiler/.DS_Store Signed-off-by: Aman Shastry <73488475+Aman-Amith-Shastry@users.noreply.github.com> --- profile/perfprofiler/.DS_Store | Bin 6148 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 profile/perfprofiler/.DS_Store diff --git a/profile/perfprofiler/.DS_Store b/profile/perfprofiler/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0