GPU-Omega refers to the CUDA-enabled GPU implementation of Omega TK. GPU-Omega takes advantage of a GPU during torsion driving for accelerated conformer generation. To make use of GPU-Omega conformer generation please follow the guidelines below.
The following is required in order to use GPU-accelerated OpenEye toolkits and applications:
CUDA-enabled OpenEye software is only available on supported Linux platforms. For supported Linux platforms see above and/or the Platform Support Page
An NVIDIA Tesla, Quadro, or GeForce GPU with a compute capability of 3.5 or higher is required on your system. For a comprehensive table of which GPUs fall into which compute capability category please refer to the CUDA wikipedia page.
- Minimum NVIDIA Driver version: 450.x.
- CUDA is not required to be installed.
We recommend driver 450.80.02 and we strongly advise manually downloading and installing the appropriate NVidia driver for your system as opposed to using a package manager.
To install, root privilege is required. Follow these steps:
Download the driver to the machine you are installing it on.
chmod +x the driver package to make it executable.
Ensure you have disabled X-server by killing any running sessions. Reboot may be required if X-server is still running after this step.
Disabling X-server requires different processes to be killed depending on your Linux distribution. See Nvidia installation guide for more details.
The NVidia kernel module can often conflict with the open source Nouveau display drivers depending on your specific Linux distribution. The NVidia documentation is a much more complete and up-to-date source for information on how to work around this issue. See Disabling Nouveau on the NVIDIA website.
Install the driver by sudo ./NVIDIA-Linux-x86_64-450.80.02.run and follow the step-by-step installation instructions.
For more details on driver installations see the CUDA Installation Guide
The output of the nvidia-smi command is extremely useful when debugging GPU issues. Please include the output from nvidia-smi in any request to email@example.com.
To get the most performance out of an NVIDIA Graphics card, use the persistence daemon to switch persistence mode on across all cards on the system (root privilege required):
sudo nvidia-persistenced --user foo
This will automatically enable persistence mode after reboot.
For full instructions on persistence daemon see the Persistence daemon section of the NVIDIA docs.
For all torsion driving sampling modes except dense modes, if a GPU is detected at runtime, torsion driving will be carried out on the GPU by default. To turn this feature off use OETorDriveOptions.SetUseGPU.
The following code shows how to turn off GPU-omega prior to conformer generation using sparse mode:
Example of turning off GPU-Omega
OEOmegaOptions omegaOptsSparse = new OEOmegaOptions(); omegaOptsSparse.GetTorDriveOptions().SetUseGPU(false); OEOmega omega = new OEOmega(omegaOptsSparse); omega.call(mol);
GPU-Omega uses the default OEMMFFSheffieldFFType.MMFF94Smod_NOESTAT forcefield. If attempting to use an alternative forcefield conformer generation will fall back to the CPU. As a result of this, GPU-Omega is not compatible with default settings of OEOmegaSampling.Dense sampling mode. To take advantage of a GPU with dense sampling mode set OETorDriveOptions.SetForceField to OEMMFFSheffieldFFType.MMFF94Smod_NOESTAT.
The OEOmegaIsGPUReady utility function is provided for detecting available GPUs on a system.
The following code demonstrates how to query the system for an available GPU and then set the force field to default in order to use the GPU for dense mode conformer generation:
Example of detecting a GPU and changing the force field for dense mode conformer generation
OEOmegaOptions omegaOptsDense = new OEOmegaOptions(OEOmegaSampling.Dense); if (oeomegalib.OEOmegaIsGPUReady()) omegaOptsDense.GetTorDriveOptions().SetForceField(OEOmegaForceFieldType.MMFF94Smod_NOESTAT); OEOmega omegaDense = new OEOmega(omegaOptsDense); omegaDense.call(mol);
GPU-Omega does not support the distance geometry method of torsion driving and therefore is incompatible with OEMacrocycleOmega.