OpenMM
|
A Platform defines an implementation of all the kernels needed to perform some calculation. More...
#include <Platform.h>
Public Member Functions | |
virtual | ~Platform () |
virtual const std::string & | getName () const =0 |
Get the name of this platform. More... | |
virtual double | getSpeed () const =0 |
Get an estimate of how fast this Platform class is. More... | |
virtual bool | supportsDoublePrecision () const =0 |
Get whether this Platform supports double precision arithmetic. More... | |
const std::vector< std::string > & | getPropertyNames () const |
Get the names of all Platform-specific properties this Platform supports. More... | |
virtual const std::string & | getPropertyValue (const Context &context, const std::string &property) const |
Get the value of a Platform-specific property for a Context. More... | |
virtual void | setPropertyValue (Context &context, const std::string &property, const std::string &value) const |
Set the value of a Platform-specific property for a Context. More... | |
const std::string & | getPropertyDefaultValue (const std::string &property) const |
Get the default value of a Platform-specific property. More... | |
void | setPropertyDefaultValue (const std::string &property, const std::string &value) |
Set the default value of a Platform-specific property. More... | |
virtual void | contextCreated (ContextImpl &context, const std::map< std::string, std::string > &properties) const |
This is called whenever a new Context is created. More... | |
virtual void | contextDestroyed (ContextImpl &context) const |
This is called whenever a Context is deleted. More... | |
void | registerKernelFactory (const std::string &name, KernelFactory *factory) |
Register a KernelFactory which should be used to create Kernels with a particular name. More... | |
bool | supportsKernels (const std::vector< std::string > &kernelNames) const |
Determine whether this Platforms provides implementations of a set of kernels. More... | |
Kernel | createKernel (const std::string &name, ContextImpl &context) const |
Create a Kernel object. More... | |
Static Public Member Functions | |
static void | registerPlatform (Platform *platform) |
Register a new Platform. More... | |
static int | getNumPlatforms () |
Get the number of Platforms that have been registered. More... | |
static Platform & | getPlatform (int index) |
Get a registered Platform by index. More... | |
static Platform & | getPlatformByName (const std::string &name) |
Get the registered Platform with a particular name. More... | |
static Platform & | findPlatform (const std::vector< std::string > &kernelNames) |
Find a Platform which can be used to perform a calculation. More... | |
static void | loadPluginLibrary (const std::string &file) |
Load a dynamic library (DLL) which contains an OpenMM plugin. More... | |
static std::vector< std::string > | loadPluginsFromDirectory (const std::string &directory) |
Load multiple dynamic libraries (DLLs) which contain OpenMM plugins from a single directory. More... | |
static const std::string & | getDefaultPluginsDirectory () |
Get the default directory from which to load plugins. More... | |
static const std::string & | getOpenMMVersion () |
Get a string containing the version number of the OpenMM library. More... | |
Protected Member Functions | |
ContextImpl & | getContextImpl (Context &context) const |
Get the ContextImpl for a Context. More... | |
const ContextImpl & | getContextImpl (const Context &context) const |
Get the ContextImpl for a Context. More... | |
Protected Attributes | |
std::vector< std::string > | platformProperties |
A Platform defines an implementation of all the kernels needed to perform some calculation.
More precisely, a Platform object acts as a registry for a set of KernelFactory objects which together implement the kernels. The Platform class, in turn, provides a static registry of all available Platform objects.
To get a Platform object, call
Platform& platform Platform::findPlatform(kernelNames);
passing in the names of all kernels that will be required for the calculation you plan to perform. It will return the fastest available Platform which provides implementations of all the specified kernels. You can then call createKernel() to construct particular kernels as needed.
|
virtual |
|
virtual |
|
virtual |
Kernel createKernel | ( | const std::string & | name, |
ContextImpl & | context | ||
) | const |
Create a Kernel object.
If you call this method multiple times for different contexts with the same name, the returned Kernels are independent and do not interact with each other. This means that it is possible to have multiple simulations in progress at one time without them interfering.
If no KernelFactory has been registered for the specified name, this will throw an exception.
|
static |
Find a Platform which can be used to perform a calculation.
kernelNames | the names of all kernels which will be needed for the calculation |
References Platform::getSpeed().
|
protected |
Get the ContextImpl for a Context.
|
protected |
Get the ContextImpl for a Context.
|
static |
Get the default directory from which to load plugins.
If the environment variable OPENMM_PLUGIN_DIR is set, this returns its value. Otherwise, it returns a platform specific default location.
|
pure virtual |
Get the name of this platform.
This should be a unique identifier which can be used to recognized it.
|
static |
Get the number of Platforms that have been registered.
|
static |
Get a string containing the version number of the OpenMM library.
|
static |
const string & getPropertyDefaultValue | ( | const std::string & | property | ) | const |
Get the default value of a Platform-specific property.
This is the value that will be used for newly created Contexts.
property | the name of the property to get |
const vector< string > & getPropertyNames | ( | ) | const |
Get the names of all Platform-specific properties this Platform supports.
|
virtual |
|
pure virtual |
Get an estimate of how fast this Platform class is.
This need not be precise. It only is expected to return an order or magnitude estimate of the relative performance of different Platform classes. An unoptimized reference implementation should return 1.0, and all other Platforms should return a larger value that is an estimate of how many times faster they are than the reference implementation.
Referenced by Platform::findPlatform().
|
static |
Load a dynamic library (DLL) which contains an OpenMM plugin.
Typically, each Platform is distributed as a separate dynamic library. This method can then be called at runtime to load each available library. Each library should contain an initializer function to register any Platforms and KernelFactories that it contains.
If the file does not exist or cannot be loaded, an exception is thrown.
file | the path to the dynamic library file. This is interpreted using the operating system's rules for loading libraries. Typically it may be either an absolute path or relative to a set of standard locations. |
|
static |
Load multiple dynamic libraries (DLLs) which contain OpenMM plugins from a single directory.
This method loops over every file contained in the specified directory and calls loadPluginLibrary() for each one. If an error occurs while trying to load a particular file, that file is simply ignored.
directory | the path to the directory containing libraries to load |
void registerKernelFactory | ( | const std::string & | name, |
KernelFactory * | factory | ||
) |
Register a KernelFactory which should be used to create Kernels with a particular name.
The Platform takes over ownership of the factory, and will delete it when the Platform itself is deleted.
name | the kernel name for which the factory should be used |
factory | the factory to use for creating Kernels with the specified name |
void setPropertyDefaultValue | ( | const std::string & | property, |
const std::string & | value | ||
) |
Set the default value of a Platform-specific property.
This is the value that will be used for newly created Contexts.
property | the name of the property to set |
value | the value to set for the property |
|
virtual |
|
pure virtual |
Get whether this Platform supports double precision arithmetic.
If this returns false, the platform is permitted to represent double precision values internally as single precision.
bool supportsKernels | ( | const std::vector< std::string > & | kernelNames | ) | const |
Determine whether this Platforms provides implementations of a set of kernels.
kernelNames | the names of the kernels of interests |
|
protected |