Software Open Access

CppTransport 2018.1

Seery, David


DataCite XML Export

<?xml version='1.0' encoding='utf-8'?>
<resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://datacite.org/schema/kernel-4" xsi:schemaLocation="http://datacite.org/schema/kernel-4 http://schema.datacite.org/meta/kernel-4.1/metadata.xsd">
  <identifier identifierType="DOI">10.5281/zenodo.1183518</identifier>
  <creators>
    <creator>
      <creatorName>Seery, David</creatorName>
      <givenName>David</givenName>
      <familyName>Seery</familyName>
      <nameIdentifier nameIdentifierScheme="ORCID" schemeURI="http://orcid.org/">0000-0003-3421-6080</nameIdentifier>
      <affiliation>University of Sussex</affiliation>
    </creator>
  </creators>
  <titles>
    <title>CppTransport 2018.1</title>
  </titles>
  <publisher>Zenodo</publisher>
  <publicationYear>2018</publicationYear>
  <subjects>
    <subject>inflation</subject>
    <subject>early universe cosmology</subject>
    <subject>automated tools</subject>
  </subjects>
  <dates>
    <date dateType="Issued">2018-02-23</date>
  </dates>
  <language>en</language>
  <resourceType resourceTypeGeneral="Software"/>
  <alternateIdentifiers>
    <alternateIdentifier alternateIdentifierType="url">https://zenodo.org/record/1183518</alternateIdentifier>
  </alternateIdentifiers>
  <relatedIdentifiers>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsNewVersionOf">10.5281/zenodo.61237</relatedIdentifier>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsNewVersionOf">10.5281/zenodo.58710</relatedIdentifier>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsNewVersionOf">10.5281/zenodo.59403</relatedIdentifier>
    <relatedIdentifier relatedIdentifierType="DOI" relationType="IsVersionOf">10.5281/zenodo.1183517</relatedIdentifier>
  </relatedIdentifiers>
  <version>2018.1</version>
  <rightsList>
    <rights rightsURI="http://creativecommons.org/licenses/by/4.0/legalcode">Creative Commons Attribution 4.0 International</rights>
    <rights rightsURI="info:eu-repo/semantics/openAccess">Open Access</rights>
  </rightsList>
  <descriptions>
    <description descriptionType="Abstract">&lt;p&gt;&lt;strong&gt;2018.1&lt;/strong&gt;&amp;nbsp;release of the&amp;nbsp;&lt;strong&gt;CppTransport&lt;/strong&gt;&amp;nbsp;platform&amp;nbsp;for computation of correlation functions generated during an inflationary epoch in the early universe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2018.1&lt;/strong&gt;&amp;nbsp;includes major new features:&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Supports models with a&amp;nbsp;&lt;strong&gt;nontrivial field-space metric&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Fully supports integration using&amp;nbsp;&lt;strong&gt;arbitrary floating-point types&lt;/strong&gt;, including&amp;nbsp;&lt;code&gt;double&lt;/code&gt;,&amp;nbsp;&lt;code&gt;long double&lt;/code&gt;&amp;nbsp;or multiprecision types such as&amp;nbsp;&lt;a href="http://www.holoborodko.com/pavel/mpfr"&gt;MPFR&lt;/a&gt;, either directly or via a&amp;nbsp;&lt;a href="http://www.boost.org/doc/libs/1_64_0/libs/multiprecision/doc/html/index.html"&gt;&lt;em&gt;Boost.Multiprecision&lt;/em&gt;&amp;nbsp;wrapper&lt;/a&gt;&lt;/li&gt;
	&lt;li&gt;New&amp;nbsp;&lt;strong&gt;email reporting options&lt;/strong&gt;&amp;nbsp;during computation&lt;/li&gt;
	&lt;li&gt;Improved&amp;nbsp;&lt;strong&gt;code generation&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Performance improvements&lt;/strong&gt;&amp;nbsp;and bug fixes, especially in the translator&lt;/li&gt;
	&lt;li&gt;More substantial library of background quantities, including the&amp;nbsp;&lt;strong&gt;eta parameter&lt;/strong&gt;&amp;nbsp;and the&amp;nbsp;&lt;strong&gt;mass spectrum&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In addition, the database schema for integration data containers has been adjusted slightly. If you encounter the error&lt;/p&gt;

&lt;p&gt;&lt;code&gt;SQLite error: no such column: cpu_brand &lt;/code&gt;&lt;/p&gt;

