ABSTRACT

Modern computers contain multi-core processors that can run multiple instructions concurrently. They may also include an onboard graphics card that can be used for general computing. Multiple computers can also be connected into a network, with workload distributed among individual machines. This chapter explains how to utilize the hardware technologies to either speed up existing codes, or to support cases that would otherwise be too large to fit onto a single machine. It describes how to create a simple parallel program to add two numbers using multithreading, message passing interface, and CUDA. The chapter discusses parallelization strategies related to particle in cell plasma simulations and introduces a simple GPU-based potential solver.