SIFT - Gaussian Convoultion

I am in the process of developing SIFT to run on CUDA and I need some advice. As the first step in SIFT I need to run Gaussian convolutions on an image.
What I hope to do is to, create a 1D array of size width*height and copy that to the device and do the calculations.

What I would like to know is, whether this is the best way to do this ?

Thanks in advance.


There is an example of 2D convolution in the SDK, convolutionSeparable, start there.

Just for information: SIFT on the GPU is already done by “MÃ¥rten Björkman” ( and “Changchang Wu” (

Don’t forget GPU-SURF, it’s a variation on SIFT, but most of the calculations I propose in the paper are also applicable to SIFT.
It runs at 100+FPS on a GF8800GTX. (best paper award @ CVGPU 2008)



Many thanks to everyone who replied. Yes I did see the other two implementations on SIFT. However I’d like to try and have a go at implementing one also.

I also ran into the issue of passing a 2d array to a global function. Can anyone point out the correct syntax for doing this.