Modern graphics processing units (GPUs) contain hundreds of arithmetic units and can be harnessed to provide tremendous acceleration for many numerically intensive scientific applications. VMD supports CUDA for GPU acceleration of electrostatic potential map calculations, for implicit ligand sampling, for display of molecular surfaces with the "QuickSurf" representation, and for display of molecular orbitals for quantum chemistry visualization. Research publications describing the design of these algorithms are available here.

VMD CUDA Acceleration Hardware and Software Requirements

  • VMD requires NVIDIA GPUs that support CUDA.
  • NVIDIA 361 series drivers or newer are required by VMD 1.9.3 builds that include support for CUDA, GPU ray tracing, and other GPU features VMD 1.9.3. On systems with drivers that are too old, VMD will not recognize the GPUs, and/or will emit warning messages indicating that an out-of-date driver was detected.
  • If you obtain NVIDIA drivers through a Linux package management system, you may need to verify that the package system correctly installs the appropriate symlinks for libcuda.so in /usr/lib/ on 32-bit or /usr/lib64 on 64-bit Linux systems, otherwise CUDA devices will not be recognized despite the correct driver version being installed. At the time of this writing, RPM prepackaged drivers for Fedora do NOT install libcuda.so symlinks correctly.
  • Some calculations have inherent GPU memory requirements, and will only run on the GPU(s) if the GPU device(s) have enough memory for the problem. In general, it is a good idea to use CUDA GPUs that have at least 1GB of memory, particularly if they are also used to drive displays for the windowing system. For laptop systems, a 768MB GPU will work for small calculations, but there will not be enough GPU memory to work with large macromolecules or biomolecular complexes.
  • The Quadro K5000, K6000, M6000, P5000, and P6000 and the Tesla K20, K40, K80, P40, P100, and the GeForce GTX 6[78]0, 7[78]0 Ti, 9[678]0, and GeForce GTX Titan series GPUs are ideal for accelerating VMD. These GPUs contian between 2GB and 12GB of on-board memory, enough even for large QuickSurf renderings and high resolution potential map calculations for large systems containing millions of atoms or CG particles.

Avoiding the use of GPUs for both graphics display and CUDA

By default, VMD will attempt to use all CUDA capable GPUs to accelerate its calculations. While a GPU is being used for CUDA calculations, it will be temporarily unresponsive for windowing system display updates (for any application). Similarly, if a graphics intensive application is running, GPUs used for display will often exhibit a noticable drop in performance. While this is usually not a problem for short-running visualization-related calculations such as molecular orbital computation, it can be problematic for long-running trajectory analysis jobs that keep the GPU heavily utilized. To prevent long-running GPU calculations from interfering with the responsiveness of the windowing system, the environment variable VMDCUDANODISPLAYGPUS can be set. When set, VMD will not use any GPUs with attached displays for computation. The compute-specific Tesla GPUs have no display connector and are always used by VMD unless they have been allocated exclusively by another application.

Example VMD CUDA Startup Messages

Info) VMD for LINUXAMD64, version 1.9.3 (November 28, 2016)
Info) http://www.ks.uiuc.edu/Research/vmd/                         
Info) Email questions and bug reports to vmd@ks.uiuc.edu           
Info) Please include this reference in published work using VMD:   
Info)    Humphrey, W., Dalke, A. and Schulten, K., `VMD - Visual   
Info)    Molecular Dynamics', J. Molec. Graphics 1996, 14.1, 33-38.
Info) -------------------------------------------------------------
Info) Multithreading available, 32 CPUs detected.
Info)   CPU features: SSE2 AVX 
Info) Free system memory: 59GB (93%)
Info) No CUDA accelerator devices available.
Info) OpenGL renderer: GeForce GTX 980/PCIe/SSE2
Info)   Features: STENCIL MSAA(4) MDE CVA MTX NPOT PP PS GLSL(OVFGS) 
Info)   Full GLSL rendering mode is available.
Info)   Textures: 2-D (16384x16384), 3-D (2048x2048x2048), Multitexture (4)
Info) Detected 3 available TachyonL/OptiX ray tracing accelerators
Info)   Compiling 1 OptiX shaders on 3 target GPUs...

Info) VMD for LINUXAMD64, version 1.9.3 (November 28, 2016)
Info) http://www.ks.uiuc.edu/Research/vmd/                         
Info) Email questions and bug reports to vmd@ks.uiuc.edu           
Info) Please include this reference in published work using VMD:   
Info)    Humphrey, W., Dalke, A. and Schulten, K., `VMD - Visual   
Info)    Molecular Dynamics', J. Molec. Graphics 1996, 14.1, 33-38.
Info) -------------------------------------------------------------
Info) Multithreading available, 40 CPUs detected.
Info)   CPU features: SSE2 AVX AVX2 FMA 
Info) Free system memory: 500GB (99%)
Info) Creating CUDA device pool and initializing hardware...
Info) Detected 3 available CUDA accelerators:
Info) [0] Quadro M6000 24GB  24 SM_5.2 @ 1.11 GHz, 24GB RAM, AE2, ZCP
Info) [1] Quadro M6000 24GB  24 SM_5.2 @ 1.11 GHz, 24GB RAM, AE2, ZCP
Info) [2] Quadro M6000 24GB  24 SM_5.2 @ 1.11 GHz, 24GB RAM, AE2, ZCP
Info) OpenGL renderer: Quadro M6000 24GB/PCIe/SSE2
Info)   Features: STENCIL MDE CVA MTX NPOT PP PS GLSL(OVFGS) 
Info)   Full GLSL rendering mode is available.
Info)   Textures: 2-D (16384x16384), 3-D (4096x4096x4096), Multitexture (4)
Info) Detected 3 available TachyonL/OptiX ray tracing accelerators
Info)   Compiling 1 OptiX shaders on 3 target GPUs...

CUDA GPU "Exclusive" and "Prohibited" access modes

It is possible to mark CUDA-capable GPUs for either "exclusive" access by only one process at a time (first come, first served), or with a "prohibited" access mode disallowing any compute-mode access. VMD observes these access modes and will honor these settings at runtime by avoiding use of prohibited mode devices, and correctly handling the situation of an in-use exclusive mode device.