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.8.7, VMD supports CUDA for GPU acceleration of electrostatic potential map calculations, for implicit ligand sampling, 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 185 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 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 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.

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.8.7beta1 (April 29, 2009)
Info) Email questions and bug reports to
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...

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.