@@ -211,7 +211,7 @@ tw_gvt_step2(tw_pe *me)
211211 tw_copy_event_sig (& pq_min_sig , tw_pq_minimum_sig_ptr (me -> pq ));
212212 tw_copy_event_sig (& net_min_sig , tw_net_minimum_sig_ptr ());
213213
214- lvt_sig = me -> trans_msg_sig ;
214+ tw_copy_event_sig ( & lvt_sig , & me -> trans_msg_sig ) ;
215215 if (tw_event_sig_compare_ptr (& lvt_sig , & pq_min_sig ) > 0 )
216216 {
217217 tw_copy_event_sig (& lvt_sig , & pq_min_sig );
@@ -220,6 +220,12 @@ tw_gvt_step2(tw_pe *me)
220220 {
221221 tw_copy_event_sig (& lvt_sig , & net_min_sig );
222222 }
223+ if (g_tw_gvt_hook
224+ && g_tw_gvt_hook_trigger .status
225+ && tw_event_sig_compare_ptr (& lvt_sig , & g_tw_gvt_hook_trigger .sig_at ) > 0 )
226+ {
227+ tw_copy_event_sig (& lvt_sig , & g_tw_gvt_hook_trigger .sig_at );
228+ }
223229
224230 all_reduce_cnt ++ ;
225231 if (MPI_Allreduce (
@@ -517,6 +523,7 @@ void tw_trigger_gvt_hook_every(int num_gvt_calls) {
517523 g_tw_gvt_hook_trigger .status = GVT_HOOK_STATUS_every_n_gvt ;
518524 g_tw_gvt_hook_trigger .every_n_gvt .starting_at = g_tw_gvt_done ;
519525 g_tw_gvt_hook_trigger .every_n_gvt .nums = num_gvt_calls ;
526+ tw_copy_event_sig (& g_tw_gvt_hook_trigger .sig_at , & g_tw_max_sig );
520527}
521528
522529void tw_trigger_gvt_hook_when_model_calls (void ) {
@@ -534,6 +541,8 @@ void tw_trigger_gvt_hook_now(tw_lp * lp) {
534541 }
535542 tw_event_sig * now = & lp -> kp -> last_sig ; // tw_now_sig(lp);
536543 tw_copy_event_sig (& g_tw_gvt_hook_trigger .sig_at , now );
544+ g_tw_gvt_hook_trigger .sig_at .event_tiebreaker [g_tw_gvt_hook_trigger .sig_at .tie_lineage_length ] = 0 ;
545+ g_tw_gvt_hook_trigger .sig_at .tie_lineage_length += 1 ;
537546
538547 // Forcing GVT to happen now (possibly triggering gvt hook)
539548 lp -> pe -> gvt_status = TW_GVT_COMPUTE ; // same behavior as if calling `tw_gvt_force_update()`
0 commit comments