Modern graphics processing units (GPUs) contain hundreds of arithmetic units and can be harnessed to provide tremendous acceleration for many numerically intensive scientific applications. Beginning with version 1.9, VMD supports CUDA for GPU acceleration of electrostatic potential map calculations, for implicit ligand sampling, calculation of radial distribution functions, 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 263 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 older versions of 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 by the host Windowing system. For laptop systems, a 512MB GPU will work for small calculations, but there may not be enough memory to work with large macromolecules or biomolecular complexes.
  • The Quadro 5800 and Tesla C1060 GPUs are ideal for accelerating VMD as they have 4GB of GPU memory, enough even for large calculations.
  • Tesla series GPUs are best used for long-running analysis calculations since their use cannot disrupt the host windowing system by virtue of their lack of display output hardware.

Conflicts with Google Chrome and CUDA on entry-level GPUs

We have recently observed that the latest versions of Google Chrome can interfere with the ability for VMD and other programs to be able to use CUDA. Thus far this has primarily occured on some laptop GPUs and entry-level desktop GPUs that have very modest amounts of on-board memory, e.g. 256MB of GPU memory or less. So far there have been no reports of problems of Chrome interfering with mid-range or high-end GPUs that have more on-board memory. If you have a GPU with only 256MB of on-board memory, then we would advise you either to avoid running Chrome and VMD simultaneously, or to set environment variables to tell VMD not to use the display GPU, so that Chrome will not create problems for CUDA usage in VMD. See below for further guidance on disabling the use of display GPUs.

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.

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.

Several examples of VMD CUDA startup messages:

Info) VMD for MACOSXX86, version 1.9 (March 14, 2011)
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, 2 CPUs detected.
Info) Creating CUDA device pool and initializing hardware...
Info) Detected 1 available CUDA accelerator:
Info)   [0] GeForce 9400M       2 SM_1.1 @ 1.10 GHz,  253MB RAM, KTO, ZCP
Info) OpenGL renderer: NVIDIA GeForce 9400M OpenGL Engine
Info)   Features: STENCIL MDE CVA MTX NPOT PP PS GLSL(OVF)
[... beginning of VMD OpenGL messages ...]


Info) VMD for LINUX, version 1.9 (March 14, 2011)
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: 5629MB (71%)
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, 1023MB RAM, KTO, OIO, ZCP
Info)   [1] Tesla C870         16 SM_1.0 @ 1.35 GHz, 1535MB RAM
Info)   [2] Tesla C870         16 SM_1.0 @ 1.35 GHz, 1535MB RAM
[... beginning of VMD OpenGL messages ...]


Info) VMD for LINUX, version 1.9 (March 14, 2011)
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: 6344MB (80%)
Info) Detected 2 CUDA accelerators:
Info)   [0] GeForce GTX 285    30 SM_1.3 @ 1.48 GHz, 1023MB RAM, KTO, OIO
Info)   [1] Quadro NVS 290      2 SM_1.1 @ 0.92 GHz,  255MB RAM, OIO
Info) Creating CUDA device pool and initializing hardware...
[... beginning of VMD OpenGL messages ...]