Author Archive

For many consumers, cloud computing has gone from something completely unknown to an interesting solution for portability problems within the span of the last few years. Industry conferences and trade shows such as Cloud Expo allow those on the cutting edge of development to display and discuss innovative ways to use and improve the technology. Cloud Expo 2012 East took place in New York City on June 11 – 14. It was held in tandem to the new Big Data Expo, spotlighting the interconnectivity of cloud computing and sound use of big data. Storage Expo was held in Brussels this March, and also covered cloud and data issues. Another Cloud Expo is scheduled for the Silicon Valley area in November 2012. Continue reading ‘Cloud Expo Reveals Industry Secret To Making The Most Of Cloud Storage’ »

In memory image compression is essential for any type of visual computing application. Images alone can take a good amount of memory, and when creating an application which uses many images, you may soon find yourself using several gigabytes of memory. While this may be fine for your personal workstation, it may not be okay if you intend to release your application to the public. To work around this memory consumption problem, you’ll want to use in-memory image compression techniques to reduce your program’s memory footprint. Continue reading ‘In Memory Image Compression tutorial’ »

Surfing the Internet on your phone is fine when you want a dinner reservation, but the smartphone experience is not the same as having your trusty laptop with you.  Whether you need to take your work with you to the park or just want the option of playing your favorite games while waiting at the doctor’s office, there are many advantages to investing in T-Mobile mobile broadband.  Prepare to enjoy all the benefits of having the full Internet with you, wherever you may roam. Continue reading ‘The Benefits of Mobile Broadband’ »

Vertex transformations are an extremely common operation for both 2d and 3d programs. A transformation can include translation, rotation, scaling, or any combination of the three. While it is beyond the scope of this article to elaborate on fine details of vertex transformations, it all boils down to a matrix multiplication. A 3d vertex can be represented as a 1×4 matrix, [x, y, z, w] where w is usually 1, and the transformation is represented as a 4×4 matrix. To get the translated vertex, you simply need to multiply the vertex by the transformation matrix, where the result is also a convenient 1×4 matrix. For a more detailed explanation, you can read about the transformation matrix here. Continue reading ‘CUDA Tutorial – 3d vertex transformations’ »

You might want to get started with OpenCL after working with another parallel computing framework. CUDA, for instance, is pretty nice, and some of its processing flow algorithms are pretty concrete. The way that the main memory and GPU memory copy processing data and results might call to mind some aspects of cloud computing. However, the only GPU systems with CUDA capabilities ship from Nvidia. This isn’t too bad for those who are only working with Nvidia chipsets, and they’re really quite common. However, there’s always going to be someone who ruins the fun by sticking with an AMD or IBM device.

Apple originally developed the Open Computing Language framework, and the non-profit Khronos Group consortium manages it. Since it’s royalty free, developers in a particular organization might want to set up a cloud computing environment to share code and the latest football scores.

This sort of technology is well applied to the world of computer games, where the OpenCL framework’s large distribution base can be particularly useful. GPU chips are used not only to render graphics, but also perform game physics calculations. Nevertheless, that’s not the only way to use the GPU. It can be repurposed for mathematical calculations. Cryptography and computational biology are just a few of the fields that can be given a boost in this way. Everyone would rather write a biophysics formula calculator than a first person shooter, right?

Regardless, one of the best ways to get started is to ensure that the hardware being developed for supports the OpenCL standard. Make sure that you have the right SDK and runtime files, and then you can usually proceed without development without too much trouble. Some experience with C99 might help, but it really isn’t required. C99 was the language that the OpenCL’s computation kernel coding language is based around.

The language in question is extended to use parallelism without too much trouble, which is extremely important when working with these kinds of scenarios. However, advanced options like recursion, bit fields and variable-length arrays are gone. This can actually make it easier to start coding with than the actual C99 dialect.

When performing image transformation and manipulation techniques, it is often necessary to employ some sort of interpolation or filtering in order to obtain a good image quality. For example, if you scale an image, you can determine the final color of each pixel by either some basic nearest neighbor method, or a more advanced interpolation method. However, an interpolation method will invariably offer better final image quality. In this tutorial, we’ll be writing a function to rotate an image, using bilinear interpolation. This tutorial also demonstrates how to perform a high quality image rotate transformation, however, that is not the focus of this tutorial, but rather the example transform being performed. Continue reading ‘Coding Bilinear Interpolation’ »

In a previous article about image processing with SSE, we used some basic SSE intrinsics to perform a very easy image manipulation routine, removing all blue from an image. This task was easy, since each pixel was 8 bits per component, with 4 components (ARGB). However, for more advanced image processing functions such as 2D convolution, it is preferable to work with each color component as a 32-bit floating point number rather than an 8-bit unsigned integer. Continue reading ‘Advanced Image Processing with SSE’ »

In the previous tutorial, intro to image processing with CUDA, we examined how easy it is to port simple image processing functions over to CUDA. In this tutorial, we’ll be going over a substantially more complex algorithm, and how to port it to CUDA with incredible ease. Continue reading ‘Advanced Image Processing with CUDA’ »

CUDA is great for any compute intensive task, and that includes image processing. In this tutorial, we’ll be going over why CUDA is ideal for image processing, and how easy it is to port normal c++ code to CUDA. Continue reading ‘Intro to image processing with CUDA’ »

Image warps and other distortions are significantly more complicated than simple image processing techniques such as convolution. This tutorial will cover how to twist an image in the center. This exact code can be modified to do twists or other types of image warps. Continue reading ‘Image twist and swirl algorithm’ »