It’s one thing to compare GPU code performance with CPU code performance. If the algorithm is parallel, GPU would beat CPU any day. In our case, CUVI beats the best (performance wise) CPU primitives library on the planet, Intel(r) IPP. Take a look at the performance figures.
Ever wanted to add color and edit really, really old movies? Our grand parents did not have HD cameras which means today, we have hundreds of thousands of hours of video recorded a few decades ago. Movies, documentaries and family videos gathering dust in some archive or a shelf in your home. With the new recoloring and digitizing technology, it’s now possible to digitize (meaning you can open them in video editing tools on your computer) and recolor old, shaky videos. Some very interesting work is being done in Sweden by a company which provides software for this. Film studios use this software to restore old movies. It’s called AgiScan.
With CUVI version 0.5 release, significant changes were made to make sure utilizing the power of GPUs for your Imaging and Vision applications is even more easier. In version 0.5, CuviImage object is introduced – it holds image on the GPU so you know whenever you create a CuviImage, the image always resides on the GPU, saving you complexity of creating and managing device memories yourself. In addition to just creating and holding the image on the GPU, CuviImage also maintains the basic information of the image like rows, columns (matrix style), width step, pixel depth, number of channels etc.
OpenCV version 2.2 was released in December last year with GPU support. This GPU module was written in CUDA which means it’s hardware dependent (only NVIDIA CUDA enabled GPUs can make use of this module). It has opened the gateways of GPU accelerated Image Processing and Computer Vision available right in OpenCV. Using it can be a nightmare for most of you so I decided to log my way of making it work which is not very much different from what’s on the documentation with some added steps.
The time is fast approaching when every significant app will make use of the vast parallel resource pool of the GPUs. This stampede towards GPU-accelerated-computing just got a boost from the release of the all new Internet Explorer 9. NVIDIA worked with Microsoft since almost the start of IE9 development cycle to make sure every possible GPU resource is utilized. IE9 is definitely a leap forward from it’s predecessors in that it opens up a new avenue for the future browsers: GPUs.
This blog will keep on adding tips and issues as we discover and fix them. The purpose is to maintain a wiki that’s easy to read and use.
Microsoft has given a complete facelift to the new Visual Studio 2010. A whole bunch of new features and removal of a couple of them. With the new VS 2010, you cannot define custom build rules with .rules file as it was done before. Now there’s a whole new bunch of modules that need to be specified in order to make a set of custom build rules to work with Visual Studio 2010 project. This blog explains the steps involved in making CUDA work on the new Visual Studio 2010.
From day 1 we have focused on making CUVI compatible with the existing Vision and Imaging libraries and what comes to mind right away is: OpenCV. We have been asked a many times whether CUVI functions work with OpenCV. Here’s a little tutorial on how you can use OpenCV’s Image reading and writing functions with CUVI functions.
Writing applications that use the massive parallel compute power of the CUDA capable GPUs has been made even more simpler with the release of CUDA Toolkit 3.2 RC. What’s more exciting is that it comes with an improved CUDA Visual Profiler which lets you profile every minute aspect of your application. Today I am going to walk you through the simple process of profiling your CUDA application.
NVIDIA’s NVPP (NVIDIA Performance Primitives) is a CUDA accelerated image processing and computer vision library which runs on NVIDIA’s CUDA enabled GPUs. NPP’s latest release includes some key image processing functions which can be used off-the-shelf in your applications or as stand-alone NPP applications.