@@ -1327,24 +1327,26 @@ namespace grb {
13271327 for ( auto i = start_row; i < end_row; ++i ) {
13281328 auto mask_k = mask_raw.col_start [ i ];
13291329 for ( auto k = A_crs_raw.col_start [ i ]; k < A_crs_raw.col_start [ i + 1 ]; ++k ) {
1330- auto k_col = A_crs_raw.row_index [ k ];
1330+ const auto j = A_crs_raw.row_index [ k ];
13311331
13321332 // Increment the mask pointer until we find the right column, or a lower column (since the storage withing a row is sorted in a descending order)
1333- while ( mask_k < mask_raw.col_start [ i + 1 ] && mask_raw.row_index [ mask_k ] > k_col ) {
1333+ while ( mask_k < mask_raw.col_start [ i + 1 ] && mask_raw.row_index [ mask_k ] > j ) {
13341334 _DEBUG_THREADESAFE_PRINT ( " NEquals masked coordinate: ( " + std::to_string ( i ) + " ;" + std::to_string ( mask_raw.row_index [ mask_k ] ) + " )\n " );
13351335 mask_k++;
13361336 }
1337-
1338- if ( mask_raw.row_index [ mask_k ] < k_col || not MaskHasValue< MaskType >( mask_raw, mask_k ).value ) {
1339- mask_k++;
1337+ if ( mask_k >= mask_raw.col_start [ i + 1 ] ) {
1338+ _DEBUG_THREADESAFE_PRINT ( " No value left for this column\n " );
1339+ break ;
1340+ }
1341+ if ( mask_raw.row_index [ mask_k ] < j || not MaskHasValue< MaskType >( mask_raw, mask_k ).value ) {
13401342 _DEBUG_THREADESAFE_PRINT ( " Skip masked value at: ( " + std::to_string ( i ) + " ;" + std::to_string ( mask_raw.row_index [ mask_k ] ) + " )\n " );
13411343 continue ;
13421344 }
13431345
13441346 _DEBUG_THREADESAFE_PRINT ( " Found masked value at: ( " + std::to_string ( i ) + " ;" + std::to_string ( mask_raw.row_index [ mask_k ] ) + " )\n " );
13451347 // Get A value
13461348 const auto a_val_before = A_crs_raw.values [ k ];
1347- _DEBUG_THREADESAFE_PRINT ( " A( " + std::to_string ( i ) + " ;" + std::to_string ( k_col ) + " ) = " + std::to_string ( a_val_before ) + " \n " );
1349+ _DEBUG_THREADESAFE_PRINT ( " A( " + std::to_string ( i ) + " ;" + std::to_string ( j ) + " ) = " + std::to_string ( a_val_before ) + " \n " );
13481350 // Compute the fold for this coordinate
13491351 local_rc = local_rc ? local_rc : grb::apply< descr >( A_crs_raw.values [ k ], a_val_before, x, op );
13501352 local_rc = local_rc ? local_rc : grb::apply< descr >( A_ccs_raw.values [ k ], a_val_before, x, op );
0 commit comments