Skip to content

Commit 5055e02

Browse files
author
Ian
committed
uploaded performance of matrix sum and non-zero operations. Version bump
1 parent bc711b2 commit 5055e02

File tree

5 files changed

+521
-166
lines changed

5 files changed

+521
-166
lines changed

Cargo.lock

Lines changed: 12 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "single_algebra"
3-
version = "0.8.0"
3+
version = "0.8.1"
44
edition = "2021"
55
license-file = "LICENSE.md"
66
description = "A linear algebra convenience library for the single-rust library. Can be used externally as well."
@@ -37,7 +37,7 @@ simba = { version = "0.9.0", optional = true }
3737
smartcore = { version = "0.4", features = ["ndarray-bindings"], optional = true }
3838
single-svdlib = { version = "1.0.4" }
3939
rand = "0.9.0"
40-
single-utilities = "0.6.0"
40+
single-utilities = "0.7.0"
4141

4242
[dev-dependencies]
4343
criterion = "0.5.1"

src/sparse/csc.rs

Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@ use nalgebra_sparse::CscMatrix;
22
use num_traits::{Float, NumCast, PrimInt, Unsigned, Zero};
33
use single_utilities::types::Direction;
44
use std::collections::{HashMap, HashSet};
5-
use std::hash::Hash;
65
use std::iter::Sum;
7-
use std::ops::Add;
86
use std::ops::AddAssign;
97

108
use crate::sparse::MatrixNTop;
@@ -360,8 +358,8 @@ where
360358

361359
fn var_col<I, T>(&self) -> anyhow::Result<Vec<T>>
362360
where
363-
I: PrimInt + Unsigned + Zero + AddAssign + Into<T>,
364-
T: Float + NumCast + AddAssign + std::iter::Sum,
361+
I: PrimInt + Unsigned + Zero + AddAssign + Into<T> + Send + Sync,
362+
T: Float + NumCast + AddAssign + std::iter::Sum + Send + Sync,
365363
Self::Item: NumCast,
366364
{
367365
let sum: Vec<T> = self.sum_col()?;
@@ -386,8 +384,8 @@ where
386384

387385
fn var_row<I, T>(&self) -> anyhow::Result<Vec<T>>
388386
where
389-
I: PrimInt + Unsigned + Zero + AddAssign + Into<T>,
390-
T: Float + NumCast + AddAssign + std::iter::Sum,
387+
I: PrimInt + Unsigned + Zero + AddAssign + Into<T> + Send + Sync,
388+
T: Float + NumCast + AddAssign + std::iter::Sum + Send + Sync,
391389
Self::Item: NumCast,
392390
{
393391
let sum: Vec<T> = self.sum_row()?;
@@ -411,8 +409,8 @@ where
411409

412410
fn var_col_chunk<I, T>(&self, reference: &mut [T]) -> anyhow::Result<()>
413411
where
414-
I: PrimInt + Unsigned + Zero + AddAssign + Into<T>,
415-
T: Float + NumCast + AddAssign + std::iter::Sum,
412+
I: PrimInt + Unsigned + Zero + AddAssign + Into<T> + Send + Sync,
413+
T: Float + NumCast + AddAssign + std::iter::Sum + Send + Sync,
416414
Self::Item: NumCast,
417415
{
418416
// Validate input slice length matches number of columns
@@ -450,8 +448,8 @@ where
450448

451449
fn var_row_chunk<I, T>(&self, reference: &mut [T]) -> anyhow::Result<()>
452450
where
453-
I: PrimInt + Unsigned + Zero + AddAssign + Into<T>,
454-
T: Float + NumCast + AddAssign + std::iter::Sum,
451+
I: PrimInt + Unsigned + Zero + AddAssign + Into<T> + Send + Sync,
452+
T: Float + NumCast + AddAssign + std::iter::Sum + Send + Sync,
455453
Self::Item: NumCast,
456454
{
457455
// Validate input slice length matches number of rows
@@ -489,8 +487,8 @@ where
489487

490488
fn var_col_masked<I, T>(&self, mask: &[bool]) -> anyhow::Result<Vec<T>>
491489
where
492-
I: PrimInt + Unsigned + Zero + AddAssign + Into<T>,
493-
T: Float + NumCast + AddAssign + Sum,
490+
I: PrimInt + Unsigned + Zero + AddAssign + Into<T> + Send + Sync,
491+
T: Float + NumCast + AddAssign + Sum + Send + Sync,
494492
{
495493
// Validate mask length
496494
if mask.len() < self.nrows() {
@@ -538,8 +536,8 @@ where
538536

539537
fn var_row_masked<I, T>(&self, mask: &[bool]) -> anyhow::Result<Vec<T>>
540538
where
541-
I: PrimInt + Unsigned + Zero + AddAssign + Into<T>,
542-
T: Float + NumCast + AddAssign + Sum,
539+
I: PrimInt + Unsigned + Zero + AddAssign + Into<T> + Send + Sync,
540+
T: Float + NumCast + AddAssign + Sum + Send + Sync
543541
{
544542
// Validate mask length
545543
if mask.len() < self.ncols() {
@@ -591,7 +589,7 @@ impl<M: NumCast + Copy + PartialOrd + NumericOps> MatrixMinMax for CscMatrix<M>
591589

592590
fn min_max_col<Item>(&self) -> anyhow::Result<(Vec<Item>, Vec<Item>)>
593591
where
594-
Item: NumCast + Copy + PartialOrd + NumericOps,
592+
Item: NumCast + Copy + PartialOrd + NumericOps + Send + Sync,
595593
{
596594
let mut min: Vec<Item> = vec![Item::max_value(); self.ncols()];
597595
let mut max: Vec<Item> = vec![Item::min_value(); self.ncols()];
@@ -602,7 +600,7 @@ impl<M: NumCast + Copy + PartialOrd + NumericOps> MatrixMinMax for CscMatrix<M>
602600

603601
fn min_max_row<Item>(&self) -> anyhow::Result<(Vec<Item>, Vec<Item>)>
604602
where
605-
Item: NumCast + Copy + PartialOrd + NumericOps,
603+
Item: NumCast + Copy + PartialOrd + NumericOps + Send + Sync,
606604
{
607605
let mut min: Vec<Item> = vec![Item::max_value(); self.nrows()];
608606
let mut max: Vec<Item> = vec![Item::min_value(); self.nrows()];

0 commit comments

Comments
 (0)