Gromacs
2016.4
|
Generic GROMACS namespace.
Functionality for testing whether calls to mdrun produce the same energy and force quantities when they should do so.
Declares registerLegacyModules().
Declares the integrator for test particle insertion.
Declares the integrators for energy minimization and NMA.
Convenience macro to help us avoid ifdefs each time we use sysconf.
Classes | |
class | AbstractAnalysisData |
Abstract base class for all objects that provide data. More... | |
class | AnalysisData |
Parallelizable data container for raw data. More... | |
class | AnalysisDataHandle |
Handle for inserting data into AnalysisData. More... | |
class | AbstractAnalysisArrayData |
Abstract base class for data objects that present in-memory data. More... | |
class | AnalysisArrayData |
Simple in-memory data array. More... | |
class | AnalysisDataValue |
Value type for representing a single value in analysis data objects. More... | |
class | AnalysisDataFrameHeader |
Value type for storing frame-level information for analysis data. More... | |
class | AnalysisDataPointSetRef |
Value type wrapper for non-mutable access to a set of data column values. More... | |
class | AnalysisDataFrameRef |
Value type wrapper for non-mutable access to a data frame. More... | |
class | IAnalysisDataModule |
Interface for a module that gets notified whenever data is added. More... | |
class | AnalysisDataModuleSerial |
Convenience base class for serial analysis data modules. More... | |
class | AnalysisDataModuleParallel |
Convenience base class for parallel analysis data modules. More... | |
class | AnalysisDataModuleManager |
Encapsulates handling of data modules attached to AbstractAnalysisData. More... | |
class | AnalysisDataProxy |
Internal implementation class used to implement column modules. More... | |
class | AnalysisDataStorageFrame |
Allows assigning values for a data frame in AnalysisDataStorage. More... | |
class | AnalysisDataStorage |
Helper class that implements storage of data. More... | |
class | AnalysisDataFrameLocalDataSetHandle |
Handle to a single data set within frame-local data array. More... | |
class | AnalysisDataFrameLocalDataHandle |
Handle to a single frame data within frame-local data array. More... | |
class | AnalysisDataFrameLocalData |
Container for an array of frame-local values that supports parallel data processing. More... | |
class | AnalysisDataAverageModule |
Data module for independently averaging each column in input data. More... | |
class | AnalysisDataFrameAverageModule |
Data module for averaging of columns for each frame. More... | |
class | AnalysisDataDisplacementModule |
Data module for calculating displacements. More... | |
class | AnalysisDataFrameAverager |
Helper class for modules that average values over frames. More... | |
class | AnalysisHistogramSettingsInitializer |
Provides "named parameter" idiom for constructing histograms. More... | |
class | AnalysisHistogramSettings |
Contains parameters that specify histogram bin locations. More... | |
class | AbstractAverageHistogram |
Base class for representing histograms averaged over frames. More... | |
class | AnalysisDataSimpleHistogramModule |
Data module for per-frame histograms. More... | |
class | AnalysisDataWeightedHistogramModule |
Data module for per-frame weighted histograms. More... | |
class | AnalysisDataBinAverageModule |
Data module for bin averages. More... | |
class | AnalysisDataLifetimeModule |
Data module for computing lifetime histograms for columns in input data. More... | |
class | AnalysisDataPlotSettings |
Common settings for data plots. More... | |
class | AbstractPlotModule |
Abstract data module for writing data into a file. More... | |
class | AnalysisDataPlotModule |
Plotting module for straightforward plotting of data. More... | |
class | AnalysisDataVectorPlotModule |
Plotting module specifically for data consisting of vectors. More... | |
class | AnalysisDataParallelOptions |
Parallelization options for analysis data objects. More... | |
class | CommandLineHelpContext |
Context information for writing out command-line help. More... | |
class | GlobalCommandLineHelpContext |
Helper for passing CommandLineHelpContext into parse_common_args(). More... | |
class | CommandLineHelpModule |
Command-line module for producing help. More... | |
class | ConstArrayRef |
STL-like container for non-mutable interface to a C array (or part of a std::vector). More... | |
class | CommandLineHelpWriter |
Writes help information for Options. More... | |
class | CommandLineModuleSettings |
Settings to pass information between a module and the general runner. More... | |
class | ICommandLineModule |
Module that can be run from command line using CommandLineModuleManager. More... | |
class | CommandLineModuleGroupData |
Internal data for a CommandLineModuleManager module group. More... | |
class | CommandLineCommonOptionsHolder |
Encapsulates some handling of common options to the wrapper binary. More... | |
class | CommandLineModuleManager |
Implements a wrapper command-line interface for multiple modules. More... | |
class | CommandLineModuleGroup |
Handle to add content to a group added with CommandLineModuleManager::addModuleGroup(). More... | |
class | ICommandLineOptionsModuleSettings |
Settings to pass information between a CommandLineOptionsModule and generic code that runs it. More... | |
class | ICommandLineOptionsModule |
Module that can be run from a command line and uses gmx::Options for argument processing. More... | |
class | CommandLineParser |
Implements command-line parsing for Options objects. More... | |
class | IExecutableEnvironment |
Allows customization of the way various directories are found by CommandLineProgramContext. More... | |
class | CommandLineProgramContext |
Program context implementation for command line programs. More... | |
class | CpuInfo |
Detect CPU capabilities and basic logical processor info. More... | |
class | HardwareTopology |
Information about sockets, cores, threads, numa, caches. More... | |
struct | StaticLog2 |
Evaluate log2(n) for integer n statically at compile time. More... | |
struct | StaticLog2< 1 > |
Specialization of StaticLog2<n> for n==1. More... | |
struct | StaticLog2< 0 > |
Specialization of StaticLog2<n> for n==0. More... | |
class | BasicVector |
C++ class for 3D vectors. More... | |
class | ArrayRef |
STL-like container for an interface to a C array (or part of a std::vector). More... | |
class | SimulationSignal |
POD-style object used by mdrun ranks to set and receive signals within and between simulations. More... | |
class | SimulationSignaller |
Object used by mdrun ranks to signal to each other at this step. More... | |
class | TextTableFormatter |
Formats rows of a table for text output. More... | |
class | HelpManager |
Helper for providing interactive online help. More... | |
class | AbstractSimpleHelpTopic |
Abstract base class for help topics that have simple text and no subtopics. More... | |
class | AbstractCompositeHelpTopic |
Abstract base class for help topics that have simple text and subtopics. More... | |
class | SimpleHelpTopic |
Template for simple implementation of AbstractSimpleHelpTopic. More... | |
class | CompositeHelpTopic |
Template for simple implementation of AbstractCompositeHelpTopic. More... | |
class | HelpLinks |
Hyperlink data for writing out help. More... | |
class | HelpWriterContext |
Context information for writing out help. More... | |
class | IHelpTopic |
Provides a single online help topic. More... | |
class | RstParagraphIterator |
Iterator over reStructuredText paragraphs. More... | |
class | OptionStorageTemplate |
Templated base class for constructing option value storage classes. More... | |
class | AbstractOption |
Abstract base class for specifying option properties. More... | |
class | OptionTemplate |
Templated base class for constructing concrete option settings classes. More... | |
class | OptionInfo |
Gives information and allows modifications to an option after creation. More... | |
class | AbstractOptionStorage |
Abstract base class for converting, validating, and storing option values. More... | |
class | BooleanOption |
Specifies an option that provides boolean values. More... | |
class | IntegerOption |
Specifies an option that provides integer values. More... | |
class | Int64Option |
Specifies an option that provides 64-bit integer values. More... | |
class | DoubleOption |
Specifies an option that provides floating-point (double) values. More... | |
class | FloatOption |
Specifies an option that provides floating-point (float) values. More... | |
class | StringOption |
Specifies an option that provides string values. More... | |
class | EnumOption |
Specifies an option that accepts enumerated string values and writes the selected index into an enum variable. More... | |
class | BooleanOptionInfo |
Wrapper class for accessing boolean option information. More... | |
class | IntegerOptionInfo |
Wrapper class for accessing integer option information. More... | |
class | Int64OptionInfo |
Wrapper class for accessing 64-bit integer option information. More... | |
class | DoubleOptionInfo |
Wrapper class for accessing floating-point option information. More... | |
class | FloatOptionInfo |
Wrapper class for accessing floating-point option information. More... | |
class | StringOptionInfo |
Wrapper class for accessing string option information. More... | |
class | EnumOptionInfo |
Wrapper class for accessing enum option information. More... | |
class | BooleanOptionStorage |
Converts, validates, and stores boolean values. More... | |
class | IntegerOptionStorage |
Converts, validates, and stores integer values. More... | |
class | Int64OptionStorage |
Converts, validates, and stores integer values. More... | |
class | DoubleOptionStorage |
Converts, validates, and stores floating-point (double) values. More... | |
class | FloatOptionStorage |
Converts, validates, and stores floating-point (float) values. More... | |
class | StringOptionStorage |
Converts, validates, and stores string values. More... | |
class | EnumOptionStorage |
Converts, validates, and stores enum values. More... | |
class | OptionsBehaviorCollection |
Container for IOptionsBehavior objects. More... | |
class | FileNameOption |
Specifies an option that provides file names. More... | |
class | FileNameOptionInfo |
Wrapper class for accessing file name option information. More... | |
class | FileNameOptionManager |
Handles interaction of file name options with global options. More... | |
class | FileNameOptionStorage |
Converts, validates, and stores file names. More... | |
class | IOptionsBehavior |
Interface to provide extension points for options parsing. More... | |
class | IOptionsContainer |
Interface for adding input options. More... | |
class | OptionManagerContainer |
Container to keep managers added with Options::addManager() and pass them to options. More... | |
class | IOptionManager |
Base class for option managers. More... | |
class | Options |
Collection of options. More... | |
class | OptionsAssigner |
Decorator class for assigning values to Options. More... | |
class | OptionsVisitor |
Pure interface for visiting options in a Options object. More... | |
class | OptionsTypeVisitor |
Abstract base class for visiting options of a particular type. More... | |
class | OptionsIterator |
Decorator class for visiting options in a Options object. More... | |
class | OptionsModifyingVisitor |
Pure interface for visiting options in a Options object, allowing modifications. More... | |
class | OptionsModifyingTypeVisitor |
Abstract base class for visiting options of a particular type, allowing modifications. More... | |
class | OptionsModifyingIterator |
Decorator class for visiting options in a Options object, allowing changes. More... | |
class | TimeUnitManager |
Provides common functionality for time unit conversions. More... | |
class | TimeUnitBehavior |
Options behavior to add a time unit option. More... | |
class | ExponentialDistribution |
Exponential distribution. More... | |
class | GammaDistribution |
Gamma distribution. More... | |
class | NormalDistribution |
Normal distribution. More... | |
class | TabulatedNormalDistribution |
Tabulated normal random distribution. More... | |
class | ThreeFry2x64General |
General implementation class for ThreeFry counter-based random engines. More... | |
class | ThreeFry2x64 |
ThreeFry2x64 random engine with 20 iteractions. More... | |
class | ThreeFry2x64Fast |
ThreeFry2x64 random engine with 13 iteractions. More... | |
class | UniformIntDistribution |
Uniform integer distribution. More... | |
class | UniformRealDistribution |
Uniform real distribution. More... | |
class | SelectionCompiler |
Implements selection compilation. More... | |
class | AnalysisNeighborhoodPositions |
Input positions for neighborhood searching. More... | |
class | AnalysisNeighborhood |
Neighborhood searching for analysis tools. More... | |
class | AnalysisNeighborhoodPair |
Value type to represent a pair of positions found in neighborhood searching. More... | |
class | AnalysisNeighborhoodSearch |
Initialized neighborhood search with a fixed set of reference positions. More... | |
class | AnalysisNeighborhoodPairSearch |
Initialized neighborhood pair search with a fixed set of positions. More... | |
class | SelectionParserValue |
Describes a parsed value, possibly resulting from expression evaluation. More... | |
class | SelectionParserParameter |
Describes a parsed method parameter. More... | |
class | PositionCalculationCollection |
Collection of gmx_ana_poscalc_t structures for the same topology. More... | |
class | Selection |
Provides access to a single selection. More... | |
class | SelectionPosition |
Provides access to information about a single selected position. More... | |
class | SelectionEvaluator |
Implements selection evaluation. More... | |
class | SelectionCollection |
Collection of selections. More... | |
class | SelectionFileOption |
Specifies a special option that provides selections from a file. More... | |
class | SelectionFileOptionInfo |
Wrapper class for accessing and modifying selection file option information. More... | |
class | SelectionFileOptionStorage |
Implementation for a special option for reading selections from files. More... | |
class | SelectionOption |
Specifies an option that provides selection(s). More... | |
class | SelectionOptionInfo |
Wrapper class for accessing and modifying selection option information. More... | |
class | ITopologyProvider |
Provides topology information to SelectionOptionBehavior. More... | |
class | SelectionOptionBehavior |
Options behavior to allow using SelectionOptions. More... | |
class | SelectionOptionManager |
Handles interaction of selection options with other options and user input. More... | |
class | SelectionOptionStorage |
Converts, validates, and stores selection values. More... | |
struct | SelectionLocation |
Stores the location of a selection element in the selection text. More... | |
class | SelectionTreeElement |
Represents an element of a selection expression. More... | |
class | SelectionParserSymbol |
Single symbol for the selection parser. More... | |
class | SelectionParserSymbolIterator |
Input iterator for iterating symbols of a given type. More... | |
class | SelectionParserSymbolTable |
Symbol table for the selection parser. More... | |
class | Simd4Double |
SIMD4 double type. More... | |
class | Simd4DBool |
SIMD4 variable type to use for logical comparisons on doubles. More... | |
class | Simd4Float |
SIMD4 float type. More... | |
class | Simd4FBool |
SIMD4 variable type to use for logical comparisons on floats. More... | |
class | SimdDouble |
Double SIMD variable. Available if GMX_SIMD_HAVE_DOUBLE is 1. More... | |
class | SimdDInt32 |
Integer SIMD variable type to use for conversions to/from double. More... | |
class | SimdDBool |
Boolean type for double SIMD data. More... | |
class | SimdDIBool |
Boolean type for integer datatypes corresponding to double SIMD. More... | |
class | SimdFloat |
Float SIMD variable. Available if GMX_SIMD_HAVE_FLOAT is 1. More... | |
class | SimdFInt32 |
Integer SIMD variable type to use for conversions to/from float. More... | |
class | SimdFBool |
Boolean type for float SIMD data. More... | |
class | SimdFIBool |
Boolean type for integer datatypes corresponding to float SIMD. More... | |
class | SimdLoadFProxyInternal |
Proxy object to enable load() for SIMD and float types. More... | |
class | SimdLoadUFProxyInternal |
Proxy object to enable loadU() for SIMD and float types. More... | |
class | SimdLoadDProxyInternal |
Proxy object to enable load() for SIMD and double types. More... | |
class | SimdLoadUDProxyInternal |
Proxy object to enable loadU() for SIMD and double types. More... | |
class | SimdLoadIProxyInternal |
Proxy object load() for SimdFInt32, SImdDInt32, and int32. More... | |
class | SimdLoadUIProxyInternal |
Proxy object - loadU() for SimdFInt32, SImdDInt32, and int32. More... | |
class | SimdSetZeroProxyInternal |
Proxy object to enable setZero() for SIMD and real types. More... | |
class | TrajectoryAnalysisModuleData |
Base class for thread-local data storage during trajectory analysis. More... | |
class | TrajectoryAnalysisModule |
Base class for trajectory analysis modules. More... | |
class | TrajectoryAnalysisSettings |
Trajectory analysis module configuration object. More... | |
class | TopologyInformation |
Topology information passed to a trajectory analysis module. More... | |
class | TrajectoryAnalysisCommandLineRunner |
Runner for command-line trajectory analysis tools. More... | |
class | SurfaceAreaCalculator |
Computes surface areas for a group of atoms/spheres. More... | |
class | TrajectoryAnalysisRunnerCommon |
Implements common trajectory analysis runner functionality. More... | |
class | AlignedAllocator |
Aligned memory allocator. More... | |
struct | EmptyArrayRef |
Tag type to initialize empty array references. More... | |
class | BinaryInformationSettings |
Settings for printBinaryInformation(). More... | |
class | PrivateImplPointer |
Helper class to manage a pointer to a private implementation class. More... | |
class | DataFileOptions |
Search parameters for DataFileFinder. More... | |
struct | DataFileInfo |
Information about a data file found by DataFileFinder::enumerateFiles(). More... | |
class | DataFileFinder |
Searches data files from a set of paths. More... | |
class | DirectoryEnumerator |
Lists files in a directory. More... | |
class | ExceptionInfo |
Stores additional context information for exceptions. More... | |
struct | ThrowLocation |
Stores the location from which an exception was thrown. More... | |
class | ExceptionInitializer |
Provides information for Gromacs exception constructors. More... | |
class | GromacsException |
Base class for all exception objects in Gromacs. More... | |
class | FileIOError |
Exception class for file I/O errors. More... | |
class | UserInputError |
Exception class for user input errors. More... | |
class | InvalidInputError |
Exception class for situations where user input cannot be parsed/understood. More... | |
class | InconsistentInputError |
Exception class for situations where user input is inconsistent. More... | |
class | SimulationInstabilityError |
Exception class for simulation instabilities. More... | |
class | InternalError |
Exception class for internal errors. More... | |
class | APIError |
Exception class for incorrect use of an API. More... | |
class | NotImplementedError |
Exception class for use of an unimplemented feature. More... | |
class | IFileInputRedirector |
Allows overriding file existence checks from code that supports it. More... | |
class | IFileOutputRedirector |
Allows capturing stdout and file output from code that supports it. More... | |
class | StandardInputStream |
Text input stream implementation for reading from stdin . More... | |
class | TextInputFile |
Text input stream implementation for reading from a file. More... | |
class | TextOutputFile |
Text output stream implementation for writing to a file. More... | |
class | FlagsTemplate |
Template class for typesafe handling of combination of flags. More... | |
class | Regex |
Represents a regular expression. More... | |
class | MessageStringCollector |
Helper class for collecting message strings, optionally with context. More... | |
class | MessageStringContext |
Convenience class for creating a message context. More... | |
struct | no_delete |
Deleter for std::shared_ptr that does nothing. More... | |
struct | InstallationPrefixInfo |
Provides information about installation prefix (see IProgramContext::installationPrefix()). More... | |
class | IProgramContext |
Provides context information about the program that is calling the library. More... | |
class | scoped_cptr |
Stripped-down version of scoped_ptr that uses sfree() or custom deleter. More... | |
class | StringOutputStream |
Text output stream implementation for writing to an in-memory string. More... | |
class | StringInputStream |
Helper class to convert static string data to a stream. More... | |
class | StringFormatter |
Function object that wraps a call to formatString() that expects a single conversion argument, for use with algorithms. More... | |
class | IdentityFormatter |
Function object to implement the same interface as StringFormatter to use with strings that should not be formatted further. More... | |
class | TextLineWrapperSettings |
Stores settings for line wrapping. More... | |
class | TextLineWrapper |
Wraps lines to a predefined length. More... | |
class | TextReader |
Reads text from a TextInputStream. More... | |
class | TextInputStream |
Interface for reading text. More... | |
class | TextOutputStream |
Interface for writing text. More... | |
class | TextWriter |
Writes text into a TextOutputStream. More... | |
Typedefs | |
typedef std::shared_ptr < IAnalysisDataModule > | AnalysisDataModulePointer |
Smart pointer for managing a generic analysis data module. | |
typedef ConstArrayRef < AnalysisDataValue > | AnalysisDataValuesRef |
Shorthand for reference to an array of data values. | |
typedef std::shared_ptr < AnalysisDataAverageModule > | AnalysisDataAverageModulePointer |
Smart pointer to manage an AnalysisDataAverageModule object. | |
typedef std::shared_ptr < AnalysisDataFrameAverageModule > | AnalysisDataFrameAverageModulePointer |
Smart pointer to manage an AnalysisDataFrameAverageModule object. | |
typedef std::shared_ptr < AnalysisDataDisplacementModule > | AnalysisDataDisplacementModulePointer |
Smart pointer to manage an AnalysisDataDisplacementModule object. | |
typedef std::unique_ptr < AbstractAverageHistogram > | AverageHistogramPointer |
Smart pointer to manage an AbstractAverageHistogram object. | |
typedef std::shared_ptr < AnalysisDataSimpleHistogramModule > | AnalysisDataSimpleHistogramModulePointer |
Smart pointer to manage an AnalysisDataSimpleHistogramModule object. | |
typedef std::shared_ptr < AnalysisDataWeightedHistogramModule > | AnalysisDataWeightedHistogramModulePointer |
Smart pointer to manage an AnalysisDataWeightedHistogramModule object. | |
typedef std::shared_ptr < AnalysisDataBinAverageModule > | AnalysisDataBinAverageModulePointer |
Smart pointer to manage an AnalysisDataBinAverageModule object. | |
typedef std::shared_ptr < AnalysisDataLifetimeModule > | AnalysisDataLifetimeModulePointer |
Smart pointer to manage an AnalysisDataLifetimeModule object. | |
typedef std::shared_ptr < AnalysisDataPlotModule > | AnalysisDataPlotModulePointer |
Smart pointer to manage an AnalysisDataPlotModule object. | |
typedef std::shared_ptr < AnalysisDataVectorPlotModule > | AnalysisDataVectorPlotModulePointer |
Smart pointer to manage an AnalysisDataVectorPlotModule object. | |
typedef std::map< std::string, CommandLineModulePointer > | CommandLineModuleMap |
Container type for mapping module names to module objects. | |
typedef std::unique_ptr < CommandLineModuleGroupData > | CommandLineModuleGroupDataPointer |
Smart pointer type for managing a CommandLineModuleGroup. | |
typedef std::vector < CommandLineModuleGroupDataPointer > | CommandLineModuleGroupList |
Container type for keeping a list of module groups. | |
typedef std::unique_ptr < ICommandLineModule > | CommandLineModulePointer |
Smart pointer type for managing a ICommandLineModule. | |
typedef std::unique_ptr < ICommandLineOptionsModule > | ICommandLineOptionsModulePointer |
Smart pointer to manage an ICommandLineOptionsModule. | |
typedef std::unique_ptr < IExecutableEnvironment > | ExecutableEnvironmentPointer |
Shorthand for a smart pointer to IExecutableEnvironment. | |
typedef BasicVector< real > | RVec |
Shorthand for C++ rvec -equivalent type. | |
typedef double | integrator_t (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Integrator algorithm implementation. More... | |
typedef std::array < SimulationSignal, eglsNR > | SimulationSignals |
Convenience typedef for the group of signals used. | |
typedef std::unique_ptr < AbstractCompositeHelpTopic > | CompositeHelpTopicPointer |
Smart pointer type to manage a AbstractCompositeHelpTopic object. | |
typedef std::unique_ptr < IHelpTopic > | HelpTopicPointer |
Smart pointer type to manage a IHelpTopic object. | |
typedef EnumOption< int > | EnumIntOption |
Shorthand for an enumerated option that stores into an int variable. | |
typedef FloatOption | RealOption |
Typedef for either DoubleOption or FloatOption, depending on precision. More... | |
typedef FloatOptionInfo | RealOptionInfo |
Typedef for either DoubleOptionInfo or FloatOptionInfo, depending on precision. More... | |
typedef std::shared_ptr < IOptionsBehavior > | OptionsBehaviorPointer |
Smart pointer for behaviors stored in OptionsBehaviorCollection. | |
typedef FlagsTemplate< OptionFlag > | OptionFlags |
Holds a combination of OptionFlag values. | |
typedef std::random_device | RandomDevice |
Random device. More... | |
typedef ThreeFry2x64Fast | DefaultRandomEngine |
Default fast and accurate random engine in Gromacs. More... | |
typedef std::list < SelectionParserValue > | SelectionParserValueList |
Container for a list of SelectionParserValue objects. | |
typedef std::unique_ptr < SelectionParserValueList > | SelectionParserValueListPointer |
Smart pointer type for managing a SelectionParserValueList. | |
typedef std::list < SelectionParserParameter > | SelectionParserParameterList |
Container for a list of SelectionParserParameter objects. | |
typedef std::unique_ptr < SelectionParserParameterList > | SelectionParserParameterListPointer |
Smart pointer type for managing a SelectionParserParameterList. | |
typedef std::vector< Selection > | SelectionList |
Container of selections used in public selection interfaces. | |
typedef std::unique_ptr < internal::SelectionData > | SelectionDataPointer |
Smart pointer for managing an internal selection data object. | |
typedef std::vector < SelectionDataPointer > | SelectionDataList |
Container for storing a list of selections internally. | |
typedef FlagsTemplate < SelectionFlag > | SelectionFlags |
Holds a collection of SelectionFlag values. | |
typedef std::shared_ptr < SelectionTreeElement > | SelectionTreeElementPointer |
Smart pointer type for selection tree element pointers. | |
typedef void(* | sel_evalfunc )(struct gmx_sel_evaluate_t *data, const SelectionTreeElementPointer &sel, gmx_ana_index_t *g) |
Function pointer for evaluating a gmx::SelectionTreeElement. | |
typedef std::unique_ptr < TrajectoryAnalysisModuleData > | TrajectoryAnalysisModuleDataPointer |
Smart pointer to manage a TrajectoryAnalysisModuleData object. | |
typedef std::unique_ptr < TrajectoryAnalysisModule > | TrajectoryAnalysisModulePointer |
Smart pointer to manage a TrajectoryAnalysisModule. | |
typedef ExceptionInfo< struct ExceptionInfoErrno_, int > | ExceptionInfoErrno |
Stores errno value that triggered the exception. | |
typedef ExceptionInfo< struct ExceptionInfoApiFunc_, const char * > | ExceptionInfoApiFunction |
Stores the function name that returned the errno in ExceptionInfoErrno. | |
typedef ExceptionInfo< struct ExceptionInfoLocation_, ThrowLocation > | ExceptionInfoLocation |
Stores the location where the exception was thrown. | |
typedef tMPI::mutex | Mutex |
C++11-compatible basic mutex. | |
typedef scoped_cptr< void > | scoped_guard_sfree |
Simple guard which calls sfree. See scoped_cptr for details. | |
typedef std::shared_ptr < TextInputStream > | TextInputStreamPointer |
Shorthand for a smart pointer to a TextInputStream. | |
typedef std::shared_ptr < TextOutputStream > | TextOutputStreamPointer |
Shorthand for a smart pointer to a TextOutputStream. | |
Functions | |
AnalysisHistogramSettingsInitializer | histogramFromRange (real min, real max) |
Initializes a histogram using a range and a bin width. More... | |
AnalysisHistogramSettingsInitializer | histogramFromBins (real start, int nbins, real binwidth) |
Initializes a histogram using bin width and the number of bins. More... | |
CommandLineProgramContext & | initForCommandLine (int *argc, char ***argv) |
Initializes the GROMACS library for command-line use. More... | |
void | finalizeForCommandLine () |
Deinitializes the GROMACS library after initForCommandLine(). More... | |
int | processExceptionAtExitForCommandLine (const std::exception &ex) |
Handles an exception and deinitializes after initForCommandLine. More... | |
int | runCommandLineModule (int argc, char *argv[], ICommandLineModule *module) |
Implements a main() method that runs a single module. More... | |
int | runCommandLineModule (int argc, char *argv[], const char *name, const char *description, std::function< std::unique_ptr< ICommandLineOptionsModule >()> factory) |
Implements a main() method that runs a single module. More... | |
void | writeCommandLineHelpCMain (const CommandLineHelpContext &context, const char *name, int(*mainFunction)(int argc, char *argv[])) |
Helper to implement ICommandLineModule::writeHelp() with a C-like main() function that calls parse_common_args(). More... | |
bool | cpuIsX86Nehalem (const CpuInfo &cpuInfo) |
Return true if the CPU is an Intel x86 Nehalem. More... | |
unsigned int | log2I (std::uint32_t x) |
Compute floor of logarithm to base 2, 32 bit unsigned argument. More... | |
unsigned int | log2I (std::uint64_t x) |
Compute floor of logarithm to base 2, 64 bit unsigned argument. More... | |
unsigned int | log2I (std::int32_t x) |
Compute floor of logarithm to base 2, 32 bit signed argument. More... | |
unsigned int | log2I (std::int64_t x) |
Compute floor of logarithm to base 2, 64 bit signed argument. More... | |
std::int64_t | greatestCommonDivisor (std::int64_t p, std::int64_t q) |
Find greatest common divisor of two numbers. More... | |
double | erfinv (double x) |
Inverse error function, double precision. More... | |
float | erfinv (float x) |
Inverse error function, single precision. More... | |
static float | invsqrt (float x) |
Calculate 1.0/sqrt(x) in single precision. More... | |
static double | invsqrt (double x) |
Calculate 1.0/sqrt(x) in double precision, but single range. More... | |
static double | invsqrt (int x) |
Calculate 1.0/sqrt(x) for integer x in double precision. More... | |
static float | invcbrt (float x) |
Calculate inverse cube root of x in single precision. More... | |
static double | invcbrt (double x) |
Calculate inverse sixth root of x in double precision. More... | |
static double | invcbrt (int x) |
Calculate inverse sixth root of integer x in double precision. More... | |
static float | sixthroot (float x) |
Calculate sixth root of x in single precision. More... | |
static double | sixthroot (double x) |
Calculate sixth root of x in double precision. More... | |
static double | sixthroot (int x) |
Calculate sixth root of integer x, return double. More... | |
static float | invsixthroot (float x) |
Calculate inverse sixth root of x in single precision. More... | |
static double | invsixthroot (double x) |
Calculate inverse sixth root of x in double precision. More... | |
static double | invsixthroot (int x) |
Calculate inverse sixth root of integer x in double precision. More... | |
template<typename T > | |
T | square (T x) |
calculate x^2 More... | |
template<typename T > | |
T | power3 (T x) |
calculate x^3 More... | |
template<typename T > | |
T | power4 (T x) |
calculate x^4 More... | |
template<typename T > | |
T | power5 (T x) |
calculate x^5 More... | |
template<typename T > | |
T | power6 (T x) |
calculate x^6 More... | |
template<typename T > | |
T | power12 (T x) |
calculate x^12 More... | |
static real | series_sinhx (real x) |
Maclaurin series for sinh(x)/x. More... | |
void | invertBoxMatrix (const matrix src, matrix dest) |
Invert a simulation-box matrix in src , return in dest . More... | |
void | invertMatrix (const matrix src, matrix dest) |
Invert a general 3x3 matrix in src , return in dest . More... | |
template<typename ValueType > | |
static BasicVector< ValueType > ::RawArray * | as_vec_array (BasicVector< ValueType > *x) |
Casts a gmx::BasicVector array into an equivalent raw C array. | |
template<typename ValueType > | |
static const BasicVector < ValueType >::RawArray * | as_vec_array (const BasicVector< ValueType > *x) |
Casts a gmx::BasicVector array into an equivalent raw C array. | |
static rvec * | as_rvec_array (RVec *x) |
Casts a gmx::RVec array into an rvec array. | |
static const rvec * | as_rvec_array (const RVec *x) |
Casts a gmx::RVec array into an rvec array. | |
double | do_cg (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Do conjugate gradients minimization. More... | |
double | do_lbfgs (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Do L-BFGS conjugate gradients minimization. More... | |
double | do_steep (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Do steepest descents minimization. More... | |
double | do_nm (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Do normal modes analysis. More... | |
double | do_tpi (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Do test particle insertion. More... | |
gmx_uint64_t | makeRandomSeed () |
Return 64 random bits from the random device, suitable as seed. More... | |
template<class RealType = real, unsigned int Bits, class Rng > | |
RealType | generateCanonical (Rng &g) |
Generate a floating-point value with specified number of random bits. More... | |
HelpTopicPointer | createSelectionHelpTopic () |
*/ More... | |
static void | simdPrefetch (void *m) |
Prefetch memory at address m. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadTranspose (const double *base, const std::int32_t offset[], SimdDouble *v0, SimdDouble *v1, SimdDouble *v2, SimdDouble *v3) |
Load 4 consecutive double from each of GMX_SIMD_DOUBLE_WIDTH offsets, and transpose into 4 SIMD double variables. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadTranspose (const double *base, const std::int32_t offset[], SimdDouble *v0, SimdDouble *v1) |
Load 2 consecutive double from each of GMX_SIMD_DOUBLE_WIDTH offsets, and transpose into 2 SIMD double variables. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadUTranspose (const double *base, const std::int32_t offset[], SimdDouble *v0, SimdDouble *v1, SimdDouble *v2) |
Load 3 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets, and transpose into 3 SIMD double variables. More... | |
template<int align> | |
static void gmx_simdcall | transposeScatterStoreU (double *base, const std::int32_t offset[], SimdDouble v0, SimdDouble v1, SimdDouble v2) |
Transpose and store 3 SIMD doubles to 3 consecutive addresses at GMX_SIMD_DOUBLE_WIDTH offsets. More... | |
template<int align> | |
static void gmx_simdcall | transposeScatterIncrU (double *base, const std::int32_t offset[], SimdDouble v0, SimdDouble v1, SimdDouble v2) |
Transpose and add 3 SIMD doubles to 3 consecutive addresses at GMX_SIMD_DOUBLE_WIDTH offsets. More... | |
template<int align> | |
static void gmx_simdcall | transposeScatterDecrU (double *base, const std::int32_t offset[], SimdDouble v0, SimdDouble v1, SimdDouble v2) |
Transpose and subtract 3 SIMD doubles to 3 consecutive addresses at GMX_SIMD_DOUBLE_WIDTH offsets. More... | |
static void gmx_simdcall | expandScalarsToTriplets (SimdDouble scalar, SimdDouble *triplets0, SimdDouble *triplets1, SimdDouble *triplets2) |
Expand each element of double SIMD variable into three identical consecutive elements in three SIMD outputs. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const double *base, SimdDInt32 offset, SimdDouble *v0, SimdDouble *v1, SimdDouble *v2, SimdDouble *v3) |
Load 4 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets specified by a SIMD integer, transpose into 4 SIMD double variables. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadUBySimdIntTranspose (const double *base, SimdDInt32 offset, SimdDouble *v0, SimdDouble *v1) |
Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets (unaligned) specified by SIMD integer, transpose into 2 SIMD doubles. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const double *base, SimdDInt32 offset, SimdDouble *v0, SimdDouble *v1) |
Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH offsets specified by a SIMD integer, transpose into 2 SIMD double variables. More... | |
static double gmx_simdcall | reduceIncr4ReturnSum (double *m, SimdDouble v0, SimdDouble v1, SimdDouble v2, SimdDouble v3) |
Reduce each of four SIMD doubles, add those values to four consecutive doubles in memory, return sum. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadTranspose (const float *base, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1, SimdFloat *v2, SimdFloat *v3) |
Load 4 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets, and transpose into 4 SIMD float variables. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadTranspose (const float *base, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1) |
Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets, and transpose into 2 SIMD float variables. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadUTranspose (const float *base, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1, SimdFloat *v2) |
Load 3 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets, and transpose into 3 SIMD float variables. More... | |
template<int align> | |
static void gmx_simdcall | transposeScatterStoreU (float *base, const std::int32_t offset[], SimdFloat v0, SimdFloat v1, SimdFloat v2) |
Transpose and store 3 SIMD floats to 3 consecutive addresses at GMX_SIMD_FLOAT_WIDTH offsets. More... | |
template<int align> | |
static void gmx_simdcall | transposeScatterIncrU (float *base, const std::int32_t offset[], SimdFloat v0, SimdFloat v1, SimdFloat v2) |
Transpose and add 3 SIMD floats to 3 consecutive addresses at GMX_SIMD_FLOAT_WIDTH offsets. More... | |
template<int align> | |
static void gmx_simdcall | transposeScatterDecrU (float *base, const std::int32_t offset[], SimdFloat v0, SimdFloat v1, SimdFloat v2) |
Transpose and subtract 3 SIMD floats to 3 consecutive addresses at GMX_SIMD_FLOAT_WIDTH offsets. More... | |
static void gmx_simdcall | expandScalarsToTriplets (SimdFloat scalar, SimdFloat *triplets0, SimdFloat *triplets1, SimdFloat *triplets2) |
Expand each element of float SIMD variable into three identical consecutive elements in three SIMD outputs. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const float *base, SimdFInt32 offset, SimdFloat *v0, SimdFloat *v1, SimdFloat *v2, SimdFloat *v3) |
Load 4 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets specified by a SIMD integer, transpose into 4 SIMD float variables. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadUBySimdIntTranspose (const float *base, SimdFInt32 offset, SimdFloat *v0, SimdFloat *v1) |
Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets (unaligned) specified by SIMD integer, transpose into 2 SIMD floats. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadBySimdIntTranspose (const float *base, SimdFInt32 offset, SimdFloat *v0, SimdFloat *v1) |
Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH offsets specified by a SIMD integer, transpose into 2 SIMD float variables. More... | |
static float gmx_simdcall | reduceIncr4ReturnSum (float *m, SimdFloat v0, SimdFloat v1, SimdFloat v2, SimdFloat v3) |
Reduce each of four SIMD floats, add those values to four consecutive floats in memory, return sum. More... | |
static void | store (float *m, float a) |
Store contents of float variable to aligned memory m. More... | |
static void | storeU (float *m, float a) |
Store contents of float variable to unaligned memory m. More... | |
static float | fma (float a, float b, float c) |
Float Fused-multiply-add. Result is a*b + c. More... | |
static float | fms (float a, float b, float c) |
Float Fused-multiply-subtract. Result is a*b - c. More... | |
static float | fnma (float a, float b, float c) |
Float Fused-negated-multiply-add. Result is -a*b + c. More... | |
static float | fnms (float a, float b, float c) |
Float Fused-negated-multiply-subtract. Result is -a*b - c. More... | |
static float | maskAdd (float a, float b, float m) |
Add two float variables, masked version. More... | |
static float | maskzMul (float a, float b, float m) |
Multiply two float variables, masked version. More... | |
static float | maskzFma (float a, float b, float c, float m) |
Float fused multiply-add, masked version. More... | |
static float | abs (float a) |
Float Floating-point abs(). More... | |
static float | max (float a, float b) |
Set each float element to the largest from two variables. More... | |
static float | min (float a, float b) |
Set each float element to the smallest from two variables. More... | |
static float | round (float a) |
Float round to nearest integer value (in floating-point format). More... | |
static float | trunc (float a) |
Truncate float, i.e. round towards zero - common hardware instruction. More... | |
static float | reduce (float a) |
Return sum of all elements in float variable (i.e., the variable itself). More... | |
static float | andNot (float a, float b) |
Bitwise andnot for two scalar float variables. More... | |
static bool | testBits (float a) |
Return true if any bits are set in the float variable. More... | |
static bool | anyTrue (bool a) |
Returns if the boolean is true. More... | |
static float | selectByMask (float a, bool mask) |
Select from single precision variable where boolean is true. More... | |
static float | selectByNotMask (float a, bool mask) |
Select from single precision variable where boolean is false. More... | |
static float | blend (float a, float b, float sel) |
Blend float selection. More... | |
static std::int32_t | cvtR2I (float a) |
Round single precision floating point to integer. More... | |
static std::int32_t | cvttR2I (float a) |
Truncate single precision floating point to integer. More... | |
static std::int32_t | cvtI2R (std::int32_t a) |
Return integer. More... | |
static void | store (double *m, double a) |
Store contents of double variable to aligned memory m. More... | |
static void | storeU (double *m, double a) |
Store contents of double variable to unaligned memory m. More... | |
static double | fma (double a, double b, double c) |
double Fused-multiply-add. Result is a*b + c. More... | |
static double | fms (double a, double b, double c) |
double Fused-multiply-subtract. Result is a*b - c. More... | |
static double | fnma (double a, double b, double c) |
double Fused-negated-multiply-add. Result is - a*b + c. More... | |
static double | fnms (double a, double b, double c) |
double Fused-negated-multiply-subtract. Result is -a*b - c. More... | |
static double | maskAdd (double a, double b, double m) |
Add two double variables, masked version. More... | |
static double | maskzMul (double a, double b, double m) |
Multiply two double variables, masked version. More... | |
static double | maskzFma (double a, double b, double c, double m) |
double fused multiply-add, masked version. More... | |
static double | abs (double a) |
double doubleing-point abs(). More... | |
static double | max (double a, double b) |
Set each double element to the largest from two variables. More... | |
static double | min (double a, double b) |
Set each double element to the smallest from two variables. More... | |
static double | round (double a) |
double round to nearest integer value (in doubleing-point format). More... | |
static double | trunc (double a) |
Truncate double, i.e. round towards zero - common hardware instruction. More... | |
static double | reduce (double a) |
Return sum of all elements in double variable (i.e., the variable itself). More... | |
static double | andNot (double a, double b) |
Bitwise andnot for two scalar double variables. More... | |
static bool | testBits (double a) |
Return true if any bits are set in the double variable. More... | |
static double | selectByMask (double a, bool mask) |
Select from double precision variable where boolean is true. More... | |
static double | selectByNotMask (double a, bool mask) |
Select from double precision variable where boolean is false. More... | |
static double | blend (double a, double b, double sel) |
Blend double selection. More... | |
static std::int32_t | cvtR2I (double a) |
Round single precision doubleing point to integer. More... | |
static std::int32_t | cvttR2I (double a) |
Truncate single precision doubleing point to integer. More... | |
static double | cvtF2D (float a) |
Convert float to double (mimicks SIMD conversion) More... | |
static float | cvtD2F (double a) |
Convert double to float (mimicks SIMD conversion) More... | |
static void | store (std::int32_t *m, std::int32_t a) |
Store contents of integer variable to aligned memory m. More... | |
static void | storeU (std::int32_t *m, std::int32_t a) |
Store contents of integer variable to unaligned memory m. More... | |
static std::int32_t | andNot (std::int32_t a, std::int32_t b) |
Bitwise andnot for two scalar integer variables. More... | |
static bool | testBits (std::int32_t a) |
Return true if any bits are set in the integer variable. More... | |
static std::int32_t | selectByMask (std::int32_t a, bool mask) |
Select from integer variable where boolean is true. More... | |
static std::int32_t | selectByNotMask (std::int32_t a, bool mask) |
Select from integer variable where boolean is false. More... | |
static std::int32_t | blend (std::int32_t a, std::int32_t b, float sel) |
Blend integer selection. More... | |
static bool | cvtB2IB (bool a) |
Just return a boolean (mimicks SIMD real-to-int bool conversions) More... | |
static bool | cvtIB2B (bool a) |
Just return a boolean (mimicks SIMD int-to-real bool conversions) More... | |
static float | copysign (float x, float y) |
Composes single value with the magnitude of x and the sign of y. More... | |
static void | invsqrtPair (float x0, float x1, float *out0, float *out1) |
Calculate 1/sqrt(x) for two floats. More... | |
static float | inv (float x) |
Calculate 1/x for float. More... | |
static float | maskzInvsqrt (float x, bool m) |
Calculate 1/sqrt(x) for masked entry of float. More... | |
static float | maskzInv (float x, bool m) |
Calculate 1/x for masked entry of float. More... | |
static float | log (float x) |
Float log(x). This is the natural logarithm. More... | |
static float | exp2 (float x) |
Float 2^x. More... | |
static float | exp (float x) |
Float exp(x). More... | |
static float | erf (float x) |
Float erf(x). More... | |
static float | erfc (float x) |
Float erfc(x). More... | |
static void | sincos (float x, float *sinval, float *cosval) |
Float sin & cos. More... | |
static float | sin (float x) |
Float sin. More... | |
static float | cos (float x) |
Float cos. More... | |
static float | tan (float x) |
Float tan. More... | |
static float | asin (float x) |
float asin. More... | |
static float | acos (float x) |
Float acos. More... | |
static float | atan (float x) |
Float atan. More... | |
static float | atan2 (float y, float x) |
Float atan2(y,x). More... | |
static float | pmeForceCorrection (float z2) |
Calculate the force correction due to PME analytically in float. More... | |
static float | pmePotentialCorrection (float z2) |
Calculate the potential correction due to PME analytically in float. More... | |
static double | copysign (double x, double y) |
Composes double value with the magnitude of x and the sign of y. More... | |
static void | invsqrtPair (double x0, double x1, double *out0, double *out1) |
Calculate 1/sqrt(x) for two doubles. More... | |
static double | inv (double x) |
Calculate 1/x for double. More... | |
static double | maskzInvsqrt (double x, bool m) |
Calculate 1/sqrt(x) for masked entry of double. More... | |
static double | maskzInv (double x, bool m) |
Calculate 1/x for masked entry of double. More... | |
static double | log (double x) |
Double log(x). This is the natural logarithm. More... | |
static double | exp2 (double x) |
Double 2^x. More... | |
static double | exp (double x) |
Double exp(x). More... | |
static double | erf (double x) |
Double erf(x). More... | |
static double | erfc (double x) |
Double erfc(x). More... | |
static void | sincos (double x, double *sinval, double *cosval) |
Double sin & cos. More... | |
static double | sin (double x) |
Double sin. More... | |
static double | cos (double x) |
Double cos. More... | |
static double | tan (double x) |
Double tan. More... | |
static double | asin (double x) |
Double asin. More... | |
static double | acos (double x) |
Double acos. More... | |
static double | atan (double x) |
Double atan. More... | |
static double | atan2 (double y, double x) |
Double atan2(y,x). More... | |
static double | pmeForceCorrection (double z2) |
Calculate the force correction due to PME analytically in double. More... | |
static double | pmePotentialCorrection (double z2) |
Calculate the potential correction due to PME analytically in double. More... | |
static double | invsqrtSingleAccuracy (double x) |
Calculate 1/sqrt(x) for double, but with single accuracy. More... | |
static void | invsqrtPairSingleAccuracy (double x0, double x1, double *out0, double *out1) |
Calculate 1/sqrt(x) for two doubles, but with single accuracy. More... | |
static double | invSingleAccuracy (double x) |
Calculate 1/x for double, but with single accuracy. More... | |
static double | maskzInvsqrtSingleAccuracy (double x, bool m) |
Calculate 1/sqrt(x) for masked entry of double, but with single accuracy. More... | |
static double | maskzInvSingleAccuracy (double x, bool m) |
Calculate 1/x for masked entry of double, but with single accuracy. More... | |
static double | sqrtSingleAccuracy (double x) |
Calculate sqrt(x) for double, but with single accuracy. More... | |
static double | logSingleAccuracy (double x) |
Double log(x), but with single accuracy. This is the natural logarithm. More... | |
static double | exp2SingleAccuracy (double x) |
Double 2^x, but with single accuracy. More... | |
static double | expSingleAccuracy (double x) |
Double exp(x), but with single accuracy. More... | |
static double | erfSingleAccuracy (double x) |
Double erf(x), but with single accuracy. More... | |
static double | erfcSingleAccuracy (double x) |
Double erfc(x), but with single accuracy. More... | |
static void | sincosSingleAccuracy (double x, double *sinval, double *cosval) |
Double sin & cos, but with single accuracy. More... | |
static double | sinSingleAccuracy (double x) |
Double sin, but with single accuracy. More... | |
static double | cosSingleAccuracy (double x) |
Double cos, but with single accuracy. More... | |
static double | tanSingleAccuracy (double x) |
Double tan, but with single accuracy. More... | |
static double | asinSingleAccuracy (double x) |
Double asin, but with single accuracy. More... | |
static double | acosSingleAccuracy (double x) |
Double acos, but with single accuracy. More... | |
static double | atanSingleAccuracy (double x) |
Double atan, but with single accuracy. More... | |
static double | atan2SingleAccuracy (double y, double x) |
Double atan2(y,x), but with single accuracy. More... | |
static double | pmeForceCorrectionSingleAccuracy (double z2) |
Force correction due to PME in double, but with single accuracy. More... | |
static double | pmePotentialCorrectionSingleAccuracy (double z2) |
Potential correction due to PME in double, but with single accuracy. More... | |
template<int align> | |
static void | gatherLoadTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1, float *v2, float *v3) |
Load 4 consecutive floats from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1) |
Load 2 consecutive floats from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadUTranspose (const float *base, const std::int32_t offset[], float *v0, float *v1, float *v2) |
Load 3 consecutive floats from base/offsets, store into three vars. More... | |
template<int align> | |
static void | transposeScatterStoreU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
Store 3 floats to 3 to base/offset. More... | |
template<int align> | |
static void | transposeScatterIncrU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
Add 3 floats to base/offset. More... | |
template<int align> | |
static void | transposeScatterDecrU (float *base, const std::int32_t offset[], float v0, float v1, float v2) |
Subtract 3 floats from base/offset. More... | |
static void | expandScalarsToTriplets (float scalar, float *triplets0, float *triplets1, float *triplets2) |
Copy single float to three variables. More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1, float *v2, float *v3) |
Load 4 floats from base/offsets and store into variables. More... | |
template<int align> | |
static void | gatherLoadUBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1) |
Load 2 floats from base/offsets and store into variables (unaligned). More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const float *base, std::int32_t offset, float *v0, float *v1) |
Load 2 floats from base/offsets and store into variables (aligned). More... | |
static float | reduceIncr4ReturnSum (float *m, float v0, float v1, float v2, float v3) |
Add each float to four consecutive memory locations, return sum. More... | |
template<int align> | |
static void | gatherLoadTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1, double *v2, double *v3) |
Load 4 consecutive doubles from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1) |
Load 2 consecutive doubles from base/offset into four variables. More... | |
template<int align> | |
static void | gatherLoadUTranspose (const double *base, const std::int32_t offset[], double *v0, double *v1, double *v2) |
Load 3 consecutive doubles from base/offsets, store into three vars. More... | |
template<int align> | |
static void | transposeScatterStoreU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
Store 3 doubles to 3 to base/offset. More... | |
template<int align> | |
static void | transposeScatterIncrU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
Add 3 doubles to base/offset. More... | |
template<int align> | |
static void | transposeScatterDecrU (double *base, const std::int32_t offset[], double v0, double v1, double v2) |
Subtract 3 doubles from base/offset. More... | |
static void | expandScalarsToTriplets (double scalar, double *triplets0, double *triplets1, double *triplets2) |
Copy single double to three variables. More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1, double *v2, double *v3) |
Load 4 doubles from base/offsets and store into variables. More... | |
template<int align> | |
static void | gatherLoadUBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1) |
Load 2 doubles from base/offsets and store into variables (unaligned). More... | |
template<int align> | |
static void | gatherLoadBySimdIntTranspose (const double *base, std::int32_t offset, double *v0, double *v1) |
Load 2 doubles from base/offsets and store into variables (aligned). More... | |
static float | reduceIncr4ReturnSum (double *m, double v0, double v1, double v2, double v3) |
Add each double to four consecutive memory locations, return sum. More... | |
static SimdFloat gmx_simdcall | invsqrtSingleAccuracy (SimdFloat x) |
Calculate 1/sqrt(x) for SIMD float, only targeting single accuracy. More... | |
static SimdFloat | maskzInvsqrtSingleAccuracy (SimdFloat x, SimdFBool m) |
Calculate 1/sqrt(x) for masked SIMD floats, only targeting single accuracy. More... | |
static void gmx_simdcall | invsqrtPairSingleAccuracy (SimdFloat x0, SimdFloat x1, SimdFloat *out0, SimdFloat *out1) |
Calculate 1/sqrt(x) for two SIMD floats, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | invSingleAccuracy (SimdFloat x) |
Calculate 1/x for SIMD float, only targeting single accuracy. More... | |
static SimdFloat | maskzInvSingleAccuracy (SimdFloat x, SimdFBool m) |
Calculate 1/x for masked SIMD floats, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | sqrtSingleAccuracy (SimdFloat x) |
Calculate sqrt(x) for SIMD float, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | logSingleAccuracy (SimdFloat x) |
SIMD float log(x), only targeting single accuracy. This is the natural logarithm. More... | |
static SimdFloat gmx_simdcall | exp2SingleAccuracy (SimdFloat x) |
SIMD float 2^x, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | expSingleAccuracy (SimdFloat x) |
SIMD float e^x, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | erfSingleAccuracy (SimdFloat x) |
SIMD float erf(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | erfcSingleAccuracy (SimdFloat x) |
SIMD float erfc(x), only targeting single accuracy. More... | |
static void gmx_simdcall | sinCosSingleAccuracy (SimdFloat x, SimdFloat *sinval, SimdFloat *cosval) |
SIMD float sin & cos, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | sinSingleAccuracy (SimdFloat x) |
SIMD float sin(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | cosSingleAccuracy (SimdFloat x) |
SIMD float cos(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | tanSingleAccuracy (SimdFloat x) |
SIMD float tan(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | asinSingleAccuracy (SimdFloat x) |
SIMD float asin(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | acosSingleAccuracy (SimdFloat x) |
SIMD float acos(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | atanSingleAccuracy (SimdFloat x) |
SIMD float atan(x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | atan2SingleAccuracy (SimdFloat y, SimdFloat x) |
SIMD float atan2(y,x), only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | pmeForceCorrectionSingleAccuracy (SimdFloat z2) |
SIMD Analytic PME force correction, only targeting single accuracy. More... | |
static SimdFloat gmx_simdcall | pmePotentialCorrectionSingleAccuracy (SimdFloat z2) |
SIMD Analytic PME potential correction, only targeting single accuracy. More... | |
static Simd4Float gmx_simdcall | invsqrtSingleAccuracy (Simd4Float x) |
Calculate 1/sqrt(x) for SIMD4 float, only targeting single accuracy. More... | |
const std::string & | simdString (SimdType s) |
Return a string with the name of a SIMD type. More... | |
SimdType | simdSuggested (const CpuInfo &c) |
Return the SIMD type that would fit this hardware best. | |
SimdType | simdCompiled () |
Return the SIMD type the library was compiled with. | |
bool | simdCheck (SimdType s, FILE *log, bool warnToStdErr) |
Check if binary was compiled with the provided SIMD type. More... | |
static SimdFloat gmx_simdcall | iprod (SimdFloat ax, SimdFloat ay, SimdFloat az, SimdFloat bx, SimdFloat by, SimdFloat bz) |
SIMD float inner product of multiple float vectors. More... | |
static SimdFloat gmx_simdcall | norm2 (SimdFloat ax, SimdFloat ay, SimdFloat az) |
SIMD float norm squared of multiple vectors. More... | |
static void gmx_simdcall | cprod (SimdFloat ax, SimdFloat ay, SimdFloat az, SimdFloat bx, SimdFloat by, SimdFloat bz, SimdFloat *cx, SimdFloat *cy, SimdFloat *cz) |
SIMD float cross-product of multiple vectors. More... | |
static SimdDouble gmx_simdcall | iprod (SimdDouble ax, SimdDouble ay, SimdDouble az, SimdDouble bx, SimdDouble by, SimdDouble bz) |
SIMD double inner product of multiple double vectors. More... | |
static SimdDouble gmx_simdcall | norm2 (SimdDouble ax, SimdDouble ay, SimdDouble az) |
SIMD double norm squared of multiple vectors. More... | |
static void gmx_simdcall | cprod (SimdDouble ax, SimdDouble ay, SimdDouble az, SimdDouble bx, SimdDouble by, SimdDouble bz, SimdDouble *cx, SimdDouble *cy, SimdDouble *cz) |
SIMD double cross-product of multiple vectors. More... | |
static Simd4Float gmx_simdcall | norm2 (Simd4Float ax, Simd4Float ay, Simd4Float az) |
SIMD4 float norm squared of multiple vectors. More... | |
static Simd4Double gmx_simdcall | norm2 (Simd4Double ax, Simd4Double ay, Simd4Double az) |
SIMD4 double norm squared of multiple vectors. More... | |
void | registerTrajectoryAnalysisModules (CommandLineModuleManager *manager) |
Registers all trajectory analysis command-line modules. More... | |
template<typename T > | |
void | swap (ArrayRef< T > &a, ArrayRef< T > &b) |
Simple swap method for ArrayRef objects. More... | |
template<typename T > | |
void | swap (ConstArrayRef< T > &a, ConstArrayRef< T > &b) |
Simple swap method for ConstArrayRef objects. More... | |
void | printBinaryInformation (FILE *fp, const IProgramContext &programContext) |
Print basic information about the executable. More... | |
void | printBinaryInformation (FILE *fp, const IProgramContext &programContext, const BinaryInformationSettings &settings) |
Print basic information about the executable with custom settings. More... | |
std::string | bromacs () |
Return a cool definition for the acronym GROMACS. | |
std::string | getCoolQuote () |
Return a string with a cool quote. | |
const char * | getErrorCodeString (int errorcode) |
Returns a short string description of an error code. More... | |
void | printFatalErrorMessage (FILE *fp, const std::exception &ex) |
Formats a standard fatal error message for reporting an exception. More... | |
std::string | formatExceptionMessageToString (const std::exception &ex) |
Formats an error message for reporting an exception. More... | |
void | formatExceptionMessageToFile (FILE *fp, const std::exception &ex) |
Formats an error message for reporting an exception. More... | |
void | formatExceptionMessageToWriter (TextWriter *writer, const std::exception &ex) |
Formats an error message for reporting an exception. More... | |
int | processExceptionAtExit (const std::exception &ex) |
Handles an exception that is causing the program to terminate. More... | |
void | processExceptionAsFatalError (const std::exception &ex) |
Helper function for terminating the program on an exception. More... | |
template<class Exception , class Tag , class T > | |
std::enable_if < std::is_base_of < GromacsException, Exception > ::value, const Exception & > ::type | operator<< (const Exception &ex, const ExceptionInfo< Tag, T > &item) |
Associates extra information with an exception. More... | |
IFileInputRedirector & | defaultFileInputRedirector () |
Returns default implementation for IFileInputRedirector. More... | |
IFileOutputRedirector & | defaultFileOutputRedirector () |
Returns default implementation for IFileOutputRedirector. More... | |
const DataFileFinder & | getLibraryFileFinder () |
Gets a finder for locating data files from share/top/. More... | |
void | setLibraryFileFinder (const DataFileFinder *finder) |
Sets a finder for location data files from share/top/. More... | |
bool | regexMatch (const char *str, const Regex ®ex) |
Matches a string with a regular expression. More... | |
bool | regexMatch (const std::string &str, const Regex ®ex) |
Matches a string with a regular expression. More... | |
void | init (int *argc, char ***argv) |
Initializes the GROMACS library. More... | |
void | finalize () |
Deinitializes the GROMACS library. More... | |
const IProgramContext & | getProgramContext () |
Returns the global IProgramContext instance. More... | |
void | setProgramContext (const IProgramContext *context) |
Sets the global IProgramContext instance. More... | |
template<class T > | |
void | sfree_wrapper (T *p) |
sfree wrapper to be used as scoped_cptr deleter | |
std::size_t | countWords (const char *s) |
Returns number of space-separated words in zero-terminated char ptr. More... | |
std::size_t | countWords (const std::string &str) |
Returns the number of space-separated words in a string object. More... | |
bool | endsWith (const char *str, const char *suffix) |
Tests whether a string ends with another string. More... | |
std::string | stripSuffixIfPresent (const std::string &str, const char *suffix) |
Removes a suffix from a string. More... | |
std::string | stripString (const std::string &str) |
Removes leading and trailing whitespace from a string. More... | |
std::string | formatString (const char *fmt,...) |
Formats a string (snprintf() wrapper). More... | |
std::vector< std::string > | splitString (const std::string &str) |
Splits a string to whitespace separated tokens. More... | |
std::string | replaceAll (const std::string &input, const char *from, const char *to) |
Replace all occurrences of a string with another string. More... | |
std::string | replaceAll (const std::string &input, const std::string &from, const std::string &to) |
Replace all occurrences of a string with another string. More... | |
std::string | replaceAllWords (const std::string &input, const char *from, const char *to) |
Replace whole words with others. More... | |
std::string | replaceAllWords (const std::string &input, const std::string &from, const std::string &to) |
Replace whole words with others. More... | |
static bool | isNullOrEmpty (const char *str) |
Tests whether a string is null or empty. More... | |
static bool | startsWith (const std::string &str, const std::string &prefix) |
Tests whether a string starts with another string. More... | |
static bool | startsWith (const char *str, const char *prefix) |
Tests whether a string starts with another string. More... | |
static bool | endsWith (const std::string &str, const char *suffix) |
Tests whether a string ends with another string. More... | |
static bool | contains (const std::string &str, const char *substr) |
Tests whether a string contains another as a substring. More... | |
static bool | contains (const std::string &str, const std::string &substr) |
Tests whether a string contains another as a substring. More... | |
static bool | endsWith (const std::string &str, const std::string &suffix) |
Tests whether a string ends with another string. More... | |
template<typename InputIterator , typename FormatterType > | |
std::string | formatAndJoin (InputIterator begin, InputIterator end, const char *separator, const FormatterType &formatter) |
Formats all the range as strings, and then joins them with a separator in between. More... | |
template<typename ContainerType , typename FormatterType > | |
std::string | formatAndJoin (const ContainerType &container, const char *separator, const FormatterType &formatter) |
Formats all elements of the container as strings, and then joins them with a separator in between. More... | |
template<typename InputIterator > | |
std::string | joinStrings (InputIterator begin, InputIterator end, const char *separator) |
Joins strings from a range with a separator in between. More... | |
template<typename ContainerType > | |
std::string | joinStrings (const ContainerType &container, const char *separator) |
Joins strings from a container with a separator in between. More... | |
template<size_t count> | |
std::string | joinStrings (const char *const (&array)[count], const char *separator) |
Joins strings from an array with a separator in between. More... | |
static const char * | boolToString (bool value) |
Converts a boolean to a "true"/"false" string. More... | |
static integrator_t * | my_integrator (unsigned int ei) |
Return the correct integrator function. | |
int | mdrunner (gmx_hw_opt_t *hw_opt, FILE *fplog, struct t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, ivec ddxyz, int dd_rank_order, int npme, real rdd, real rconstr, const char *dddlb_opt, real dlb_scale, const char *ddcsx, const char *ddcsy, const char *ddcsz, const char *nbpu_opt, int nstlist_cmdline, gmx_int64_t nsteps_cmdline, int nstepout, int resetstep, int nmultisim, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real pforce, real cpt_period, real max_hours, int imdport, unsigned long Flags) |
Driver routine, that calls the different methods. More... | |
Constant width-4 double precision SIMD types and instructions | |
static Simd4Double gmx_simdcall | load4 (const double *m) |
Load 4 double values from aligned memory into SIMD4 variable. More... | |
static void gmx_simdcall | store4 (double *m, Simd4Double a) |
Store the contents of SIMD4 double to aligned memory m. More... | |
static Simd4Double gmx_simdcall | load4U (const double *m) |
Load SIMD4 double from unaligned memory. More... | |
static void gmx_simdcall | store4U (double *m, Simd4Double a) |
Store SIMD4 double to unaligned memory. More... | |
static Simd4Double gmx_simdcall | simd4SetZeroD () |
Set all SIMD4 double elements to 0. More... | |
static Simd4Double gmx_simdcall | operator& (Simd4Double a, Simd4Double b) |
Bitwise and for two SIMD4 double variables. More... | |
static Simd4Double gmx_simdcall | andNot (Simd4Double a, Simd4Double b) |
Bitwise andnot for two SIMD4 double variables. c=(~a) & b. More... | |
static Simd4Double gmx_simdcall | operator| (Simd4Double a, Simd4Double b) |
Bitwise or for two SIMD4 doubles. More... | |
static Simd4Double gmx_simdcall | operator^ (Simd4Double a, Simd4Double b) |
Bitwise xor for two SIMD4 double variables. More... | |
static Simd4Double gmx_simdcall | operator+ (Simd4Double a, Simd4Double b) |
Add two double SIMD4 variables. More... | |
static Simd4Double gmx_simdcall | operator- (Simd4Double a, Simd4Double b) |
Subtract two SIMD4 variables. More... | |
static Simd4Double gmx_simdcall | operator- (Simd4Double a) |
SIMD4 floating-point negate. More... | |
static Simd4Double gmx_simdcall | operator* (Simd4Double a, Simd4Double b) |
Multiply two SIMD4 variables. More... | |
static Simd4Double gmx_simdcall | fma (Simd4Double a, Simd4Double b, Simd4Double c) |
SIMD4 Fused-multiply-add. Result is a*b+c. More... | |
static Simd4Double gmx_simdcall | fms (Simd4Double a, Simd4Double b, Simd4Double c) |
SIMD4 Fused-multiply-subtract. Result is a*b-c. More... | |
static Simd4Double gmx_simdcall | fnma (Simd4Double a, Simd4Double b, Simd4Double c) |
SIMD4 Fused-negated-multiply-add. Result is -a*b+c. More... | |
static Simd4Double gmx_simdcall | fnms (Simd4Double a, Simd4Double b, Simd4Double c) |
SIMD4 Fused-negated-multiply-subtract. Result is -a*b-c. More... | |
static Simd4Double gmx_simdcall | rsqrt (Simd4Double x) |
SIMD4 1.0/sqrt(x) lookup. More... | |
static Simd4Double gmx_simdcall | abs (Simd4Double a) |
SIMD4 Floating-point abs(). More... | |
static Simd4Double gmx_simdcall | max (Simd4Double a, Simd4Double b) |
Set each SIMD4 element to the largest from two variables. More... | |
static Simd4Double gmx_simdcall | min (Simd4Double a, Simd4Double b) |
Set each SIMD4 element to the largest from two variables. More... | |
static Simd4Double gmx_simdcall | round (Simd4Double a) |
SIMD4 Round to nearest integer value (in floating-point format). More... | |
static Simd4Double gmx_simdcall | trunc (Simd4Double a) |
Truncate SIMD4, i.e. round towards zero - common hardware instruction. More... | |
static double gmx_simdcall | dotProduct (Simd4Double a, Simd4Double b) |
Return dot product of two double precision SIMD4 variables. More... | |
static void gmx_simdcall | transpose (Simd4Double *v0, Simd4Double *v1, Simd4Double *v2, Simd4Double *v3) |
SIMD4 double transpose. More... | |
static Simd4DBool gmx_simdcall | operator== (Simd4Double a, Simd4Double b) |
a==b for SIMD4 double More... | |
static Simd4DBool gmx_simdcall | operator!= (Simd4Double a, Simd4Double b) |
a!=b for SIMD4 double More... | |
static Simd4DBool gmx_simdcall | operator< (Simd4Double a, Simd4Double b) |
a<b for SIMD4 double More... | |
static Simd4DBool gmx_simdcall | operator<= (Simd4Double a, Simd4Double b) |
a<=b for SIMD4 double. More... | |
static Simd4DBool gmx_simdcall | operator&& (Simd4DBool a, Simd4DBool b) |
Logical and on single precision SIMD4 booleans. More... | |
static Simd4DBool gmx_simdcall | operator|| (Simd4DBool a, Simd4DBool b) |
Logical or on single precision SIMD4 booleans. More... | |
static bool gmx_simdcall | anyTrue (Simd4DBool a) |
Returns non-zero if any of the boolean in SIMD4 a is True, otherwise 0. More... | |
static Simd4Double gmx_simdcall | selectByMask (Simd4Double a, Simd4DBool mask) |
Select from single precision SIMD4 variable where boolean is true. More... | |
static Simd4Double gmx_simdcall | selectByNotMask (Simd4Double a, Simd4DBool mask) |
Select from single precision SIMD4 variable where boolean is false. More... | |
static Simd4Double gmx_simdcall | blend (Simd4Double a, Simd4Double b, Simd4DBool sel) |
Vector-blend SIMD4 selection. More... | |
static double gmx_simdcall | reduce (Simd4Double a) |
Return sum of all elements in SIMD4 double variable. More... | |
Constant width-4 single precision SIMD types and instructions | |
static Simd4Float gmx_simdcall | load4 (const float *m) |
Load 4 float values from aligned memory into SIMD4 variable. More... | |
static void gmx_simdcall | store4 (float *m, Simd4Float a) |
Store the contents of SIMD4 float to aligned memory m. More... | |
static Simd4Float gmx_simdcall | load4U (const float *m) |
Load SIMD4 float from unaligned memory. More... | |
static void gmx_simdcall | store4U (float *m, Simd4Float a) |
Store SIMD4 float to unaligned memory. More... | |
static Simd4Float gmx_simdcall | simd4SetZeroF () |
Set all SIMD4 float elements to 0. More... | |
static Simd4Float gmx_simdcall | operator& (Simd4Float a, Simd4Float b) |
Bitwise and for two SIMD4 float variables. More... | |
static Simd4Float gmx_simdcall | andNot (Simd4Float a, Simd4Float b) |
Bitwise andnot for two SIMD4 float variables. c=(~a) & b. More... | |
static Simd4Float gmx_simdcall | operator| (Simd4Float a, Simd4Float b) |
Bitwise or for two SIMD4 floats. More... | |
static Simd4Float gmx_simdcall | operator^ (Simd4Float a, Simd4Float b) |
Bitwise xor for two SIMD4 float variables. More... | |
static Simd4Float gmx_simdcall | operator+ (Simd4Float a, Simd4Float b) |
Add two float SIMD4 variables. More... | |
static Simd4Float gmx_simdcall | operator- (Simd4Float a, Simd4Float b) |
Subtract two SIMD4 variables. More... | |
static Simd4Float gmx_simdcall | operator- (Simd4Float a) |
SIMD4 floating-point negate. More... | |
static Simd4Float gmx_simdcall | operator* (Simd4Float a, Simd4Float b) |
Multiply two SIMD4 variables. More... | |
static Simd4Float gmx_simdcall | fma (Simd4Float a, Simd4Float b, Simd4Float c) |
SIMD4 Fused-multiply-add. Result is a*b+c. More... | |
static Simd4Float gmx_simdcall | fms (Simd4Float a, Simd4Float b, Simd4Float c) |
SIMD4 Fused-multiply-subtract. Result is a*b-c. More... | |
static Simd4Float gmx_simdcall | fnma (Simd4Float a, Simd4Float b, Simd4Float c) |
SIMD4 Fused-negated-multiply-add. Result is -a*b+c. More... | |
static Simd4Float gmx_simdcall | fnms (Simd4Float a, Simd4Float b, Simd4Float c) |
SIMD4 Fused-negated-multiply-subtract. Result is -a*b-c. More... | |
static Simd4Float gmx_simdcall | rsqrt (Simd4Float x) |
SIMD4 1.0/sqrt(x) lookup. More... | |
static Simd4Float gmx_simdcall | abs (Simd4Float a) |
SIMD4 Floating-point fabs(). More... | |
static Simd4Float gmx_simdcall | max (Simd4Float a, Simd4Float b) |
Set each SIMD4 element to the largest from two variables. More... | |
static Simd4Float gmx_simdcall | min (Simd4Float a, Simd4Float b) |
Set each SIMD4 element to the largest from two variables. More... | |
static Simd4Float gmx_simdcall | round (Simd4Float a) |
SIMD4 Round to nearest integer value (in floating-point format). More... | |
static Simd4Float gmx_simdcall | trunc (Simd4Float a) |
Truncate SIMD4, i.e. round towards zero - common hardware instruction. More... | |
static float gmx_simdcall | dotProduct (Simd4Float a, Simd4Float b) |
Return dot product of two single precision SIMD4 variables. More... | |
static void gmx_simdcall | transpose (Simd4Float *v0, Simd4Float *v1, Simd4Float *v2, Simd4Float *v3) |
SIMD4 float transpose. More... | |
static Simd4FBool gmx_simdcall | operator== (Simd4Float a, Simd4Float b) |
a==b for SIMD4 float More... | |
static Simd4FBool gmx_simdcall | operator!= (Simd4Float a, Simd4Float b) |
a!=b for SIMD4 float More... | |
static Simd4FBool gmx_simdcall | operator< (Simd4Float a, Simd4Float b) |
a<b for SIMD4 float More... | |
static Simd4FBool gmx_simdcall | operator<= (Simd4Float a, Simd4Float b) |
a<=b for SIMD4 float. More... | |
static Simd4FBool gmx_simdcall | operator&& (Simd4FBool a, Simd4FBool b) |
Logical and on single precision SIMD4 booleans. More... | |
static Simd4FBool gmx_simdcall | operator|| (Simd4FBool a, Simd4FBool b) |
Logical or on single precision SIMD4 booleans. More... | |
static bool gmx_simdcall | anyTrue (Simd4FBool a) |
Returns non-zero if any of the boolean in SIMD4 a is True, otherwise 0. More... | |
static Simd4Float gmx_simdcall | selectByMask (Simd4Float a, Simd4FBool mask) |
Select from single precision SIMD4 variable where boolean is true. More... | |
static Simd4Float gmx_simdcall | selectByNotMask (Simd4Float a, Simd4FBool mask) |
Select from single precision SIMD4 variable where boolean is false. More... | |
static Simd4Float gmx_simdcall | blend (Simd4Float a, Simd4Float b, Simd4FBool sel) |
Vector-blend SIMD4 selection. More... | |
static float gmx_simdcall | reduce (Simd4Float a) |
Return sum of all elements in SIMD4 float variable. More... | |
SIMD implementation load/store operations for double precision floating point | |
static SimdDouble gmx_simdcall | simdLoad (const double *m) |
Load GMX_SIMD_DOUBLE_WIDTH numbers from aligned memory. More... | |
static void gmx_simdcall | store (double *m, SimdDouble a) |
Store the contents of SIMD double variable to aligned memory m. More... | |
static SimdDouble gmx_simdcall | simdLoadU (const double *m) |
Load SIMD double from unaligned memory. More... | |
static void gmx_simdcall | storeU (double *m, SimdDouble a) |
Store SIMD double to unaligned memory. More... | |
static SimdDouble gmx_simdcall | setZeroD () |
Set all SIMD double variable elements to 0.0. More... | |
SIMD implementation load/store operations for integers (corresponding to double) | |
static SimdDInt32 gmx_simdcall | simdLoadDI (const std::int32_t *m) |
Load aligned SIMD integer data, width corresponds to gmx::SimdDouble. More... | |
static void gmx_simdcall | store (std::int32_t *m, SimdDInt32 a) |
Store aligned SIMD integer data, width corresponds to gmx::SimdDouble. More... | |
static SimdDInt32 gmx_simdcall | simdLoadUDI (const std::int32_t *m) |
Load unaligned integer SIMD data, width corresponds to gmx::SimdDouble. More... | |
static void gmx_simdcall | storeU (std::int32_t *m, SimdDInt32 a) |
Store unaligned SIMD integer data, width corresponds to gmx::SimdDouble. More... | |
static SimdDInt32 gmx_simdcall | setZeroDI () |
Set all SIMD (double) integer variable elements to 0. More... | |
template<int index> | |
static std::int32_t gmx_simdcall | extract (SimdDInt32 a) |
Extract element with index i from gmx::SimdDInt32. More... | |
SIMD implementation double precision floating-point bitwise logical operations | |
static SimdDouble gmx_simdcall | operator& (SimdDouble a, SimdDouble b) |
Bitwise and for two SIMD double variables. More... | |
static SimdDouble gmx_simdcall | andNot (SimdDouble a, SimdDouble b) |
Bitwise andnot for SIMD double. More... | |
static SimdDouble gmx_simdcall | operator| (SimdDouble a, SimdDouble b) |
Bitwise or for SIMD double. More... | |
static SimdDouble gmx_simdcall | operator^ (SimdDouble a, SimdDouble b) |
Bitwise xor for SIMD double. More... | |
SIMD implementation double precision floating-point arithmetics | |
static SimdDouble gmx_simdcall | operator+ (SimdDouble a, SimdDouble b) |
Add two double SIMD variables. More... | |
static SimdDouble gmx_simdcall | operator- (SimdDouble a, SimdDouble b) |
Subtract two double SIMD variables. More... | |
static SimdDouble gmx_simdcall | operator- (SimdDouble a) |
SIMD double precision negate. More... | |
static SimdDouble gmx_simdcall | operator* (SimdDouble a, SimdDouble b) |
Multiply two double SIMD variables. More... | |
static SimdDouble gmx_simdcall | fma (SimdDouble a, SimdDouble b, SimdDouble c) |
SIMD double Fused-multiply-add. Result is a*b+c. More... | |
static SimdDouble gmx_simdcall | fms (SimdDouble a, SimdDouble b, SimdDouble c) |
SIMD double Fused-multiply-subtract. Result is a*b-c. More... | |
static SimdDouble gmx_simdcall | fnma (SimdDouble a, SimdDouble b, SimdDouble c) |
SIMD double Fused-negated-multiply-add. Result is -a*b+c. More... | |
static SimdDouble gmx_simdcall | fnms (SimdDouble a, SimdDouble b, SimdDouble c) |
SIMD double Fused-negated-multiply-subtract. Result is -a*b-c. More... | |
static SimdDouble gmx_simdcall | rsqrt (SimdDouble x) |
double SIMD 1.0/sqrt(x) lookup. More... | |
static SimdDouble gmx_simdcall | rcp (SimdDouble x) |
SIMD double 1.0/x lookup. More... | |
static SimdDouble gmx_simdcall | maskAdd (SimdDouble a, SimdDouble b, SimdDBool m) |
Add two double SIMD variables, masked version. More... | |
static SimdDouble gmx_simdcall | maskzMul (SimdDouble a, SimdDouble b, SimdDBool m) |
Multiply two double SIMD variables, masked version. More... | |
static SimdDouble gmx_simdcall | maskzFma (SimdDouble a, SimdDouble b, SimdDouble c, SimdDBool m) |
SIMD double fused multiply-add, masked version. More... | |
static SimdDouble gmx_simdcall | maskzRsqrt (SimdDouble x, SimdDBool m) |
SIMD double 1.0/sqrt(x) lookup, masked version. More... | |
static SimdDouble gmx_simdcall | maskzRcp (SimdDouble x, SimdDBool m) |
SIMD double 1.0/x lookup, masked version. More... | |
static SimdDouble gmx_simdcall | abs (SimdDouble a) |
SIMD double floating-point fabs(). More... | |
static SimdDouble gmx_simdcall | max (SimdDouble a, SimdDouble b) |
Set each SIMD double element to the largest from two variables. More... | |
static SimdDouble gmx_simdcall | min (SimdDouble a, SimdDouble b) |
Set each SIMD double element to the smallest from two variables. More... | |
static SimdDouble gmx_simdcall | round (SimdDouble a) |
SIMD double round to nearest integer value (in floating-point format). More... | |
static SimdDouble gmx_simdcall | trunc (SimdDouble a) |
Truncate SIMD double, i.e. round towards zero - common hardware instruction. More... | |
static SimdDouble gmx_simdcall | frexp (SimdDouble value, SimdDInt32 *exponent) |
Extract (integer) exponent and fraction from double precision SIMD. More... | |
static SimdDouble gmx_simdcall | ldexp (SimdDouble value, SimdDInt32 exponent) |
Multiply a SIMD double value by the number 2 raised to an exp power. More... | |
static double gmx_simdcall | reduce (SimdDouble a) |
Return sum of all elements in SIMD double variable. More... | |
SIMD implementation double precision floating-point comparison, boolean, selection. | |
static SimdDBool gmx_simdcall | operator== (SimdDouble a, SimdDouble b) |
SIMD a==b for double SIMD. More... | |
static SimdDBool gmx_simdcall | operator!= (SimdDouble a, SimdDouble b) |
SIMD a!=b for double SIMD. More... | |
static SimdDBool gmx_simdcall | operator< (SimdDouble a, SimdDouble b) |
SIMD a<b for double SIMD. More... | |
static SimdDBool gmx_simdcall | operator<= (SimdDouble a, SimdDouble b) |
SIMD a<=b for double SIMD. More... | |
static SimdDBool gmx_simdcall | testBits (SimdDouble a) |
Return true if any bits are set in the single precision SIMD. More... | |
static SimdDBool gmx_simdcall | operator&& (SimdDBool a, SimdDBool b) |
Logical and on double precision SIMD booleans. More... | |
static SimdDBool gmx_simdcall | operator|| (SimdDBool a, SimdDBool b) |
Logical or on double precision SIMD booleans. More... | |
static bool gmx_simdcall | anyTrue (SimdDBool a) |
Returns non-zero if any of the boolean in SIMD a is True, otherwise 0. More... | |
static SimdDouble gmx_simdcall | selectByMask (SimdDouble a, SimdDBool mask) |
Select from double precision SIMD variable where boolean is true. More... | |
static SimdDouble gmx_simdcall | selectByNotMask (SimdDouble a, SimdDBool mask) |
Select from double precision SIMD variable where boolean is false. More... | |
static SimdDouble gmx_simdcall | blend (SimdDouble a, SimdDouble b, SimdDBool sel) |
Vector-blend SIMD double selection. More... | |
SIMD implementation integer (corresponding to double) bitwise logical operations | |
static SimdDInt32 gmx_simdcall | operator<< (SimdDInt32 a, int n) |
SIMD integer shift left logical, based on immediate value. More... | |
static SimdDInt32 gmx_simdcall | operator>> (SimdDInt32 a, int n) |
SIMD integer shift right logical, based on immediate value. More... | |
static SimdDInt32 gmx_simdcall | operator& (SimdDInt32 a, SimdDInt32 b) |
Integer SIMD bitwise and. More... | |
static SimdDInt32 gmx_simdcall | andNot (SimdDInt32 a, SimdDInt32 b) |
Integer SIMD bitwise not/complement. More... | |
static SimdDInt32 gmx_simdcall | operator| (SimdDInt32 a, SimdDInt32 b) |
Integer SIMD bitwise or. More... | |
static SimdDInt32 gmx_simdcall | operator^ (SimdDInt32 a, SimdDInt32 b) |
Integer SIMD bitwise xor. More... | |
SIMD implementation integer (corresponding to double) arithmetics | |
static SimdDInt32 gmx_simdcall | operator+ (SimdDInt32 a, SimdDInt32 b) |
Add SIMD integers. More... | |
static SimdDInt32 gmx_simdcall | operator- (SimdDInt32 a, SimdDInt32 b) |
Subtract SIMD integers. More... | |
static SimdDInt32 gmx_simdcall | operator* (SimdDInt32 a, SimdDInt32 b) |
Multiply SIMD integers. More... | |
SIMD implementation integer (corresponding to double) comparisons, boolean selection | |
static SimdDIBool gmx_simdcall | operator== (SimdDInt32 a, SimdDInt32 b) |
Equality comparison of two integers corresponding to double values. More... | |
static SimdDIBool gmx_simdcall | operator< (SimdDInt32 a, SimdDInt32 b) |
Less-than comparison of two SIMD integers corresponding to double values. More... | |
static SimdDIBool gmx_simdcall | testBits (SimdDInt32 a) |
Check if any bit is set in each element. More... | |
static SimdDIBool gmx_simdcall | operator&& (SimdDIBool a, SimdDIBool b) |
Logical AND on SimdDIBool. More... | |
static SimdDIBool gmx_simdcall | operator|| (SimdDIBool a, SimdDIBool b) |
Logical OR on SimdDIBool. More... | |
static bool gmx_simdcall | anyTrue (SimdDIBool a) |
Returns true if any of the boolean in x is True, otherwise 0. More... | |
static SimdDInt32 gmx_simdcall | selectByMask (SimdDInt32 a, SimdDIBool mask) |
Select from gmx::SimdDInt32 variable where boolean is true. More... | |
static SimdDInt32 gmx_simdcall | selectByNotMask (SimdDInt32 a, SimdDIBool mask) |
Select from gmx::SimdDInt32 variable where boolean is false. More... | |
static SimdDInt32 gmx_simdcall | blend (SimdDInt32 a, SimdDInt32 b, SimdDIBool sel) |
Vector-blend SIMD integer selection. More... | |
SIMD implementation conversion operations | |
static SimdDInt32 gmx_simdcall | cvtR2I (SimdDouble a) |
Round double precision floating point to integer. More... | |
static SimdDInt32 gmx_simdcall | cvttR2I (SimdDouble a) |
Truncate double precision floating point to integer. More... | |
static SimdDouble gmx_simdcall | cvtI2R (SimdDInt32 a) |
Convert integer to double precision floating point. More... | |
static SimdDIBool gmx_simdcall | cvtB2IB (SimdDBool a) |
Convert from double precision boolean to corresponding integer boolean. More... | |
static SimdDBool gmx_simdcall | cvtIB2B (SimdDIBool a) |
Convert from integer boolean to corresponding double precision boolean. More... | |
static SimdDouble gmx_simdcall | cvtF2D (SimdFloat f) |
Convert SIMD float to double. More... | |
static SimdFloat gmx_simdcall | cvtD2F (SimdDouble d) |
Convert SIMD double to float. More... | |
static void gmx_simdcall | cvtF2DD (SimdFloat f, SimdDouble *d0, SimdDouble *d1) |
Convert SIMD float to double. More... | |
static SimdFloat gmx_simdcall | cvtDD2F (SimdDouble d0, SimdDouble d1) |
Convert SIMD double to float. More... | |
static SimdFInt32 gmx_simdcall | cvtR2I (SimdFloat a) |
Round single precision floating point to integer. More... | |
static SimdFInt32 gmx_simdcall | cvttR2I (SimdFloat a) |
Truncate single precision floating point to integer. More... | |
static SimdFloat gmx_simdcall | cvtI2R (SimdFInt32 a) |
Convert integer to single precision floating point. More... | |
static SimdFIBool gmx_simdcall | cvtB2IB (SimdFBool a) |
Convert from single precision boolean to corresponding integer boolean. More... | |
static SimdFBool gmx_simdcall | cvtIB2B (SimdFIBool a) |
Convert from integer boolean to corresponding single precision boolean. More... | |
SIMD implementation load/store operations for single precision floating point | |
static SimdFloat gmx_simdcall | simdLoad (const float *m) |
Load GMX_SIMD_FLOAT_WIDTH float numbers from aligned memory. More... | |
static void gmx_simdcall | store (float *m, SimdFloat a) |
Store the contents of SIMD float variable to aligned memory m. More... | |
static SimdFloat gmx_simdcall | simdLoadU (const float *m) |
Load SIMD float from unaligned memory. More... | |
static void gmx_simdcall | storeU (float *m, SimdFloat a) |
Store SIMD float to unaligned memory. More... | |
static SimdFloat gmx_simdcall | setZeroF () |
Set all SIMD float variable elements to 0.0. More... | |
SIMD implementation load/store operations for integers (corresponding to float) | |
static SimdFInt32 gmx_simdcall | simdLoadFI (const std::int32_t *m) |
Load aligned SIMD integer data, width corresponds to gmx::SimdFloat. More... | |
static void gmx_simdcall | store (std::int32_t *m, SimdFInt32 a) |
Store aligned SIMD integer data, width corresponds to gmx::SimdFloat. More... | |
static SimdFInt32 gmx_simdcall | simdLoadUFI (const std::int32_t *m) |
Load unaligned integer SIMD data, width corresponds to gmx::SimdFloat. More... | |
static void gmx_simdcall | storeU (std::int32_t *m, SimdFInt32 a) |
Store unaligned SIMD integer data, width corresponds to gmx::SimdFloat. More... | |
static SimdFInt32 gmx_simdcall | setZeroFI () |
Set all SIMD (float) integer variable elements to 0. More... | |
template<int index> | |
static std::int32_t gmx_simdcall | extract (SimdFInt32 a) |
Extract element with index i from gmx::SimdFInt32. More... | |
SIMD implementation single precision floating-point bitwise logical operations | |
static SimdFloat gmx_simdcall | operator& (SimdFloat a, SimdFloat b) |
Bitwise and for two SIMD float variables. More... | |
static SimdFloat gmx_simdcall | andNot (SimdFloat a, SimdFloat b) |
Bitwise andnot for SIMD float. More... | |
static SimdFloat gmx_simdcall | operator| (SimdFloat a, SimdFloat b) |
Bitwise or for SIMD float. More... | |
static SimdFloat gmx_simdcall | operator^ (SimdFloat a, SimdFloat b) |
Bitwise xor for SIMD float. More... | |
SIMD implementation single precision floating-point arithmetics | |
static SimdFloat gmx_simdcall | operator+ (SimdFloat a, SimdFloat b) |
Add two float SIMD variables. More... | |
static SimdFloat gmx_simdcall | operator- (SimdFloat a, SimdFloat b) |
Subtract two float SIMD variables. More... | |
static SimdFloat gmx_simdcall | operator- (SimdFloat a) |
SIMD single precision negate. More... | |
static SimdFloat gmx_simdcall | operator* (SimdFloat a, SimdFloat b) |
Multiply two float SIMD variables. More... | |
static SimdFloat gmx_simdcall | fma (SimdFloat a, SimdFloat b, SimdFloat c) |
SIMD float Fused-multiply-add. Result is a*b+c. More... | |
static SimdFloat gmx_simdcall | fms (SimdFloat a, SimdFloat b, SimdFloat c) |
SIMD float Fused-multiply-subtract. Result is a*b-c. More... | |
static SimdFloat gmx_simdcall | fnma (SimdFloat a, SimdFloat b, SimdFloat c) |
SIMD float Fused-negated-multiply-add. Result is -a*b+c. More... | |
static SimdFloat gmx_simdcall | fnms (SimdFloat a, SimdFloat b, SimdFloat c) |
SIMD float Fused-negated-multiply-subtract. Result is -a*b-c. More... | |
static SimdFloat gmx_simdcall | rsqrt (SimdFloat x) |
SIMD float 1.0/sqrt(x) lookup. More... | |
static SimdFloat gmx_simdcall | rcp (SimdFloat x) |
SIMD float 1.0/x lookup. More... | |
static SimdFloat gmx_simdcall | maskAdd (SimdFloat a, SimdFloat b, SimdFBool m) |
Add two float SIMD variables, masked version. More... | |
static SimdFloat gmx_simdcall | maskzMul (SimdFloat a, SimdFloat b, SimdFBool m) |
Multiply two float SIMD variables, masked version. More... | |
static SimdFloat gmx_simdcall | maskzFma (SimdFloat a, SimdFloat b, SimdFloat c, SimdFBool m) |
SIMD float fused multiply-add, masked version. More... | |
static SimdFloat gmx_simdcall | maskzRsqrt (SimdFloat x, SimdFBool m) |
SIMD float 1.0/sqrt(x) lookup, masked version. More... | |
static SimdFloat gmx_simdcall | maskzRcp (SimdFloat x, SimdFBool m) |
SIMD float 1.0/x lookup, masked version. More... | |
static SimdFloat gmx_simdcall | abs (SimdFloat a) |
SIMD float Floating-point abs(). More... | |
static SimdFloat gmx_simdcall | max (SimdFloat a, SimdFloat b) |
Set each SIMD float element to the largest from two variables. More... | |
static SimdFloat gmx_simdcall | min (SimdFloat a, SimdFloat b) |
Set each SIMD float element to the smallest from two variables. More... | |
static SimdFloat gmx_simdcall | round (SimdFloat a) |
SIMD float round to nearest integer value (in floating-point format). More... | |
static SimdFloat gmx_simdcall | trunc (SimdFloat a) |
Truncate SIMD float, i.e. round towards zero - common hardware instruction. More... | |
static SimdFloat gmx_simdcall | frexp (SimdFloat value, SimdFInt32 *exponent) |
Extract (integer) exponent and fraction from single precision SIMD. More... | |
static SimdFloat gmx_simdcall | ldexp (SimdFloat value, SimdFInt32 exponent) |
Multiply a SIMD float value by the number 2 raised to an exp power. More... | |
static float gmx_simdcall | reduce (SimdFloat a) |
Return sum of all elements in SIMD float variable. More... | |
SIMD implementation single precision floating-point comparisons, boolean, selection. | |
static SimdFBool gmx_simdcall | operator== (SimdFloat a, SimdFloat b) |
SIMD a==b for single SIMD. More... | |
static SimdFBool gmx_simdcall | operator!= (SimdFloat a, SimdFloat b) |
SIMD a!=b for single SIMD. More... | |
static SimdFBool gmx_simdcall | operator< (SimdFloat a, SimdFloat b) |
SIMD a<b for single SIMD. More... | |
static SimdFBool gmx_simdcall | operator<= (SimdFloat a, SimdFloat b) |
SIMD a<=b for single SIMD. More... | |
static SimdFBool gmx_simdcall | testBits (SimdFloat a) |
Return true if any bits are set in the single precision SIMD. More... | |
static SimdFBool gmx_simdcall | operator&& (SimdFBool a, SimdFBool b) |
Logical and on single precision SIMD booleans. More... | |
static SimdFBool gmx_simdcall | operator|| (SimdFBool a, SimdFBool b) |
Logical or on single precision SIMD booleans. More... | |
static bool gmx_simdcall | anyTrue (SimdFBool a) |
Returns non-zero if any of the boolean in SIMD a is True, otherwise 0. More... | |
static SimdFloat gmx_simdcall | selectByMask (SimdFloat a, SimdFBool mask) |
Select from single precision SIMD variable where boolean is true. More... | |
static SimdFloat gmx_simdcall | selectByNotMask (SimdFloat a, SimdFBool mask) |
Select from single precision SIMD variable where boolean is false. More... | |
static SimdFloat gmx_simdcall | blend (SimdFloat a, SimdFloat b, SimdFBool sel) |
Vector-blend SIMD float selection. More... | |
SIMD implementation integer (corresponding to float) bitwise logical operations | |
static SimdFInt32 gmx_simdcall | operator<< (SimdFInt32 a, int n) |
SIMD integer shift left logical, based on immediate value. More... | |
static SimdFInt32 gmx_simdcall | operator>> (SimdFInt32 a, int n) |
SIMD integer shift right logical, based on immediate value. More... | |
static SimdFInt32 gmx_simdcall | operator& (SimdFInt32 a, SimdFInt32 b) |
Integer SIMD bitwise and. More... | |
static SimdFInt32 gmx_simdcall | andNot (SimdFInt32 a, SimdFInt32 b) |
Integer SIMD bitwise not/complement. More... | |
static SimdFInt32 gmx_simdcall | operator| (SimdFInt32 a, SimdFInt32 b) |
Integer SIMD bitwise or. More... | |
static SimdFInt32 gmx_simdcall | operator^ (SimdFInt32 a, SimdFInt32 b) |
Integer SIMD bitwise xor. More... | |
SIMD implementation integer (corresponding to float) arithmetics | |
static SimdFInt32 gmx_simdcall | operator+ (SimdFInt32 a, SimdFInt32 b) |
Add SIMD integers. More... | |
static SimdFInt32 gmx_simdcall | operator- (SimdFInt32 a, SimdFInt32 b) |
Subtract SIMD integers. More... | |
static SimdFInt32 gmx_simdcall | operator* (SimdFInt32 a, SimdFInt32 b) |
Multiply SIMD integers. More... | |
SIMD implementation integer (corresponding to float) comparisons, boolean, selection | |
static SimdFIBool gmx_simdcall | operator== (SimdFInt32 a, SimdFInt32 b) |
Equality comparison of two integers corresponding to float values. More... | |
static SimdFIBool gmx_simdcall | operator< (SimdFInt32 a, SimdFInt32 b) |
Less-than comparison of two SIMD integers corresponding to float values. More... | |
static SimdFIBool gmx_simdcall | testBits (SimdFInt32 a) |
Check if any bit is set in each element. More... | |
static SimdFIBool gmx_simdcall | operator&& (SimdFIBool a, SimdFIBool b) |
Logical AND on SimdFIBool. More... | |
static SimdFIBool gmx_simdcall | operator|| (SimdFIBool a, SimdFIBool b) |
Logical OR on SimdFIBool. More... | |
static bool gmx_simdcall | anyTrue (SimdFIBool a) |
Returns true if any of the boolean in x is True, otherwise 0. More... | |
static SimdFInt32 gmx_simdcall | selectByMask (SimdFInt32 a, SimdFIBool mask) |
Select from gmx::SimdFInt32 variable where boolean is true. More... | |
static SimdFInt32 gmx_simdcall | selectByNotMask (SimdFInt32 a, SimdFIBool mask) |
Select from gmx::SimdFInt32 variable where boolean is false. More... | |
static SimdFInt32 gmx_simdcall | blend (SimdFInt32 a, SimdFInt32 b, SimdFIBool sel) |
Vector-blend SIMD integer selection. More... | |
Higher-level SIMD utilities accessing partial (half-width) SIMD doubles. | |
See the single-precision versions for documentation. Since double precision is typically half the width of single, this double version is likely only useful with 512-bit and larger implementations. | |
static SimdDouble gmx_simdcall | loadDualHsimd (const double *m0, const double *m1) |
Load low & high parts of SIMD double from different locations. More... | |
static SimdDouble gmx_simdcall | loadDuplicateHsimd (const double *m) |
Load half-SIMD-width double data, spread to both halves. More... | |
static SimdDouble gmx_simdcall | load1DualHsimd (const double *m) |
Load two doubles, spread 1st in low half, 2nd in high half. More... | |
static void gmx_simdcall | storeDualHsimd (double *m0, double *m1, SimdDouble a) |
Store low & high parts of SIMD double to different locations. More... | |
static void gmx_simdcall | incrDualHsimd (double *m0, double *m1, SimdDouble a) |
Add each half of SIMD variable to separate memory adresses. More... | |
static void gmx_simdcall | decrHsimd (double *m, SimdDouble a) |
Add the two halves of a SIMD double, subtract the sum from half-SIMD-width consecutive doubles in memory. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadTransposeHsimd (const double *base0, const double *base1, std::int32_t offset[], SimdDouble *v0, SimdDouble *v1) |
Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH/2 offsets, transpose into SIMD double (low half from base0, high from base1). More... | |
static double gmx_simdcall | reduceIncr4ReturnSumHsimd (double *m, SimdDouble v0, SimdDouble v1) |
Reduce the 4 half-SIMD-with doubles in 2 SIMD variables (sum halves), increment four consecutive doubles in memory, return sum. More... | |
Higher-level SIMD utilities accessing partial (half-width) SIMD floats. | |
These functions are optional. The are only useful for SIMD implementation where the width is 8 or larger, and where it would be inefficient to process 4*8, 8*8, or more, interactions in parallel. Currently, only Intel provides very wide SIMD implementations, but these also come with excellent support for loading, storing, accessing and shuffling parts of the register in so-called 'lanes' of 4 bytes each. We can use this to load separate parts into the low/high halves of the register in the inner loop of the nonbonded kernel, which e.g. makes it possible to process 4*4 nonbonded interactions as a pattern of 2*8. We can also use implementations with width 16 or greater. To make this more generic, when GMX_SIMD_HAVE_HSIMD_UTIL_REAL is 1, the SIMD implementation provides seven special routines that:
Remember: this is ONLY used when the native SIMD width is large. You will just waste time if you implement it for normal 16-byte SIMD architectures. This is part of the new C++ SIMD interface, so these functions are only available when using C++. Since some Gromacs code reliying on the SIMD module is still C (not C++), we have kept the C-style naming for now - this will change once we are entirely C++. | |
static SimdFloat gmx_simdcall | loadDualHsimd (const float *m0, const float *m1) |
Load low & high parts of SIMD float from different locations. More... | |
static SimdFloat gmx_simdcall | loadDuplicateHsimd (const float *m) |
Load half-SIMD-width float data, spread to both halves. More... | |
static SimdFloat gmx_simdcall | load1DualHsimd (const float *m) |
Load two floats, spread 1st in low half, 2nd in high half. More... | |
static void gmx_simdcall | storeDualHsimd (float *m0, float *m1, SimdFloat a) |
Store low & high parts of SIMD float to different locations. More... | |
static void gmx_simdcall | incrDualHsimd (float *m0, float *m1, SimdFloat a) |
Add each half of SIMD variable to separate memory adresses. More... | |
static void gmx_simdcall | decrHsimd (float *m, SimdFloat a) |
Add the two halves of a SIMD float, subtract the sum from half-SIMD-width consecutive floats in memory. More... | |
template<int align> | |
static void gmx_simdcall | gatherLoadTransposeHsimd (const float *base0, const float *base1, const std::int32_t offset[], SimdFloat *v0, SimdFloat *v1) |
Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH/2 offsets, transpose into SIMD float (low half from base0, high from base1). More... | |
static float gmx_simdcall | reduceIncr4ReturnSumHsimd (float *m, SimdFloat v0, SimdFloat v1) |
Reduce the 4 half-SIMD-with floats in 2 SIMD variables (sum halves), increment four consecutive floats in memory, return sum. More... | |
High-level SIMD proxy objects to disambiguate load/set operations | |
static const SimdLoadFProxyInternal gmx_simdcall | load (const float *m) |
Load function that returns proxy object for SimdFloat and float. More... | |
static const SimdLoadUFProxyInternal gmx_simdcall | loadU (const float *m) |
LoadU function that returns proxy object for SimdFloat and float. More... | |
static const SimdLoadDProxyInternal gmx_simdcall | load (const double *m) |
Load function that returns proxy object for SimdDouble and double. More... | |
static const SimdLoadUDProxyInternal gmx_simdcall | loadU (const double *m) |
Load function that returns proxy object for SimdDouble and double. More... | |
static const SimdLoadIProxyInternal gmx_simdcall | load (const std::int32_t *m) |
Integer load function (proxy object) for SimdFInt32, SImdDInt32, and int32. More... | |
static const SimdLoadUIProxyInternal gmx_simdcall | loadU (const std::int32_t *m) |
Integer loadU function (proxy object) for SimdFInt32, SImdDInt32, and int32. More... | |
static const SimdSetZeroProxyInternal gmx_simdcall | setZero () |
Proxy object to set any SIMD or scalar variable to zero. More... | |
Single precision SIMD math functions | |
| |
static SimdFloat gmx_simdcall | copysign (SimdFloat x, SimdFloat y) |
Composes floating point value with the magnitude of x and the sign of y. More... | |
static SimdFloat gmx_simdcall | rsqrtIter (SimdFloat lu, SimdFloat x) |
Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD float. More... | |
static SimdFloat gmx_simdcall | invsqrt (SimdFloat x) |
Calculate 1/sqrt(x) for SIMD float. More... | |
static void gmx_simdcall | invsqrtPair (SimdFloat x0, SimdFloat x1, SimdFloat *out0, SimdFloat *out1) |
Calculate 1/sqrt(x) for two SIMD floats. More... | |
static SimdFloat gmx_simdcall | rcpIter (SimdFloat lu, SimdFloat x) |
Perform one Newton-Raphson iteration to improve 1/x for SIMD float. More... | |
static SimdFloat gmx_simdcall | inv (SimdFloat x) |
Calculate 1/x for SIMD float. More... | |
static SimdFloat gmx_simdcall | operator/ (SimdFloat nom, SimdFloat denom) |
Division for SIMD floats. More... | |
static SimdFloat | maskzInvsqrt (SimdFloat x, SimdFBool m) |
Calculate 1/sqrt(x) for masked entries of SIMD float. More... | |
static SimdFloat gmx_simdcall | maskzInv (SimdFloat x, SimdFBool m) |
Calculate 1/x for SIMD float, masked version. More... | |
static SimdFloat gmx_simdcall | sqrt (SimdFloat x) |
Calculate sqrt(x) correctly for SIMD floats, including argument 0.0. More... | |
static SimdFloat gmx_simdcall | log (SimdFloat x) |
SIMD float log(x). This is the natural logarithm. More... | |
static SimdFloat gmx_simdcall | exp2 (SimdFloat x) |
SIMD float 2^x. More... | |
static SimdFloat gmx_simdcall | exp (SimdFloat x) |
SIMD float exp(x). More... | |
static SimdFloat gmx_simdcall | erf (SimdFloat x) |
SIMD float erf(x). More... | |
static SimdFloat gmx_simdcall | erfc (SimdFloat x) |
SIMD float erfc(x). More... | |
static void gmx_simdcall | sincos (SimdFloat x, SimdFloat *sinval, SimdFloat *cosval) |
SIMD float sin & cos. More... | |
static SimdFloat gmx_simdcall | sin (SimdFloat x) |
SIMD float sin(x). More... | |
static SimdFloat gmx_simdcall | cos (SimdFloat x) |
SIMD float cos(x). More... | |
static SimdFloat gmx_simdcall | tan (SimdFloat x) |
SIMD float tan(x). More... | |
static SimdFloat gmx_simdcall | asin (SimdFloat x) |
SIMD float asin(x). More... | |
static SimdFloat gmx_simdcall | acos (SimdFloat x) |
SIMD float acos(x). More... | |
static SimdFloat gmx_simdcall | atan (SimdFloat x) |
SIMD float asin(x). More... | |
static SimdFloat gmx_simdcall | atan2 (SimdFloat y, SimdFloat x) |
SIMD float atan2(y,x). More... | |
static SimdFloat gmx_simdcall | pmeForceCorrection (SimdFloat z2) |
Calculate the force correction due to PME analytically in SIMD float. More... | |
static SimdFloat gmx_simdcall | pmePotentialCorrection (SimdFloat z2) |
Calculate the potential correction due to PME analytically in SIMD float. More... | |
Double precision SIMD math functions | |
| |
static SimdDouble gmx_simdcall | copysign (SimdDouble x, SimdDouble y) |
Composes floating point value with the magnitude of x and the sign of y. More... | |
static SimdDouble gmx_simdcall | rsqrtIter (SimdDouble lu, SimdDouble x) |
Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD double. More... | |
static SimdDouble gmx_simdcall | invsqrt (SimdDouble x) |
Calculate 1/sqrt(x) for SIMD double. More... | |
static void gmx_simdcall | invsqrtPair (SimdDouble x0, SimdDouble x1, SimdDouble *out0, SimdDouble *out1) |
Calculate 1/sqrt(x) for two SIMD doubles. More... | |
static SimdDouble gmx_simdcall | rcpIter (SimdDouble lu, SimdDouble x) |
Perform one Newton-Raphson iteration to improve 1/x for SIMD double. More... | |
static SimdDouble gmx_simdcall | inv (SimdDouble x) |
Calculate 1/x for SIMD double. More... | |
static SimdDouble gmx_simdcall | operator/ (SimdDouble nom, SimdDouble denom) |
Division for SIMD doubles. More... | |
static SimdDouble | maskzInvsqrt (SimdDouble x, SimdDBool m) |
Calculate 1/sqrt(x) for masked entries of SIMD double. More... | |
static SimdDouble gmx_simdcall | maskzInv (SimdDouble x, SimdDBool m) |
Calculate 1/x for SIMD double, masked version. More... | |
static SimdDouble gmx_simdcall | sqrt (SimdDouble x) |
Calculate sqrt(x) correctly for SIMD doubles, including argument 0.0. More... | |
static SimdDouble gmx_simdcall | log (SimdDouble x) |
SIMD double log(x). This is the natural logarithm. More... | |
static SimdDouble gmx_simdcall | exp2 (SimdDouble x) |
SIMD double 2^x. More... | |
static SimdDouble gmx_simdcall | exp (SimdDouble x) |
SIMD double exp(x). More... | |
static SimdDouble gmx_simdcall | erf (SimdDouble x) |
SIMD double erf(x). More... | |
static SimdDouble gmx_simdcall | erfc (SimdDouble x) |
SIMD double erfc(x). More... | |
static void gmx_simdcall | sincos (SimdDouble x, SimdDouble *sinval, SimdDouble *cosval) |
SIMD double sin & cos. More... | |
static SimdDouble gmx_simdcall | sin (SimdDouble x) |
SIMD double sin(x). More... | |
static SimdDouble gmx_simdcall | cos (SimdDouble x) |
SIMD double cos(x). More... | |
static SimdDouble gmx_simdcall | tan (SimdDouble x) |
SIMD double tan(x). More... | |
static SimdDouble gmx_simdcall | asin (SimdDouble x) |
SIMD double asin(x). More... | |
static SimdDouble gmx_simdcall | acos (SimdDouble x) |
SIMD double acos(x). More... | |
static SimdDouble gmx_simdcall | atan (SimdDouble x) |
SIMD double asin(x). More... | |
static SimdDouble gmx_simdcall | atan2 (SimdDouble y, SimdDouble x) |
SIMD double atan2(y,x). More... | |
static SimdDouble gmx_simdcall | pmeForceCorrection (SimdDouble z2) |
Calculate the force correction due to PME analytically in SIMD double. More... | |
static SimdDouble gmx_simdcall | pmePotentialCorrection (SimdDouble z2) |
Calculate the potential correction due to PME analytically in SIMD double. More... | |
SIMD math functions for double prec. data, single prec. accuracy | |
| |
static SimdDouble gmx_simdcall | invsqrtSingleAccuracy (SimdDouble x) |
Calculate 1/sqrt(x) for SIMD double, but in single accuracy. More... | |
static SimdDouble | maskzInvsqrtSingleAccuracy (SimdDouble x, SimdDBool m) |
1/sqrt(x) for masked-in entries of SIMD double, but in single accuracy. More... | |
static void gmx_simdcall | invsqrtPairSingleAccuracy (SimdDouble x0, SimdDouble x1, SimdDouble *out0, SimdDouble *out1) |
Calculate 1/sqrt(x) for two SIMD doubles, but single accuracy. More... | |
static SimdDouble gmx_simdcall | invSingleAccuracy (SimdDouble x) |
Calculate 1/x for SIMD double, but in single accuracy. More... | |
static SimdDouble gmx_simdcall | maskzInvSingleAccuracy (SimdDouble x, SimdDBool m) |
1/x for masked entries of SIMD double, single accuracy. More... | |
static SimdDouble gmx_simdcall | sqrtSingleAccuracy (SimdDouble x) |
Calculate sqrt(x) (correct for 0.0) for SIMD double, single accuracy. More... | |
static SimdDouble gmx_simdcall | logSingleAccuracy (SimdDouble x) |
SIMD log(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | exp2SingleAccuracy (SimdDouble x) |
SIMD 2^x. Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | expSingleAccuracy (SimdDouble x) |
SIMD exp(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | erfSingleAccuracy (SimdDouble x) |
SIMD erf(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | erfcSingleAccuracy (SimdDouble x) |
SIMD erfc(x). Double precision SIMD data, single accuracy. More... | |
static void gmx_simdcall | sinCosSingleAccuracy (SimdDouble x, SimdDouble *sinval, SimdDouble *cosval) |
SIMD sin & cos. Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | sinSingleAccuracy (SimdDouble x) |
SIMD sin(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | cosSingleAccuracy (SimdDouble x) |
SIMD cos(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | tanSingleAccuracy (SimdDouble x) |
SIMD tan(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | asinSingleAccuracy (SimdDouble x) |
SIMD asin(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | acosSingleAccuracy (SimdDouble x) |
SIMD acos(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | atanSingleAccuracy (SimdDouble x) |
SIMD asin(x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | atan2SingleAccuracy (SimdDouble y, SimdDouble x) |
SIMD atan2(y,x). Double precision SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | pmeForceCorrectionSingleAccuracy (SimdDouble z2) |
Analytical PME force correction, double SIMD data, single accuracy. More... | |
static SimdDouble gmx_simdcall | pmePotentialCorrectionSingleAccuracy (SimdDouble z2) |
Analytical PME potential correction, double SIMD data, single accuracy. More... | |
SIMD4 math functions | |
| |
static Simd4Float gmx_simdcall | rsqrtIter (Simd4Float lu, Simd4Float x) |
Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD4 float. More... | |
static Simd4Float gmx_simdcall | invsqrt (Simd4Float x) |
Calculate 1/sqrt(x) for SIMD4 float. More... | |
static Simd4Double gmx_simdcall | rsqrtIter (Simd4Double lu, Simd4Double x) |
Perform one Newton-Raphson iteration to improve 1/sqrt(x) for SIMD4 double. More... | |
static Simd4Double gmx_simdcall | invsqrt (Simd4Double x) |
Calculate 1/sqrt(x) for SIMD4 double. More... | |
static Simd4Double gmx_simdcall | invsqrtSingleAccuracy (Simd4Double x) |
Calculate 1/sqrt(x) for SIMD4 double, but in single accuracy. More... | |
Variables | |
integrator_t | do_steep |
Steepest descents energy minimization. | |
integrator_t | do_cg |
Conjugate gradient energy minimization. | |
integrator_t | do_lbfgs |
Conjugate gradient energy minimization using the L-BFGS algorithm. | |
integrator_t | do_nm |
Normal mode analysis. | |
integrator_t | do_tpi |
Test particle insertion. | |
static const int | c_simdBestPairAlignmentDouble = 2 |
Best alignment to use for aligned pairs of double data. More... | |
static const int | c_simdBestPairAlignmentFloat = 2 |
Best alignment to use for aligned pairs of float data. More... | |
integrator_t | do_md |
MD simulations. More... | |
SIMD data types | |
The actual storage of these types is implementation dependent. The documentation is generated from the reference implementation, but for normal usage this will likely not be what you are using. | |
typedef SimdFloat | SimdReal |
Real precision floating-point SIMD datatype. More... | |
typedef SimdFBool | SimdBool |
Boolean SIMD type for usage with SimdReal. More... | |
typedef SimdFInt32 | SimdInt32 |
32-bit integer SIMD type. More... | |
typedef SimdFIBool | SimdIBool |
Boolean SIMD type for usage with SimdInt32. More... | |
typedef Simd4Float | Simd4Real |
Real precision floating-point SIMD4 datatype. More... | |
typedef Simd4FBool | Simd4Bool |
Boolean SIMD4 type for usage with SimdReal. More... | |
const int | c_simdBestPairAlignment = c_simdBestPairAlignmentFloat |
Default fast and accurate random engine in Gromacs.
This engine will return 2*2^64 random results using the default gmx::RandomDomain::Other stream, and can be initialized with a single seed argument without having to remember empty template angle brackets.
typedef double gmx::integrator_t(FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
Integrator algorithm implementation.
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information |
typedef std::random_device gmx::RandomDevice |
Random device.
For now this is identical to the standard library, but since we use the GROMACS random module for all other random engines and distributions it is convenient to have this too in the same module.
typedef Simd4FBool gmx::Simd4Bool |
Boolean SIMD4 type for usage with SimdReal.
This type is only available if GMX_SIMD4_HAVE_REAL is 1.
If GMX_DOUBLE is 1, this will be set to Simd4DBool internally, otherwise Simd4FBool. This is necessary since some SIMD implementations use bitpatterns for marking truth, so single- vs. double precision booleans are not necessarily exchangable. As long as you just use this type you will not have to worry about precision.
typedef Simd4Float gmx::Simd4Real |
Real precision floating-point SIMD4 datatype.
This type is only available if GMX_SIMD4_HAVE_REAL is 1.
Simd4Double if GMX_DOUBLE is 1, otherwise Simd4Float.
typedef SimdFBool gmx::SimdBool |
Boolean SIMD type for usage with SimdReal.
This type is only available if GMX_SIMD_HAVE_REAL is 1.
If GMX_DOUBLE is 1, this will be set to SimdDBool internally, otherwise SimdFBool. This is necessary since some SIMD implementations use bitpatterns for marking truth, so single- vs. double precision booleans are not necessarily exchangable. As long as you just use this type you will not have to worry about precision.
See SimdIBool for an explanation of real vs. integer booleans.
typedef SimdFIBool gmx::SimdIBool |
Boolean SIMD type for usage with SimdInt32.
This type is only available if GMX_SIMD_HAVE_INT32_ARITHMETICS is 1.
If GMX_DOUBLE is 1, this will be set to SimdDIBool internally, otherwise SimdFIBool. This is necessary since some SIMD implementations use bitpatterns for marking truth, so single- vs. double precision booleans are not necessarily exchangable, and while a double-precision boolean might be represented with a 64-bit mask, the corresponding integer might only use a 32-bit mask.
We provide conversion routines for these cases, so the only thing you need to keep in mind is to use SimdBool when working with SimdReal while you pick SimdIBool when working with SimdInt32 .
To convert between them, use cvtB2IB and cvtIB2B.
typedef SimdFInt32 gmx::SimdInt32 |
32-bit integer SIMD type.
If GMX_DOUBLE is 1, this will be set to SimdDInt32 internally, otherwise SimdFInt32. This might seem a strange implementation detail, but it is because some SIMD implementations use different types/widths of integers registers when converting from double vs. single precision floating point. As long as you just use this type you will not have to worry about precision.
typedef SimdFloat gmx::SimdReal |
Real precision floating-point SIMD datatype.
This type is only available if GMX_SIMD_HAVE_REAL is 1.
SimdDouble if GMX_DOUBLE is 1, otherwise SimdFloat.
enum gmx::OptionFlag |
Flags for options.
These flags are not part of the public interface, even though they are in an installed header. They are needed in a few template class implementations.
Enumerator | |
---|---|
efOption_Set |
Option has been set. |
efOption_HasDefaultValue |
The current value of the option is a programmatic default value. |
efOption_ExplicitDefaultValue |
An explicit default value has been provided for the option. |
efOption_ClearOnNextSet |
Next assignment to the option clears old values. This flag is set when a new option source starts, such that values from the new source will overwrite old ones. |
efOption_Required |
Option is required to be set. |
efOption_MultipleTimes |
Option can be specified multiple times. |
efOption_Hidden |
Option is hidden from standard help. |
efOption_Vector |
Option value is a vector, but a single value is also accepted.
|
efOption_DefaultValueIfSetExists |
Option has a defaultValueIfSet() specified. |
efOption_NoDefaultValue |
Option does not support default values. |
efOption_DontCheckMinimumCount |
Storage object does its custom checking for minimum value count. If this flag is set, the class derived from OptionStorageTemplate should implement processSetValues(), processAll(), and possible other functions it provides such that it always fails if not enough values are provided. This is useful to override the default check, which is done in OptionStorageTemplate::processSet(). |
|
strong |
Enumerated values for fixed part of random seed (domain)
Random numbers are used in many places in GROMACS, and to avoid identical streams the random seeds should be different. Instead of keeping track of several different user-provided seeds, it is better to use the fact that generators like ThreeFry take two 64-bit keys, and combine a general user-provided 64-bit random seed with a second constant value from this list to make each stream guaranteed unique.
enum gmx::SelectionFlag |
Flags for options.
These flags are not part of the public interface, even though they are in an installed header. They are needed in the implementation of SelectionOption.
Enumerator | |
---|---|
efSelection_DynamicMask |
Whether POS_MASKONLY should be used for output position evaluation. |
efSelection_DisallowEmpty |
If set, unconditionally empty selections result in compilation errors. |
efSelection_EvaluateVelocities |
Whether velocities of output positions should be evaluated. |
efSelection_EvaluateForces |
Whether forces on output positions should be evaluated. |
|
strong |
Enumerated options for SIMD architectures.
|
inlinestatic |
Float Floating-point abs().
a | any floating point values |
|
inlinestatic |
double doubleing-point abs().
a | any doubleing point values |
|
inlinestatic |
SIMD float Floating-point abs().
a | any floating point values |
|
inlinestatic |
SIMD double floating-point fabs().
a | any floating point values |
|
inlinestatic |
Float acos.
x | The argument to evaluate acos for |
|
inlinestatic |
Double acos.
x | The argument to evaluate acos for |
|
inlinestatic |
Double acos, but with single accuracy.
x | The argument to evaluate acos for |
|
inlinestatic |
Bitwise andnot for two scalar float variables.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise andnot for SIMD float.
Available if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise andnot for SIMD double.
Available if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise andnot for two scalar double variables.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise andnot for two scalar integer variables.
a | data1 |
b | data2 |
|
inlinestatic |
Integer SIMD bitwise not/complement.
Available if GMX_SIMD_HAVE_FINT32_LOGICAL is 1.
a | integer SIMD |
b | integer SIMD |
|
inlinestatic |
Integer SIMD bitwise not/complement.
Available if GMX_SIMD_HAVE_DINT32_LOGICAL is 1.
a | integer SIMD |
b | integer SIMD |
|
inlinestatic |
Returns if the boolean is true.
a | Logical variable. |
|
inlinestatic |
Returns non-zero if any of the boolean in SIMD a is True, otherwise 0.
a | Logical variable. |
The actual return value for truth will depend on the architecture, so any non-zero value is considered truth.
|
inlinestatic |
Returns non-zero if any of the boolean in SIMD a is True, otherwise 0.
a | Logical variable. |
The actual return value for truth will depend on the architecture, so any non-zero value is considered truth.
|
inlinestatic |
Returns true if any of the boolean in x is True, otherwise 0.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
The actual return value for "any true" will depend on the architecture. Any non-zero value should be considered truth.
a | SIMD boolean |
|
inlinestatic |
Returns true if any of the boolean in x is True, otherwise 0.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
The actual return value for "any true" will depend on the architecture. Any non-zero value should be considered truth.
a | SIMD boolean |
|
inlinestatic |
float asin.
x | The argument to evaluate asin for |
|
inlinestatic |
Double asin.
x | The argument to evaluate asin for |
|
inlinestatic |
Double asin, but with single accuracy.
x | The argument to evaluate asin for |
|
inlinestatic |
Float atan.
x | The argument to evaluate atan for |
|
inlinestatic |
Double atan.
x | The argument to evaluate atan for |
|
inlinestatic |
Float atan2(y,x).
y | Y component of vector, any quartile |
x | X component of vector, any quartile |
|
inlinestatic |
Double atan2(y,x).
y | Y component of vector, any quartile |
x | X component of vector, any quartile |
|
inlinestatic |
Double atan2(y,x), but with single accuracy.
y | Y component of vector, any quartile |
x | X component of vector, any quartile |
|
inlinestatic |
Double atan, but with single accuracy.
x | The argument to evaluate atan for |
|
inlinestatic |
Blend float selection.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Blend double selection.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Blend integer selection.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Vector-blend SIMD float selection.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Vector-blend SIMD double selection.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Vector-blend SIMD integer selection.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Vector-blend SIMD integer selection.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | First source |
b | Second source |
sel | Boolean selector |
|
inlinestatic |
Composes single value with the magnitude of x and the sign of y.
x | Value to set sign for |
y | Value used to set sign |
|
inlinestatic |
Composes double value with the magnitude of x and the sign of y.
x | Value to set sign for |
y | Value used to set sign |
|
inlinestatic |
Float cos.
x | The argument to evaluate cos for |
|
inlinestatic |
Double cos.
x | The argument to evaluate cos for |
|
inlinestatic |
Double cos, but with single accuracy.
x | The argument to evaluate cos for |
bool gmx::cpuIsX86Nehalem | ( | const CpuInfo & | cpuInfo | ) |
Return true if the CPU is an Intel x86 Nehalem.
cpuInfo | Object with cpu information |
|
inlinestatic |
Just return a boolean (mimicks SIMD real-to-int bool conversions)
a | boolean |
|
inlinestatic |
Convert from single precision boolean to corresponding integer boolean.
a | SIMD floating-point boolean |
|
inlinestatic |
Convert from double precision boolean to corresponding integer boolean.
a | SIMD floating-point boolean |
|
inlinestatic |
Convert double to float (mimicks SIMD conversion)
a | double |
|
inlinestatic |
Convert SIMD double to float.
This version is available if GMX_SIMD_FLOAT_WIDTH is identical to GMX_SIMD_DOUBLE_WIDTH.
Float/double conversions are complex since the SIMD width could either be different (e.g. on x86) or identical (e.g. IBM QPX). This means you will need to check for the width in the code, and have different code paths.
d | Double-precision SIMD variable |
|
inlinestatic |
Convert SIMD double to float.
This version is available if GMX_SIMD_FLOAT_WIDTH is twice as large as GMX_SIMD_DOUBLE_WIDTH.
Float/double conversions are complex since the SIMD width could either be different (e.g. on x86) or identical (e.g. IBM QPX). This means you will need to check for the width in the code, and have different code paths.
d0 | Double-precision SIMD variable, first half of values to put in f. |
d1 | Double-precision SIMD variable, second half of values to put in f. |
|
inlinestatic |
Convert float to double (mimicks SIMD conversion)
a | float |
|
inlinestatic |
Convert SIMD float to double.
This version is available if GMX_SIMD_FLOAT_WIDTH is identical to GMX_SIMD_DOUBLE_WIDTH.
Float/double conversions are complex since the SIMD width could either be different (e.g. on x86) or identical (e.g. IBM QPX). This means you will need to check for the width in the code, and have different code paths.
f | Single-precision SIMD variable |
|
inlinestatic |
Convert SIMD float to double.
This version is available if GMX_SIMD_FLOAT_WIDTH is twice as large as GMX_SIMD_DOUBLE_WIDTH.
Float/double conversions are complex since the SIMD width could either be different (e.g. on x86) or identical (e.g. IBM QPX). This means you will need to check for the width in the code, and have different code paths.
f | Single-precision SIMD variable | |
[out] | d0 | Double-precision SIMD variable, first half of values from f. |
[out] | d1 | Double-precision SIMD variable, second half of values from f. |
|
inlinestatic |
Return integer.
This function mimicks the SIMD integer-to-real conversion routines. By simply returning an integer, we let the compiler sort out whether the conversion should be to float or double rather than using proxy objects.
a | integer |
|
inlinestatic |
Convert integer to single precision floating point.
a | SIMD integer |
|
inlinestatic |
Convert integer to double precision floating point.
a | SIMD integer |
|
inlinestatic |
Just return a boolean (mimicks SIMD int-to-real bool conversions)
a | boolean |
|
inlinestatic |
Convert from integer boolean to corresponding single precision boolean.
a | SIMD integer boolean |
|
inlinestatic |
Convert from integer boolean to corresponding double precision boolean.
a | SIMD integer boolean |
|
inlinestatic |
Round single precision floating point to integer.
a | float |
|
inlinestatic |
Round single precision doubleing point to integer.
a | double |
|
inlinestatic |
Round single precision floating point to integer.
a | SIMD floating-point |
|
inlinestatic |
Round double precision floating point to integer.
a | SIMD floating-point |
|
inlinestatic |
Truncate single precision floating point to integer.
a | float |
|
inlinestatic |
Truncate single precision doubleing point to integer.
a | double |
|
inlinestatic |
Truncate single precision floating point to integer.
a | SIMD floating-point |
|
inlinestatic |
Truncate double precision floating point to integer.
a | SIMD floating-point |
|
inlinestatic |
Add the two halves of a SIMD double, subtract the sum from half-SIMD-width consecutive doubles in memory.
m | half-width aligned memory, from which sum of the halves will be subtracted. |
a | SIMD variable. Upper & lower halves will first be added. |
If the SIMD width is 8 and contains [a b c d e f g h], the memory will be modified to [m[0]-(a+e) m[1]-(b+f) m[2]-(c+g) m[3]-(d+h)].
The memory must be aligned to half SIMD width.
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Add the two halves of a SIMD float, subtract the sum from half-SIMD-width consecutive floats in memory.
m | half-width aligned memory, from which sum of the halves will be subtracted. |
a | SIMD variable. Upper & lower halves will first be added. |
If the SIMD width is 8 and contains [a b c d e f g h], the memory will be modified to [m[0]-(a+e) m[1]-(b+f) m[2]-(c+g) m[3]-(d+h)].
The memory must be aligned to half SIMD width.
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
double gmx::do_cg | ( | FILE * | fplog, |
t_commrec * | cr, | ||
int | nfile, | ||
const t_filenm | fnm[], | ||
const gmx_output_env_t * | oenv, | ||
gmx_bool | bVerbose, | ||
int | nstglobalcomm, | ||
gmx_vsite_t * | vsite, | ||
gmx_constr_t | constr, | ||
int | stepout, | ||
t_inputrec * | inputrec, | ||
gmx_mtop_t * | top_global, | ||
t_fcdata * | fcd, | ||
t_state * | state_global, | ||
t_mdatoms * | mdatoms, | ||
t_nrnb * | nrnb, | ||
gmx_wallcycle_t | wcycle, | ||
gmx_edsam_t | ed, | ||
t_forcerec * | fr, | ||
int | repl_ex_nst, | ||
int | repl_ex_nex, | ||
int | repl_ex_seed, | ||
gmx_membed_t * | membed, | ||
real | cpt_period, | ||
real | max_hours, | ||
int | imdport, | ||
unsigned long | Flags, | ||
gmx_walltime_accounting_t | walltime_accounting | ||
) |
Do conjugate gradients minimization.
Integrator algorithm implementation. (FILE *fplog, t_commrec *cr,
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, gmx_membed_t gmx_unused *membed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
double gmx::do_lbfgs | ( | FILE * | fplog, |
t_commrec * | cr, | ||
int | nfile, | ||
const t_filenm | fnm[], | ||
const gmx_output_env_t * | oenv, | ||
gmx_bool | bVerbose, | ||
int | nstglobalcomm, | ||
gmx_vsite_t * | vsite, | ||
gmx_constr_t | constr, | ||
int | stepout, | ||
t_inputrec * | inputrec, | ||
gmx_mtop_t * | top_global, | ||
t_fcdata * | fcd, | ||
t_state * | state_global, | ||
t_mdatoms * | mdatoms, | ||
t_nrnb * | nrnb, | ||
gmx_wallcycle_t | wcycle, | ||
gmx_edsam_t | ed, | ||
t_forcerec * | fr, | ||
int | repl_ex_nst, | ||
int | repl_ex_nex, | ||
int | repl_ex_seed, | ||
gmx_membed_t * | membed, | ||
real | cpt_period, | ||
real | max_hours, | ||
int | imdport, | ||
unsigned long | Flags, | ||
gmx_walltime_accounting_t | walltime_accounting | ||
) |
Do L-BFGS conjugate gradients minimization.
Integrator algorithm implementation. (FILE *fplog, t_commrec *cr,
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
double gmx::do_nm | ( | FILE * | fplog, |
t_commrec * | cr, | ||
int | nfile, | ||
const t_filenm | fnm[], | ||
const gmx_output_env_t * | oenv, | ||
gmx_bool | bVerbose, | ||
int | nstglobalcomm, | ||
gmx_vsite_t * | vsite, | ||
gmx_constr_t | constr, | ||
int | stepout, | ||
t_inputrec * | inputrec, | ||
gmx_mtop_t * | top_global, | ||
t_fcdata * | fcd, | ||
t_state * | state_global, | ||
t_mdatoms * | mdatoms, | ||
t_nrnb * | nrnb, | ||
gmx_wallcycle_t | wcycle, | ||
gmx_edsam_t | ed, | ||
t_forcerec * | fr, | ||
int | repl_ex_nst, | ||
int | repl_ex_nex, | ||
int | repl_ex_seed, | ||
gmx_membed_t * | membed, | ||
real | cpt_period, | ||
real | max_hours, | ||
int | imdport, | ||
unsigned long | Flags, | ||
gmx_walltime_accounting_t | walltime_accounting | ||
) |
Do normal modes analysis.
Integrator algorithm implementation. (FILE *fplog, t_commrec *cr,
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
double gmx::do_steep | ( | FILE * | fplog, |
t_commrec * | cr, | ||
int | nfile, | ||
const t_filenm | fnm[], | ||
const gmx_output_env_t * | oenv, | ||
gmx_bool | bVerbose, | ||
int | nstglobalcomm, | ||
gmx_vsite_t * | vsite, | ||
gmx_constr_t | constr, | ||
int | stepout, | ||
t_inputrec * | inputrec, | ||
gmx_mtop_t * | top_global, | ||
t_fcdata * | fcd, | ||
t_state * | state_global, | ||
t_mdatoms * | mdatoms, | ||
t_nrnb * | nrnb, | ||
gmx_wallcycle_t | wcycle, | ||
gmx_edsam_t | ed, | ||
t_forcerec * | fr, | ||
int | repl_ex_nst, | ||
int | repl_ex_nex, | ||
int | repl_ex_seed, | ||
gmx_membed_t * | membed, | ||
real | cpt_period, | ||
real | max_hours, | ||
int | imdport, | ||
unsigned long | Flags, | ||
gmx_walltime_accounting_t | walltime_accounting | ||
) |
Do steepest descents minimization.
Integrator algorithm implementation. (FILE *fplog, t_commrec *cr,
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
double gmx::do_tpi | ( | FILE * | fplog, |
t_commrec * | cr, | ||
int | nfile, | ||
const t_filenm | fnm[], | ||
const gmx_output_env_t * | oenv, | ||
gmx_bool | bVerbose, | ||
int | nstglobalcomm, | ||
gmx_vsite_t * | vsite, | ||
gmx_constr_t | constr, | ||
int | stepout, | ||
t_inputrec * | inputrec, | ||
gmx_mtop_t * | top_global, | ||
t_fcdata * | fcd, | ||
t_state * | state_global, | ||
t_mdatoms * | mdatoms, | ||
t_nrnb * | nrnb, | ||
gmx_wallcycle_t | wcycle, | ||
gmx_edsam_t | ed, | ||
t_forcerec * | fr, | ||
int | repl_ex_nst, | ||
int | repl_ex_nex, | ||
int | repl_ex_seed, | ||
gmx_membed_t * | membed, | ||
real | cpt_period, | ||
real | max_hours, | ||
int | imdport, | ||
unsigned long | Flags, | ||
gmx_walltime_accounting_t | walltime_accounting | ||
) |
Do test particle insertion.
Integrator algorithm implementation. (FILE *fplog, t_commrec *cr,
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |
|
inlinestatic |
Float erf(x).
x | Argument. |
|
inlinestatic |
Double erf(x).
x | Argument. |
|
inlinestatic |
Float erfc(x).
x | Argument. |
|
inlinestatic |
Double erfc(x).
x | Argument. |
|
inlinestatic |
Double erfc(x), but with single accuracy.
x | Argument. |
double gmx::erfinv | ( | double | x | ) |
Inverse error function, double precision.
x | Argument, should be in the range -1.0 < x < 1.0 |
float gmx::erfinv | ( | float | x | ) |
Inverse error function, single precision.
x | Argument, should be in the range -1.0 < x < 1.0 |
|
inlinestatic |
Double erf(x), but with single accuracy.
x | Argument. |
|
inlinestatic |
Float exp(x).
x | Argument. |
|
inlinestatic |
Double exp(x).
x | Argument. |
|
inlinestatic |
Float 2^x.
x | Argument. |
|
inlinestatic |
Double 2^x.
x | Argument. |
|
inlinestatic |
Double 2^x, but with single accuracy.
x | Argument. |
|
inlinestatic |
Copy single float to three variables.
scalar | Floating-point input. | |
[out] | triplets0 | Copy 1. |
[out] | triplets1 | Copy 2. |
[out] | triplets2 | Copy 3. |
|
inlinestatic |
Copy single double to three variables.
scalar | Floating-point input. | |
[out] | triplets0 | Copy 1. |
[out] | triplets1 | Copy 2. |
[out] | triplets2 | Copy 3. |
|
inlinestatic |
Double exp(x), but with single accuracy.
x | Argument. |
|
inlinestatic |
Extract element with index i from gmx::SimdFInt32.
Available if GMX_SIMD_HAVE_FINT32_EXTRACT is 1.
index | Compile-time constant, position to extract (first position is 0) |
a | SIMD variable from which to extract value. |
|
inlinestatic |
Extract element with index i from gmx::SimdDInt32.
Available if GMX_SIMD_HAVE_DINT32_EXTRACT is 1.
index | Compile-time constant, position to extract (first position is 0) |
a | SIMD variable from which to extract value. |
|
inlinestatic |
Float Fused-multiply-add. Result is a*b + c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
double Fused-multiply-add. Result is a*b + c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD float Fused-multiply-add. Result is a*b+c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD double Fused-multiply-add. Result is a*b+c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
Float Fused-multiply-subtract. Result is a*b - c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
double Fused-multiply-subtract. Result is a*b - c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD float Fused-multiply-subtract. Result is a*b-c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD double Fused-multiply-subtract. Result is a*b-c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
Float Fused-negated-multiply-add. Result is -a*b + c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
double Fused-negated-multiply-add. Result is - a*b + c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD float Fused-negated-multiply-add. Result is -a*b+c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD double Fused-negated-multiply-add. Result is -a*b+c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
Float Fused-negated-multiply-subtract. Result is -a*b - c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
double Fused-negated-multiply-subtract. Result is -a*b - c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD float Fused-negated-multiply-subtract. Result is -a*b-c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
SIMD double Fused-negated-multiply-subtract. Result is -a*b-c.
a | factor1 |
b | factor2 |
c | term |
|
inlinestatic |
Extract (integer) exponent and fraction from single precision SIMD.
value | Floating-point value to extract from | |
[out] | exponent | Returned exponent of value, integer SIMD format. |
|
inlinestatic |
Extract (integer) exponent and fraction from double precision SIMD.
value | Floating-point value to extract from | |
[out] | exponent | Returned exponent of value, integer SIMD format. |
|
inlinestatic |
Load 4 floats from base/offsets and store into variables.
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Aligned pointer to the start of the memory. | |
offset | Integer type with offset to the start of each triplet. | |
[out] | v0 | First float, base[align*offset[0]]. |
[out] | v1 | Second float, base[align*offset[0] + 1]. |
[out] | v2 | Third float, base[align*offset[0] + 2]. |
[out] | v3 | Fourth float, base[align*offset[0] + 3]. |
|
inlinestatic |
Load 2 floats from base/offsets and store into variables (aligned).
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Aligned pointer to the start of the memory. | |
offset | Integer type with offset to the start of each triplet. | |
[out] | v0 | First float, base[align*offset[0]]. |
[out] | v1 | Second float, base[align*offset[0] + 1]. |
|
inlinestatic |
Load 4 doubles from base/offsets and store into variables.
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Aligned pointer to the start of the memory. | |
offset | Integer type with offset to the start of each triplet. | |
[out] | v0 | First double, base[align*offset[0]]. |
[out] | v1 | Second double, base[align*offset[0] + 1]. |
[out] | v2 | Third double, base[align*offset[0] + 2]. |
[out] | v3 | Fourth double, base[align*offset[0] + 3]. |
|
inlinestatic |
Load 2 doubles from base/offsets and store into variables (aligned).
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Aligned pointer to the start of the memory. | |
offset | Integer type with offset to the start of each triplet. | |
[out] | v0 | First double, base[align*offset[0]]. |
[out] | v1 | Second double, base[align*offset[0] + 1]. |
|
inlinestatic |
Load 4 consecutive floats from base/offset into four variables.
align | Alignment of the memory from which we read. |
base | Pointer to the start of the memory area | |
offset | Index to data. | |
[out] | v0 | 1st float, base[align*offset[0]]. |
[out] | v1 | 2nd float, base[align*offset[0] + 1]. |
[out] | v2 | 3rd float, base[align*offset[0] + 2]. |
[out] | v3 | 4th float, base[align*offset[0] + 3]. |
|
inlinestatic |
Load 2 consecutive floats from base/offset into four variables.
align | Alignment of the memory from which we read. |
base | Pointer to the start of the memory area | |
offset | Index to data. | |
[out] | v0 | 1st float, base[align*offset[0]]. |
[out] | v1 | 2nd float, base[align*offset[0] + 1]. |
|
inlinestatic |
Load 4 consecutive doubles from base/offset into four variables.
align | Alignment of the memory from which we read. |
base | Pointer to the start of the memory area | |
offset | Index to data. | |
[out] | v0 | 1st double, base[align*offset[0]]. |
[out] | v1 | 2nd double, base[align*offset[0] + 1]. |
[out] | v2 | 3rd double, base[align*offset[0] + 2]. |
[out] | v3 | 4th double, base[align*offset[0] + 3]. |
|
inlinestatic |
Load 2 consecutive doubles from base/offset into four variables.
align | Alignment of the memory from which we read. |
base | Pointer to the start of the memory area | |
offset | Index to data. | |
[out] | v0 | 1st double, base[align*offset[0]]. |
[out] | v1 | 2nd double, base[align*offset[0] + 1]. |
|
inlinestatic |
Load 2 consecutive doubles from each of GMX_SIMD_DOUBLE_WIDTH/2 offsets, transpose into SIMD double (low half from base0, high from base1).
align | Alignment of the storage, i.e. the distance (measured in elements, not bytes) between index points. When this is identical to the number of output components the data is packed without padding. This must be a multiple of the alignment to keep all data aligned. |
base0 | Pointer to base of first aligned memory | |
base1 | Pointer to base of second aligned memory | |
offset | Offset to the start of each pair | |
[out] | v0 | 1st element in each pair, base0 in low and base1 in high half. |
[out] | v1 | 2nd element in each pair, base0 in low and base1 in high half. |
The offset array should be of half the SIMD width length, so it corresponds to the half-SIMD-register operations. This also means it must be aligned to half the integer SIMD width (i.e., GMX_SIMD_DINT32_WIDTH/2).
The floating-point memory locations must be aligned, but only to the smaller of two elements and the floating-point SIMD width.
This routine is primarily designed to load nonbonded parameters in the kernels. It is the equivalent of the full-width routine gatherLoadTranspose(), but just as the other hsimd routines it will pick half-SIMD-width data from base0 and put in the lower half, while the upper half comes from base1.
For an example, assume the SIMD width is 8, align is 2, that base0 is [A0 A1 B0 B1 C0 C1 D0 D1 ...], and base1 [E0 E1 F0 F1 G0 G1 H0 H1...].
Then we will get v0 as [A0 B0 C0 D0 E0 F0 G0 H0] and v1 as [A1 B1 C1 D1 E1 F1 G1 H1].
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Load 2 consecutive floats from each of GMX_SIMD_FLOAT_WIDTH/2 offsets, transpose into SIMD float (low half from base0, high from base1).
align | Alignment of the storage, i.e. the distance (measured in elements, not bytes) between index points. When this is identical to the number of output components the data is packed without padding. This must be a multiple of the alignment to keep all data aligned. |
base0 | Pointer to base of first aligned memory | |
base1 | Pointer to base of second aligned memory | |
offset | Offset to the start of each pair | |
[out] | v0 | 1st element in each pair, base0 in low and base1 in high half. |
[out] | v1 | 2nd element in each pair, base0 in low and base1 in high half. |
The offset array should be of half the SIMD width length, so it corresponds to the half-SIMD-register operations. This also means it must be aligned to half the integer SIMD width (i.e., GMX_SIMD_FINT32_WIDTH/2).
The floating-point memory locations must be aligned, but only to the smaller of two elements and the floating-point SIMD width.
This routine is primarily designed to load nonbonded parameters in the kernels. It is the equivalent of the full-width routine gatherLoadTranspose(), but just as the other hsimd routines it will pick half-SIMD-width data from base0 and put in the lower half, while the upper half comes from base1.
For an example, assume the SIMD width is 8, align is 2, that base0 is [A0 A1 B0 B1 C0 C1 D0 D1 ...], and base1 [E0 E1 F0 F1 G0 G1 H0 H1...].
Then we will get v0 as [A0 B0 C0 D0 E0 F0 G0 H0] and v1 as [A1 B1 C1 D1 E1 F1 G1 H1].
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
|
inlinestatic |
Load 2 floats from base/offsets and store into variables (unaligned).
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Aligned pointer to the start of the memory. | |
offset | Integer type with offset to the start of each triplet. | |
[out] | v0 | First float, base[align*offset[0]]. |
[out] | v1 | Second float, base[align*offset[0] + 1]. |
|
inlinestatic |
Load 2 doubles from base/offsets and store into variables (unaligned).
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Aligned pointer to the start of the memory. | |
offset | Integer type with offset to the start of each triplet. | |
[out] | v0 | First double, base[align*offset[0]]. |
[out] | v1 | Second double, base[align*offset[0] + 1]. |
|
inlinestatic |
Load 3 consecutive floats from base/offsets, store into three vars.
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Pointer to the start of the memory area | |
offset | Offset to the start of data. | |
[out] | v0 | 1st value, base[align*offset[0]]. |
[out] | v1 | 2nd value, base[align*offset[0] + 1]. |
[out] | v2 | 3rd value, base[align*offset[0] + 2]. |
|
inlinestatic |
Load 3 consecutive doubles from base/offsets, store into three vars.
align | Alignment of the memory from which we read, i.e. distance (measured in elements, not bytes) between index points. |
base | Pointer to the start of the memory area | |
offset | Offset to the start of data. | |
[out] | v0 | 1st double, base[align*offset[0]]. |
[out] | v1 | 2nd double, base[align*offset[0] + 1]. |
[out] | v2 | 3rd double, base[align*offset[0] + 2]. |
RealType gmx::generateCanonical | ( | Rng & | g | ) |
Generate a floating-point value with specified number of random bits.
RealType | Floating-point type to generate |
Bits | Number of random bits to generate |
Rng | Random number generator class |
g | Random number generator to use |
This implementation avoids the bug in libc++ and stdlibc++ (which is due to the C++ standard being unclear) where 1.0 can be returned occasionally.
std::int64_t gmx::greatestCommonDivisor | ( | std::int64_t | p, |
std::int64_t | q | ||
) |
Find greatest common divisor of two numbers.
p | First number, positive |
q | Second number, positive |
|
inlinestatic |
Add each half of SIMD variable to separate memory adresses.
m0 | Pointer to memory aligned to half SIMD width. |
m1 | Pointer to memory aligned to half SIMD width. |
a | SIMD variable. Lower half will be added to m0, upper half to m1. |
The memory must be aligned to half SIMD width.
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Add each half of SIMD variable to separate memory adresses.
m0 | Pointer to memory aligned to half SIMD width. |
m1 | Pointer to memory aligned to half SIMD width. |
a | SIMD variable. Lower half will be added to m0, upper half to m1. |
The memory must be aligned to half SIMD width.
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
|
inlinestatic |
Calculate 1/x for float.
x | Argument that must be nonzero. This routine does not check arguments. |
|
inlinestatic |
Calculate 1/x for double.
x | Argument that must be nonzero. This routine does not check arguments. |
|
inlinestatic |
Calculate inverse cube root of x in single precision.
x | Argument |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate inverse sixth root of x in double precision.
x | Argument |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate inverse sixth root of integer x in double precision.
x | Argument |
This routine is typically faster than using std::pow().
void gmx::invertBoxMatrix | ( | const matrix | src, |
matrix | dest | ||
) |
Invert a simulation-box matrix in src
, return in dest
.
This routine assumes that src is a simulation-box matrix, i.e. has zeroes in the upper-right triangle. A fatal error occurs if the product of the leading diagonal is too small. The inversion can be done "in place", i.e src
and dest
can be the same matrix.
void gmx::invertMatrix | ( | const matrix | src, |
matrix | dest | ||
) |
Invert a general 3x3 matrix in src
, return in dest
.
A fatal error occurs if the determinant is too small. src
and dest
cannot be the same matrix.
|
inlinestatic |
Calculate 1/x for double, but with single accuracy.
x | Argument that must be nonzero. This routine does not check arguments. |
|
inlinestatic |
Calculate inverse sixth root of x in single precision.
x | Argument, must be greater than zero. |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate inverse sixth root of x in double precision.
x | Argument, must be greater than zero. |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate inverse sixth root of integer x in double precision.
x | Argument, must be greater than zero. |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate 1.0/sqrt(x) in single precision.
x | Positive value to calculate inverse square root for |
For now this is implemented with std::sqrt(x) since gcc seems to do a decent job optimizing it. However, we might decide to use instrinsics or compiler-specific functions in the future.
|
inlinestatic |
Calculate 1.0/sqrt(x) in double precision, but single range.
x | Positive value to calculate inverse square root for, must be in the input domain valid for single precision. |
For now this is implemented with std::sqrt(x). However, we might decide to use instrinsics or compiler-specific functions in the future, and then we want to have the freedom to do the first step in single precision.
|
inlinestatic |
Calculate 1.0/sqrt(x) for integer x in double precision.
x | Positive value to calculate inverse square root for. |
|
inlinestatic |
Calculate 1/sqrt(x) for two floats.
x0 | First argument, x0 must be positive - no argument checking. | |
x1 | Second argument, x1 must be positive - no argument checking. | |
[out] | out0 | Result 1/sqrt(x0) |
[out] | out1 | Result 1/sqrt(x1) |
|
inlinestatic |
Calculate 1/sqrt(x) for two doubles.
x0 | First argument, x0 must be positive - no argument checking. | |
x1 | Second argument, x1 must be positive - no argument checking. | |
[out] | out0 | Result 1/sqrt(x0) |
[out] | out1 | Result 1/sqrt(x1) |
|
inlinestatic |
Calculate 1/sqrt(x) for two doubles, but with single accuracy.
x0 | First argument, x0 must be positive - no argument checking. | |
x1 | Second argument, x1 must be positive - no argument checking. | |
[out] | out0 | Result 1/sqrt(x0) |
[out] | out1 | Result 1/sqrt(x1) |
|
inlinestatic |
Calculate 1/sqrt(x) for double, but with single accuracy.
x | Argument that must be >0. This routine does not check arguments. |
|
inlinestatic |
Multiply a SIMD float value by the number 2 raised to an exp power.
value | Floating-point number to multiply with new exponent |
exponent | Integer that will not overflow as 2^exponent. |
|
inlinestatic |
Multiply a SIMD double value by the number 2 raised to an exp power.
value | Floating-point number to multiply with new exponent |
exponent | Integer that will not overflow as 2^exponent. |
|
inlinestatic |
|
inlinestatic |
Load function that returns proxy object for SimdDouble and double.
m | Pointer to load memory |
|
inlinestatic |
Integer load function (proxy object) for SimdFInt32, SImdDInt32, and int32.
m | Pointer to load memory |
|
inlinestatic |
Load two doubles, spread 1st in low half, 2nd in high half.
m | Pointer to two adjacent double values. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Load two floats, spread 1st in low half, 2nd in high half.
m | Pointer to two adjacent float values. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
|
inlinestatic |
Load low & high parts of SIMD double from different locations.
m0 | Pointer to memory aligned to half SIMD width. |
m1 | Pointer to memory aligned to half SIMD width. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Load low & high parts of SIMD float from different locations.
m0 | Pointer to memory aligned to half SIMD width. |
m1 | Pointer to memory aligned to half SIMD width. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
|
inlinestatic |
Load half-SIMD-width double data, spread to both halves.
m | Pointer to memory aligned to half SIMD width. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Load half-SIMD-width float data, spread to both halves.
m | Pointer to memory aligned to half SIMD width. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
|
inlinestatic |
|
inlinestatic |
Load function that returns proxy object for SimdDouble and double.
m | Pointer to load memory |
|
inlinestatic |
Integer loadU function (proxy object) for SimdFInt32, SImdDInt32, and int32.
m | Pointer to load memory |
|
inlinestatic |
Float log(x). This is the natural logarithm.
x | Argument, should be >0. |
|
inlinestatic |
Double log(x). This is the natural logarithm.
x | Argument, should be >0. |
unsigned int gmx::log2I | ( | std::uint32_t | x | ) |
Compute floor of logarithm to base 2, 32 bit unsigned argument.
x | 32-bit unsigned argument |
unsigned int gmx::log2I | ( | std::uint64_t | x | ) |
Compute floor of logarithm to base 2, 64 bit unsigned argument.
x | 64-bit unsigned argument |
unsigned int gmx::log2I | ( | std::int32_t | x | ) |
Compute floor of logarithm to base 2, 32 bit signed argument.
x | 32-bit signed argument |
unsigned int gmx::log2I | ( | std::int64_t | x | ) |
Compute floor of logarithm to base 2, 64 bit signed argument.
x | 64-bit signed argument |
|
inlinestatic |
Double log(x), but with single accuracy. This is the natural logarithm.
x | Argument, should be >0. |
gmx_uint64_t gmx::makeRandomSeed | ( | ) |
Return 64 random bits from the random device, suitable as seed.
If the internal random device output is smaller than 64 bits, this routine will use multiple calls internally until we have 64 bits of random data.
|
inlinestatic |
Add two float variables, masked version.
a | term1 |
b | term2 |
m | mask |
|
inlinestatic |
Add two double variables, masked version.
a | term1 |
b | term2 |
m | mask |
|
inlinestatic |
Add two float SIMD variables, masked version.
a | term1 |
b | term2 |
m | mask |
|
inlinestatic |
Add two double SIMD variables, masked version.
a | term1 |
b | term2 |
m | mask |
|
inlinestatic |
Float fused multiply-add, masked version.
a | factor1 |
b | factor2 |
c | term |
m | mask |
|
inlinestatic |
double fused multiply-add, masked version.
a | factor1 |
b | factor2 |
c | term |
m | mask |
|
inlinestatic |
SIMD float fused multiply-add, masked version.
a | factor1 |
b | factor2 |
c | term |
m | mask |
|
inlinestatic |
SIMD double fused multiply-add, masked version.
a | factor1 |
b | factor2 |
c | term |
m | mask |
|
inlinestatic |
Calculate 1/x for masked entry of float.
This routine only evaluates 1/x if mask is true. Illegal values for a masked-out float will not lead to floating-point exceptions.
x | Argument that must be nonzero if masked-in. |
m | Mask |
|
inlinestatic |
Calculate 1/x for masked entry of double.
This routine only evaluates 1/x if mask is true. Illegal values for a masked-out double will not lead to floating-point exceptions.
x | Argument that must be nonzero if masked-in. |
m | Mask |
|
inlinestatic |
Calculate 1/x for masked entry of double, but with single accuracy.
This routine only evaluates 1/x if mask is true. Illegal values for a masked-out double will not lead to floating-point exceptions.
x | Argument that must be nonzero if masked-in. |
m | Mask |
|
inlinestatic |
Calculate 1/sqrt(x) for masked entry of float.
This routine only evaluates 1/sqrt(x) if mask is true. Illegal values for a masked-out float will not lead to floating-point exceptions.
x | Argument that must be >0 if masked-in. |
m | Mask |
|
inlinestatic |
Calculate 1/sqrt(x) for masked entry of double.
This routine only evaluates 1/sqrt(x) if mask is true. Illegal values for a masked-out double will not lead to floating-point exceptions.
x | Argument that must be >0 if masked-in. |
m | Mask |
|
inlinestatic |
Calculate 1/sqrt(x) for masked entry of double, but with single accuracy.
This routine only evaluates 1/sqrt(x) if mask is true. Illegal values for a masked-out double will not lead to floating-point exceptions.
x | Argument that must be >0 if masked-in. |
m | Mask |
|
inlinestatic |
Multiply two float variables, masked version.
a | factor1 |
b | factor2 |
m | mask |
|
inlinestatic |
Multiply two double variables, masked version.
a | factor1 |
b | factor2 |
m | mask |
|
inlinestatic |
Multiply two float SIMD variables, masked version.
a | factor1 |
b | factor2 |
m | mask |
|
inlinestatic |
Multiply two double SIMD variables, masked version.
a | factor1 |
b | factor2 |
m | mask |
|
inlinestatic |
SIMD float 1.0/x lookup, masked version.
This is a low-level instruction that should only be called from routines implementing the reciprocal in simd_math.h.
x | Argument, x>0 for entries where mask is true. |
m | Mask |
|
inlinestatic |
SIMD double 1.0/x lookup, masked version.
This is a low-level instruction that should only be called from routines implementing the reciprocal in simd_math.h.
x | Argument, x>0 for entries where mask is true. |
m | Mask |
|
inlinestatic |
SIMD float 1.0/sqrt(x) lookup, masked version.
This is a low-level instruction that should only be called from routines implementing the inverse square root in simd_math.h.
x | Argument, x>0 for entries where mask is true. |
m | Mask |
|
inlinestatic |
SIMD double 1.0/sqrt(x) lookup, masked version.
This is a low-level instruction that should only be called from routines implementing the inverse square root in simd_math.h.
x | Argument, x>0 for entries where mask is true. |
m | Mask |
|
inlinestatic |
Set each float element to the largest from two variables.
a | Any floating-point value |
b | Any floating-point value |
|
inlinestatic |
Set each double element to the largest from two variables.
a | Any doubleing-point value |
b | Any doubleing-point value |
|
inlinestatic |
Set each SIMD float element to the largest from two variables.
a | Any floating-point value |
b | Any floating-point value |
|
inlinestatic |
Set each SIMD double element to the largest from two variables.
a | Any floating-point value |
b | Any floating-point value |
int gmx::mdrunner | ( | gmx_hw_opt_t * | hw_opt, |
FILE * | fplog, | ||
struct t_commrec * | cr, | ||
int | nfile, | ||
const t_filenm | fnm[], | ||
const gmx_output_env_t * | oenv, | ||
gmx_bool | bVerbose, | ||
int | nstglobalcomm, | ||
ivec | ddxyz, | ||
int | dd_rank_order, | ||
int | npme, | ||
real | rdd, | ||
real | rconstr, | ||
const char * | dddlb_opt, | ||
real | dlb_scale, | ||
const char * | ddcsx, | ||
const char * | ddcsy, | ||
const char * | ddcsz, | ||
const char * | nbpu_opt, | ||
int | nstlist_cmdline, | ||
gmx_int64_t | nsteps_cmdline, | ||
int | nstepout, | ||
int | resetstep, | ||
int | nmultisim, | ||
int | repl_ex_nst, | ||
int | repl_ex_nex, | ||
int | repl_ex_seed, | ||
real | pforce, | ||
real | cpt_period, | ||
real | max_hours, | ||
int | imdport, | ||
unsigned long | Flags | ||
) |
Driver routine, that calls the different methods.
[in] | hw_opt | Hardware detection structure |
[in] | fplog | File pointer for log file |
[in] | cr | Communication data |
[in] | nfile | Number of files |
[in] | fnm | Array of filenames and file properties |
[in] | oenv | Output variables for storing xvg files etc. |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | Number of steps between global communication |
[in] | ddxyz | Division of sub-boxes over processors for use in domain decomposition parallellization |
[in] | dd_rank_order | Ordering of the PP and PME ranks |
[in] | npme | The number of separate PME ranks requested, -1 = auto |
[in] | rdd | The maximum distance for bonded interactions with DD (nm) |
[in] | rconstr | Maximum distance for P-LINCS (nm) |
[in] | dddlb_opt | File name for debugging |
[in] | dlb_scale | File name for debugging |
[in] | ddcsx | File name for debugging |
[in] | ddcsy | File name for debugging |
[in] | ddcsz | File name for debugging |
[in] | nbpu_opt | Type of nonbonded processing unit |
[in] | nstlist_cmdline | Override neighbor search frequency |
[in] | nsteps_cmdline | Override number of simulation steps |
[in] | nstepout | How often to write to the console |
[in] | resetstep | Reset the step counter |
[in] | nmultisim | Number of parallel simulations to run |
[in] | repl_ex_nst | Number steps between replica exchange attempts |
[in] | repl_ex_nex | Number of replicas in REMD |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | pforce | Minimum force for printing (for debugging) |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | More command line options |
|
inlinestatic |
Set each float element to the smallest from two variables.
a | Any floating-point value |
b | Any floating-point value |
|
inlinestatic |
Set each double element to the smallest from two variables.
a | Any doubleing-point value |
b | Any doubleing-point value |
|
inlinestatic |
Set each SIMD float element to the smallest from two variables.
a | Any floating-point value |
b | Any floating-point value |
|
inlinestatic |
Set each SIMD double element to the smallest from two variables.
a | Any floating-point value |
b | Any floating-point value |
|
inlinestatic |
SIMD a!=b for single SIMD.
a | value1 |
b | value2 |
Beware that exact floating-point comparisons are difficult.
|
inlinestatic |
SIMD a!=b for double SIMD.
a | value1 |
b | value2 |
Beware that exact floating-point comparisons are difficult.
|
inlinestatic |
Bitwise and for two SIMD float variables.
Supported if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise and for two SIMD double variables.
Supported if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Integer SIMD bitwise and.
Available if GMX_SIMD_HAVE_FINT32_LOGICAL is 1.
a | first integer SIMD |
b | second integer SIMD |
|
inlinestatic |
Integer SIMD bitwise and.
Available if GMX_SIMD_HAVE_DINT32_LOGICAL is 1.
a | first integer SIMD |
b | second integer SIMD |
|
inlinestatic |
Logical and on single precision SIMD booleans.
a | logical vars 1 |
b | logical vars 2 |
|
inlinestatic |
Logical and on double precision SIMD booleans.
a | logical vars 1 |
b | logical vars 2 |
|
inlinestatic |
Logical AND on SimdFIBool.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD boolean 1 |
b | SIMD boolean 2 |
|
inlinestatic |
Logical AND on SimdDIBool.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD boolean 1 |
b | SIMD boolean 2 |
|
inlinestatic |
Multiply two float SIMD variables.
a | factor1 |
b | factor2 |
|
inlinestatic |
Multiply two double SIMD variables.
a | factor1 |
b | factor2 |
|
inlinestatic |
Multiply SIMD integers.
This routine is only available if GMX_SIMD_HAVE_FINT32_ARITHMETICS (single) or GMX_SIMD_HAVE_DINT32_ARITHMETICS (double) is 1.
a | factor1 |
b | factor2 |
|
inlinestatic |
Multiply SIMD integers.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | factor1 |
b | factor2 |
|
inlinestatic |
Add two float SIMD variables.
a | term1 |
b | term2 |
|
inlinestatic |
Add two double SIMD variables.
a | term1 |
b | term2 |
|
inlinestatic |
Add SIMD integers.
This routine is only available if GMX_SIMD_HAVE_FINT32_ARITHMETICS (single) or GMX_SIMD_HAVE_DINT32_ARITHMETICS (double) is 1.
a | term1 |
b | term2 |
|
inlinestatic |
Add SIMD integers.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | term1 |
b | term2 |
|
inlinestatic |
Subtract two float SIMD variables.
a | term1 |
b | term2 |
|
inlinestatic |
Subtract two double SIMD variables.
a | term1 |
b | term2 |
|
inlinestatic |
SIMD single precision negate.
a | SIMD double precision value |
|
inlinestatic |
SIMD double precision negate.
a | SIMD double precision value |
|
inlinestatic |
Subtract SIMD integers.
This routine is only available if GMX_SIMD_HAVE_FINT32_ARITHMETICS (single) or GMX_SIMD_HAVE_DINT32_ARITHMETICS (double) is 1.
a | term1 |
b | term2 |
|
inlinestatic |
Subtract SIMD integers.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | term1 |
b | term2 |
|
inlinestatic |
SIMD a<b for single SIMD.
a | value1 |
b | value2 |
|
inlinestatic |
SIMD a<b for double SIMD.
a | value1 |
b | value2 |
|
inlinestatic |
Less-than comparison of two SIMD integers corresponding to float values.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD integer1 |
b | SIMD integer2 |
|
inlinestatic |
Less-than comparison of two SIMD integers corresponding to double values.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD integer1 |
b | SIMD integer2 |
|
inlinestatic |
SIMD integer shift left logical, based on immediate value.
Available if GMX_SIMD_HAVE_FINT32_LOGICAL is 1.
Logical shift. Each element is shifted (independently) up to 32 positions left, while zeros are shifted in from the right.
a | integer data to shift |
n | number of positions to shift left. n<=32. |
|
inlinestatic |
SIMD integer shift left logical, based on immediate value.
Available if GMX_SIMD_HAVE_DINT32_LOGICAL is 1.
Logical shift. Each element is shifted (independently) up to 32 positions left, while zeros are shifted in from the right.
a | integer data to shift |
n | number of positions to shift left. n<=32. |
|
inlinestatic |
SIMD a<=b for single SIMD.
a | value1 |
b | value2 |
|
inlinestatic |
SIMD a<=b for double SIMD.
a | value1 |
b | value2 |
|
inlinestatic |
SIMD a==b for single SIMD.
a | value1 |
b | value2 |
Beware that exact floating-point comparisons are difficult.
|
inlinestatic |
SIMD a==b for double SIMD.
a | value1 |
b | value2 |
Beware that exact floating-point comparisons are difficult.
|
inlinestatic |
Equality comparison of two integers corresponding to float values.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD integer1 |
b | SIMD integer2 |
|
inlinestatic |
Equality comparison of two integers corresponding to double values.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD integer1 |
b | SIMD integer2 |
|
inlinestatic |
SIMD integer shift right logical, based on immediate value.
Available if GMX_SIMD_HAVE_FINT32_LOGICAL is 1.
Logical shift. Each element is shifted (independently) up to 32 positions right, while zeros are shifted in from the left.
a | integer data to shift |
n | number of positions to shift right. n<=32. |
|
inlinestatic |
SIMD integer shift right logical, based on immediate value.
Available if GMX_SIMD_HAVE_DINT32_LOGICAL is 1.
Logical shift. Each element is shifted (independently) up to 32 positions right, while zeros are shifted in from the left.
a | integer data to shift |
n | number of positions to shift right. n<=32. |
|
inlinestatic |
Bitwise xor for SIMD float.
Available if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise xor for SIMD double.
Available if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Integer SIMD bitwise xor.
Available if GMX_SIMD_HAVE_FINT32_LOGICAL is 1.
a | first integer SIMD |
b | second integer SIMD |
|
inlinestatic |
Integer SIMD bitwise xor.
Available if GMX_SIMD_HAVE_DINT32_LOGICAL is 1.
a | first integer SIMD |
b | second integer SIMD |
|
inlinestatic |
Bitwise or for SIMD float.
Available if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Bitwise or for SIMD double.
Available if GMX_SIMD_HAVE_LOGICAL is 1.
a | data1 |
b | data2 |
|
inlinestatic |
Integer SIMD bitwise or.
Available if GMX_SIMD_HAVE_FINT32_LOGICAL is 1.
a | first integer SIMD |
b | second integer SIMD |
|
inlinestatic |
Integer SIMD bitwise or.
Available if GMX_SIMD_HAVE_DINT32_LOGICAL is 1.
a | first integer SIMD |
b | second integer SIMD |
|
inlinestatic |
Logical or on single precision SIMD booleans.
a | logical vars 1 |
b | logical vars 2 |
Note that this is not necessarily a bitwise operation - the storage format of booleans is implementation-dependent.
\
|
inlinestatic |
Logical or on double precision SIMD booleans.
a | logical vars 1 |
b | logical vars 2 |
Note that this is not necessarily a bitwise operation - the storage format of booleans is implementation-dependent.
\
|
inlinestatic |
Logical OR on SimdFIBool.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD boolean 1 |
b | SIMD boolean 2 |
|
inlinestatic |
Logical OR on SimdDIBool.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD boolean 1 |
b | SIMD boolean 2 |
|
inlinestatic |
Calculate the force correction due to PME analytically in float.
See the SIMD version of this function for details.
z2 | input parameter |
|
inlinestatic |
Calculate the force correction due to PME analytically in double.
See the SIMD version of this function for details.
z2 | input parameter |
|
inlinestatic |
Force correction due to PME in double, but with single accuracy.
See the SIMD version of this function for details.
z2 | input parameter |
|
inlinestatic |
Calculate the potential correction due to PME analytically in float.
See the SIMD version of this function for details.
z2 | input parameter |
|
inlinestatic |
Calculate the potential correction due to PME analytically in double.
See the SIMD version of this function for details.
z2 | input parameter |
|
inlinestatic |
Potential correction due to PME in double, but with single accuracy.
See the SIMD version of this function for details.
z2 | input parameter |
T gmx::power12 | ( | T | x | ) |
calculate x^12
T | Type of argument and return value |
x | argument |
T gmx::power3 | ( | T | x | ) |
calculate x^3
T | Type of argument and return value |
x | argument |
T gmx::power4 | ( | T | x | ) |
calculate x^4
T | Type of argument and return value |
x | argument |
T gmx::power5 | ( | T | x | ) |
calculate x^5
T | Type of argument and return value |
x | argument |
T gmx::power6 | ( | T | x | ) |
calculate x^6
T | Type of argument and return value |
x | argument |
void gmx::printBinaryInformation | ( | FILE * | fp, |
const IProgramContext & | programContext | ||
) |
Print basic information about the executable.
fp | Where to print the information to. | |
[in] | programContext | Program information object to use. |
void gmx::printBinaryInformation | ( | FILE * | fp, |
const IProgramContext & | programContext, | ||
const BinaryInformationSettings & | settings | ||
) |
Print basic information about the executable with custom settings.
Needed to read the members without otherwise unnecessary accessors.
fp | Where to print the information to. | |
[in] | programContext | Program information object to use. |
[in] | settings | Specifies what to print. |
int gmx::processExceptionAtExitForCommandLine | ( | const std::exception & | ex | ) |
Handles an exception and deinitializes after initForCommandLine.
[in] | ex | Exception that is the cause for terminating the program. |
This method should be called as the last thing before terminating the program because of an exception. See processExceptionAtExit() for details. Additionally this method undoes the work done by initForCommandLine.
Does not throw.
|
inlinestatic |
SIMD float 1.0/x lookup.
This is a low-level instruction that should only be called from routines implementing the reciprocal in simd_math.h.
x | Argument, x!=0 |
|
inlinestatic |
SIMD double 1.0/x lookup.
This is a low-level instruction that should only be called from routines implementing the reciprocal in simd_math.h.
x | Argument, x!=0 |
|
inlinestatic |
Return sum of all elements in float variable (i.e., the variable itself).
a | variable to reduce/sum. |
|
inlinestatic |
Return sum of all elements in double variable (i.e., the variable itself).
a | variable to reduce/sum. |
|
inlinestatic |
Return sum of all elements in SIMD float variable.
a | SIMD variable to reduce/sum. |
|
inlinestatic |
Return sum of all elements in SIMD double variable.
a | SIMD variable to reduce/sum. |
|
inlinestatic |
Add each float to four consecutive memory locations, return sum.
m | Pointer to memory where four floats should be incremented |
v0 | float to be added to m[0] |
v1 | float to be added to m[1] |
v2 | float to be added to m[2] |
v3 | float to be added to m[3] |
|
inlinestatic |
Add each double to four consecutive memory locations, return sum.
m | Pointer to memory where four floats should be incremented |
v0 | double to be added to m[0] |
v1 | double to be added to m[1] |
v2 | double to be added to m[2] |
v3 | double to be added to m[3] |
|
inlinestatic |
Reduce the 4 half-SIMD-with doubles in 2 SIMD variables (sum halves), increment four consecutive doubles in memory, return sum.
m | Pointer to memory where the four values should be incremented |
v0 | Variable whose half-SIMD sums should be added to m[0]/m[1], respectively. |
v1 | Variable whose half-SIMD sums should be added to m[2]/m[3], respectively. |
The pointer m must be aligned, but only to the smaller of four elements and the floating-point SIMD width.
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Reduce the 4 half-SIMD-with floats in 2 SIMD variables (sum halves), increment four consecutive floats in memory, return sum.
m | Pointer to memory where the four values should be incremented |
v0 | Variable whose half-SIMD sums should be added to m[0]/m[1], respectively. |
v1 | Variable whose half-SIMD sums should be added to m[2]/m[3], respectively. |
The pointer m must be aligned, but only to the smaller of four elements and the floating-point SIMD width.
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
bool gmx::regexMatch | ( | const std::string & | str, |
const Regex & | regex | ||
) |
Matches a string with a regular expression.
[in] | str | String to match. |
[in] | regex | Regular expression to match. |
regex
matches the whole str
.Does not throw currently, but this is subject to change if/when better error handling is implemented (currently, it returns false if the matching fails, e.g., because of out-of-memory).
|
inlinestatic |
Float round to nearest integer value (in floating-point format).
a | Any floating-point value |
|
inlinestatic |
double round to nearest integer value (in doubleing-point format).
a | Any doubleing-point value |
|
inlinestatic |
SIMD float round to nearest integer value (in floating-point format).
a | Any floating-point value |
|
inlinestatic |
SIMD double round to nearest integer value (in floating-point format).
a | Any floating-point value |
|
inlinestatic |
SIMD float 1.0/sqrt(x) lookup.
This is a low-level instruction that should only be called from routines implementing the inverse square root in simd_math.h.
x | Argument, x>0 |
|
inlinestatic |
double SIMD 1.0/sqrt(x) lookup.
This is a low-level instruction that should only be called from routines implementing the inverse square root in simd_math.h.
x | Argument, x>0 |
int gmx::runCommandLineModule | ( | int | argc, |
char * | argv[], | ||
ICommandLineModule * | module | ||
) |
Implements a main() method that runs a single module.
This method allows for uniform behavior for binaries that only contain a single module without duplicating any of the implementation from CommandLineModuleManager (startup headers, common options etc.).
The signature assumes that module
construction does not throw (because otherwise the caller would need to duplicate all the exception handling code). It is possible to move the construction inside the try/catch in this method using an indirection similar to TrajectoryAnalysisCommandLineRunner::runAsMain(), but until that is necessary, the current approach leads to simpler code.
Usage:
Does not throw. All exceptions are caught and handled internally.
int gmx::runCommandLineModule | ( | int | argc, |
char * | argv[], | ||
const char * | name, | ||
const char * | description, | ||
std::function< std::unique_ptr< ICommandLineOptionsModule >()> | factory | ||
) |
Implements a main() method that runs a single module.
argc | argc passed to main(). | |
argv | argv passed to main(). | |
[in] | name | Name for the module. |
[in] | description | Short description for the module. |
factory | Factory method that creates the module to run. |
This method allows for uniform behavior for binaries that only contain a single module without duplicating any of the implementation from CommandLineModuleManager (startup headers, common options etc.).
Usage:
Does not throw. All exceptions are caught and handled internally.
|
inlinestatic |
Select from single precision variable where boolean is true.
a | Floating-point variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from double precision variable where boolean is true.
a | double variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from integer variable where boolean is true.
a | Integer variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from single precision SIMD variable where boolean is true.
a | Floating-point variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from double precision SIMD variable where boolean is true.
a | Floating-point variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from gmx::SimdFInt32 variable where boolean is true.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD integer to select from |
mask | Boolean selector |
|
inlinestatic |
Select from gmx::SimdDInt32 variable where boolean is true.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD integer to select from |
mask | Boolean selector |
|
inlinestatic |
Select from single precision variable where boolean is false.
a | Floating-point variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from double precision variable where boolean is false.
a | double variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from integer variable where boolean is false.
a | Integer variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from single precision SIMD variable where boolean is false.
a | Floating-point variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from double precision SIMD variable where boolean is false.
a | Floating-point variable to select from |
mask | Boolean selector |
|
inlinestatic |
Select from gmx::SimdFInt32 variable where boolean is false.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD integer to select from |
mask | Boolean selector |
|
inlinestatic |
Select from gmx::SimdDInt32 variable where boolean is false.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD integer to select from |
mask | Boolean selector |
Maclaurin series for sinh(x)/x.
Used for NH chains and MTTK pressure control. Here, we compute it to 10th order, which might be an overkill. 8th is probably enough, but it's not very much more expensive.
void gmx::setLibraryFileFinder | ( | const DataFileFinder * | finder | ) |
Sets a finder for location data files from share/top/.
[in] | finder | finder to set (can be NULL to restore the default finder). |
The library does not take ownership of finder
. The provided object must remain valid until the global instance is changed by another call to setLibraryFileFinder().
The global instance is used by gmxlibfn() and libopen().
This method is not thread-safe. See setProgramContext(); the same constraints apply here as well.
Does not throw.
|
inlinestatic |
Proxy object to set any SIMD or scalar variable to zero.
|
inlinestatic |
Set all SIMD double variable elements to 0.0.
You should typically just call gmx::setZero(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
|
inlinestatic |
Set all SIMD (double) integer variable elements to 0.
You should typically just call gmx::setZero(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
|
inlinestatic |
Set all SIMD float variable elements to 0.0.
You should typically just call gmx::setZero(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
|
inlinestatic |
Set all SIMD (float) integer variable elements to 0.
You should typically just call gmx::setZero(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
bool gmx::simdCheck | ( | SimdType | s, |
FILE * | log, | ||
bool | warnToStdErr | ||
) |
Check if binary was compiled with the provided SIMD type.
s | SIMD type to query. If this matches the suggested type for this cpu, the routine returns quietly. |
log | If not nullptr, statistics will be printed to the file. If we do not have a match there will also be a warning. |
warnToStdErr | If true, warnings will also be printed to stderr. |
|
inlinestatic |
Load GMX_SIMD_FLOAT_WIDTH float numbers from aligned memory.
m | Pointer to memory aligned to the SIMD width. |
|
inlinestatic |
Load GMX_SIMD_DOUBLE_WIDTH numbers from aligned memory.
m | Pointer to memory aligned to the SIMD width. |
|
inlinestatic |
Load aligned SIMD integer data, width corresponds to gmx::SimdDouble.
You should typically just call gmx::load(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
m | Pointer to memory, aligned to (double) integer SIMD width. |
|
inlinestatic |
Load aligned SIMD integer data, width corresponds to gmx::SimdFloat.
You should typically just call gmx::load(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
m | Pointer to memory, aligned to (float) integer SIMD width. |
|
inlinestatic |
Load SIMD float from unaligned memory.
Available if GMX_SIMD_HAVE_LOADU is 1.
m | Pointer to memory, no alignment requirement. |
|
inlinestatic |
Load SIMD double from unaligned memory.
Available if GMX_SIMD_HAVE_LOADU is 1.
m | Pointer to memory, no alignment requirement. |
|
inlinestatic |
Load unaligned integer SIMD data, width corresponds to gmx::SimdDouble.
You should typically just call gmx::loadU(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
Available if GMX_SIMD_HAVE_LOADU is 1.
m | Pointer to memory, no alignment requirements. |
|
inlinestatic |
Load unaligned integer SIMD data, width corresponds to gmx::SimdFloat.
You should typically just call gmx::loadU(), which uses proxy objects internally to handle all types rather than adding the suffix used here.
Available if GMX_SIMD_HAVE_LOADU is 1.
m | Pointer to memory, no alignment requirements. |
|
static |
Prefetch memory at address m.
This typically prefetches one cache line of memory from address m, usually 64bytes or more, but the exact amount will depend on the implementation. On many platforms this is simply a no-op. Technically it might not be part of the SIMD instruction set, but since it is a hardware-specific function that is normally only used in tight loops where we also apply SIMD, it fits well here.
There are no guarantees about the level of cache or temporality, but usually we expect stuff to end up in level 2, and be used in a few hundred clock cycles, after which it stays in cache until evicted (normal caching).
m | Pointer to location prefetch. There are no alignment requirements, but if the pointer is not aligned the prefetch might start at the lower cache line boundary (meaning fewer bytes are prefetched). |
const std::string & gmx::simdString | ( | SimdType | s | ) |
Return a string with the name of a SIMD type.
s | SIMD type to turn into string |
|
inlinestatic |
Float sin.
x | The argument to evaluate sin for |
|
inlinestatic |
Double sin.
x | The argument to evaluate sin for |
|
inlinestatic |
Float sin & cos.
x | The argument to evaluate sin/cos for | |
[out] | sinval | Sin(x) |
[out] | cosval | Cos(x) |
|
inlinestatic |
Double sin & cos.
x | The argument to evaluate sin/cos for | |
[out] | sinval | Sin(x) |
[out] | cosval | Cos(x) |
|
inlinestatic |
Double sin & cos, but with single accuracy.
x | The argument to evaluate sin/cos for | |
[out] | sinval | Sin(x) |
[out] | cosval | Cos(x) |
|
inlinestatic |
Double sin, but with single accuracy.
x | The argument to evaluate sin for |
|
inlinestatic |
Calculate sixth root of x in single precision.
x | Argument, must be greater than or equal to zero. |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate sixth root of x in double precision.
x | Argument, must be greater than or equal to zero. |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate sixth root of integer x, return double.
x | Argument, must be greater than or equal to zero. |
This routine is typically faster than using std::pow().
|
inlinestatic |
Calculate sqrt(x) for double, but with single accuracy.
x | Argument that must be >=0. |
T gmx::square | ( | T | x | ) |
calculate x^2
T | Type of argument and return value |
x | argument |
|
inlinestatic |
Store contents of float variable to aligned memory m.
[out] | m | Pointer to memory. |
a | float variable to store |
|
inlinestatic |
Store the contents of SIMD float variable to aligned memory m.
[out] | m | Pointer to memory, aligned to SIMD width. |
a | SIMD variable to store |
|
inlinestatic |
Store the contents of SIMD double variable to aligned memory m.
[out] | m | Pointer to memory, aligned to SIMD width. |
a | SIMD variable to store |
|
inlinestatic |
Store aligned SIMD integer data, width corresponds to gmx::SimdFloat.
m | Memory aligned to (float) integer SIMD width. |
a | SIMD variable to store. |
|
inlinestatic |
Store aligned SIMD integer data, width corresponds to gmx::SimdDouble.
m | Memory aligned to (double) integer SIMD width. |
a | SIMD (double) integer variable to store. |
|
inlinestatic |
Store contents of double variable to aligned memory m.
[out] | m | Pointer to memory. |
a | double variable to store |
|
inlinestatic |
Store contents of integer variable to aligned memory m.
[out] | m | Pointer to memory. |
a | integer variable to store |
|
inlinestatic |
Store low & high parts of SIMD double to different locations.
m0 | Pointer to memory aligned to half SIMD width. |
m1 | Pointer to memory aligned to half SIMD width. |
a | SIMD variable. Low half should be stored to m0, high to m1. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_DOUBLE is 1.
|
inlinestatic |
Store low & high parts of SIMD float to different locations.
m0 | Pointer to memory aligned to half SIMD width. |
m1 | Pointer to memory aligned to half SIMD width. |
a | SIMD variable. Low half should be stored to m0, high to m1. |
Available if GMX_SIMD_HAVE_HSIMD_UTIL_FLOAT is 1.
|
inlinestatic |
Store contents of float variable to unaligned memory m.
[out] | m | Pointer to memory, no alignment requirement. |
a | float variable to store. |
|
inlinestatic |
Store SIMD float to unaligned memory.
Available if GMX_SIMD_HAVE_STOREU is 1.
[out] | m | Pointer to memory, no alignment requirement. |
a | SIMD variable to store. |
|
inlinestatic |
Store SIMD double to unaligned memory.
Available if GMX_SIMD_HAVE_STOREU is 1.
[out] | m | Pointer to memory, no alignment requirement. |
a | SIMD variable to store. |
|
inlinestatic |
Store unaligned SIMD integer data, width corresponds to gmx::SimdFloat.
Available if GMX_SIMD_HAVE_STOREU is 1.
m | Memory pointer, no alignment requirements. |
a | SIMD variable to store. |
|
inlinestatic |
Store unaligned SIMD integer data, width corresponds to gmx::SimdDouble.
Available if GMX_SIMD_HAVE_STOREU is 1.
m | Memory pointer, no alignment requirements. |
a | SIMD (double) integer variable to store. |
|
inlinestatic |
Store contents of double variable to unaligned memory m.
[out] | m | Pointer to memory, no alignment requirement. |
a | double variable to store. |
|
inlinestatic |
Store contents of integer variable to unaligned memory m.
[out] | m | Pointer to memory, no alignment requirement. |
a | integer variable to store. |
|
inlinestatic |
Float tan.
x | The argument to evaluate tan for |
|
inlinestatic |
Double tan.
x | The argument to evaluate tan for |
|
inlinestatic |
Double tan, but with single accuracy.
x | The argument to evaluate tan for |
|
inlinestatic |
Return true if any bits are set in the float variable.
This function is used to handle bitmasks, mainly for exclusions in the inner kernels. Note that it will return true even for -0.0f (sign bit set), so it is not identical to not-equal.
a | value |
|
inlinestatic |
Return true if any bits are set in the double variable.
This function is used to handle bitmasks, mainly for exclusions in the inner kernels. Note that it will return true even for -0.0 (sign bit set), so it is not identical to not-equal.
a | value |
|
inlinestatic |
Return true if any bits are set in the integer variable.
This function is used to handle bitmasks, mainly for exclusions in the inner kernels.
a | value |
|
inlinestatic |
Return true if any bits are set in the single precision SIMD.
This function is used to handle bitmasks, mainly for exclusions in the inner kernels. Note that it will return true even for -0.0f (sign bit set), so it is not identical to not-equal.
a | value |
|
inlinestatic |
Return true if any bits are set in the single precision SIMD.
This function is used to handle bitmasks, mainly for exclusions in the inner kernels. Note that it will return true even for -0.0 (sign bit set), so it is not identical to not-equal.
a | value |
|
inlinestatic |
Check if any bit is set in each element.
Available if GMX_SIMD_HAVE_FINT32_ARITHMETICS is 1.
a | SIMD integer |
|
inlinestatic |
Check if any bit is set in each element.
Available if GMX_SIMD_HAVE_DINT32_ARITHMETICS is 1.
a | SIMD integer |
|
inlinestatic |
Subtract 3 floats from base/offset.
align | Alignment of the memory to which we write, i.e. distance (measured in elements, not bytes) between index points. |
[out] | base | Pointer to the start of the memory area |
offset | Offset to the start of triplet. | |
v0 | 1st value, subtracted from base[align*offset[0]]. | |
v1 | 2nd value, subtracted from base[align*offset[0] + 1]. | |
v2 | 3rd value, subtracted from base[align*offset[0] + 2]. |
|
inlinestatic |
Subtract 3 doubles from base/offset.
align | Alignment of the memory to which we write, i.e. distance (measured in elements, not bytes) between index points. |
[out] | base | Pointer to the start of the memory area |
offset | Offset to the start of triplet. | |
v0 | 1st value, subtracted from base[align*offset[0]]. | |
v1 | 2nd value, subtracted from base[align*offset[0] + 1]. | |
v2 | 3rd value, subtracted from base[align*offset[0] + 2]. |
|
inlinestatic |
Add 3 floats to base/offset.
align | Alignment of the memory to which we write, i.e. distance (measured in elements, not bytes) between index points. |
[out] | base | Pointer to the start of the memory area |
offset | Offset to the start of triplet. | |
v0 | 1st value, added to base[align*offset[0]]. | |
v1 | 2nd value, added to base[align*offset[0] + 1]. | |
v2 | 3rd value, added to base[align*offset[0] + 2]. |
|
inlinestatic |
Add 3 doubles to base/offset.
align | Alignment of the memory to which we write, i.e. distance (measured in elements, not bytes) between index points. |
[out] | base | Pointer to the start of the memory area |
offset | Offset to the start of triplet. | |
v0 | 1st value, added to base[align*offset[0]]. | |
v1 | 2nd value, added to base[align*offset[0] + 1]. | |
v2 | 3rd value, added to base[align*offset[0] + 2]. |
|
inlinestatic |
Store 3 floats to 3 to base/offset.
align | Alignment of the memory to which we write, i.e. distance (measured in elements, not bytes) between index points. |
[out] | base | Pointer to the start of the memory area |
offset | Offset to the start of triplet. | |
v0 | 1st value, written to base[align*offset[0]]. | |
v1 | 2nd value, written to base[align*offset[0] + 1]. | |
v2 | 3rd value, written to base[align*offset[0] + 2]. |
|
inlinestatic |
Store 3 doubles to 3 to base/offset.
align | Alignment of the memory to which we write, i.e. distance (measured in elements, not bytes) between index points. |
[out] | base | Pointer to the start of the memory area |
offset | Offset to the start of triplet. | |
v0 | 1st value, written to base[align*offset[0]]. | |
v1 | 2nd value, written to base[align*offset[0] + 1]. | |
v2 | 3rd value, written to base[align*offset[0] + 2]. |
|
inlinestatic |
Truncate float, i.e. round towards zero - common hardware instruction.
a | Any floating-point value |
|
inlinestatic |
Truncate double, i.e. round towards zero - common hardware instruction.
a | Any doubleing-point value |
|
inlinestatic |
Truncate SIMD float, i.e. round towards zero - common hardware instruction.
a | Any floating-point value |
|
inlinestatic |
Truncate SIMD double, i.e. round towards zero - common hardware instruction.
a | Any floating-point value |
double gmx::do_md |
MD simulations.
Integrator algorithm implementation. (FILE *fplog, t_commrec *cr,
[in] | fplog | Log file for output |
[in] | cr | Communication record |
[in] | nfile | Number of files |
[in] | fnm | Filename structure array |
[in] | oenv | Output information |
[in] | bVerbose | Verbose output or not |
[in] | nstglobalcomm | How often global communication is done |
[in] | vsite | Virtual site information |
[in] | constr | Constraint information |
[in] | stepout | How often we writen to the console |
[in] | inputrec | Input record with mdp options |
[in] | top_global | Molecular topology for the whole system |
[in] | fcd | Force and constraint data |
[in] | state_global | The state (x, v, f, box etc.) of the whole system |
[in] | mdatoms | Structure containing atom information |
[in] | nrnb | Accounting for floating point operations |
[in] | wcycle | Wall cycle timing information |
[in] | ed | Essential dynamics sampling information |
[in] | fr | Force record with cut-off information and more |
[in] | repl_ex_nst | How often we do replica exchange (in steps) |
[in] | repl_ex_nex | How many replicas we have |
[in] | repl_ex_seed | The seed for Monte Carlo swaps |
[in] | membed | Membrane embedding data structure |
[in] | cpt_period | How often to checkpoint the simulation |
[in] | max_hours | Maximume length of the simulation (wall time) |
[in] | imdport | Interactive MD port (socket) |
[in] | Flags | Flags to control mdrun |
[in] | walltime_accounting | More timing information (FILE *fplog, t_commrec *cr, int nfile, const t_filenm fnm[], const gmx_output_env_t *oenv, gmx_bool bVerbose, int nstglobalcomm, gmx_vsite_t *vsite, gmx_constr_t constr, int stepout, t_inputrec *inputrec, gmx_mtop_t *top_global, t_fcdata *fcd, t_state *state_global, t_mdatoms *mdatoms, t_nrnb *nrnb, gmx_wallcycle_t wcycle, gmx_edsam_t ed, t_forcerec *fr, int repl_ex_nst, int repl_ex_nex, int repl_ex_seed, real cpt_period, real max_hours, int imdport, unsigned long Flags, gmx_walltime_accounting_t walltime_accounting) |