@@ -59,6 +59,9 @@ pub fn compare_tensor_approx<D: Dimension>(
5959 . finish ( 1 << 30 , 1 << 30 )
6060 . unwrap ( ) ;
6161
62+ assert_eq ! ( result. metadata, expected. metadata) ;
63+ let md = result. metadata ;
64+
6265 runtime
6366 . resolve ( None , false , |ctx, _| {
6467 let result = & result;
@@ -80,15 +83,20 @@ pub fn compare_tensor_approx<D: Dimension>(
8083 let b_l = ctx. submit ( result. chunks . request ( pos) ) . await ;
8184 let b_r = ctx. submit ( expected. chunks . request ( pos) ) . await ;
8285
86+ let chunk_info = md. chunk_info ( pos) ;
87+
8388 let b_l = & * b_l;
8489 let b_r = & * b_r;
8590 for ( i, ( l, r) ) in b_l. iter ( ) . zip ( b_r. iter ( ) ) . enumerate ( ) {
8691 let diff = ( l - r) . abs ( ) ;
87- if diff > max_diff || l. is_nan ( ) != r. is_nan ( ) {
88- panic ! (
89- "{:?}\n and\n {:?}\n differ by {}, i.e. more than {} at position {}: {} vs. {}" ,
90- b_l, b_r, diff, max_diff, i, l, r
91- ) ;
92+ let in_chunk_pos = crate :: vec:: from_linear ( i, & chunk_info. mem_dimensions ) ;
93+ if in_chunk_pos. zip ( & chunk_info. logical_dimensions , |l, r| l<r) . hand ( ) {
94+ if diff > max_diff || l. is_nan ( ) != r. is_nan ( ) {
95+ panic ! (
96+ "{:?}\n and\n {:?}\n differ by {}, i.e. more than {} at position {}: {} vs. {}" ,
97+ b_l, b_r, diff, max_diff, i, l, r
98+ ) ;
99+ }
92100 }
93101 }
94102 }
0 commit comments