GPU ChecklistDo you have a Nvidia CUDA enabled GPU?
To use Huygens GPU acceleration you need a CUDA-enabled Nvidia graphics card with a minimum compute capability of 3.0. You can find the compute capability of your graphics card on this page. You can find an overview of NVIDIA cards that can be used in combination with the Huygens GPU option here.
What is the latest CUDA version that is supported by Huygens?
CUDA Toolkit 11.6 is the latest version that is confirmed to be compatible with the current Huygens version (available on the download page).
If you use an older version of Huygens then you might need an older CUDA version.
Did you install both the Nvidia driver for your specific GPU card and the CUDA Toolkit?
Huygens currently requires two libraries. The first is the "Cuda library" ("nvcuda.dll" on Windows and "libcuda.so" on Linux), which is usually included in the installation of the device driver for the graphics card that is installed with or by the operating system. The second is the "Cuda FFT library" ("cufft64_70.dll", "cufft64_75.dll", or "cufft64_80.dll" respectively for Cuda versions 7.0, 7.5 and 8.0 on Windows, or "libcufft.so" on Linux).
Up to Cuda version 10.0 the number after the underscore in the dll name was 10 times the major version plus the minor version. However, Cuda version 10.1 was released with "cufft64_10.dll" instead of the expected "cufft64_101.dll"). Huygens version 19.04 and higher take this into account and should work with Cuda 10.1. If you have Cuda 10.1 on Windows (perhaps as a result of upgrading to Windows 10) together with a Huygens version below 19.04 and you are unable to upgrade Huygens, then a work-around is to downgrade the Cuda Toolkit to a version below 10.1. In order to avoid problems in those cases, we recommend to uninstall Cuda Toolkit 10.1, reboot, and install an older Cuda Toolkit.
The Cuda FFT library is installed as part of the "CUDA Toolkit", which is supplied by Nvidia. The Nvidia graphics driver is also part of this Cuda Toolkit. If Huygens reports in the GPU status window
[OK] Succesfully loaded CUDA library
and then subsequently
[ERROR] Could not link with cufft. Failed to load the CUDA FFT library
this would indicate that the driver is installed, but the CUDA Toolkit is not.
You can install the Nvidia driver and CUDA using one of the Nvidia installers. In case the driver was already installed, we recommend to check the version of the already installed driver and compare it to the one included in the CUDA Toolkit installer, and only let the CUDA Toolkit reinstall the driver in case its version is newer (keeping the existing driver if the CUDA Toolkit's version is older).
You may encounter problems installing on ubuntu 16.04 for a Geforce GTX 650 card. In this case, cuda is also available in the ubuntu-multiverse repository. The package can be installed using:
sudo apt install nvidia-cuda-dev
You can test if yiou have a working graphics driver by running the "nvidia-smi" command line tool. On Linux, this is typically installed in the search path for executables, so you can run it by opening a command line terminal and typing
On Windows, it is typically installed in C:\Program Files\NVIDIA Corporation\NVSMI\nvidia-smi.exe. You can run it like this:
1) Open a cmd.exe command prompt by typing:
2) Change the current directory to the correct folder by typing:
cd "\Program Files\NVIDIA Corporation\NVSMI"
3) Run nvidia-smi by typing:
An alternative location where nvidia-smi.exe could be installed on Windows is in C:\Windows\System32\nvidia-smi.exe.
If succesful, it should report the graphics driver version in the top left, the maximum supported Cuda Toolkit version (which is not necessarily the same thing as the currently installed Cuda Toolkit version) in the top right, and the status of all detected GPU cards. If there are errors, then the installation of your graphics driver plus Cuda Toolkit combination is not working properly. After installation of new versions, a reboot is often necessary to activate the new graphics driver.
Is your graphics driver version not too old and not too new for your Cuda Toolkit?
If the GPU status window displays
[ERROR] Unable to create CUDA FFT plan. Known CUDA FFT error occurred. Plan creation and plan execution were on different GPUs.this may indicate that the graphics driver version is imcompatible with the CUDA toolkit (which includes the CUFFT library) being used. Older versions of the CUDA Toolkit installer used to automatically update the graphics driver as part of the CUDA Toolkit installation, but the download page of for example Cuda 9.1 contains a note that the user should check if the driver version is at least R390 before installing the CUDA Toolkit. See also the release notes of the newest Cuda Toolkit on the Nvidia website. A table (Table 1) listing the minimum required driver versions for Windows and Linux for various Cuda Toolkit versions can be found here https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html.
Does your graphics driver support the GPU card you have?
If the GPU status window displays
[ERROR] Unable to create a CUDA context.
this may indicate that the specific graphics driver used does not support using Cuda on the installed graphics card(s), even though it is recent and the graphics card supports Cuda. An example of an incompatible combination is the use of a "data center" graphics driver together with a consumer-line graphics card. If this error occurs, please check the cards that are supported by the exact version of your graphics driver (which is reported by nvidia-smi, see above) on the Nvidia web site, or alternatively, download a suitable driver based on the GPU model. https://www.nvidia.com/Download/index.aspx?lang=en-us
Did you install the GPU version of the Huygens software?
Huygens GPU acceleration is available from Huygens version 15.10. You can download Huygens from our download page. GPU-accelerated Huygens deconvolution is available for Windows and GNU/Linux (Ubuntu / Debian / Red Hat / Fedora / CentOS). As Apple does not sell new OS X systems with Nvidia CUDA-enabled graphics cards and has stated that they will not do so unfortunately, SVI cannot offer the GPU Options for OS X systems.
Do you have a valid license for GPU acceleration?
Usage of small GPUs by Huygens is free if you have Small GPU card. For medium range or high-end GPU cards, you may need a Medium GPU option (g1), Large GPU option (g2) or Extreme GPU option (g3) in your license. You can find an overview of suitable GPU cards for each of these options here.
If you want to see whether your current license fits the specifications of your GPU, open the Huygens License Overview (via the Help menu) and select the active license. Click explain and check if the GPU flag 'g1', 'g2' or 'g3' is present under Flags. If this is not the case, please contact license at svi.nl.
Did you enable the GPU acceleration?
You can enable GPU acceleration in the Preferences Window (Edit > Preferences...) by checking "Enable GPU acceleration". If the checkbox is disabled you don't have a valid license for GPU acceleration or Nvidia CUDA enabled GPU in your system.
Checking the status of GPU acceleration
You can check the status of the GPU acceleration by opening the GPU status window. The GPU status window is available in the toolbar by default and accessible in Huygens through the main menu under Help.
The GPU status window displays a warning, how to solve this?
Depending on the type of warning, please check the following:
- No CUDA library was found: Huygens could not find the CUDA library, did you install it in the default directory? Also make sure that you have the latest Nvidia drivers for your card installed.
- CUDA library too old: Please install a newer version of CUDA.
- Loading CUDA library failed: Huygens could not load the CUDA library, are you sure it is installed correctly?
- GPU performance too low: The performance of your GPU is too low and will not be used. Processing on the CPU is likely to be faster.
Does my GPU have enough memory available?
You can check the memory usage of your graphics card in the GPU status window. The global memory usage and the memory usage of the Hugens instance that you are currently using are reported. Global memory usage is memory usage by the Operating System, Huygens and other active programs. If there is not enough memory available you can try closing other applications to free up some GPU memory. Setting the number of bricks to one during deconvolution may force the deconvolution to the CPU because single brick operation may require more memory than available on the GPU. In some cases, microscopy conditions necessitate large overlaps between adjacent bricks. In these cases multi brick deconvolution becomes inefficient and single brick processing is preferable, even if that means processing must be done on the slower CPU.