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 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. GPU-Omega is also incompitable with hydrogen sampling, which is turned off in the default sampling mode. As a result of these, 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, and set OEMolBuilderOptions.SetSampleHydrogens to False.

  • 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.

Warning

To use GPU-Omega with child processes a new OEOmega object must be created per child. If attempting to use the same instance of an OEOmega object in child processes, conformer generation will fall back to the CPU.