@@ -17,9 +17,21 @@ fn main() {
1717 let cli = cli:: Cli :: parse ( ) ;
1818
1919 if cli. simple_precision {
20- run_bench :: < f32 > ( cli. input , cli. n_rounds . get ( ) , cli. sort , cli. save_as ) ;
20+ run_bench :: < f32 > (
21+ cli. input ,
22+ cli. n_rounds . get ( ) ,
23+ cli. sort ,
24+ cli. save_as ,
25+ cli. command ,
26+ ) ;
2127 } else {
22- run_bench :: < f64 > ( cli. input , cli. n_rounds . get ( ) , cli. sort , cli. save_as ) ;
28+ run_bench :: < f64 > (
29+ cli. input ,
30+ cli. n_rounds . get ( ) ,
31+ cli. sort ,
32+ cli. save_as ,
33+ cli. command ,
34+ ) ;
2335 }
2436}
2537
@@ -28,6 +40,7 @@ fn run_bench<T: CoordsFloat>(
2840 n_rounds : usize ,
2941 sort : bool ,
3042 save : Option < FileFormat > ,
43+ smoothing : Option < cli:: SmoothingType > ,
3144) {
3245 let ( map, input_hash, init_time) = init_2d_map_from_file :: < T > ( input. clone ( ) ) ;
3346
@@ -41,12 +54,51 @@ fn run_bench<T: CoordsFloat>(
4154 get_num_threads( ) . unwrap_or( 1 )
4255 ) ;
4356 println ! ( "|-> # of rounds: {}" , n_rounds) ;
57+
58+ match smoothing {
59+ None => {
60+ println ! ( "|-> smoothing : neighbor average" , ) ;
61+ }
62+ Some ( cli:: SmoothingType :: Laplace { lambda } ) => {
63+ println ! ( "|-> smoothing : Laplace" ) ;
64+ println ! ( "|-> scale (λ) : {}" , lambda) ;
65+ assert ! (
66+ lambda > 0.0 && lambda < 1.0 ,
67+ "lambda must verify `0 < lambda < 1`"
68+ ) ;
69+ }
70+ Some ( cli:: SmoothingType :: Taubin { lambda, k } ) => {
71+ println ! ( "|-> smoothing : Taubin" ) ;
72+ println ! ( "|-> scale (λ) : {lambda}" ) ;
73+ println ! ( "|-> pass (k) : {k}" ) ;
74+ assert ! (
75+ lambda > 0.0 && lambda < 1.0 ,
76+ "lambda must verify `0 < lambda < 1`"
77+ ) ;
78+ }
79+ }
4480 println ! ( "|-+ init time :" ) ;
4581 println ! ( "| |-> map built in {}ms" , init_time. as_millis( ) ) ;
4682
4783 prof_start ! ( "HCBENCH_SHIFT" ) ;
4884 let graph = internals:: build_vertex_graph ( & map, sort) ;
49- internals:: shift ( & map, & graph, n_rounds) ;
85+ match smoothing {
86+ None => {
87+ internals:: shift ( & map, & graph, n_rounds) ;
88+ }
89+ Some ( cli:: SmoothingType :: Laplace { lambda } ) => {
90+ internals:: laplace ( & map, & graph, n_rounds, T :: from ( lambda) . unwrap ( ) ) ;
91+ }
92+ Some ( cli:: SmoothingType :: Taubin { lambda, k } ) => {
93+ internals:: taubin (
94+ & map,
95+ & graph,
96+ n_rounds,
97+ T :: from ( lambda) . unwrap ( ) ,
98+ T :: from ( k) . unwrap ( ) ,
99+ ) ;
100+ }
101+ }
50102 prof_stop ! ( "HCBENCH_SHIFT" ) ;
51103
52104 finalize_2d ( map, save) ;
0 commit comments