Skip to main content
U.S. Department of Energy
Office of Scientific and Technical Information

Dynamic load balancing for a 2D concurrent plasma PIC code

Journal Article · · Journal of Computational Physics; (United States)
;  [1];  [2]
  1. California Institute of Technology, Pasadena, CA (United States)
  2. Univ. of California, Los Angeles, CA (United States)
We have developed and implemented a load balancing scheme for particle-in-cell (PIC) codes which use the GCPIC algorithm on MIMD computers. The algorithm has been applied to a two-dimensional electrostatic plasma PIC simulation code using 1D partitions for particles and fields. The code is a parallelized version of a well-benchmarked sequential plasma PIC code which uses quadratic field and charge interpolation and an FFT-based Poisson solver. This code has been run on the Caltech JPL Mark IIIfp, NCUBE2, and Intel i860 Gamma hypercube computers. Particle load balance is maintained by readjusting the GCPIC primary partitions whenever any processor's particle count exceeds a certain imbalance threshold. The new partition boundaries are calculated based upon a 1D number density function computed from the grid deposited charge distribution. Dynamic load balancing is found to be effective when the execution time of the particle push dominates over execution time for the field solve. For a large class of plasma simulations, we find that dynamic load balancing is not required; static initial partitions intelligently chosen can work just as well. Parallel efficiency for the particle push is very high (90-100%) and scales with number of processors. Parallel efficiency for the FFT-based field solver is poor in this implementation and directly impacts the effectiveness of the load balancing scheme. 11 refs., 10 figs., 2 tabs.
OSTI ID:
7238435
Journal Information:
Journal of Computational Physics; (United States), Journal Name: Journal of Computational Physics; (United States) Vol. 109:2; ISSN 0021-9991; ISSN JCTPAH
Country of Publication:
United States
Language:
English