Everyone knows the clock speed increases in commodity CPUs have slowed to a crawl. There are several reasons for this, but the bottom line is that number crunchers aren’t likely to see increasing performance with each new processor as has happened in the past. At the same time, Moore’s Law still holds, so the number of transistors per processor is still increasing. CPU companies have taken the extra transistors and used them to create extra cores and cache, ushering in the multi-core era of computing.
Cores are great, but there are some challenges facing many programmers as they convert to multi-core systems.
Some applications are driven by single core performance. The application can run over multiple cores using threads, OpenMP, or MPI, but in the end, the overall code performance is driven by the single limiting process on a single core.
The performance of the memory and I/O buses aren’t increasing as rapidly as the number of cores is increasing. Thus, the amount of memory bandwidth per core is decreasing, reducing performance. Also, the number of cores per network interface card (NIC) is rapidly increasing, possibly reducing the performance, or at the very least requiring high performance networks.
The challenges with multi-core CPUs in HPC can be overcome to a certain degree, but the quest for more performance continues. The hunt has led people to look for other commodity hardware that can be used to increase performance. Enter the modern day Graphics Processing Unit (GPU).
History Repeats Itself
…
Please log in to view this content.
Not Yet a Member?
Register with LinuxMagazine.com and get free access to the entire archive, including: