Research Article

A Scalable GVT Estimation Algorithm for PDES: Using Lower Bound of Event-Bulk-Time

Algorithm 1

LB-EBT GVT algorithm.
// LB-EBT GVT algorithm for the
S0  LVT = 0; GVT = 0; ebi = 0; eventProcessed = 0; eventSnt = 0; MTS = ; is empty; EBMap is
empty; TMCMAP[ebi] = 0; MTSMAP[ebi] = ; LVTMAP[ebi] = ; / initialization of processor /
S1 Configuring the schedules, generating the communication topology, and generating LPs.
S2     while (GVT < StopTime)
S3     for any basic messages BM(j, ts, ed)
S4        process(BM.ed); eventProcessed++; LVT = BE.ts;
S5        if  BM(j, ts, ed) is a remote basic message from
S6         TMCMAP[BM.j]− = 1; /record the count of received remote messages/
S7       end if
S8       for any remote basic message BM(ebi, ts, ed) sent
S9          MTS = min(MTS, BE.ts);
S10         eventSnt++;
S11      end for
S12    end for
S13    if (eventProcessed >= EB.Size LVT > StopTime) / finish an EB /
S14        [ebi]+ = eventSnt; record the current EB to EBMap;
S15       eventSnt = 0; eventProcessed = 0; ebi++;
S16       send control messages to / request leaf to send an messages /
S17     end if
S18     for any control message
S19       if  LeafP(i) and index of control message is not less than ebi
S20         send EB report message to
S21       end if
S22     end for
S23     for any EB Report message
S24       for each key k in EBR.TMMAP
S25         TMCMAP[k]+ = EBR.TMMAP[k];
S26       end for
S27       MTSMAP[EBR.ebi] = min(MTSMAP[EBR.ebi], EBR.MTS);
S28       LVTMAP[EBR.ebi] = min(LVTMAP[EBR.ebi], EBR.LVT);
S29       if all processor in have reported EBR messages
S30         record the current EB to EBMap;
S31         TMCMAP[ebi]+ = EBMap[ebi].SntC;
S32         MTSMAP[EBR.ebi] = min(MTSMAP[EBR.ebi], EBMap[ebi].MTS);
S33         LVTMAP[ebi] = min(LVTMAP[ebi], EBMap[ebi].LVT);
S34         eventSnt = 0; eventProcessed = 0; ebi++;
S35         if   is the root processor / calculate the new value of GVT /
S36           GVT = ((MTSMAP[k]TMCMAP[k] > 0, LVTMAP[k]));
S37          send GN(ebi, gvt) to ; / send GVT notifying message to its children /
S38         else
S39          send to ; / send EB report to parent /
S40         end if
S41        end if
S42     end for
S43     for any GVT notifying message GN(j, gvt)
S44      GVT = GN.gvt; / update GVT /
S45     if notLeafP(i)
S46     send GN(j, gvt) to ; / send GVT notifying message to its children /
S47     end if
S48     end for
S49     end while