i have fortran program dynamics (basically verlet algo). in order compute velocities faster parallelized algorithm mpi. makes me nervous if have 4 processors, each processor runs verlet, , when reach point of parallelization, share info. however, due slight numerical differences (for example, in compiled lapack on each node) each verlet trajectory may evolve in different direction in long run, meaning @ points of sharing obtained mixup of info different trajectories. therefore decided synchronize info @ every time step prevent divergence, introduces barrier.
how problem (divergence of nodes) solved ? references ?
well, shouldn't have different compiles of lapack on each node. if numerical libraries change in different parts of simulation, should expect weird results -- , has nothing parallelism. don't that.
the real time i've seen mpi introduce trickiness in situations doing things mpi_reduce(...mpi_sum...) can result in different answers on same number of nodes on different runs, because summation can in different order. that's standard "floating-point math doesn't commute" stuff. can avoid doing mpi_gather() of relevant numbers, , summing them in well-defined order, such after sort lowest-to-highest in magnitude.
Comments
Post a Comment