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 319 series drivers or newer are strongly recommended, but older drivers will work in many cases. Current drivers are required for VMD builds that include support for GPU ray tracing, and other features that are new to VMD 1.9.2. 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, 6000, 7000, and the Tesla K20, K40, and K80, and the GeForce GTX 5[789]0, 6[78]0, 7[78]0 Ti, 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.2beta1 (September 12, 2014)
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) Free system memory: 61889MB (96%)
Info) Creating CUDA device pool and initializing hardware...
Info) Detected 3 available CUDA accelerators:
Info) [0] GeForce GTX TITAN Black 15 SM_3.5 @ 0.98 GHz, 6.0GB RAM, AE1, ZCP
Info) [1] GeForce GTX 750 Ti  5 SM_5.0 @ 1.08 GHz, 2.0GB RAM, AE1, ZCP
Info) [2] Quadro K5000        8 SM_3.0 @ 0.71 GHz, 4.0GB RAM, AE2, ZCP
Info) OpenGL renderer: GeForce GTX TITAN Black/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) Dynamically loaded 2 plugins in directory:
Info) /Projects/vmd/pub/linux64/lib/vmd192b1/plugins/LINUXAMD64/molfile

Info) VMD for LINUX, version 1.9.2beta1 (September 12, 2014)
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, 4 CPUs detected.
Info) Free system memory: 6216MB (78%)
Info) Creating CUDA device pool and initializing hardware...
Info) Detected 3 available CUDA accelerators:
Info) [0] GeForce GTX 285    30 SM_1.3 @ 1.48 GHz, 1.0GB RAM, KTO, AE1, ZCP
Info) [1] Tesla C870         16 SM_1.0 @ 1.35 GHz, 1.5GB RAM
Info) [2] Tesla C870         16 SM_1.0 @ 1.35 GHz, 1.5GB RAM
Info) OpenGL renderer: GeForce GTX 285/PCIe/SSE2
Info)   Features: STENCIL MSAA(4) MDE CVA MTX NPOT PP PS GLSL(OVFG) 
Info)   Full GLSL rendering mode is available.
Info)   Textures: 2-D (8192x8192), 3-D (2048x2048x2048), Multitexture (4)
Info) Dynamically loaded 2 plugins in directory:
Info) /Projects/vmd/pub/linux/lib/vmd192b1/plugins/LINUX/molfile

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.