11-24-2013 11:30 PM
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!
11-25-2013 06:58 PM
This is very interesting. Will read it.
Xsword