Multigrid is an iterative algorithm that uses nearest-neighbor computations to solve PDE's on a regular mesh. Although multigrid is an O(n) algorithm, it generally does not run as fast as the highly-optimized FFT, which is O(n log n). We will attempt to change this. Since the NAS Multigrid (MG) benchmark is a recognized standard, we will try to optimize this code, as these optimizations will probably be applicable to most multigrid variants. We wish to first create a performance model that will incorporate various memory parameters (e.g. number of memory accesses, memory access latency, and cache size). This model should be verifiable using the PAPI library. Based on this model, we will try to identify and implement potential optimizations. Ideally, we will try to use four different platforms to develop our performance models and test our optimizations. Finally, the optimized NAS MG code will be compared against the same problem solved with the FFT to see if it is comparable.