Software package for holographic optical trapping (HOT) released under GPL and LGPL. Requires a CUDA compatible GPU and LabVIEW
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs and license


HOTlab - free and open source software for Holographic Optical Tweezers (HOT)

The project consists of two parts: 
1. GenerateHologramCUDA.dll - a dll written in C for CUDA which generates holograms on CUDA suported GPUs.
2. Martins HOT interface - a GUI program for HOT applications written in LabVIEW. 

NOTE: Martins HOT interface is temporarily removed due to a major overhaul of the software. 

A quick start guide for the LabVIEW program is located in the "doc" folder along with a detailed description of GenerateHologramCUDA.dll
The dll is licensed under LGPL and the LabVIEW programs under GPL.

The program requires CUDA to be installed and of course a CUDA enabled GPU. Functionaliy has been verified on the following GPUs from Nvidia: 

GeForce GTX 285
GeForce GTX 480
GeForce GTX 580
GeForce GTX 680
Geforce GS 8600M (Notebook)
Quadro FX 5600
GeForce GT 210

The main program, called "Martins HOT", is located in the LabVIEW folder along with "GenerateHologramCUDA.dll". GenerateHologramCUDA.dll can be compiled for use with SLM:s connected to a PCI or PCIe interface or for use with no SLM installed. By default, the LabVIEW program links to the dll compiled for PCIe based SLMs. To change to another version, just copy and replace GenerateHologramCUDA.dll with the dll located in  \GenerateHologramCUDA_dll\SM[XX]_[YYYY]SLM. [XX] indicates which "Compute capability" the dll is optimized for and [YYYY] indicates the type of SLM interface. To determine the compute capability of your GPU, check 

The LabVIEW program acquires and displays microscope images in which traps can be positioned and controlled directly. This requires NI Vision Acquisition software to be installed along with a camera connected with firewire, GigE or Camera Link. 

Functions for particle tracking are included but requires the NI Vision Development Module to be installed. Those functions are therefore disabled by default. 

To use the dll compiled for use with a BNS SLM, Microsoft Visual C++ 2008 SP1 Redistributable Package may have to be installed. The Redistributable Package can be downloaded from Microsoft:

Instructions for compilation and use of the GenerateHologramCUDA dll:

To compile CUDA project:
-Install Visual Studio 2008
-Install CUDA toolkit and CUDA SDK (the included dll:s are compiled for CUDA 3.2 and CUDA 4.0RC2)
-Download and run the CUDA VS Wizard (

To compile dll for SLM communication:
-Right click LoadHologram.cpp and select "Exclude from project" (if included).
-Select "add/existing item".
-navigate to the "LoadHologramPCIe" or "LoadHologramPCI" folder (depending on your hardware) and select "LoadHologram.cpp".
-Rebuild solution

To run dll with SLM enabled:
-Put PCIEboard.dll and wdapi900.dll in system32 folder (or add other location to environment variables (?)) . For the PCI version, put Bnsboard.dll, 512Aboard.dll and 256Aboard.dll in the system32 folder.
-Put LUT file for the SLM in the same folder as GenerateHologramCUDA.dll.