HySpeed Computing looks at the technology behind GPU computing.
Geospatial technology and imagery are now pervasive in our society. From the GPS device on your car’s dashboard and your local weather report to national maps of drought conditions and global analysis of the earth’s environment, geospatial data is playing an increasingly central role in our lives. As the importance and availability of geospatial data continues to grow, so too does the need to process greater volumes of data at faster rates to provide output in a timely manner. The result is an accompanying need for increased utilization of high-performance computing to meet these processing demands, an area where GPU computing is certain to play a significant role.
So you have some data – in fact you have a hard-drive filled to its storage capacity with more imagery than your computer can seemingly process in a year – and you can’t wait that long to get results. Let’s look at some example software options of how you can start using GPU computing to accelerate your image processing workflow.
One option is to utilize commercial software packages that inherently employ GPU processing as part of their architecture. For example, in the field of graphic design, Adobe Photoshop versions CS4 and later use GPU computing to speedup certain functions. An equivalent in the geospatial field is the GXL GeoImaging Accelerator (PCI Geomatics), which provides GPU-enabled acceleration for applications such as orthorectification, image mosaic creation, and pan-sharpening. However, widespread integration of GPU capabilities in commercial geospatial software is not yet fully realized, and thus many algorithms and processing options still await acceleration.
As an alternative, users can select to employ a high-level programming language to generate their own applications. For example, GPULib (Tech-X) provides a library of GPU-accelerated IDL functions that can be used to customize ENVI (Exelis VIS). Note that IDL is the language on which ENVI is built and also the foundation for developers to create custom modules that integrate directly with ENVI. Similarly, the Parallel Computing Toolbox (Mathworks), as well as Jacket (AccelerEyes), can be used to speedup MATLAB code. Although not explicitly considered a geospatial software tool, MATLAB (MathWorks) has extensive capabilities in scientific computing, including modules designed specifically for image processing and mapping.
For the experienced programmer, there is the option to go directly to the source and develop specialized software using one of the two dominant parallel computing architectures available for GPU development: CUDA and OpenCL. CUDA was developed by NVIDIA explicitly for leveraging the compute capabilities of NVIDIA GPU cards, whereas OpenCL is an open framework that can be used for both NVIDIA and AMD GPUs. Both are excellent choices for developing custom GPU software, but both also require a reasonable level of comfort with programming as well as an understanding of GPU nuances to get the most out of the acceleration potential.
Essentially, we’re still at the growth end of the GPU curve, but the field is progressing rapidly and GPU computing is quickly gaining momentum. It is going to be exciting to see how this field evolves.