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 270 series drivers or newer are required for CUDA acceleration support in VMD. On systems with older drivers, VMD will not recognize the GPUs, and/or will emit a warning message indicating that an out-of-date driver was detected.
  • If you obtain video 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 512MB GPU will work for small calculations, but there will not be enough memory to work with large macromolecules or biomolecular complexes.
  • The Quadro 5800, 6000, and 7000, and Tesla 1060, 2050, 2070, and 2090 GPUs are ideal for accelerating VMD. These GPUs contian between 3GB and 6GB of on-board memory, enough even for large QuickSurf renderings or high resolution potential map calculations.

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 LINUX, version 1.9.1 (January 28, 2012)
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: 4900MB (62%)
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, OIO, 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/PCI/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/vmd191rc0/plugins/LINUX/molfile

CUDA GPU "Exclusive" and "Prohibited" access modes

Beginning with CUDA version 2.2, 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.