@@ -19,15 +19,15 @@ use faer::mat::AsMatRef;
1919use faer:: { Mat , Side } ;
2020use nalgebra:: { Const , DimMin , SMatrix , SVector } ;
2121
22- use la_stack:: { DEFAULT_SINGULAR_TOL , Matrix , Tolerance , Vector } ;
22+ use la_stack:: { DEFAULT_SINGULAR_TOL , Matrix , Vector } ;
2323
2424#[ path = "common/vs_linalg.rs" ]
2525pub mod vs_linalg_common;
2626
2727use vs_linalg_common:: {
28- faer_det_from_ldlt, faer_det_from_partial_piv_lu, make_balanced_dynamic_range_rows ,
29- make_ill_conditioned_matrix_rows , make_matrix_rows , make_pivoting_matrix_rows ,
30- make_vector_array, matrix_entry, nalgebra_inf_norm, vector_entry,
28+ faer_det_from_ldlt, faer_det_from_partial_piv_lu, la_stack_dot , la_stack_tolerance ,
29+ make_balanced_dynamic_range_rows , make_ill_conditioned_matrix_rows , make_matrix_rows ,
30+ make_pivoting_matrix_rows , make_vector_array, matrix_entry, nalgebra_inf_norm, vector_entry,
3131} ;
3232
3333/// Return a successful benchmark operation result or panic with the named operation.
@@ -489,7 +489,7 @@ fn register_vector_benchmarks<const D: usize>(group: &mut BenchmarkGroup<'_, Wal
489489
490490 group. bench_function ( "la_stack_dot" , |bencher| {
491491 bencher. iter ( || {
492- let result = require_ok ( black_box ( & v1) . dot ( black_box ( & v2) ) , "la_stack dot" ) ;
492+ let result = require_ok ( la_stack_dot ( black_box ( & v1) , black_box ( & v2) ) , "la_stack dot" ) ;
493493 black_box ( result) ;
494494 } ) ;
495495 } ) ;
@@ -577,22 +577,19 @@ fn register_matrix_norm_benchmarks<const D: usize>(group: &mut BenchmarkGroup<'_
577577}
578578
579579/// Register D=8 stress cases that exercise pivoting, conditioning, and scaled products.
580- fn register_stress_benchmarks < const D : usize > ( group : & mut BenchmarkGroup < ' _ , WallTime > ) {
581- if D != 8 {
582- return ;
583- }
584-
585- let zero_tolerance = require_ok ( Tolerance :: try_new ( 0.0 ) , "zero benchmark tolerance" ) ;
580+ fn register_stress_benchmarks ( group : & mut BenchmarkGroup < ' _ , WallTime > ) {
581+ let zero_tolerance = require_ok ( la_stack_tolerance ( 0.0 ) , "zero benchmark tolerance" ) ;
586582 let pivoting = require_ok (
587- Matrix :: < D > :: try_from_rows ( make_pivoting_matrix_rows ( ) ) ,
583+ Matrix :: < 8 > :: try_from_rows ( make_pivoting_matrix_rows ( ) ) ,
588584 "pivoting benchmark matrix construction" ,
589585 ) ;
590586 let ill_conditioned = require_ok (
591- Matrix :: < D > :: try_from_rows ( make_ill_conditioned_matrix_rows ( ) ) ,
587+ Matrix :: < 8 > :: try_from_rows ( make_ill_conditioned_matrix_rows ( ) ) ,
592588 "ill-conditioned benchmark matrix construction" ,
593589 ) ;
590+ #[ cfg( not( la_stack_v0_4_3_api) ) ]
594591 let balanced = require_ok (
595- Matrix :: < D > :: try_from_rows ( make_balanced_dynamic_range_rows ( ) ) ,
592+ Matrix :: < 8 > :: try_from_rows ( make_balanced_dynamic_range_rows ( ) ) ,
596593 "balanced-range benchmark matrix construction" ,
597594 ) ;
598595
@@ -638,15 +635,18 @@ fn register_stress_benchmarks<const D: usize>(group: &mut BenchmarkGroup<'_, Wal
638635 ) ;
639636 } ) ;
640637
638+ #[ cfg( not( la_stack_v0_4_3_api) ) ]
641639 let balanced_lu = require_ok (
642640 balanced. lu ( zero_tolerance) ,
643641 "balanced-range LU factorization" ,
644642 ) ;
643+ #[ cfg( not( la_stack_v0_4_3_api) ) ]
645644 let balanced_ldlt = require_ok (
646645 balanced. ldlt ( zero_tolerance) ,
647646 "balanced-range LDLT factorization" ,
648647 ) ;
649648
649+ #[ cfg( not( la_stack_v0_4_3_api) ) ]
650650 group. bench_function ( "la_stack_det_from_lu_balanced_range" , |bencher| {
651651 bencher. iter ( || {
652652 let det = require_ok (
@@ -657,6 +657,7 @@ fn register_stress_benchmarks<const D: usize>(group: &mut BenchmarkGroup<'_, Wal
657657 } ) ;
658658 } ) ;
659659
660+ #[ cfg( not( la_stack_v0_4_3_api) ) ]
660661 group. bench_function ( "la_stack_det_from_ldlt_balanced_range" , |bencher| {
661662 bencher. iter ( || {
662663 let det = require_ok (
@@ -669,7 +670,7 @@ fn register_stress_benchmarks<const D: usize>(group: &mut BenchmarkGroup<'_, Wal
669670}
670671
671672macro_rules! define_vs_linalg_benches_for_dim {
672- ( $fn_name: ident, $d: literal) => {
673+ ( $fn_name: ident, $d: literal $ ( , $register_stress : ident ) ? ) => {
673674 fn $fn_name( c: & mut Criterion ) {
674675 let mut group = c. benchmark_group( concat!( "d" , stringify!( $d) ) ) ;
675676 register_determinant_benchmarks:: <$d>( & mut group) ;
@@ -682,7 +683,9 @@ macro_rules! define_vs_linalg_benches_for_dim {
682683 register_precomputed_ldlt_determinant_benchmarks:: <$d>( & mut group) ;
683684 register_vector_benchmarks:: <$d>( & mut group) ;
684685 register_matrix_norm_benchmarks:: <$d>( & mut group) ;
685- register_stress_benchmarks:: <$d>( & mut group) ;
686+ $(
687+ $register_stress( & mut group) ;
688+ ) ?
686689 group. finish( ) ;
687690 }
688691 } ;
@@ -692,7 +695,7 @@ define_vs_linalg_benches_for_dim!(bench_d2, 2);
692695define_vs_linalg_benches_for_dim ! ( bench_d3, 3 ) ;
693696define_vs_linalg_benches_for_dim ! ( bench_d4, 4 ) ;
694697define_vs_linalg_benches_for_dim ! ( bench_d5, 5 ) ;
695- define_vs_linalg_benches_for_dim ! ( bench_d8, 8 ) ;
698+ define_vs_linalg_benches_for_dim ! ( bench_d8, 8 , register_stress_benchmarks ) ;
696699define_vs_linalg_benches_for_dim ! ( bench_d16, 16 ) ;
697700define_vs_linalg_benches_for_dim ! ( bench_d32, 32 ) ;
698701define_vs_linalg_benches_for_dim ! ( bench_d64, 64 ) ;
0 commit comments