GPU Computing

cancel
Showing results for 
Search instead for 
Did you mean: 

Parallel image processing for high-speed particle tracking

Earlier this year we published a peer-reviewed journal article that describes a new high-speed particle tracking instrument. The article can be found here: http://dx.doi.org/10.1063/1.4802678

The basic idea (relevant to Labview and CUDA) is that the program uses Labview to integrate a high-speed camera and a custom-written CUDA program. The CUDA program is compiled into a DLL using MS Visual Studio. We can call the DLL from Labview using a Call Library Function node. The program takes a stack of (~100) images and finds the X,Y,Z positions of ~10 beads in each image. The algorithm requires some Fourier transforms, and look up-tables, and so is computationally intensive (and perfect for a GPU). As a results of the CUDA implementation, we are no longer limited by the particle-tracking algorithm. We are now limited only by the bandwidth of the ethernet cable that transfers images to the GPU. We use this program on a regular basis to collect data for academic research in biophysics.

We decided to make our source code (Labview and CUDA) completely open-source, and you can download it here: http://www1.engr.ucsb.edu/~saleh/ The program includes a minimum working Labview example that calls a DLL (that calls CUDA functions).

A big shoutout to Andrey_Dmitriev for showing the community how to get a simple CUDA program talking to Labview! Most of the CUDA code was written by Shawn Tabrizi during his undergraduate internship.

Comments and questions on the code are welcome!

Message 1 of 2
(5,866 Views)

This is very interesting. Will read it.

Xsword

0 Kudos
Message 2 of 2
(5,085 Views)