General Purpose GPU Research

At the University of Washington Bothell campus, I participated in Undergraduate Research to help develop class materials for a Graduate level High Performance Computing (HPC) course.

The research was led by Dr. Erika Parsons of the University of Washington.


The purpose of the project was to establish a knowledge and technical base for HPC study at the Bothell Campus. The course serves as an introductory lesson for graduate students, with hopes of sparking further interest and development in HPC.

The two main points of interest for the research were:

  • Determing what expectations should be set when non-specific instructions are given to students.
  • Further develop methods for introducing the knowledge of industry experts to students of vastly different mindsets.


Coming from no background in HPC, my role in the research was two-fold; learn as much of the subject as I could to develop intoductory curriculum resources and evaluate proposed lessons and resources from the perspective of a new student.

It was imperitive that I record my experiences when learning the material myself, so that potential learning hurdles could be identified early on. To that end I created a series of documents that walked through what I learned while describing the sections in which difficulties were faced, what made it difficult, and how I got through that hurdle.


Through my participation I gained a solid understanding of the core principles of parallel computing and how to program for devices built to take advantage of a high level of parallelization.

Technology-wise, I became familiar specifically with developing in an NVIDIA CUDA environment on Linux for general purpose programming of Graphics Processing Units. Many concepts used are, however, portable to other systems. Such as the high level architecture of a GPU and the resource needs and limitations of that style of programming.