Why I added a graphics card
My computer was working just fine, thank you. The Intel i5-2500K contains Intel HD 3000 integrated graphics processor. It drives my dual HD monitors just fine. The The reason that I added a graphics card was to get a GPGPU (general purpose graphics processing unit). A GPU provides a great speed-boost to any math-intenstive processing because all those graphics cores can be brought to bear on any calculations which can be performed in parallel.
Some background
OpenCV supports two differnet GPU-based acceleration schemes. GPU match accelerators are usually proprietary and are developed and provided by the hardware manufacturer. I assume that the reason for their being closed is that the vendors have trade secrets related to the specialized GPU hardware and accompanying software. Even getting the vendor's GPU libraries often involves signing an NDA. The two schemes are OpenCL and CUDA.
OpenCL was initially developed by Apple who still owns the trademark but the technology was submitted to the Khronos Group who is now responsible for publishing the technical standards. The current standard is OpenCL 2.0 but most implementations are still at OpenCL 1.X.
CUDA is a parallel computing platform and programming model invented by NVIDIA who both owns the trademark and develops and distributes the libraries. CUDA works with all Nvidia GPUs from the G8x series onwards, as well as the Tegra system on a chip (SoC) series.
OpenCV supports both OpenCL and CUDA for GPU-based acceleration. I've chosen to go the OpenCV route as there is a much wider choice of supported hardware. This is not in any way a disparagement of CUDA, which is a very strong technology back by a very strong company. Anyone starting an OpenCV project should evaluate both OpenCL and CUDA at project initiation, and look at the available processors and boards. I had considered using an Nvidia Shield as an OpenCV development platform. It has a Tegra 4 chip and an available CUDA SDK. But I am trying to be risk-adverse and I could not find anyone else who has attempted to compile and run OpenCV on a Shield.
The FirePro V5900
After evaluating my options, I settled on an AMD FirePro V5900. AMD provides an OpenCL compliant driver and SDK. While no stellar performer, the V5900 is reasonable priced. New the are less that $400. I picked up a used on eBay for less than $200. A good place to compare OpenCL performance is CompuBench. For example here are the results of their "Optical Flow" test. I had to "expand all" before getting the V5900 to show up on the results. And while you are there, check out how well the Intel HD 4000 performs.
My desire was to run the V5900 "headless" and to continue using the integrated graphics for my monitors and thus dedicate the GPU to OpenCL processing. But alas when I plugged in the card my motherboard's firmware automagically made the V5900 become the graphics device. Perhaps with more research and experiments I may have been able to achieve the desired configuration. But who know how much time investment that would have been. A side benefit of having the V5900 drive the display is that Google Earth runs much better and I can also run Outerra Anteworld (the V5900 just meets the minimal hardware requirements).
Installing a GPU is something that I hadn't done for many years. I was shocked by the size of the AMD Catalyst download size. There is a great deal of bloatware which gets installed. One can uninstall specific items and I probably could have avoided installing them in the first place. Generally I am hesitant to uninstall things if my computer is in working order and I haven't run low on disk space.
In my next entry I will describe installing the AMD Accelerated Parallel Processing (APP) SDK. As an aside, this was my first posting created with Emacs, Markdown, and Pandoc.
No comments:
Post a Comment