Design of new table classes - Redmine #1837
In order to support potentials in (user) tables one or more C classes are needed that are
c) efficient to evaluate
d) use not too much memory such as to flood the cache
a) The table modules must be simple with a minimum of dependencies and preferentially no knowledge of the content. Table classes must provide energy and force evaluation for reference purposes
b) Both generation of tables and reading of tables must be tested
c) The non-bonded kernel has high demands on efficiency. For this reason tables need to use aligned memory, and multiple tables may need to be combined into one (think Coulomb, Dispersion, Repulsion), again without the table class needing to know what it contains.
d) Seeing that it is possible to have different tables for all atomtypes in a biomolecule, e.g. ~40 atomtypes, there may be 500-1000 tables, each containing 12 reals per point and around 1000 data points. In single precision that amounts to 12 Mb. More than level 1 cache but less than level 3 cache for most modern CPUs if I’m not mistaken.
(from redmine: issue id 1837, created on 2015-10-03 by dspoel, closed on 2018-03-16)
- relates #1852 (closed)