Resources

Most projects will require individuals to consult a number of resources to obtain the knowledge needed to develop the end product. This purpose of this page is to provide a general overview of the existing documentation, research, and databases. At the end, there will be an overview of major areas of ECE research associated with GPUs and links to the webpages of several researchers.

There are a number of valuable online resources worth consulting in learning more about GPUs. Some great sources to consult are other projects, documentation from Nvidia and AMD, as well as other relevant groups. Unfortunately, due to dominance of graphics in applications, there are few textbooks targeted at ECE majors. Furthermore, the fast rate of change in the field make textbooks unideal. For example, a number of the CUDA books on the market are targeted at outdated versions of CUDA.

Textbooks

There are several GPU textbooks on the market. This section go over the application specific ones. There is one Nvidia sponsored titled GPGPU Gems, though for the most part, this is targetted at game graphics programmers. It is still a valuable source, but perhaps daunting for beginners. Finally, due to the rapidly changes common to this field, a number of good resources are to be found in online documentation, rather than in published textbooks. Furthermore, Nvidia hosts a active and well-mantained forum.

There are number of GPGPU books on the market, includng Suyata's GPU Parallel Program Development Using CUDA is more focused on the architectural level. Nvidia also has a book titled GPU Gems, though this is targeted towards graphics programmers, particularly in the graphics field There are number of CUDA books on the

The best approach would probably to consult a textbook for theory and then to rely on the most up-to-date documentation on the web for coding purposes.

Programming Massively Parallel Processors a book with a strong focus on parallel programming essentials but also a guide to coding in CUDA.

CUDA By Example, published by Nvidia with a strong focus on specific programming applications.

The CUDA Handbook, great as a general introduction to fundamental CUDA programming concepts.

CUDA for Engineers: An Introduction to High-Performance Parallel Computing, CUDA C++ programming guide, ostensibly targetted at engineers, though similar in content to the other introductory textbooks.

CUDA Fortran for Scientists and Engineers: Best Practices for Efficient CUDA Fortran Programming, good option for people looking to explore the Fortran implementation fo CUDA.

CUDA Programming: A Developer's Guide to Parallel Computing with GPUs, good for understanding the theoretical underpinnings of GPUs.

GPU Programming in MATLAB, an intro-level book dealing with GPU programming on MATLAB.

Research

GPUs are promising area of research and there are number of dedicated researchers working in the field, both within industry and academia. The bulk of researchers are focused on graphics and computer-vision applications as that was the original targeted area of GPUs, but a number of researchers are emerging in the broader areas including robotics and VLSI.

Mark Levoy is research at Google whose work focuses on computer graphics.

Stanford graphics researcher Mark Houston has a number of papers of GPU graphics but also talks about general GPU usage computer graphics.

Ming-Hsuan Yang's research is rooted in computer vision, applying GPU to segment and track objects in images. These approaches include image-processing to improve recognition.

Lizhong Chen's GPU research focuses on architectural aspects of GPU usage efficiency.

Nvidia sponsors a good deal of research with subjects ranging from VLSI and networking to robotics and AI.

Angshuman Parashar's research focuses on GPUs and machine-learning applications for FPGAs.

Mark Harris' focus is on real-time image processing and graphics.

Aydın Buluçhas a number of studies on GPU performance and also teaches a course in Parallel Computing.

Valeria Bertacco has a number of papers released on VLSI application of GPU programming.

Code APIs

The following links will bring you the the various programming libraries discussed under the software page. Use it as a quick reference. These pages include API documentation as well as tutorials on getting started with the various libraries.

PyTorch

Tensorflow

Keras

Theano

Caffe

CUDA

OpenACC

OpenCL

FFMPEG

OpenGL

ROS