Gromacs
2019-beta2
|
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.
Defines the dispatch function for the .mdp integrator field.
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... | |
struct | BiasCoupledToSystem |
A bias and its coupling to the system. More... | |
class | Awh |
Coupling of the accelerated weight histogram method (AWH) with the system. More... | |
class | Bias |
A bias acting on a multidimensional coordinate. More... | |
class | BiasParams |
Constant parameters for the bias. More... | |
class | BiasState |
The state of a bias. More... | |
class | AwhEnergyBlock |
AWH output data block that can be written to an energy file block. More... | |
class | BiasWriter |
Class organizing the output data storing and writing of an AWH bias. More... | |
class | CoordState |
Keeps track of the current coordinate value, grid index and umbrella location. More... | |
class | CorrelationGrid |
Grid of local correlation tensors. More... | |
class | CorrelationBlockData |
Correlation block averaging weight-only data. More... | |
class | CorrelationTensor |
Correlation data for computing the correlation tensor of one grid point. More... | |
struct | DimParams |
Constant parameters for each dimension of the coordinate. More... | |
class | GridAxis |
An axis, i.e. dimension, of the grid. More... | |
struct | GridPoint |
A point in the grid. More... | |
class | Grid |
The grid, generally multidimensional and periodic. More... | |
class | HistogramSize |
Tracks global size related properties of the bias histogram. More... | |
class | PointState |
The state of a coordinate point. 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 | ArrayRef |
STL-like interface to a C array of T (or part of a std container of T). 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 | HashedMap |
Unordered key to value mapping. More... | |
class | LocalAtomSet |
A local atom set collects local, global and collective indices of the home atoms on a rank. The indices of the home atoms are automatically updated during domain decomposition, thus gmx::LocalAtomSet::localIndex enables iteration over local atoms properties like coordinates or forces. TODO: add a LocalAtomSet iterator. More... | |
class | LocalAtomSetManager |
Hands out handles to local atom set indices and triggers index recalculation for all sets upon domain decomposition if run in parallel. More... | |
class | ClfftInitializer |
Handle clFFT library init and tear down in RAII style. More... | |
class | HostAllocationPolicy |
Policy class for configuring gmx::Allocator, to manage allocations of memory that may be needed for e.g. GPU transfers. More... | |
class | CpuInfo |
Detect CPU capabilities and basic logical processor info. More... | |
class | HardwareTopology |
Information about sockets, cores, threads, numa, caches. More... | |
class | ArrayRefWithPadding |
Interface to a C array of T (or part of a std container of T), that includes padding that is suitable for the kinds of SIMD operations GROMACS uses. 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 | PaddedVector |
PaddedVector is a container of elements in contiguous storage that allocates extra memory for safe SIMD-style loads for operations used in GROMACS. More... | |
class | BasicVector |
C++ class for 3D vectors. More... | |
class | CheckpointHandler |
Class handling the checkpoint signal. More... | |
class | Constraints |
Handles constraints. More... | |
struct | Task |
Unit of work within LINCS. More... | |
class | Lincs |
Data for LINCS algorithm. More... | |
class | MDAtoms |
Contains a C-style t_mdatoms while managing some of its memory with C++ vectors with allocators. More... | |
class | ResetHandler |
Class handling the reset of counters. 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 | StopHandler |
Class handling the stop signal. More... | |
class | StopConditionSignal |
Class setting the stop signal based on gmx_get_stop_condition() More... | |
class | StopConditionTime |
Class setting the stop signal based on maximal run time. More... | |
class | StopHandlerBuilder |
Class preparing the creation of a StopHandler. More... | |
struct | AtomIndexExtremes |
Struct for returning an atom range. More... | |
class | UpdateGroupsCog |
Class for managing and computing centers of geometry of update groups. More... | |
struct | Integrator |
Struct to handle setting up and running the different "integrators". More... | |
class | LegacyMdrunOptions |
This class provides the same command-line option functionality to both CLI and API sessions. More... | |
class | Mdrunner |
Runner object for supporting setup and execution of mdrun. More... | |
class | MdrunnerBuilder |
Build a gmx::Mdrunner. More... | |
class | SimulationContext |
Simulation environment and configuration. More... | |
class | MDModules |
Manages the collection of all modules used for mdrun. More... | |
class | ForceWithVirial |
Container for force and virial for algorithms that provide their own virial tensor contribution. More... | |
class | ForceProviderInput |
Helper struct that bundles data for passing it over to the force providers. More... | |
class | ForceProviderOutput |
Helper struct bundling the output data of a force provider. More... | |
class | IForceProvider |
Interface for a component that provides forces during MD. More... | |
class | IMDModule |
Extension module for GROMACS simulations. More... | |
class | IMDOutputProvider |
Interface for handling additional output files during a simulation. More... | |
class | IMdpOptionProvider |
Interface for handling mdp/tpr input to a mdrun module. More... | |
class | MimicCommunicator |
Class-wrapper around MiMiC communication library It uses GROMACS' unit conversion to switch from GROMACS' units to a.u. 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 | AbstractOptionSection |
Base class for specifying option section properties. More... | |
class | AbstractOptionSectionHandle |
Base class for handles to option sections. 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 | IOptionsContainerWithSections |
Interface for adding input options with sections. More... | |
class | IOptionSectionStorage |
Provides behavior specific to a certain option section type. More... | |
class | IOptionValueStore |
Represents the final storage location of option values. 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 | OptionSection |
Declares a simple option section. More... | |
class | OptionSectionHandle |
Allows adding options to an OptionSection. More... | |
class | OptionStorageTemplateSimple |
Simplified option storage template for options that have one-to-one value conversion. 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 | RepeatingOptionSectionHandle |
Allows adding options to an RepeatingOptionSection. More... | |
class | RepeatingOptionSectionStorage |
Implements handling of the structures that stores per-section values. More... | |
class | RepeatingOptionSection |
Declares an option section that creates a structure for each instance. More... | |
class | TimeUnitManager |
Provides common functionality for time unit conversions. More... | |
class | TimeUnitBehavior |
Options behavior to add a time unit option. More... | |
class | OptionValueConverterSimple |
Helper for converting from Variant to a given type. More... | |
class | OptionValueStoreNull |
Value storage that does not store anywhere. 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 | RestraintManager |
Manage the Restraint potentials available for Molecular Dynamics. More... | |
class | Site |
Abstraction for a restraint interaction site. More... | |
class | RestraintForceProvider |
Provide IForceProvider for RestraintMDModuleImpl. More... | |
class | RestraintMDModuleImpl |
IMDModule implementation for RestraintMDModule. More... | |
class | RestraintMDModule |
MDModule wrapper for Restraint implementations. More... | |
class | PotentialPointData |
Structure to hold the results of IRestraintPotential::evaluate(). More... | |
class | IRestraintPotential |
Interface for Restraint potentials. 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... | |
struct | SelectionTopologyProperties |
Describes topology properties required for selection evaluation. 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... | |
struct | SelMethodEvalContext |
Evaluation context for selection methods. 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... | |
struct | SimdFloatTag |
Tag type to select to load SimdFloat with simdLoad(U) More... | |
struct | SimdDoubleTag |
Tag type to select to load SimdDouble with simdLoad(U) More... | |
struct | SimdFInt32Tag |
Tag type to select to load SimdFInt32 with simdLoad(U) More... | |
struct | SimdDInt32Tag |
Tag type to select to load SimdDInt32 with simdLoad(U) More... | |
struct | AlignedArray< float, N > |
Identical to std::array with GMX_SIMD_FLOAT_WIDTH alignment. Should not be deleted through base pointer (destructor is non-virtual). More... | |
struct | AlignedArray< double, N > |
Identical to std::array with GMX_SIMD_DOUBLE_WIDTH alignment. Should not be deleted through base pointer (destructor is non-virtual). More... | |
class | SimdSetZeroProxy |
Proxy object to enable setZero() for SIMD and real types. More... | |
class | CubicSplineTable |
Cubic spline interpolation table. More... | |
class | QuadraticSplineTable |
Quadratic spline interpolation table. More... | |
struct | AnalyticalSplineTableInput |
Specification for analytical table function (name, function, derivative) More... | |
struct | NumericalSplineTableInput |
Specification for vector table function (name, function, derivative, spacing) More... | |
struct | GpuTaskMapping |
Specifies the GPU deviceID_ available for task_ to use. More... | |
class | RangePartitioning |
Division of a range of indices into consecutive blocks. More... | |
class | EnergyFrame |
Contains the content of an .edr frame read by an EnergyFrameReader. More... | |
class | TrajectoryFrame |
Contains a valid trajectory frame. 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 | TrajectoryAnalysisCommandLineRunner |
Runner for command-line trajectory analysis tools. More... | |
class | SurfaceAreaCalculator |
Computes surface areas for a group of atoms/spheres. More... | |
class | UnionFinder |
Union-find data structure for keeping track of disjoint sets. More... | |
class | MappedUnionFinder |
Extension of UnionFind that supports non-consecutive integer indices as items. More... | |
class | TrajectoryAnalysisRunnerCommon |
Implements common trajectory analysis runner functionality. More... | |
class | TopologyInformation |
Topology information available to a trajectory analysis module. More... | |
class | AlignedAllocationPolicy |
Policy class for configuring gmx::Allocator, to manage allocations of aligned memory for SIMD code. More... | |
class | PageAlignedAllocationPolicy |
Policy class for configuring gmx::Allocator, to manage allocations of page-aligned memory that can be locked for asynchronous transfer to GPU devices. More... | |
class | Allocator |
Policy-based 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 | ToleranceError |
Exception class when a specified tolerance cannot be achieved. 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 | RangeError |
Exception class for out-of-range values or indices. 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 | ISerializer |
Interface for types that convert standard data types into a form suitable for storage or transfer. More... | |
class | KeyValueTreePath |
Identifies an entry in a key-value tree. More... | |
class | KeyValueTreeBuilder |
Root builder for creating trees that have an object at the root. More... | |
class | KeyValueTreeValueBuilder |
Builder for KeyValueTreeValue objects. More... | |
class | KeyValueTreeUniformArrayBuilder |
Builder for KeyValueTreeArray objects where all elements are of type T . More... | |
class | KeyValueTreeObjectArrayBuilder |
Builder for KeyValueTreeArray objects where all elements are KeyValueTreeObject objects. More... | |
class | KeyValueTreeObjectBuilder |
Builder for KeyValueTreeObject objects. More... | |
class | IKeyValueTreeTransformRules |
Interface to declare rules for transforming key-value trees. More... | |
class | KeyValueTreeTransformRulesScoped |
Helper object returned from IKeyValueTreeTransformRules::scopedTransform(). More... | |
class | KeyValueTreeTransformRuleBuilder |
Provides methods to specify one transformation rule. More... | |
class | ILogTarget |
Target where log output can be written. More... | |
class | LogEntryWriter |
Helper class for creating log entries with GMX_LOG. More... | |
class | LogWriteHelper |
Helper class for implementing GMX_LOG. More... | |
class | LogLevelHelper |
Represents a single logging level. More... | |
class | MDLogger |
Declares a logging interface. More... | |
class | LoggerBuilder |
Initializes loggers. More... | |
class | LoggerOwner |
Manages memory for a logger built with LoggerBuilder. 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... | |
class | PhysicalNodeCommunicator |
Holds a communicator for the physical node of this rank. 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 | StringCompare |
Compare object for std::string STL containers and algorithms that supports run-time decision on how to compare. 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... | |
struct | isIntegralConstant |
Is true if type is a std::integral_constant. More... | |
struct | functor_wrapper |
wrap function into functor to be used as deleter More... | |
class | Variant |
Represents a dynamically typed value of an arbitrary type. More... | |
Typedefs | |
typedef std::shared_ptr < IAnalysisDataModule > | AnalysisDataModulePointer |
Smart pointer for managing a generic analysis data module. | |
typedef ArrayRef< const 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 double | awh_dvec [c_biasMaxNumDim] |
A real vector in AWH coordinate space. | |
typedef int | awh_ivec [c_biasMaxNumDim] |
An integer vector in AWH coordinate space. | |
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. | |
template<class T > | |
using | HostAllocator = Allocator< T, HostAllocationPolicy > |
Memory allocator that uses HostAllocationPolicy. More... | |
template<class T > | |
using | HostVector = PaddedVector< T, HostAllocator< T > > |
Convenience alias for std::vector that uses HostAllocator. | |
typedef BasicVector< real > | RVec |
Shorthand for C++ rvec -equivalent type. | |
typedef BasicVector< double > | DVec |
Shorthand for C++ dvec -equivalent type. | |
typedef BasicVector< int > | IVec |
Shorthand for C++ ivec -equivalent type. | |
typedef std::array < SimulationSignal, eglsNR > | SimulationSignals |
Convenience typedef for the group of signals used. | |
using | IntegratorFunctionType ) = void( |
Function type for integrator code. | |
using | LogFilePtr = std::unique_ptr< t_fileio, functor_wrapper< t_fileio, closeLogFile >> |
Simple guard pointer See unique_cptr for details. | |
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... | |
using | Vector = ::gmx::RVec |
Provide a vector type name with a more stable interface than RVec and a more stable implementation than vec3<>. 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. | |
using | GpuTaskAssignment = std::vector< GpuTaskMapping > |
Container of GPU tasks on a rank, specifying the task type and GPU device ID, e.g. potentially ready for consumption by the modules on that rank. | |
using | GpuTasksOnRanks = std::vector< std::vector< GpuTask > > |
Container of compute tasks suitable to run on a GPU e.g. on each rank of a node. | |
using | GpuTaskAssignments = std::vector< GpuTaskAssignment > |
Container of RankGpuTaskAssignments e.g. for all ranks on a node. | |
using | BoxMatrix = std::array< std::array< real, 3 >, 3 > |
A 3x3 matrix data type useful for simulation boxes. More... | |
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. | |
template<class T > | |
using | AlignedAllocator = Allocator< T, AlignedAllocationPolicy > |
Aligned memory allocator. More... | |
template<class T > | |
using | PageAlignedAllocator = Allocator< T, PageAlignedAllocationPolicy > |
PageAligned memory allocator. More... | |
using | index = std::ptrdiff_t |
Integer type for indexing into arrays or vectors. More... | |
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. | |
using | FilePtr = std::unique_ptr< FILE, functor_wrapper< FILE, fclose_wrapper >> |
Simple guard pointer which calls fclose. See unique_cptr for details. | |
typedef tMPI::mutex | Mutex |
C++11-compatible basic mutex. | |
using | MPI_Comm_ptr = gmx::unique_cptr< MPI_Comm, MPI_Comm_free_wrapper > |
Make a smart pointer for MPI communicators. | |
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. | |
template<typename T , void D = sfree_wrapper> | |
using | unique_cptr = std::unique_ptr< T, functor_wrapper< T, D > > |
unique_ptr which takes function pointer (has to return void) as template argument | |
typedef unique_cptr< void > | sfree_guard |
Simple guard which calls sfree. See unique_cptr for details. | |
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... | |||
std::unique_ptr< IMDModule > | createElectricFieldModule () | ||
Creates a module for an external electric field. More... | |||
std::unique_ptr< Awh > | prepareAwhModule (FILE *fplog, const t_inputrec &inputRecord, t_state *stateGlobal, const t_commrec *commRecord, const gmx_multisim_t *multiSimRecord, bool startingFromCheckpoint, bool usingShellParticles, const std::string &biasInitFilename, pull_t *pull_work) | ||
Makes an Awh and prepares to use it if the user input requests that. More... | |||
static int64_t | countSamples (const std::vector< PointState > &pointState) | ||
Count the total number of samples / sample weight over all grid points. More... | |||
static void | ensureStateAndRunConsistency (const BiasParams ¶ms, const BiasState &state) | ||
Check if the state (loaded from checkpoint) and the run are consistent. More... | |||
bool | haveBiasSharingWithinSimulation (const AwhParams &awhParams) | ||
Returns if any bias is sharing within a simulation. More... | |||
void | biasesAreCompatibleForSharingBetweenSimulations (const AwhParams &awhParams, const std::vector< size_t > &pointSize, const gmx_multisim_t *multiSimComm) | ||
Checks if biases are compatible for sharing between simulations, throws if not. More... | |||
static void | normalizeFreeEnergyAndPmfSum (std::vector< PointState > *pointState) | ||
Normalizes the free energy and PMF sum. More... | |||
static int | countTrailingZeroRows (const double *const *data, int numRows, int numColumns) | ||
Count trailing data rows containing only zeros. More... | |||
static void | readUserPmfAndTargetDistribution (const std::vector< DimParams > &dimParams, const Grid &grid, const std::string &filename, int numBias, int biasIndex, std::vector< PointState > *pointState) | ||
Initializes the PMF and target with data read from an input table. More... | |||
static void | normalizeBlock (AwhEnergyBlock *block, const Bias &bias) | ||
Normalizes block data for output. More... | |||
void | initCorrelationGridHistory (CorrelationGridHistory *correlationGridHistory, int numCorrelationTensors, int tensorSize, int blockDataListSize) | ||
Initialize correlation grid history, sets all sizes. More... | |||
CorrelationGridHistory | initCorrelationGridHistoryFromState (const CorrelationGrid &corrGrid) | ||
Allocate a correlation grid history with the same structure as the given correlation grid. More... | |||
void | updateCorrelationGridHistory (CorrelationGridHistory *corrGridHist, const CorrelationGrid &corrGrid) | ||
Update the correlation grid history for checkpointing. More... | |||
void | restoreCorrelationGridStateFromHistory (const CorrelationGridHistory &corrGridHist, CorrelationGrid *corrGrid) | ||
Restores the correlation grid state from the correlation grid history. More... | |||
double | getDeviationFromPointAlongGridAxis (const Grid &grid, int dimIndex, int pointIndex, double value) | ||
Get the deviation along one dimension from the given value to a point in the grid. More... | |||
void | linearArrayIndexToMultiDim (int indexLinear, int ndim, const awh_ivec numPointsDim, awh_ivec indexMulti) | ||
Convert a linear array index to a multidimensional one. More... | |||
void | linearGridindexToMultiDim (const Grid &grid, int indexLinear, awh_ivec indexMulti) | ||
Convert a linear grid point index to a multidimensional one. More... | |||
int | multiDimArrayIndexToLinear (const awh_ivec indexMulti, int numDim, const awh_ivec numPointsDim) | ||
Convert multidimensional array index to a linear one. More... | |||
int | multiDimGridIndexToLinear (const Grid &grid, const awh_ivec indexMulti) | ||
Convert a multidimensional grid point index to a linear one. More... | |||
bool | advancePointInSubgrid (const Grid &grid, const awh_ivec subgridOrigin, const awh_ivec subgridNpoints, int *gridPointIndex) | ||
Find the next grid point in the sub-part of the grid given a starting point. More... | |||
static int | pointDistanceAlongAxis (const GridAxis &axis, double x, double x0) | ||
Returns the point distance between from value x to value x0 along the given axis. More... | |||
static bool | valueIsInGrid (const awh_dvec value, const std::vector< GridAxis > &axis) | ||
Query if a value is in range of the grid. More... | |||
static int | getNearestIndexInGrid (const awh_dvec value, const std::vector< GridAxis > &axis) | ||
Map a value to the nearest point in the grid. More... | |||
void | mapGridToDataGrid (std::vector< int > *gridpointToDatapoint, const double *const *data, int numDataPoints, const std::string &dataFilename, const Grid &grid, const std::string &correctFormatMessage) | ||
Maps each point in the grid to a point in the data grid. More... | |||
static void | readDimParams (std::vector< t_inpfile > *inp, const std::string &prefix, AwhDimParams *dimParams, const pull_params_t *pull_params, warninp_t wi, bool bComment) | ||
Read parameters of an AWH bias dimension. More... | |||
static void | checkInputConsistencyAwhBias (const AwhBiasParams &awhBiasParams, warninp_t wi) | ||
Check consistency of input at the AWH bias level. More... | |||
static void | read_bias_params (std::vector< t_inpfile > *inp, AwhBiasParams *awhBiasParams, const std::string &prefix, const t_inputrec *ir, warninp_t wi, bool bComment) | ||
Read parameters of an AWH bias. More... | |||
static void | checkInputConsistencyAwh (const AwhParams &awhParams, warninp_t wi) | ||
Check consistency of input at the AWH level. More... | |||
AwhParams * | readAndCheckAwhParams (std::vector< t_inpfile > *inp, const t_inputrec *inputrec, warninp_t wi) | ||
Allocate, initialize and check the AWH parameters with values from the input file. More... | |||
static double | get_pull_coord_period (const pull_params_t *pull_params, int coord_ind, const matrix box) | ||
Gets the period of a pull coordinate. More... | |||
static bool | intervalIsInPeriodicInterval (double origin, double end, double period) | ||
Checks if the given interval is defined in the correct periodic interval. More... | |||
static bool | valueIsInInterval (double origin, double end, double period, double value) | ||
Checks if a value is within an interval. More... | |||
static void | checkInputConsistencyInterval (const AwhParams *awhParams, warninp_t wi) | ||
Check if the starting configuration is consistent with the given interval. More... | |||
void | setStateDependentAwhParams (AwhParams *awhParams, const pull_params_t *pull_params, pull_t *pull_work, const matrix box, int ePBC, const t_grpopts *inputrecGroupOptions, warninp_t wi) | ||
Sets AWH parameters that need state parameters such as the box vectors. 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... | |||
void | writeKeyValueTreeAsMdp (TextWriter *writer, const KeyValueTreeObject &tree) | ||
Write a flat key-value tree to writer in mdp style. More... | |||
std::unique_ptr< ClfftInitializer > | initializeClfftLibrary () | ||
This routine should be called during setup for running an FFT task on an OpenCL device. More... | |||
template<class T1 , class T2 > | |||
bool | operator== (const Allocator< T1, HostAllocationPolicy > &a, const Allocator< T2, HostAllocationPolicy > &b) | ||
Return true if two allocators are identical. More... | |||
template<class T > | |||
void | changePinningPolicy (HostVector< T > *v, PinningPolicy pinningPolicy) | ||
Helper function for changing the pinning policy of a HostVector. More... | |||
void | pinBuffer (void *pointer, std::size_t numBytes) noexcept | ||
Pin the allocation to physical memory. More... | |||
void | unpinBuffer (void *pointer) noexcept | ||
Unpin the allocation. More... | |||
void | doDeviceTransfers (const gmx_gpu_info_t &gpuInfo, ArrayRef< const char > input, ArrayRef< char > output) | ||
Helper function for GPU test code to be platform agnostic. More... | |||
bool | cpuIsX86Nehalem (const CpuInfo &cpuInfo) | ||
Return true if the CPU is an Intel x86 Nehalem. More... | |||
static void | gmx_detect_gpus (const gmx::MDLogger &mdlog, const PhysicalNodeCommunicator &physicalNodeComm) | ||
Detect GPUs, if that makes sense to attempt. | |||
static void | gmx_collect_hardware_mpi (const gmx::CpuInfo &cpuInfo, const PhysicalNodeCommunicator &physicalNodeComm) | ||
Reduce the locally collected hwinfo_g over MPI ranks. | |||
static void | spinUpCore () noexcept | ||
Utility that does dummy computing for max 2 seconds to spin up cores. More... | |||
static void | hardwareTopologyPrepareDetection () | ||
Prepare the system before hardware topology detection. More... | |||
static void | hardwareTopologyDoubleCheckDetection (const gmx::MDLogger &mdlog, const gmx::HardwareTopology &hardwareTopology) | ||
Sanity check hardware topology and print some notes to log. More... | |||
gmx_hw_info_t * | gmx_detect_hardware (const gmx::MDLogger &mdlog, const PhysicalNodeCommunicator &physicalNodeComm) | ||
Run detection, consistency checks, and make available on all ranks. More... | |||
bool | compatibleGpusFound (const gmx_gpu_info_t &gpu_info) | ||
Return whether compatible GPUs were found. | |||
void | gmx_hardware_info_free () | ||
Free the hwinfo structure. | |||
int | identifyAvx512FmaUnits () | ||
Test whether machine has dual AVX512 FMA units. More... | |||
static bool | someInteractionsCanRunOnGpu (const InteractionLists &ilists) | ||
Returns whether there are any interactions suitable for a GPU. | |||
static bool | bondedInteractionsCanRunOnGpu (const gmx_mtop_t &mtop) | ||
Returns whether there are any interactions suitable for a GPU. | |||
static bool | addMessageIfNotSupported (ArrayRef< const std::string > errorReasons, std::string *error) | ||
Help build a descriptive message in error if there are errorReasons why bondeds on a GPU are not supported. More... | |||
bool | buildSupportsGpuBondeds (std::string *error) | ||
Checks whether the GROMACS build allows to compute bonded interactions on a GPU. More... | |||
bool | inputSupportsGpuBondeds (const t_inputrec &ir, const gmx_mtop_t &mtop, std::string *error) | ||
Checks whether the input system allows to compute bonded interactions on a GPU. 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... | |||
constexpr int32_t | exactDiv (int32_t a, int32_t b) | ||
Exact integer division, 32bit. More... | |||
constexpr int64_t | exactDiv (int64_t a, int64_t b) | ||
Exact integer division, 64bit. | |||
static int | roundToInt (float x) | ||
Round float to int. More... | |||
static int | roundToInt (double x) | ||
Round double to int. | |||
static int64_t | roundToInt64 (float x) | ||
Round float to int64_t. | |||
static int64_t | roundToInt64 (double x) | ||
Round double to int64_t. | |||
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 > | |||
BasicVector< ValueType > | operator* (const BasicVector< ValueType > &basicVector, const ValueType &scalar) | ||
Allow vector scalar multiplication. | |||
template<typename ValueType > | |||
BasicVector< ValueType > | operator* (const ValueType &scalar, const BasicVector< ValueType > &basicVector) | ||
Allow scalar vector multiplication. | |||
template<typename VectorType > | |||
static VectorType | unitVector (const VectorType &v) | ||
unitv for gmx::BasicVector | |||
template<typename ValueType > | |||
static ValueType | norm (BasicVector< ValueType > v) | ||
norm for gmx::BasicVector | |||
template<typename ValueType > | |||
static ValueType | norm2 (BasicVector< ValueType > v) | ||
Square of the vector norm for gmx::BasicVector. | |||
template<typename VectorType > | |||
static VectorType | cross (const VectorType &a, const VectorType &b) | ||
cross product for gmx::BasicVector | |||
template<typename ValueType > | |||
static ValueType | dot (BasicVector< ValueType > a, BasicVector< ValueType > b) | ||
dot product for gmx::BasicVector | |||
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. | |||
static dvec * | as_dvec_array (DVec *x) | ||
Casts a gmx::DVec array into an Dvec array. | |||
static ivec * | as_ivec_array (IVec *x) | ||
Casts a gmx::IVec array into an ivec array. | |||
static const dvec * | as_dvec_array (const DVec *x) | ||
Casts a gmx::DVec array into an dvec array. | |||
static const ivec * | as_ivec_array (const IVec *x) | ||
Casts a gmx::IVec array into an ivec array. | |||
std::unique_ptr< BoxDeformation > | prepareBoxDeformation (const matrix &initialBox, t_commrec *cr, const t_inputrec &inputrec) | ||
Factory function for box deformation module. More... | |||
static void | clear_constraint_quantity_nonlocal (gmx_domdec_t *dd, rvec *q) | ||
Clears constraint quantities for atoms in nonlocal region. | |||
void | too_many_constraint_warnings (int eConstrAlg, int warncount) | ||
Generate a fatal error because of too many LINCS/SETTLE warnings. | |||
static void | write_constr_pdb (const char *fn, const char *title, const gmx_mtop_t &mtop, int start, int homenr, const t_commrec *cr, const rvec x[], matrix box) | ||
Writes out coordinates. | |||
static void | dump_confs (FILE *log, int64_t step, const gmx_mtop_t &mtop, int start, int homenr, const t_commrec *cr, const rvec x[], rvec xprime[], matrix box) | ||
Writes out domain contents to help diagnose crashes. | |||
FlexibleConstraintTreatment | flexibleConstraintTreatment (bool haveDynamicsIntegrator) | ||
Returns the flexible constraint treatment depending on whether the integrator is dynamic. | |||
template<typename T > | |||
static t_blocka | makeAtomsToConstraintsList (int numAtoms, const T *ilists, const t_iparams *iparams, FlexibleConstraintTreatment flexibleConstraintTreatment) | ||
Returns a block struct to go from atoms to constraints. More... | |||
t_blocka | make_at2con (int numAtoms, const t_ilist *ilist, const t_iparams *iparams, FlexibleConstraintTreatment flexibleConstraintTreatment) | ||
Returns a block struct to go from atoms to constraints. More... | |||
t_blocka | make_at2con (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams, FlexibleConstraintTreatment flexibleConstraintTreatment) | ||
Returns a block struct to go from atoms to constraints. More... | |||
template<typename T > | |||
static int | countFlexibleConstraintsTemplate (const T *ilist, const t_iparams *iparams) | ||
Return the number of flexible constraints in the ilist and iparams . | |||
int | countFlexibleConstraints (const t_ilist *ilist, const t_iparams *iparams) | ||
Return the number of flexible constraints in the ilist and iparams . | |||
static std::vector< int > | make_at2settle (int natoms, const InteractionList &ilist) | ||
Returns the index of the settle to which each atom belongs. | |||
static std::vector< t_blocka > | makeAtomToConstraintMappings (const gmx_mtop_t &mtop, FlexibleConstraintTreatment flexibleConstraintTreatment) | ||
Makes a per-moleculetype container of mappings from atom indices to constraint indices. More... | |||
bool | inter_charge_group_constraints (const gmx_mtop_t &mtop) | ||
Returns whether there are inter charge group constraints. | |||
bool | inter_charge_group_settles (const gmx_mtop_t &mtop) | ||
Returns whether there are inter charge group settles. | |||
static bool | isConstraintFlexible (const t_iparams *iparams, int iparamsIndex) | ||
Returns whether constraint with parameter iparamsIndex is a flexible constraint. | |||
const t_blocka * | atom2constraints_moltype (const Constraints *constr) | ||
Returns an array of atom to constraints lists for the moltypes. | |||
const int * | constr_iatomptr (gmx::ArrayRef< const int > iatom_constr, gmx::ArrayRef< const int > iatom_constrnc, int con) | ||
Returns the constraint iatoms for a constraint number con which comes from a list where F_CONSTR and F_CONSTRNC constraints are concatenated. | |||
static void | constr_recur (const t_blocka *at2con, const InteractionLists &ilist, gmx::ArrayRef< const t_iparams > iparams, gmx_bool bTopB, int at, int depth, int nc, int *path, real r0, real r1, real *r2max, int *count) | ||
Recursing function to help find all adjacent constraints. | |||
static real | constr_r_max_moltype (const gmx_moltype_t *molt, gmx::ArrayRef< const t_iparams > iparams, const t_inputrec *ir) | ||
Find the interaction radius needed for constraints for this molecule type. | |||
real | constr_r_max (const MDLogger &mdlog, const gmx_mtop_t *mtop, const t_inputrec *ir) | ||
Returns an estimate of the maximum distance between atoms required for LINCS. | |||
ArrayRef< real > | lincs_rmsdData (Lincs *lincsd) | ||
Return the data for determining constraint RMS relative deviations. | |||
real | lincs_rmsd (const Lincs *lincsd) | ||
Return the RMSD of the constraint. | |||
static void | lincs_matrix_expand (const Lincs *lincsd, const Task *li_task, const real *blcc, real *rhs1, real *rhs2, real *sol) | ||
Do a set of nrec LINCS matrix multiplications. More... | |||
static void | lincs_update_atoms_noind (int ncons, const int *bla, real prefac, const real *fac, rvec *r, const real *invmass, rvec *x) | ||
Update atomic coordinates when an index is not required. | |||
static void | lincs_update_atoms_ind (int ncons, const int *ind, const int *bla, real prefac, const real *fac, rvec *r, const real *invmass, rvec *x) | ||
Update atomic coordinates when an index is required. | |||
static void | lincs_update_atoms (Lincs *li, int th, real prefac, const real *fac, rvec *r, const real *invmass, rvec *x) | ||
Update coordinates for atoms. | |||
template<int align> | |||
static void gmx_simdcall | gatherLoadUTransposeTSANSafe (const real *base, const std::int32_t *offset, SimdReal *v0, SimdReal *v1, SimdReal *v2) | ||
Helper function so that we can run TSAN with SIMD support (where implemented). | |||
static void gmx_simdcall | calc_dr_x_f_simd (int b0, int b1, const int *bla, const rvec *__restrict x, const rvec *__restrict f, const real *__restrict blc, const real *pbc_simd, rvec *__restrict r, real *__restrict rhs, real *__restrict sol) | ||
Calculate the constraint distance vectors r to project on from x. More... | |||
static void | do_lincsp (const rvec *x, rvec *f, rvec *fp, t_pbc *pbc, Lincs *lincsd, int th, real *invmass, ConstraintVariable econq, bool bCalcDHDL, bool bCalcVir, tensor rmdf) | ||
LINCS projection, works on derivatives of the coordinates. | |||
static void gmx_simdcall | calc_dr_x_xp_simd (int b0, int b1, const int *bla, const rvec *__restrict x, const rvec *__restrict xp, const real *__restrict bllen, const real *__restrict blc, const real *pbc_simd, rvec *__restrict r, real *__restrict rhs, real *__restrict sol) | ||
Calculate the constraint distance vectors r to project on from x. More... | |||
static void | calc_dist_iter (int b0, int b1, const int *bla, const rvec *__restrict xp, const real *__restrict bllen, const real *__restrict blc, const t_pbc *pbc, real wfac, real *__restrict rhs, real *__restrict sol, bool *bWarn) | ||
Determine the distances and right-hand side for the next iteration. | |||
static void gmx_simdcall | calc_dist_iter_simd (int b0, int b1, const int *bla, const rvec *__restrict x, const real *__restrict bllen, const real *__restrict blc, const real *pbc_simd, real wfac, real *__restrict rhs, real *__restrict sol, bool *bWarn) | ||
As calc_dist_iter(), but using SIMD intrinsics. | |||
static void | do_lincs (const rvec *x, rvec *xp, matrix box, t_pbc *pbc, Lincs *lincsd, int th, const real *invmass, const t_commrec *cr, bool bCalcDHDL, real wangle, bool *bWarn, real invdt, rvec *__restrict v, bool bCalcVir, tensor vir_r_m_dr) | ||
Implements LINCS constraining. | |||
static void | set_lincs_matrix_task (Lincs *li, Task *li_task, const real *invmass, int *ncc_triangle, int *nCrossTaskTriangles) | ||
Sets the elements in the LINCS matrix for task task. | |||
static void | set_lincs_matrix (Lincs *li, real *invmass, real lambda) | ||
Sets the elements in the LINCS matrix. | |||
static int | count_triangle_constraints (const InteractionLists &ilist, const t_blocka &at2con) | ||
Finds all triangles of atoms that share constraints to a central atom. | |||
static bool | more_than_two_sequential_constraints (const InteractionLists &ilist, const t_blocka &at2con) | ||
Finds sequences of sequential constraints. | |||
Lincs * | init_lincs (FILE *fplog, const gmx_mtop_t &mtop, int nflexcon_global, ArrayRef< const t_blocka > at2con, bool bPLINCS, int nIter, int nProjOrder) | ||
Initializes and returns the lincs data struct. | |||
void | done_lincs (Lincs *li) | ||
Destructs the lincs object when it is not nullptr. | |||
static void | lincs_thread_setup (Lincs *li, int natoms) | ||
Sets up the work division over the threads. | |||
static void | resize_real_aligned (real **ptr, int nelem) | ||
There is no realloc with alignment, so here we make one for reals. Note that this function does not preserve the contents of the memory. | |||
static void | assign_constraint (Lincs *li, int constraint_index, int a1, int a2, real lenA, real lenB, const t_blocka *at2con) | ||
Assign a constraint. | |||
static void | check_assign_connected (Lincs *li, const t_iatom *iatom, const t_idef &idef, bool bDynamics, int a1, int a2, const t_blocka *at2con) | ||
Check if constraint with topology index constraint_index is connected to other constraints, and if so add those connected constraints to our task. | |||
static void | check_assign_triangle (Lincs *li, const t_iatom *iatom, const t_idef &idef, bool bDynamics, int constraint_index, int a1, int a2, const t_blocka *at2con) | ||
Check if constraint with topology index constraint_index is involved in a constraint triangle, and if so add the other two constraints in the triangle to our task. | |||
static void | set_matrix_indices (Lincs *li, const Task *li_task, const t_blocka *at2con, bool bSortMatrix) | ||
Sets matrix indices. | |||
void | set_lincs (const t_idef &idef, const t_mdatoms &md, bool bDynamics, const t_commrec *cr, Lincs *li) | ||
Initialize lincs stuff. | |||
static void | lincs_warning (gmx_domdec_t *dd, const rvec *x, rvec *xprime, t_pbc *pbc, int ncons, const int *bla, real *bllen, real wangle, int maxwarn, int *warncount) | ||
Issues a warning when LINCS constraints cannot be satisfied. | |||
static void | cconerr (const Lincs *lincsd, rvec *x, t_pbc *pbc, real *ncons_loc, real *ssd, real *max, int *imax) | ||
Determine how well the constraints have been satisfied. | |||
bool | constrain_lincs (bool computeRmsd, const t_inputrec &ir, int64_t step, Lincs *lincsd, const t_mdatoms &md, const t_commrec *cr, const gmx_multisim_t &ms, const rvec *x, rvec *xprime, rvec *min_proj, matrix box, t_pbc *pbc, real lambda, real *dvdlambda, real invdt, rvec *v, bool bCalcVir, tensor vir_r_m_dr, ConstraintVariable econq, t_nrnb *nrnb, int maxwarn, int *warncount) | ||
Applies LINCS constraints. More... | |||
template<typename... Args> | |||
std::unique_ptr< Constraints > | makeConstraints (const gmx_mtop_t &mtop, const t_inputrec &ir, bool doEssentialDynamics, Args &&...args) | ||
Factory function for Constraints. More... | |||
std::unique_ptr< MDAtoms > | makeMDAtoms (FILE *fp, const gmx_mtop_t &mtop, const t_inputrec &ir, bool useGpuForPme) | ||
Builder function for MdAtomsWrapper. More... | |||
static void | init_proj_matrix (real invmO, real invmH, real dOH, real dHH, matrix inverseCouplingMatrix) | ||
Initializes a projection matrix. | |||
static void | settleparam_init (settleparam_t *p, real mO, real mH, real invmO, real invmH, real dOH, real dHH) | ||
Initializes settle parameters. | |||
settledata * | settle_init (const gmx_mtop_t &mtop) | ||
Initializes and returns a structure with SETTLE parameters. | |||
void | settle_free (settledata *settled) | ||
Cleans up. | |||
void | settle_set_constraints (settledata *settled, const t_ilist *il_settle, const t_mdatoms &mdatoms) | ||
Set up the indices for the settle constraints. | |||
void | settle_proj (settledata *settled, ConstraintVariable econq, int nsettle, const t_iatom iatoms[], const t_pbc *pbc,const rvec x[], rvec *der, rvec *derp, int CalcVirAtomEnd, tensor vir_r_m_dder) | ||
Analytical algorithm to subtract the components of derivatives of coordinates working on settle type constraint. | |||
template<typename T , typename TypeBool , int packSize, typename TypePbc , bool bCorrectVelocity, bool bCalcVirial> | |||
static void | settleTemplate (const settledata *settled, int settleStart, int settleEnd, const TypePbc pbc, const real *x, real *xprime, real invdt, real *gmx_restrict v, tensor vir_r_m_dr, bool *bErrorHasOccurred) | ||
The actual settle code, templated for real/SimdReal and for optimization. | |||
template<typename T , typename TypeBool , int packSize, typename TypePbc > | |||
static void | settleTemplateWrapper (settledata *settled, int nthread, int thread, TypePbc pbc, const real x[], real xprime[], real invdt, real *v, bool bCalcVirial, tensor vir_r_m_dr, bool *bErrorHasOccurred) | ||
Wrapper template function that divides the settles over threads and instantiates the core template with instantiated booleans. | |||
void | csettle (settledata *settled,int nthread,int thread,const t_pbc *pbc,const real x[],real xprime[],real invdt,real *v,bool bCalcVirial,tensor vir_r_m_dr,bool *bErrorHasOccurred) | ||
Constrain coordinates using SETTLE. Can be called on any number of threads. | |||
shakedata * | shake_init () | ||
Initializes and return the SHAKE data structure. | |||
static int | pcomp (const void *p1, const void *p2) | ||
Compares sort blocks. | |||
static void | pr_sortblock (FILE *fp, const char *title, int nsb, t_sortblock sb[]) | ||
Prints sortblocks. | |||
static void | resizeLagrangianData (shakedata *shaked, int ncons) | ||
Reallocates a vector. | |||
void | make_shake_sblock_serial (shakedata *shaked, const t_idef *idef, const t_mdatoms &md) | ||
Make SHAKE blocks when not using DD. | |||
void | make_shake_sblock_dd (shakedata *shaked, const t_ilist *ilcon, const t_block *cgs, const gmx_domdec_t *dd) | ||
Make SHAKE blocks when using DD. | |||
void | cshake (const int iatom[], int ncon, int *nnit, int maxnit, const real constraint_distance_squared[], real positions[], const real initial_displacements[], const real half_of_reduced_mass[], real omega, const real invmass[], const real distance_squared_tolerance[], real scaled_lagrange_multiplier[], int *nerror) | ||
Inner kernel for SHAKE constraints. More... | |||
static void | crattle (const int iatom[], int ncon, int *nnit, int maxnit, const real constraint_distance_squared[], real vp[], const real rij[], const real m2[], real omega, const real invmass[], const real distance_squared_tolerance[], real scaled_lagrange_multiplier[], int *nerror, real invdt) | ||
Implements RATTLE (ie. SHAKE for velocity verlet integrators) | |||
static int | vec_shakef (FILE *fplog, shakedata *shaked, const real invmass[], int ncon, t_iparams ip[], t_iatom *iatom, real tol, const rvec x[], rvec prime[], real omega, bool bFEP, real lambda, real scaled_lagrange_multiplier[], real invdt, rvec *v, bool bCalcVir, tensor vir_r_m_dr, ConstraintVariable econq) | ||
Applies SHAKE. | |||
static void | check_cons (FILE *log, int nc, const rvec x[], rvec prime[], rvec v[], t_iparams ip[], t_iatom *iatom, const real invmass[], ConstraintVariable econq) | ||
Check that constraints are satisfied. | |||
static bool | bshakef (FILE *log, shakedata *shaked, const real invmass[], const t_idef &idef, const t_inputrec &ir, const rvec x_s[], rvec prime[], t_nrnb *nrnb, real lambda, real *dvdlambda, real invdt, rvec *v, bool bCalcVir, tensor vir_r_m_dr, bool bDumpOnError, ConstraintVariable econq) | ||
Applies SHAKE. | |||
bool | constrain_shake (FILE *log,shakedata *shaked,const real invmass[],const t_idef &idef,const t_inputrec &ir,const rvec x_s[],rvec xprime[],rvec vprime[],t_nrnb *nrnb,real lambda,real *dvdlambda,real invdt,rvec *v,bool bCalcVir,tensor vir_r_m_dr,bool bDumpOnError,ConstraintVariable econq) | ||
Shake all the atoms blockwise. It is assumed that all the constraints in the idef->shakes field are sorted, to ascending block nr. The sblock array points into the idef->shakes.iatoms field, with block 0 starting at sblock[0] and running to ( < ) sblock[1], block n running from sblock[n] to sblock[n+1]. Array sblock should be large enough. Return TRUE when OK, FALSE when shake-error. | |||
static bool | hasFlexibleConstraints (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams) | ||
Returns whether moltype contains flexible constraints. | |||
static bool | hasIncompatibleVsites (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams) | ||
Returns whether moltype has incompatible vsites. More... | |||
static InteractionList | jointConstraintList (const gmx_moltype_t &moltype) | ||
Returns a merged list with constraints of all types. | |||
static AtomIndexExtremes | vsiteConstructRange (int a, const gmx_moltype_t &moltype) | ||
Returns the range of constructing atom for vsite with atom index a . | |||
static AtomIndexExtremes | constraintAtomRange (int a, const t_blocka &at2con, const InteractionList &ilistConstraints) | ||
Returns the range of atoms constrained to atom a (including a itself) | |||
static std::vector< bool > | buildIsParticleVsite (const gmx_moltype_t &moltype) | ||
Returns a list that tells whether atoms in moltype are vsites. | |||
static int | detectGroup (int firstAtom, const gmx_moltype_t &moltype, const t_blocka &at2con, const InteractionList &ilistConstraints) | ||
Returns the size of the update group starting at firstAtom or 0 when criteria (see updategroups.h) are not met. | |||
static RangePartitioning | makeUpdateGroups (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams) | ||
Returns a list of update groups for moltype . | |||
std::vector< RangePartitioning > | makeUpdateGroups (const gmx_mtop_t &mtop) | ||
Returns a vector with update groups for each moleculetype in mtop or an empty vector when the criteria (see below) are not satisfied. More... | |||
static std::unordered_multimap < int, int > | getAngleIndices (const gmx_moltype_t &moltype) | ||
Returns a map of angles ilist.iatoms indices with the middle atom as key. | |||
template<int numPartnerAtoms> | |||
static real | constraintGroupRadius (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams, const int centralAtom, const t_blocka &at2con, const std::unordered_multimap< int, int > &angleIndices, const real constraintLength, const real temperature) | ||
When possible, computes the maximum radius of constrained atom in an update group. More... | |||
static real | computeMaxUpdateGroupRadius (const gmx_moltype_t &moltype, gmx::ArrayRef< const t_iparams > iparams, const RangePartitioning &updateGroups, real temperature) | ||
Returns the maximum update group radius for moltype . | |||
real | computeMaxUpdateGroupRadius (const gmx_mtop_t &mtop, gmx::ArrayRef< const RangePartitioning > updateGroups, real temperature) | ||
Returns the maximum update group radius. More... | |||
static bool | is_multisim_option_set (int argc, const char *const argv[]) | ||
Return whether the command-line parameter that will trigger a multi-simulation is set. | |||
static void | prepareLogFile (BinaryInformationSettings settings, const int rankIndex, const int numRanks, FILE *fplog) | ||
Implements aspects of logfile handling common to opening either for writing or appending. | |||
LogFilePtr | openLogFile (const char *lognm, bool appendFiles, int rankIndex, int numRanks) | ||
Open the log file for writing/appending. More... | |||
void | prepareLogAppending (int rankIndex, int numRanks, FILE *fplog) | ||
Prepare to use the open log file when appending. More... | |||
void | closeLogFile (t_fileio *logfio) | ||
Close the log file. | |||
static void | threadMpiMdrunnerAccessBarrier () | ||
Barrier for safe simultaneous thread access to mdrunner data. More... | |||
static void | mdrunner_start_fn (const void *arg) | ||
The callback used for running on spawned threads. More... | |||
static bool | gpuAccelerationOfNonbondedIsUseful (const MDLogger &mdlog, const t_inputrec *ir, bool issueWarning) | ||
Return whether GPU acceleration of nonbondeds is supported with the given settings. More... | |||
static gmx::LoggerOwner | buildLogger (FILE *fplog, const t_commrec *cr) | ||
Initializes the logger for mdrun. | |||
static TaskTarget | findTaskTarget (const char *optionString) | ||
Make a TaskTarget from an mdrun argument string. | |||
SimulationContext | createSimulationContext (t_commrec *simulationCommunicator) | ||
Get ownership of a new SimulationContext object. More... | |||
template<class T > | |||
T & | makeRefFromPointer (T *ptr) | ||
Take pointer, check if valid, return reference. | |||
void | assignOptionsFromKeyValueTree (Options *options, const KeyValueTreeObject &tree, IKeyValueTreeErrorHandler *errorHandler) | ||
Assigns option values from a given KeyValueTreeObject. More... | |||
void | checkForUnknownOptionsInKeyValueTree (const KeyValueTreeObject &tree, const Options &options) | ||
Checks that a given KeyValueTreeObject can be assigned to given Options. More... | |||
KeyValueTreeObject | adjustKeyValueTreeFromOptions (const KeyValueTreeObject &tree, const Options &options) | ||
Adjusts a KeyValueTreeObject to the structure of given Options. More... | |||
bool | boxesAreEqual (const matrix box1, const matrix box2) | ||
Returns whether two boxes are of equal size and shape (within reasonable tolerance). | |||
bool | boxIsZero (const matrix box) | ||
Returns whether a box is only initialised to zero or not. | |||
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, bool 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, bool 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, bool 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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static float | sqrt (float x) | ||
Float sqrt(x). This is the square root. More... | |||
static float | log (float x) | ||
Float log(x). This is the natural logarithm. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static float | exp2 (float x) | ||
Float 2^x. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static double | sqrt (double x) | ||
Double sqrt(x). This is the square root. More... | |||
static double | log (double x) | ||
Double log(x). This is the natural logarithm. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static double | exp2 (double x) | ||
Double 2^x. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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 double | 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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdFloat gmx_simdcall | sqrtSingleAccuracy (SimdFloat x) | ||
Calculate sqrt(x) for SIMD float, always 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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdFloat gmx_simdcall | exp2SingleAccuracy (SimdFloat x) | ||
SIMD float 2^x, only targeting single accuracy. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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... | |||
bool | decideWhetherToUseGpusForNonbondedWithThreadMpi (TaskTarget nonbondedTarget, const std::vector< int > &gpuIdsToUse, const std::vector< int > &userGpuTaskAssignment, EmulateGpuNonbonded emulateGpuNonbonded, bool usingVerletScheme, bool nonbondedOnGpuIsUseful, int numRanksPerSimulation) | ||
Decide whether this thread-MPI simulation will run nonbonded tasks on GPUs. More... | |||
bool | decideWhetherToUseGpusForPmeWithThreadMpi (bool useGpuForNonbonded, TaskTarget pmeTarget, const std::vector< int > &gpuIdsToUse, const std::vector< int > &userGpuTaskAssignment, bool canUseGpuForPme, int numRanksPerSimulation, int numPmeRanksPerSimulation) | ||
Decide whether this thread-MPI simulation will run PME tasks on GPUs. More... | |||
bool | decideWhetherToUseGpusForNonbonded (TaskTarget nonbondedTarget, const std::vector< int > &userGpuTaskAssignment, EmulateGpuNonbonded emulateGpuNonbonded, bool usingVerletScheme, bool nonbondedOnGpuIsUseful, bool gpusWereDetected) | ||
Decide whether the simulation will try to run nonbonded tasks on GPUs. More... | |||
bool | decideWhetherToUseGpusForPme (bool useGpuForNonbonded, TaskTarget pmeTarget, const std::vector< int > &userGpuTaskAssignment, bool canUseGpuForPme, int numRanksPerSimulation, int numPmeRanksPerSimulation, bool gpusWereDetected) | ||
Decide whether the simulation will try to run tasks of different types on GPUs. More... | |||
bool | decideWhetherToUseGpusForBonded (bool useGpuForNonbonded, bool useGpuForPme, bool usingVerletScheme, TaskTarget bondedTarget, bool canUseGpuForBonded, bool usingLJPme, bool usingElecPmeOrEwald, int numPmeRanksPerSimulation, bool gpusWereDetected) | ||
Decide whether the simulation will try to run bonded tasks on GPUs. More... | |||
GpuTasksOnRanks | findAllGpuTasksOnThisNode (ArrayRef< const GpuTask > gpuTasksOnThisRank, const PhysicalNodeCommunicator &physicalNodeComm) | ||
Returns container of all tasks on all ranks of this node that are eligible for GPU execution. More... | |||
void | reportGpuUsage (const MDLogger &mdlog, bool userSetGpuIds, const GpuTaskAssignments &gpuTaskAssignmentOnRanksOfThisNode, size_t numGpuTasksOnThisNode, size_t numPpRanks, bool bPrintHostName, bool useGpuForBonded, PmeRunMode pmeRunMode) | ||
Log a report on how GPUs are being used on the ranks of the physical node of rank 0 of the simulation. More... | |||
void | checkHardwareOversubscription (int numThreadsOnThisRank, int rank, const HardwareTopology &hwTop, const PhysicalNodeCommunicator &comm, const MDLogger &mdlog) | ||
Warns for oversubscribing the hardware threads, when that is the case. | |||
GpuTaskAssignments::value_type | runTaskAssignment (const std::vector< int > &gpuIdsToUse, const std::vector< int > &userGpuTaskAssignment, const gmx_hw_info_t &hardwareInfo, const MDLogger &mdlog, const t_commrec *cr, const gmx_multisim_t *ms, const PhysicalNodeCommunicator &physicalNodeComm, const std::vector< GpuTask > &gpuTasksOnThisRank, bool useGpuForBonded, PmeRunMode pmeRunMode) | ||
Coordinate the final stages of task assignment and reporting, and return the assignment for this rank. More... | |||
template<GpuTask TaskType> | |||
bool | hasTaskType (const GpuTaskMapping &mapping) | ||
Function for whether the task of mapping has value TaskType . | |||
std::vector< int > | parseUserGpuIds (const std::string &gpuIdString) | ||
Parse a GPU ID string into a container describing the task types and associated device IDs. More... | |||
std::vector< int > | makeGpuIds (ArrayRef< const int > compatibleGpus, size_t numGpuTasks) | ||
Make a vector containing numGpuTasks IDs of the IDs found in compatibleGpus . More... | |||
std::string | makeGpuIdString (const std::vector< int > &gpuIds, int totalNumberOfTasks) | ||
Convert a container of GPU deviced IDs to a string that can be used by gmx tune_pme as input to mdrun -gputasks. More... | |||
void | checkUserGpuIds (const gmx_gpu_info_t &gpu_info, const std::vector< int > &compatibleGpus, const std::vector< int > &gpuIds) | ||
Check that all user-selected GPUs are compatible. More... | |||
void | writeHeader (TextWriter *writer, const std::string &text, const std::string §ion, bool writeFormattedText) | ||
Write appropiate Header to output stream. More... | |||
void | writeSystemInformation (TextWriter *writer, const gmx_mtop_t &top, bool writeFormattedText) | ||
Write information about the molecules in the system. More... | |||
void | writeParameterInformation (TextWriter *writer, const t_inputrec &ir, bool writeFormattedText) | ||
Write information about system parameters. More... | |||
void | writeInformation (TextOutputFile *outputStream, const t_inputrec &ir, const gmx_mtop_t &top, bool writeFormattedText, bool notStdout) | ||
Wrapper for writing out information. More... | |||
void | initExclusionBlocks (ExclusionBlocks *b2, int natom) | ||
Initialize the content of the pre-allocated blocks. | |||
void | doneExclusionBlocks (ExclusionBlocks *b2) | ||
Deallocate the content of the blocks. | |||
void | blockaToExclusionBlocks (t_blocka *b, ExclusionBlocks *b2) | ||
Convert the exclusions expressed in b into ExclusionBlock form. | |||
void | exclusionBlocksToBlocka (ExclusionBlocks *b2, t_blocka *b) | ||
Convert the exclusions expressed in b into t_blocka form. | |||
void | mergeExclusions (t_blocka *excl, ExclusionBlocks *b2) | ||
Merge the contents of b2 into excl . More... | |||
void | registerTrajectoryAnalysisModules (CommandLineModuleManager *manager) | ||
Registers all trajectory analysis command-line modules. More... | |||
gmx_rmpbc_t | gmx_rmpbc_init (const gmx::TopologyInformation &topInfo) | ||
Convenience overload useful for implementing legacy tools. | |||
static std::size_t | getPageSize () | ||
Return a page size, from a sysconf/WinAPI query if available, or a default guess (4096 bytes). More... | |||
std::size_t | pageSize () | ||
Return the memory page size on this system. More... | |||
template<typename T > | |||
ArrayRef< typename std::conditional < std::is_const< T >::value, const typename T::value_type, typename T::value_type >::type > | makeArrayRef (T &c) | ||
Create ArrayRef from container with type deduction. More... | |||
template<typename T > | |||
ArrayRef< const typename T::value_type > | makeConstArrayRef (const T &c) | ||
Create ArrayRef to const T from container with type deduction. More... | |||
template<typename T > | |||
void | swap (ArrayRef< T > &a, ArrayRef< T > &b) | ||
Simple swap method for ArrayRef objects. More... | |||
template<typename T > | |||
std::vector< T > | copyOf (const ArrayRef< const T > &arrayRef) | ||
Return a vector that is a copy of an ArrayRef. 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... | |||
void | printBinaryInformation (TextWriter *writer, 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. | |||
std::string | getCudaDriverVersionString () | ||
Returns a string of the CUDA driver version. | |||
std::string | getCudaRuntimeVersionString () | ||
Returns a string of the CUDA runtime version. | |||
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, Exception >::type | operator<< (Exception ex, const ExceptionInfo< Tag, T > &item) | ||
Associates extra information with an exception. More... | |||
void | fclose_wrapper (FILE *fp) | ||
fclose wrapper to be used as unique_ptr deleter | |||
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... | |||
std::string | findLibraryFile (const std::string &filename, bool bAddCWD=true, bool bFatal=true) | ||
Finds full path for a library file. More... | |||
std::string | findLibraryFile (const char *filename, bool bAddCWD=true, bool bFatal=true) | ||
Finds full path for a library file. More... | |||
FilePtr | openLibraryFile (const std::string &filename, bool bAddCWD=true, bool bFatal=true) | ||
Opens a library file for reading in an RAII-style FILE handle. More... | |||
FilePtr | openLibraryFile (const char *filename, bool bAddCWD=true, bool bFatal=true) | ||
Opens a library file for reading in an RAII-style FILE handle. 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... | |||
IKeyValueTreeErrorHandler * | defaultKeyValueTreeErrorHandler () | ||
Returns a default IKeyValueTreeErrorHandler that throws on first exception. | |||
void | init (int *argc, char ***argv) | ||
Initializes the GROMACS library. More... | |||
void | finalize () | ||
Deinitializes the GROMACS library. More... | |||
void | dumpKeyValueTree (TextWriter *writer, const KeyValueTreeObject &tree) | ||
Writes a human-readable representation of the tree with given writer. More... | |||
void | compareKeyValueTrees (TextWriter *writer, const KeyValueTreeObject &tree1, const KeyValueTreeObject &tree2, real ftol, real abstol) | ||
Compares two KeyValueTrees and prints any differences. | |||
KeyValueTreePath | operator+ (const KeyValueTreePath &a, const KeyValueTreePath &b) | ||
Combines two paths as with KeyValueTreePath::append(). | |||
KeyValueTreePath | operator+ (const KeyValueTreePath &a, const std::string &b) | ||
Combines an element to a path as with KeyValueTreePath::append(). | |||
static std::string | simpleValueToString (const KeyValueTreeValue &value) | ||
Helper function to format a simple KeyValueTreeValue. | |||
void | serializeKeyValueTree (const KeyValueTreeObject &root, ISerializer *serializer) | ||
Serializes a KeyValueTreeObject with given serializer. | |||
KeyValueTreeObject | deserializeKeyValueTree (ISerializer *serializer) | ||
Deserializes a KeyValueTreeObject from a given serializer. | |||
void | niceHeader (TextWriter *writer, const char *fn, char commentChar) | ||
Prints creation time stamp and user information into a string as comments, and returns it. More... | |||
void | MPI_Comm_free_wrapper (MPI_Comm *comm) | ||
Wrapper function for RAII-style cleanup. More... | |||
const IProgramContext & | getProgramContext () | ||
Returns the global IProgramContext instance. More... | |||
void | setProgramContext (const IProgramContext *context) | ||
Sets the global IProgramContext instance. More... | |||
bool | boolFromString (const char *str) | ||
Parses a boolean from a string. More... | |||
int | intFromString (const char *str) | ||
Parses an integer from a string. More... | |||
int64_t | int64FromString (const char *str) | ||
Parses a 64-bit integer from a string. More... | |||
float | floatFromString (const char *str) | ||
Parses a float value from a string. More... | |||
double | doubleFromString (const char *str) | ||
Parses a double value from a string. More... | |||
template<typename T > | |||
static T | fromString (const char *str) | ||
Parses a value from a string to a given type. More... | |||
template<typename T > | |||
static T | fromString (const std::string &str) | ||
Parses a value from a string to a given type. More... | |||
template<typename T > | |||
static T | fromStdString (const std::string &str) | ||
Parses a value from a string to a given type. More... | |||
template<> | |||
bool | fromString< bool > (const char *str) | ||
Implementation for boolean values. | |||
template<> | |||
int | fromString< int > (const char *str) | ||
Implementation for integer values. | |||
template<> | |||
int64_t | fromString< int64_t > (const char *str) | ||
Implementation for 64-bit integer values. | |||
template<> | |||
float | fromString< float > (const char *str) | ||
Implementation for float values. | |||
template<> | |||
double | fromString< double > (const char *str) | ||
Implementation for double values. | |||
static const char * | boolToString (bool value) | ||
Converts a boolean to a "true"/"false" string. More... | |||
static std::string | intToString (int t) | ||
Returns a string containing the value of t . More... | |||
static std::string | int64ToString (int64_t t) | ||
Returns a string containing the value of t . More... | |||
static std::string | doubleToString (double t) | ||
Returns a string containing the value of t . More... | |||
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::string | formatStringV (const char *fmt, va_list ap) | ||
Formats a string (vsnprintf() wrapper). More... | |||
std::vector< std::string > | splitString (const std::string &str) | ||
Splits a string to whitespace separated tokens. More... | |||
std::vector< std::string > | splitDelimitedString (const std::string &str, char delim) | ||
Splits a string to tokens separated by a given delimiter. More... | |||
std::vector< std::string > | splitAndTrimDelimitedString (const std::string &str, char delim) | ||
Splits str to tokens separated by delimiter delim . Removes leading and trailing whitespace from those strings with std::isspace. 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... | |||
template<class T > | |||
void | free_wrapper (T *p) | ||
Wrapper of standard library free(), to be used as unique_cptr deleter for memory allocated by malloc, e.g. by an external library such as TNG. | |||
template<class T > | |||
void | sfree_wrapper (T *p) | ||
sfree wrapper to be used as unique_cptr deleter | |||
template<typename T , typename D > | |||
std::unique_ptr< T, D > | create_unique_with_deleter (T *t, D d) | ||
Create unique_ptr with any deleter function or lambda. | |||
std::string | simpleValueToString (const Variant &value) | ||
Converts a Variant value to a string. More... | |||
int | gmx_mdrun (int argc, char *argv[]) | ||
Implements C-style main function for mdrun. | |||
template<typename T > | |||
T | norm (T *v) | ||
Forward operations on C Array style vectors to C implementations. More... | |||
template<typename T > | |||
T | norm2 (T *v) | ||
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, SimdDoubleTag={}) | ||
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, SimdDoubleTag={}) | ||
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 | simdLoad (const std::int32_t *m, SimdDInt32Tag) | ||
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 | simdLoadU (const std::int32_t *m, SimdDInt32Tag) | ||
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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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, 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, SimdFloatTag={}) | ||
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, SimdFloatTag={}) | ||
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 | simdLoad (const std::int32_t *m, SimdFInt32Tag) | ||
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 | simdLoadU (const std::int32_t *m, SimdFInt32Tag) | ||
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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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, 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 | loadU1DualHsimd (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... | |||
static SimdDouble gmx_simdcall | loadUNDuplicate4 (const double *m) | ||
Load N doubles and duplicate them 4 times each. More... | |||
static SimdDouble gmx_simdcall | load4DuplicateN (const double *m) | ||
Load 4 doubles and duplicate them N times each. More... | |||
static SimdDouble gmx_simdcall | loadU4NOffset (const double *m, int offset) | ||
Load doubles in blocks of 4 at fixed offsets. 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 | loadU1DualHsimd (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... | |||
static SimdFloat gmx_simdcall | loadUNDuplicate4 (const float *m) | ||
Load N floats and duplicate them 4 times each. More... | |||
static SimdFloat gmx_simdcall | load4DuplicateN (const float *m) | ||
Load 4 floats and duplicate them N times each. More... | |||
static SimdFloat gmx_simdcall | loadU4NOffset (const float *m, int offset) | ||
Load floats in blocks of 4 at fixed offsets. 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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdFloat gmx_simdcall | sqrt (SimdFloat x) | ||
Calculate sqrt(x) for SIMD floats. More... | |||
static SimdFloat gmx_simdcall | log (SimdFloat x) | ||
SIMD float log(x). This is the natural logarithm. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdFloat gmx_simdcall | exp2 (SimdFloat x) | ||
SIMD float 2^x. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdDouble gmx_simdcall | sqrt (SimdDouble x) | ||
Calculate sqrt(x) for SIMD doubles. More... | |||
static SimdDouble gmx_simdcall | log (SimdDouble x) | ||
SIMD double log(x). This is the natural logarithm. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdDouble gmx_simdcall | exp2 (SimdDouble x) | ||
SIMD double 2^x. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
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... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdDouble gmx_simdcall | sqrtSingleAccuracy (SimdDouble x) | ||
Calculate sqrt(x) (correct for 0.0) for SIMD double, with single accuracy. More... | |||
static SimdDouble gmx_simdcall | logSingleAccuracy (SimdDouble x) | ||
SIMD log(x). Double precision SIMD data, single accuracy. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdDouble gmx_simdcall | exp2SingleAccuracy (SimdDouble x) | ||
SIMD 2^x. Double precision SIMD, single accuracy. More... | |||
template<MathOptimization opt = MathOptimization::Safe> | |||
static SimdDouble gmx_simdcall | expSingleAccuracy (SimdDouble x) | ||
SIMD exp(x). Double precision SIMD, 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... | |||
Overloads for converting a value of a given type to a string.
| |||
static std::string | toString (bool t) | ||
static std::string | toString (int t) | ||
static std::string | toString (int64_t t) | ||
static std::string | toString (float t) | ||
static std::string | toString (double t) | ||
static std::string | toString (std::string t) | ||
Variables | |
static const int | c_linewidth = 80 - 2 |
Linewidth used for warning output. | |
static const int | c_indent = 0 |
Indent used for warning output. | |
static const int | c_biasMaxNumDim = 4 |
The maximum dimensionality of the AWH coordinate. | |
const char * | eawhtarget_names [eawhtargetNR+1] |
String for target distribution. More... | |
const char * | eawhgrowth_names [eawhgrowthNR+1] |
String for weight histogram growth. More... | |
const char * | eawhpotential_names [eawhpotentialNR+1] |
String for AWH potential type. More... | |
const char * | eawhcoordprovider_names [eawhcoordproviderNR+1] |
String for AWH bias reaction coordinate provider. More... | |
static constexpr Architecture | c_architecture |
Constant that tells what the architecture is. More... | |
static const bool | bGPUBinary = GMX_GPU != GMX_GPU_NONE |
Convenience macro to help us avoid ifdefs each time we use sysconf. More... | |
static std::unique_ptr < gmx_hw_info_t > | hwinfo_g |
The hwinfo structure (common to all threads in this process). More... | |
static int | n_hwinfo = 0 |
A reference counter for the hwinfo structure. | |
static tMPI_Thread_mutex_t | hw_info_lock = TMPI_THREAD_MUTEX_INITIALIZER |
A lock to protect the hwinfo structure. | |
static const int | simd_width = 4 |
Define simd_width for memory allocation used for SIMD code. | |
static const int | align_bytes = 128 |
Align to 128 bytes, consistent with the current implementation of AlignedAllocator, which currently forces 128 byte alignment. | |
integrator_t | do_md |
MD simulations. | |
integrator_t | do_mimic |
MD simulations. | |
integrator_t | do_rerun |
MD simulations. | |
constexpr bool | BUGFREE_NOEXCEPT_STRING = std::is_nothrow_move_assignable<std::string>::value |
Work-around for GCC bug 58265. | |
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... | |
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 |
High-level SIMD proxy objects to disambiguate load/set operations | |
using | Simd4NFloat = SimdFloat |
using | Simd4NDouble = SimdDouble |
using | Simd4NReal = Simd4NFloat |
template<typename T > | |
static T | load (const typename internal::SimdTraits< T >::type *m) |
Load function that returns SIMD or scalar. More... | |
template<typename T > | |
static T | load (const typename std::enable_if< std::is_arithmetic< T >::value, T >::type *m) |
template<typename T , size_t N> | |
static T gmx_simdcall | load (const AlignedArray< typename internal::SimdTraits< T >::type, N > &m) |
template<typename T > | |
static T | loadU (const typename internal::SimdTraits< T >::type *m) |
Load function that returns SIMD or scalar based on template argument. More... | |
template<typename T > | |
static T | loadU (const typename std::enable_if< std::is_arithmetic< T >::value, T >::type *m) |
template<typename T , size_t N> | |
static T gmx_simdcall | loadU (const AlignedArray< typename internal::SimdTraits< T >::type, N > &m) |
static const SimdSetZeroProxy gmx_simdcall | setZero () |
Helper function to set any SIMD or scalar variable to zero. More... | |
template<typename T > | |
T | load (const typename internal::Simd4Traits< T >::type *m) |
template<typename T > | |
T | loadU (const typename internal::Simd4Traits< T >::type *m) |
static Simd4NFloat gmx_simdcall | loadUNDuplicate4 (const float *f) |
static Simd4NFloat gmx_simdcall | load4DuplicateN (const float *f) |
static Simd4NFloat gmx_simdcall | loadU4NOffset (const float *f, int) |
static Simd4NDouble gmx_simdcall | loadUNDuplicate4 (const double *f) |
static Simd4NDouble gmx_simdcall | load4DuplicateN (const double *f) |
static Simd4NDouble gmx_simdcall | loadU4NOffset (const double *f, int) |
using gmx::AlignedAllocator = typedef Allocator<T, AlignedAllocationPolicy> |
Aligned memory allocator.
T | Type of objects to allocate |
This convenience partial specialization can be used for the optional allocator template parameter in standard library containers, which is necessary e.g. to use SIMD aligned load and store operations on data in those containers. The memory will always be aligned according to the behavior of AlignedAllocationPolicy.
using gmx::BoxMatrix = typedef std::array <std::array<real, 3 >, 3 > |
A 3x3 matrix data type useful for simulation boxes.
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.
using gmx::HostAllocator = typedef Allocator<T, HostAllocationPolicy> |
Memory allocator that uses HostAllocationPolicy.
T | Type of objects to allocate |
This convenience partial specialization can be used for the optional allocator template parameter in standard library containers whose memory may be used for e.g. GPU transfers. The memory will always be allocated according to the behavior of HostAllocationPolicy.
using gmx::index = typedef std::ptrdiff_t |
Integer type for indexing into arrays or vectors.
Same as ptrdiff_t.
using gmx::PageAlignedAllocator = typedef Allocator<T, PageAlignedAllocationPolicy> |
PageAligned memory allocator.
T | Type of objects to allocate |
This convenience partial specialization can be used for the optional allocator template parameter in standard library containers, which is necessary for locking memory pages for asynchronous transfer between a GPU device and the host. The memory will always be aligned according to the behavior of PageAlignedAllocationPolicy.
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.
|
strong |
|
strong |