Requires FLTK , GLUT , C++
Full technical paper in .docx format
Visual C++ sourece Code package
Background Information
The graphic card, or precisely the GPU, was not popularized until 1999. Before that, CPU was responsible to process most of the data. However as the digital graphics spreads like wild fire, a processing unit specifically for graphic is necessary. This is because the modern CPUs strongly favor lower latency of operations with clock cycles in the nanoseconds. The trade-off area where our CPUs were not performing well was that of massive fine grain parallelism. In other words, CPUs focus on the throughput of the pipelines, but not an individual operation. Therefore, CPU yielded rather inefficient system for graphics processing any more. On the other hand, GPUs are specifically designed to execute literally billions for small user-written programs per second. That means GPUs can handle the complicated graphical data with a much faster speed comparing to CPU. Unfortunately, it seems that CPU technology has been near the bottleneck now. Due to the limitation of semi-conductor, people start building a CPU with more cores instead of having a higher clock speed. As the result of this, the improvement is no longer obvious. On the other side, the GPU technology hasn¡¯t met the bottleneck yet, so it still has a lot room to develop. Because of this, GPU starts sharing the normal data processing with CPU. For example, the CUDA technology from NVIDIA is a parallel computing architecture. It instructs the computer to ¡°co-process¡± on the CPU and GPU . Based on this technology, the processing speed is increased more than 100 times faster as figure 1 shown. So, GPUs are not only a graphical processing unit, but also an important part of the central processing pipeline now.
Abstract
This project is going to visualize the development of desktop graphic card since 2006. The program is going to analyze and represent the architecture of the GPU, the price, and the performance in several graphs. Users are able to control what elements to show on the graph by control panel. There are three types of graphs. The first one is regular X-Y Axis 2D scatter plot with changeable Y axis as figure 3. The y axis could be transistors count, memory clock rate, fabrication process, fillrate, power consumption (known as TDP), or release price. The X axis is the timeline from 2006 to 2012. The second type of graph is a performance benchmark score chart. This chart is a line graph for 2 brands, 6 categories of graphic cards. The categories include entry-level graphic, mid-range graphic, and high-end graphic for both AMD and nVidia. The third type of graph is a Performance/Price Ratio Chart based on time and release price. The X axis is time from 2006 to 2012, and Y axis is the release Price. The size of each square represents the performance/price ratio. In other word, the more valuable the graphic card is, its square will be bigger. Also, all graphic cards will be colored based on their brand and targeting market.
Goals
This project is intended to help users to find the best selection of graphic cards. More importantly, users are able to visualize the history, and predict the future of GPU based on the trend
Detail
For this program, FLTK library, GLUT library, and C++ compiler are required. The basic ideas of this program is to implement a gui, build several scatter plots based on sorted date, one line chart, and one custom made chart. I am using FLTK to build a GUI with menu bar, dropdown menu, buttons and an OpenGL display window. In the OpenGL window, I read in the data select from the FLTK menu, do the calculation and plot the graph in the OpenGL window.I use several arrays to store all date and result.
Screenshots and running video
Here are some screenshots and video:
Timeline
Finish collecting complete data from internet | Feb 12th |
Start writing final project report | Feb 25st |
Start building the GUI interface and structure | Feb 25st |
Start building the OpenGL part | Mar 1st |
Final debugging and report | Mar 15th |
Reference and usable research
By Jia Ming Ma 03/17/2012