GPU-Omega¶
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.
Attention
GPU-Omega is not available in the C# version of the toolkit.
Usage¶
GPU-Omega accelerates the torsion driving component of conformer generation in Omega TK and is available through the OEOmega and OETorDriver classes.
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 useOETorDriveOptions.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. GPU-Omega is also incompitable withhydrogen sampling
, which is turned off in the default sampling mode. As a result of these, GPU-Omega is not compatible with default settings ofOEOmegaSampling.Dense
sampling mode. To take advantage of a GPU withdense
sampling mode setOETorDriveOptions.SetForceField
toOEMMFFSheffieldFFType.MMFF94Smod_NOESTAT
, and setOEMolBuilderOptions.SetSampleHydrogens
toFalse
.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); omegaOptsDense.GetMolBuilderOptions().SetSampleHydrogens(false); } OEOmega omegaDense = new OEOmega(omegaOptsDense); if(omegaDense.call(mol)) oechem.OEWriteMolecule(ofs, mol);
GPU-Omega does not support the distance geometry method of torsion driving and therefore is incompatible with
OEMacrocycleOmega
.