The Andor GPU Express library has been created to simplify and optimize data transfers from camera to a CUDA-enabled NVidia Graphical Processing Unit (GPU) card to facilitate accelerated GPU processing as part of the acquisition pipeline. GPU Express integrates easily with SDK3 (Windows) for Andor sCMOS cameras, providing a user-friendly but powerful solution for management of high bandwidth data flow challenges; ideal for data intensive applications such as Light Sheet Microscopy, Super-Resolution Microscopy and Adaptive Optics.
The Andor GPU Express library has been created to simplify and optimize data transfers from camera to a CUDA-enabled NVidia GPU card to facilitate accelerated GPU processing as part of the acquisition pipeline. GPU Express integrates easily with Andor’s SDK3 (Windows) library, providing a user-friendly but powerful solution for management of high bandwidth data flow challenges.
GPU offers the advantages of:
It is possible to send data to a GPU card for processing without the GPU Express library, via GPU processing library functions (with Nvidia cards, this would be achieved by using the CUDA library). However, for this to occur, the user is required to explicitly manage the buffers required to hold data on the CPU and the GPU. They also have to copy the data from and to the GPU, via the CPU.
The GPU Express library provides a simpler solution to the user, via the management of all required CPU and GPU buffers to hold and pass the acquired data. The copy functions of the GPU Express library are also optimised to reduce latency during the copies from and to the GPU to achieve acceleration of real time processing frame rates for a given GPU card. As such, non-expert users can achieve this optimisation, and more expert users can focus on the algorithms to be run on the GPU, and use a simplified API for their optimised copies.
Simple API – Provides a clean interface that integrates easily with Andor’s SDK3 for Windows library - Reduces development time
Accessible and thorough support manual, including tutorial and multiple user scenario examples -
Management of all required buffers in the GPU memory space -
Management of intermediate CPU buffers for copy to GPU memory from camera -
Provision of functions for safe allocation and de-allocation (and locking/unlocking) of user output buffers on the CPU side to store the result of GPU processing -
Provision of functions for safe locking/pinning and unlocking/unpinning of user output buffers on the CPU side (as required for asynchronous memory copies) to store the result of GPU processing -
Support for multiple camera acquisition -
Explicit Synchronisation call, to ensure that all previous copies and processing within a specified GPU Express Path are complete before continuing -
Multiple copy functions - copies to/from GPU and CPU as required for a particular application -
Management of CUDA streams - provides overlapping of copies to/from the GPU memory with accelerated GPU processing -
Facilitates multiple GPU processing -
A CUDA accelerated version of Andor’s unpacking library (CUDA_atunpackerlib.lib) is also provided for fast conversion between Pixel Encoding types and to provide unpacking of data due to granularity restrictions on the row width, as is the case with Camera Link frame grabbers -