&lt;p&gt;(normally issued when generating an HTML report) then&amp;nbsp;&lt;strong&gt;your repository requires upgrading to the new format&lt;/strong&gt;. To do so, use the&amp;nbsp;&lt;code&gt;--upgrade&lt;/code&gt;&amp;nbsp;flag. Upgrading need be performed only once and leaves the repository backwards-compatible with older versions of&amp;nbsp;&lt;em&gt;CppTransport&lt;/em&gt;. While it is possible to use old-format databases with&amp;nbsp;&lt;em&gt;CppTransport&lt;/em&gt;&amp;nbsp;2018.1 if you are not using HTML reports, we recommend that you upgrade all databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform improvements &amp;ndash; translator&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;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&lt;/li&gt;
	&lt;li&gt;Algebra layer now distinguishes between real and complex fields (although currently all fields are real), meaning that operations like&amp;nbsp;&lt;code&gt;abs(x)&lt;/code&gt;&amp;nbsp;now work as expected&lt;/li&gt;
	&lt;li&gt;New&amp;nbsp;&lt;code&gt;lagrangian&lt;/code&gt;&amp;nbsp;option allows selection of canonical of nontrivial-metric models. New&amp;nbsp;&lt;code&gt;metric&lt;/code&gt;&amp;nbsp;keyword allows specification of the metric in a similar way to the potential&lt;/li&gt;
	&lt;li&gt;The translator now understands index variances (ie. covariant or contravariant) and performs validation of these between left- and right-hand sides of indexed expressions&lt;/li&gt;
	&lt;li&gt;Enforces that left-hand side indices occur only&amp;nbsp;&lt;em&gt;once&lt;/em&gt;, so that the expression represents a valid tensor assignment&lt;/li&gt;
	&lt;li&gt;Add&amp;nbsp;&lt;code&gt;require_version&lt;/code&gt;&amp;nbsp;construct (as part of a new top-level&amp;nbsp;&lt;code&gt;metadata&lt;/code&gt;&amp;nbsp;block) to enforce a minimum&amp;nbsp;&lt;em&gt;CppTransport&lt;/em&gt;&amp;nbsp;version when processing&amp;nbsp;&lt;code&gt;.model&lt;/code&gt;&amp;nbsp;files&lt;/li&gt;
	&lt;li&gt;Improved handling of directives (such as&amp;nbsp;&lt;code&gt;$IF&lt;/code&gt;&amp;nbsp;or&amp;nbsp;&lt;code&gt;$SET&lt;/code&gt;). These must now appear on a single line by themselves to avoid ambiguity when unrolling indices, and their indices are validated more carefully&lt;/li&gt;
	&lt;li&gt;Report resources that are not used before they are reassigned. This can help catch unnecessary computation when developing templates&lt;/li&gt;
	&lt;li&gt;New replacement rules for the metric and Riemann tensor combinations needed in models with a nontrivial metric. Also new resource labels for these combinations&lt;/li&gt;
	&lt;li&gt;New&amp;nbsp;&lt;code&gt;$MOMENTA&lt;/code&gt;&amp;nbsp;replacement rule allows access to the momentum vector. Previously, only&amp;nbsp;&lt;code&gt;$FIELDS&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;$COORDINATES&lt;/code&gt;&amp;nbsp;were available, giving access to the field vector or the full phase-space coordinate vector, respectively&lt;/li&gt;
	&lt;li&gt;Distinguishes resources with different index variance assignments and can reposition these indices on-the-fly as needed. A command-line switch&amp;nbsp;&lt;code&gt;--Wreposition&lt;/code&gt;&amp;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&lt;/li&gt;
	&lt;li&gt;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&lt;/li&gt;
	&lt;li&gt;New command-line switch&amp;nbsp;&lt;code&gt;--Wdevelop&lt;/code&gt;&amp;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&lt;/li&gt;
	&lt;li&gt;Performance profile data is no longer reported unless explicitly enabled with&amp;nbsp;&lt;code&gt;--profile&lt;/code&gt;&amp;nbsp;switch. Profiling data is now reported from the lambda manager&lt;/li&gt;
	&lt;li&gt;Improved handling of roll-up or unroll specifiers, and improved handling of roll-up conflicts&lt;/li&gt;
	&lt;li&gt;Improved context information supplied with error or warning reports. To prevent error reports becoming unreadable, processing is now aborted if too many errors occur&lt;/li&gt;
	&lt;li&gt;Enables new adaptive Adams-Bashforth-Moulton stepper from&amp;nbsp;&lt;a href="https://github.com/headmyshoulder/odeint-v2"&gt;odeint-v2&lt;/a&gt;, although its performance is not yet tested&lt;/li&gt;
	&lt;li&gt;The build process will now download and build GiNaC automatically if a system-wide install is not found&lt;/li&gt;
	&lt;li&gt;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&lt;/li&gt;
	&lt;li&gt;Builds are now tested by continuous integration using&amp;nbsp;&lt;a href="https://travis-ci.org"&gt;Travis.CI&lt;/a&gt;. Builds correctly with Clang, Intel C++ 18 and GCC v6&lt;/li&gt;
	&lt;li&gt;Old, deprecated&amp;nbsp;&lt;code&gt;transport-objects&lt;/code&gt;&amp;nbsp;code removed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Platform improvements &amp;ndash; runtime&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;Supports models with nontrivial field-space metric&lt;/li&gt;
	&lt;li&gt;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&lt;/li&gt;
	&lt;li&gt;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&amp;nbsp;&lt;code&gt;--report-interval&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;--report-percentage&lt;/code&gt;&amp;nbsp;command-line switches. Report intervals can now be specified in seconds, minutes, hours or days rather than just minutes&lt;/li&gt;
	&lt;li&gt;Progress reports are now written to a separate log file rather than being mixed in with general logging for the master process&lt;/li&gt;
	&lt;li&gt;Add option to email progress reports during execution (use&amp;nbsp;&lt;code&gt;--report-email&lt;/code&gt;&amp;nbsp;to specify one or more email addresses, and&amp;nbsp;&lt;code&gt;--report-when&lt;/code&gt;&amp;nbsp;to specify when reports should be issued). Dispatch is done using a separate&amp;nbsp;&lt;code&gt;CppTransport-sendmail&lt;/code&gt;&amp;nbsp;script. New CMake variables&amp;nbsp;&lt;code&gt;EMAIL_SMTP_SERVER&lt;/code&gt;,&amp;nbsp;&lt;code&gt;EMAIL_FROM&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;EMAIL_PASSWORD&lt;/code&gt;&amp;nbsp;can be specified at build configuration time to set up the script automatically, or a suitable script can be provided separately&lt;/li&gt;
	&lt;li&gt;Detects a number of common integration problems&lt;/li&gt;
	&lt;li&gt;Computations may be vetted for&amp;nbsp;&lt;code&gt;std::nan&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;std::inf&lt;/code&gt;&amp;nbsp;by defining&amp;nbsp;&lt;code&gt;CPPTRANSPORT_STRICT_FP_TEST&lt;/code&gt;. If detected, the integration is flagged as failed&lt;/li&gt;
	&lt;li&gt;Implements new derived products for mass spectrum and eta parameter&lt;/li&gt;
	&lt;li&gt;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&amp;nbsp;&lt;code&gt;--reject-failed&lt;/code&gt;&lt;/li&gt;
	&lt;li&gt;Calculate and report estimated total CPU time during work&lt;/li&gt;
	&lt;li&gt;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&amp;nbsp;&lt;code&gt;--upgrade&lt;/code&gt;&amp;nbsp;switch. Upgrading need be done only once and leaves the repository backwards-compatible with older versions of&amp;nbsp;&lt;em&gt;CppTransport&lt;/em&gt;&lt;/li&gt;
	&lt;li&gt;Time intervals can now be measured in days and weeks, not just seconds, minutes and hours (eg. for checkpoint interval)&lt;/li&gt;
	&lt;li&gt;Improved general logging, now tagged with timestamps and severity levels&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bug fixes &amp;ndash; translator&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;The mass matrix&amp;nbsp;&lt;code&gt;M&lt;/code&gt;&amp;nbsp;was previously computed incorrectly. At some point, the formula for&amp;nbsp;&lt;code&gt;M&lt;/code&gt;&amp;nbsp;was replaced by the formula for the&amp;nbsp;&lt;em&gt;scale-matrix&lt;/em&gt;&amp;nbsp;(confusingly also called&amp;nbsp;&lt;code&gt;M&lt;/code&gt;) defined in Eq. (3.2b) of&amp;nbsp;&lt;a href="https://arxiv.org/abs/1210.7800"&gt;arXiv:1210.7800&lt;/a&gt;&amp;nbsp;(&lt;a href="https://github.com/ds283/CppTransport/commit/b5d7674cf5fe508cd89cd3a135a4fa285bc22cd1"&gt;b5d7674c&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;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&amp;nbsp;&lt;code&gt;cpp_cse&lt;/code&gt;&amp;nbsp;implementation simply printed these using GiNaC&amp;#39;s own C++ formatting. As a result, required variables might not be deposited to the temporary pool (&lt;a href="https://github.com/ds283/CppTransport/commit/f7d8a28cd920790634a1b8317c44f5dce00c6ff3"&gt;f7d8a28c&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Fix major bug which could lead to incorrect expression output because of bracketing problems (&lt;a href="https://github.com/ds283/CppTransport/commit/1b4de46406d70ea57ebbe3eeac7698d2094f7214"&gt;1b4de464&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;GiNaC functions are now mapped to their C++ versions more correctly. Not all functions are implemented, although most of them are available in&amp;nbsp;&lt;em&gt;Boost.Math&lt;/em&gt;&amp;nbsp;and could be included in future (&lt;a href="https://github.com/ds283/CppTransport/commit/f7d8a28cd920790634a1b8317c44f5dce00c6ff3"&gt;f7d8a28c&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Bug fixes &amp;ndash;&amp;nbsp;runtime&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
	&lt;li&gt;&lt;code&gt;--include&lt;/code&gt;&amp;nbsp;command-line switch to specify include path was unintentionally ignored in configuration files (&lt;a href="https://github.com/ds283/CppTransport/commit/a4aebd1b6fd3140fae7ebc425fb7e7bfe6b26e36"&gt;a4aebd1b&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;The Planck mass&amp;nbsp;&lt;code&gt;M_P&lt;/code&gt;&amp;nbsp;was not available in code to compute the potential derivatives, leading to compilation errors in models that required it (&lt;a href="https://github.com/ds283/CppTransport/commit/0375f4b2c81322caa77111467f6dc874c7f6bacb"&gt;0375f4b2&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;The runtime platform was not properly agnostic regarding the floating point data type (&lt;a href="https://github.com/ds283/CppTransport/commit/d2e561d3394cf4f931bdc615a1fb27c4b1fa1275"&gt;d2e561d3&lt;/a&gt;,&amp;nbsp;&lt;a href="https://github.com/ds283/CppTransport/commit/1b0ad9722bb4b1e8979ce428e86f28106a932744"&gt;1b0ad972&lt;/a&gt;,&amp;nbsp;&lt;a href="https://github.com/ds283/CppTransport/commit/b24e5368f2d021422862faec65680209b9b4cb9e"&gt;b24e5368&lt;/a&gt;,&amp;nbsp;&lt;a href="https://github.com/ds283/CppTransport/commit/38497859a8852142d1581fee292045f89033e689"&gt;38497859&lt;/a&gt;,&amp;nbsp;&lt;a href="https://github.com/ds283/CppTransport/commit/23862fbe1e93bac90b8e8a8bf8a3340677a177f8"&gt;23862fbe&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;code&gt;u3&lt;/code&gt;&amp;nbsp;derived product was computed using an incorrect momentum configuration (&lt;a href="https://github.com/ds283/CppTransport/commit/74138ca7753a9051956adcb14a311910c1bfe272"&gt;74138ca7&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Some index-manipulation functions such as&amp;nbsp;&lt;code&gt;SPECIES&lt;/code&gt;&amp;nbsp;and&amp;nbsp;&lt;code&gt;FLATTEN&lt;/code&gt;&amp;nbsp;were declared in the global&amp;nbsp;&lt;code&gt;transport&lt;/code&gt;&amp;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 (&lt;a href="https://github.com/ds283/CppTransport/commit/ec4162bbb450184252b5c3d229701a11bcacafe6"&gt;ec4162bb&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;Tidy up formatting of tabulated output to remove unneeded trailing spaces&lt;/li&gt;
	&lt;li&gt;Detection of terminal width did not always work correctly (&lt;a href="https://github.com/ds283/CppTransport/commit/25ede97e8bad8b9711de1772e29a5027f6553de4"&gt;25ede97e&lt;/a&gt;)&lt;/li&gt;
	&lt;li&gt;&lt;em&gt;CppTransport&lt;/em&gt;&amp;nbsp;no longer uses&amp;nbsp;&lt;code&gt;which&lt;/code&gt;&amp;nbsp;to locate the Python,&amp;nbsp;&lt;code&gt;dot&lt;/code&gt;, and&amp;nbsp;&lt;code&gt;CppTransport-sendmail&lt;/code&gt;&amp;nbsp;executables. This causes a fork which can cause trouble if&amp;nbsp;&lt;em&gt;CppTransport&lt;/em&gt;&amp;nbsp;is being used under OpenMPI (&lt;a href="https://github.com/ds283/CppTransport/commit/1f82131b137fc9f61bcfe54eec9ff0513f754f60"&gt;1f82131b&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
  </descriptions>
  <fundingReferences>
    <fundingReference>
      <funderName>European Commission</funderName>
      <funderIdentifier funderIdentifierType="Crossref Funder ID">10.13039/501100000780</funderIdentifier>
      <awardNumber awardURI="info:eu-repo/grantAgreement/EC/FP7/308082/">308082</awardNumber>
      <awardTitle>Precision tests of the inflationary scenario</awardTitle>
    </fundingReference>
  </fundingReferences>
</resource>
37
8
views
downloads
All versions This version
Views 3737
Downloads 88
Data volume 9.8 MB9.8 MB
Unique views 3636
Unique downloads 88

Share

Cite as