We present a new modeling code for plasma called WARPM designed for emerging many-core architectures such as GPUs in high-performance computing. The principal scientific calculations are implemented in the OpenCL language, allowing natural data-parallel execution on many-core devices like GPUs. WARPM uses multiple threads and a task dependency graph to simultaneously execute parallel independent tasks. WARPM uses traditional Message Passing Interface (MPI) to distribute computation across multiple nodes of a cluster. The resulting code now is a hybrid combination of MPI for communication between nodes, threads for task parallelism on each host, and OpenCL for data-parallel scientific computation on tens or hundreds of cores available on each node.
The code framework is relatively general, but is inspired by the computational modeling of plasmas. Plasma simulation has much in common with computational fluid dynamics, but adds the complexities of modeling the electromagnetic interactions of the charged plasma species. Modeling, then, involves elaborate codes with computational demands that can limit the approximation of real-world behavior. To pair compiled performance with code flexibility while handling varying fluid models and numerical methods, the OpenCL source code is dynamically assembled at WARPM run-time based on user specifications. We present the WARPM code architecture, computational performance characterizations, and representative physics results from kinetic plasma simulations.