Software Open Access

# CppTransport 2018.1

Seery, David

### JSON Export

{
"files": [
{
"self": "https://zenodo.org/api/files/153953fb-5f3b-47ac-82f0-c95771cde7a7/CppTransport_2018_01.tar.gz"
},
"checksum": "md5:266f7be19cac91691392606355652ace",
"bucket": "153953fb-5f3b-47ac-82f0-c95771cde7a7",
"key": "CppTransport_2018_01.tar.gz",
"type": "gz",
"size": 1224414
}
],
"owners": [
19138
],
"doi": "10.5281/zenodo.1183518",
"stats": {
"unique_views": 68.0,
"views": 71.0,
"version_views": 71.0,
"version_unique_views": 68.0,
"volume": 31834764.0,
"version_volume": 31834764.0
},
"doi": "https://doi.org/10.5281/zenodo.1183518",
"conceptdoi": "https://doi.org/10.5281/zenodo.1183517",
"bucket": "https://zenodo.org/api/files/153953fb-5f3b-47ac-82f0-c95771cde7a7",
"html": "https://zenodo.org/record/1183518",
"latest_html": "https://zenodo.org/record/1183518",
"latest": "https://zenodo.org/api/records/1183518"
},
"conceptdoi": "10.5281/zenodo.1183517",
"created": "2018-02-23T11:03:12.002302+00:00",
"updated": "2020-01-25T19:21:54.583620+00:00",
"conceptrecid": "1183517",
"revision": 4,
"id": 1183518,
"access_right_category": "success",
"doi": "10.5281/zenodo.1183518",
"version": "2018.1",
"language": "eng",
"title": "CppTransport 2018.1",
"id": "CC-BY-4.0"
},
"related_identifiers": [
{
"scheme": "doi",
"identifier": "10.5281/zenodo.61237",
"relation": "isNewVersionOf"
},
{
"scheme": "doi",
"identifier": "10.5281/zenodo.58710",
"relation": "isNewVersionOf"
},
{
"scheme": "doi",
"identifier": "10.5281/zenodo.59403",
"relation": "isNewVersionOf"
},
{
"scheme": "doi",
"identifier": "10.5281/zenodo.1183517",
"relation": "isVersionOf"
}
],
"relations": {
"version": [
{
"count": 1,
"index": 0,
"parent": {
"pid_type": "recid",
"pid_value": "1183517"
},
"is_last": true,
"last_child": {
"pid_type": "recid",
"pid_value": "1183518"
}
}
]
},
"grants": [
{
"code": "308082",
"self": "https://zenodo.org/api/grants/10.13039/501100000780::308082"
},
"title": "Precision tests of the inflationary scenario",
"acronym": "PRECISION INFLATION",
"program": "FP7",
"funder": {
"doi": "10.13039/501100000780",
"acronyms": [],
"name": "European Commission",
"self": "https://zenodo.org/api/funders/10.13039/501100000780"
}
}
}
],
"keywords": [
"inflation",
"early universe cosmology",
"automated tools"
],
"publication_date": "2018-02-23",
"creators": [
{
"orcid": "0000-0003-3421-6080",
"affiliation": "University of Sussex",
"name": "Seery, David"
}
],
"access_right": "open",
"resource_type": {
"type": "software",
"title": "Software"
},
"description": "<p><strong>2018.1</strong>&nbsp;release of the&nbsp;<strong>CppTransport</strong>&nbsp;platform&nbsp;for computation of correlation functions generated during an inflationary epoch in the early universe.</p>\n\n<p><strong>2018.1</strong>&nbsp;includes major new features:</p>\n\n<ul>\n\t<li>Supports models with a&nbsp;<strong>nontrivial field-space metric</strong></li>\n\t<li>Fully supports integration using&nbsp;<strong>arbitrary floating-point types</strong>, including&nbsp;<code>double</code>,&nbsp;<code>long double</code>&nbsp;or multiprecision types such as&nbsp;<a href=\"http://www.holoborodko.com/pavel/mpfr\">MPFR</a>, either directly or via a&nbsp;<a href=\"http://www.boost.org/doc/libs/1_64_0/libs/multiprecision/doc/html/index.html\"><em>Boost.Multiprecision</em>&nbsp;wrapper</a></li>\n\t<li>New&nbsp;<strong>email reporting options</strong>&nbsp;during computation</li>\n\t<li>Improved&nbsp;<strong>code generation</strong></li>\n\t<li><strong>Performance improvements</strong>&nbsp;and bug fixes, especially in the translator</li>\n\t<li>More substantial library of background quantities, including the&nbsp;<strong>eta parameter</strong>&nbsp;and the&nbsp;<strong>mass spectrum</strong></li>\n</ul>\n\n<p>In addition, the database schema for integration data containers has been adjusted slightly. If you encounter the error</p>\n\n<p><code>SQLite error: no such column: cpu_brand </code></p>\n\n<p>(normally issued when generating an HTML report) then&nbsp;<strong>your repository requires upgrading to the new format</strong>. To do so, use the&nbsp;<code>--upgrade</code>&nbsp;flag. Upgrading need be performed only once and leaves the repository backwards-compatible with older versions of&nbsp;<em>CppTransport</em>. While it is possible to use old-format databases with&nbsp;<em>CppTransport</em>&nbsp;2018.1 if you are not using HTML reports, we recommend that you upgrade all databases.</p>\n\n<p><strong>Platform improvements &ndash; translator</strong></p>\n\n<ul>\n\t<li>Major rewrite of the translator front-end to modernize the code-base. Much of this code dated back to 2013. This restructuring makes the parser simpler, more robust and easier to extend</li>\n\t<li>Algebra layer now distinguishes between real and complex fields (although currently all fields are real), meaning that operations like&nbsp;<code>abs(x)</code>&nbsp;now work as expected</li>\n\t<li>New&nbsp;<code>lagrangian</code>&nbsp;option allows selection of canonical of nontrivial-metric models. New&nbsp;<code>metric</code>&nbsp;keyword allows specification of the metric in a similar way to the potential</li>\n\t<li>The translator now understands index variances (ie. covariant or contravariant) and performs validation of these between left- and right-hand sides of indexed expressions</li>\n\t<li>Enforces that left-hand side indices occur only&nbsp;<em>once</em>, so that the expression represents a valid tensor assignment</li>\n\t<li>Add&nbsp;<code>require_version</code>&nbsp;construct (as part of a new top-level&nbsp;<code>metadata</code>&nbsp;block) to enforce a minimum&nbsp;<em>CppTransport</em>&nbsp;version when processing&nbsp;<code>.model</code>&nbsp;files</li>\n\t<li>Improved handling of directives (such as&nbsp;<code>$IF</code>&nbsp;or&nbsp;<code>$SET</code>). These must now appear on a single line by themselves to avoid ambiguity when unrolling indices, and their indices are validated more carefully</li>\n\t<li>Report resources that are not used before they are reassigned. This can help catch unnecessary computation when developing templates</li>\n\t<li>New replacement rules for the metric and Riemann tensor combinations needed in models with a nontrivial metric. Also new resource labels for these combinations</li>\n\t<li>New&nbsp;<code>$MOMENTA</code>&nbsp;replacement rule allows access to the momentum vector. Previously, only&nbsp;<code>$FIELDS</code>&nbsp;and&nbsp;<code>\$COORDINATES</code>&nbsp;were available, giving access to the field vector or the full phase-space coordinate vector, respectively</li>\n\t<li>Distinguishes resources with different index variance assignments and can reposition these indices on-the-fly as needed. A command-line switch&nbsp;<code>--Wreposition</code>&nbsp;can be used to identify when on-the-fly repositioning occurs, possibly signalling that the computation can be speeded up by caching the result as a new resource</li>\n\t<li>Now applies common-subexpression-elimination to code deposited as part of a lambda function. In most cases this will improve efficiency and reduce the code size</li>\n\t<li>New command-line switch&nbsp;<code>--Wdevelop</code>&nbsp;provides developer warnings to assist in constructing templates, but allows these warnings to be suppressed in production use. These warnings include unroll-policy violations, enabling easy identification of functions where insufficient resources are available for roll-up to occur</li>\n\t<li>Performance profile data is no longer reported unless explicitly enabled with&nbsp;<code>--profile</code>&nbsp;switch. Profiling data is now reported from the lambda manager</li>\n\t<li>Improved handling of roll-up or unroll specifiers, and improved handling of roll-up conflicts</li>\n\t<li>Improved context information supplied with error or warning reports. To prevent error reports becoming unreadable, processing is now aborted if too many errors occur</li>\n\t<li>Enables new adaptive Adams-Bashforth-Moulton stepper from&nbsp;<a href=\"https://github.com/headmyshoulder/odeint-v2\">odeint-v2</a>, although its performance is not yet tested</li>\n\t<li>The build process will now download and build GiNaC automatically if a system-wide install is not found</li>\n\t<li>The odeint-v2 library is downloaded direct from its git repository rather than relying on a version bundled with Boost. This means we can be more aggressive about moving forward as odeint-v2 develops</li>\n\t<li>Builds are now tested by continuous integration using&nbsp;<a href=\"https://travis-ci.org\">Travis.CI</a>. Builds correctly with Clang, Intel C++ 18 and GCC v6</li>\n\t<li>Old, deprecated&nbsp;<code>transport-objects</code>&nbsp;code removed</li>\n</ul>\n\n<p><strong>Platform improvements &ndash; runtime</strong></p>\n\n<ul>\n\t<li>Supports models with nontrivial field-space metric</li>\n\t<li>Track and report average load for master node and worker processes. Also, track and report database performance in inserts-per-second. This may help in spotting performance degradation or other issues during long running jobs</li>\n\t<li>Progress reports can now be generated at fixed time intervals or percentage intervals, rather than being fixed at 10%, 20% ... 90% of the complete task. This is done using new&nbsp;<code>--report-interval</code>&nbsp;and&nbsp;<code>--report-percentage</code>&nbsp;command-line switches. Report intervals can now be specified in seconds, minutes, hours or days rather than just minutes</li>\n\t<li>Progress reports are now written to a separate log file rather than being mixed in with general logging for the master process</li>\n\t<li>Add option to email progress reports during execution (use&nbsp;<code>--report-email</code>&nbsp;to specify one or more email addresses, and&nbsp;<code>--report-when</code>&nbsp;to specify when reports should be issued). Dispatch is done using a separate&nbsp;<code>CppTransport-sendmail</code>&nbsp;script. New CMake variables&nbsp;<code>EMAIL_SMTP_SERVER</code>,&nbsp;<code>EMAIL_FROM</code>&nbsp;and&nbsp;<code>EMAIL_PASSWORD</code>&nbsp;can be specified at build configuration time to set up the script automatically, or a suitable script can be provided separately</li>\n\t<li>Detects a number of common integration problems</li>\n\t<li>Computations may be vetted for&nbsp;<code>std::nan</code>&nbsp;and&nbsp;<code>std::inf</code>&nbsp;by defining&nbsp;<code>CPPTRANSPORT_STRICT_FP_TEST</code>. If detected, the integration is flagged as failed</li>\n\t<li>Implements new derived products for mass spectrum and eta parameter</li>\n\t<li>Failed integration and post-integration groups are now committed by default, rather than being moved to the failure cache. This allows their results to be re-used as the seed for a later integration (perhaps with a different stepper). The pre-2018.1 behaviour can be restored using the command-line switch&nbsp;<code>--reject-failed</code></li>\n\t<li>Calculate and report estimated total CPU time during work</li>\n\t<li>CPU type is recorded in worker information table. To support this the database format has been updated. If you need to upgrade a repository to the new format, use the&nbsp;<code>--upgrade</code>&nbsp;switch. Upgrading need be done only once and leaves the repository backwards-compatible with older versions of&nbsp;<em>CppTransport</em></li>\n\t<li>Time intervals can now be measured in days and weeks, not just seconds, minutes and hours (eg. for checkpoint interval)</li>\n\t<li>Improved general logging, now tagged with timestamps and severity levels</li>\n</ul>\n\n<p><strong>Bug fixes &ndash; translator</strong></p>\n\n<ul>\n\t<li>The mass matrix&nbsp;<code>M</code>&nbsp;was previously computed incorrectly. At some point, the formula for&nbsp;<code>M</code>&nbsp;was replaced by the formula for the&nbsp;<em>scale-matrix</em>&nbsp;(confusingly also called&nbsp;<code>M</code>) defined in Eq. (3.2b) of&nbsp;<a href=\"https://arxiv.org/abs/1210.7800\">arXiv:1210.7800</a>&nbsp;(<a href=\"https://github.com/ds283/CppTransport/commit/b5d7674cf5fe508cd89cd3a135a4fa285bc22cd1\">b5d7674c</a>)</li>\n\t<li>Fix major bug with use-counting in common-subexpression-elimination. Previously, use-counting was not applied recursively to the arguments of special functions. Instead, the&nbsp;<code>cpp_cse</code>&nbsp;implementation simply printed these using GiNaC&#39;s own C++ formatting. As a result, required variables might not be deposited to the temporary pool (<a href=\"https://github.com/ds283/CppTransport/commit/f7d8a28cd920790634a1b8317c44f5dce00c6ff3\">f7d8a28c</a>)</li>\n\t<li>Fix major bug which could lead to incorrect expression output because of bracketing problems (<a href=\"https://github.com/ds283/CppTransport/commit/1b4de46406d70ea57ebbe3eeac7698d2094f7214\">1b4de464</a>)</li>\n\t<li>GiNaC functions are now mapped to their C++ versions more correctly. Not all functions are implemented, although most of them are available in&nbsp;<em>Boost.Math</em>&nbsp;and could be included in future (<a href=\"https://github.com/ds283/CppTransport/commit/f7d8a28cd920790634a1b8317c44f5dce00c6ff3\">f7d8a28c</a>)</li>\n</ul>\n\n<p><strong>Bug fixes &ndash;&nbsp;runtime</strong></p>\n\n<ul>\n\t<li><code>--include</code>&nbsp;command-line switch to specify include path was unintentionally ignored in configuration files (<a href=\"https://github.com/ds283/CppTransport/commit/a4aebd1b6fd3140fae7ebc425fb7e7bfe6b26e36\">a4aebd1b</a>)</li>\n\t<li>The Planck mass&nbsp;<code>M_P</code>&nbsp;was not available in code to compute the potential derivatives, leading to compilation errors in models that required it (<a href=\"https://github.com/ds283/CppTransport/commit/0375f4b2c81322caa77111467f6dc874c7f6bacb\">0375f4b2</a>)</li>\n\t<li>The runtime platform was not properly agnostic regarding the floating point data type (<a href=\"https://github.com/ds283/CppTransport/commit/d2e561d3394cf4f931bdc615a1fb27c4b1fa1275\">d2e561d3</a>,&nbsp;<a href=\"https://github.com/ds283/CppTransport/commit/1b0ad9722bb4b1e8979ce428e86f28106a932744\">1b0ad972</a>,&nbsp;<a href=\"https://github.com/ds283/CppTransport/commit/b24e5368f2d021422862faec65680209b9b4cb9e\">b24e5368</a>,&nbsp;<a href=\"https://github.com/ds283/CppTransport/commit/38497859a8852142d1581fee292045f89033e689\">38497859</a>,&nbsp;<a href=\"https://github.com/ds283/CppTransport/commit/23862fbe1e93bac90b8e8a8bf8a3340677a177f8\">23862fbe</a>)</li>\n\t<li><code>u3</code>&nbsp;derived product was computed using an incorrect momentum configuration (<a href=\"https://github.com/ds283/CppTransport/commit/74138ca7753a9051956adcb14a311910c1bfe272\">74138ca7</a>)</li>\n\t<li>Some index-manipulation functions such as&nbsp;<code>SPECIES</code>&nbsp;and&nbsp;<code>FLATTEN</code>&nbsp;were declared in the global&nbsp;<code>transport</code>&nbsp;namespace, leading to symbol collisions and compilation errors on any attempt to use two or more models simultaneously. These symbols should be declared in a model-local namespace and imported as needed (<a href=\"https://github.com/ds283/CppTransport/commit/ec4162bbb450184252b5c3d229701a11bcacafe6\">ec4162bb</a>)</li>\n\t<li>Tidy up formatting of tabulated output to remove unneeded trailing spaces</li>\n\t<li>Detection of terminal width did not always work correctly (<a href=\"https://github.com/ds283/CppTransport/commit/25ede97e8bad8b9711de1772e29a5027f6553de4\">25ede97e</a>)</li>\n\t<li><em>CppTransport</em>&nbsp;no longer uses&nbsp;<code>which</code>&nbsp;to locate the Python,&nbsp;<code>dot</code>, and&nbsp;<code>CppTransport-sendmail</code>&nbsp;executables. This causes a fork which can cause trouble if&nbsp;<em>CppTransport</em>&nbsp;is being used under OpenMPI (<a href=\"https://github.com/ds283/CppTransport/commit/1f82131b137fc9f61bcfe54eec9ff0513f754f60\">1f82131b</a>)</li>\n</ul>\n\n<p>&nbsp;</p>"
}
}
71
26
views