Sparsh Mittal and Jeff Vetter provide a survey of the comparative energy efficiency of GPUs relative to FPGAs and CPUs in their Jan. 2015 ACM Computing Surveys (CSUR) paper, “A Survey of Methods for Analyzing and Improving GPU Energy Efficiency” in which they observe a general energy efficiency hierarchy where, “it is clear that although for majority of works, FPGAs are more energy efficient than GPUs and GPUs, in turn, are more energy efficient than CPUs, a single platform cannot be accepted as most energy efficient for all possible applications.”
There appear to be three major caveats to these results:
- The results crucially depend on the devices and evaluation methodology used in the experiments. The challenge is that researchers need to spend the time to fully optimize both the CPU and GPU codes, “researchers who apply careful optimization on both CPUs and GPUs have reported much lower speedups of GPUs over CPUs, typically in the range of 0.7× to 15×“.
- Stacked 3D memory can be a game changer for GPU energy efficency. Specifically they write, “[i]t is expected that leveraging the benefits of 3D stacking and NVM would be a major step in improving the energy efficiency of GPUs”
- The use of virtualization technology may greatly increase utilization and reduce GPU idle time energy consumption.
In reality, tuning the CPU vs. GPU workload appears to be the most viable general option currently available for HPC programmers interested in energy efficiency as many of the GPU optimization techniques require hardware modifications.
While not a component in today’s HPC systems, enterprise readers will find the breadth of applications that run more efficiently on FPGAs to be very interesting. For example, Microsoft is reporting a 3x higher energy efficiency when using FPGAs as opposed to NVIDIA hardware on deep-learning.
A few methods that run more efficiently on FGPAs that GPUs (Caution that some of the reference are from 2010 and 2011):
- BLAS – “the FPGA offers comparable performance to GPU while providing significantly better energy efficiency. Moreover, the multi-core CPU also provides better performance and energy efficiency than the GPU“.
- 2D FIR (finite-impulse response) filters – FPGAs consume an order of magnitude less energy.
- Viola-Jones face detection – FPGAs consume an order of magnitude less energy.
- Geometric algebra computations – FPGAs are more energy efficient that GPUs, which are more energy efficient than CPUs.
- K-means clustering – FPGAs are more energy efficient.
- Monte-Carlo options pricing – FPGAs provide lower performance but higher energy efficiency.
- Random number generation – FPGAs are an order of magnitude more energy efficient.
- A random forest classification problem used in machine learning – FPGAs are faster and an order of magnitude more energy efficient.
- N-body – FPGAs are more energy efficient on some aspects.
- 3D ultrasound computer tomography – GPUs are comparable in performance to FPGA but FPGAs are more energy efficient.
- The Smith-Waterman algorithm – FPGAs are more energy efficient.
However, the literature indicates that GPUs are faster and more energy efficient for FFTs than FPGAs.
In the conclusion, Mittal and Vetter open the possibility of including FPGAs in future HPC systems.
Please look to the following articles discussing the energy efficency of Intel Xeon Phi devices: