Due to an unavoidable timing problem introduced by parallelization, a reordering of the stages of subroutine drepro was necessary. In the sequential model, each male fawn disperses from the natal range immediately before its mother gives birth to new fawns. Adhering to the same structure in the parallel model could possibly reduce the deer population size over the simulation, since there exists a small window of time during which the dispersing male is unavailable for mating with females located on other processors. To eliminate this timing error, dispersing males are placed on a queue for later dispersal after all processors have completed the reproduction phase.
Since the number of deer residing on each processor is inevitably unequal due to deer movement and reproduction, as well as the timing of different processing nodes, synchronization is necessary at certain points in the parallel program in order ensure that all processors have completed one component phase before starting the next. Explicit synchronization occurs after dage, after drepro, and again after the dispersal of queued male deer. Since these routines may require message passing, all processors waiting in the synchronization loop must continually poll for incoming messages (see [Abb95] for the C code used in the synchronization loop). An additional implicit synchronization occurs at the end of each day as daily results are accumulated from each node. With the entire map divided among the the 32 processors, message passing becomes necessary for deer dispersal, mating, and foraging activities if these routines require knowledge of data located in remote grid cells (i.e., a grid located on another processor).