Software Open Access

CppTransport 2018.1

Seery, David


MARC21 XML Export

<?xml version='1.0' encoding='UTF-8'?>
<record xmlns="http://www.loc.gov/MARC21/slim">
  <leader>00000nmm##2200000uu#4500</leader>
  <datafield tag="041" ind1=" " ind2=" ">
    <subfield code="a">eng</subfield>
  </datafield>
  <datafield tag="653" ind1=" " ind2=" ">
    <subfield code="a">inflation</subfield>
  </datafield>
  <datafield tag="653" ind1=" " ind2=" ">
    <subfield code="a">early universe cosmology</subfield>
  </datafield>
  <datafield tag="653" ind1=" " ind2=" ">
    <subfield code="a">automated tools</subfield>
  </datafield>
  <controlfield tag="005">20191101071606.0</controlfield>
  <controlfield tag="001">1183518</controlfield>
  <datafield tag="856" ind1="4" ind2=" ">
    <subfield code="s">1224414</subfield>
    <subfield code="z">md5:266f7be19cac91691392606355652ace</subfield>
    <subfield code="u">https://zenodo.org/record/1183518/files/CppTransport_2018_01.tar.gz</subfield>
  </datafield>
  <datafield tag="542" ind1=" " ind2=" ">
    <subfield code="l">open</subfield>
  </datafield>
  <datafield tag="260" ind1=" " ind2=" ">
    <subfield code="c">2018-02-23</subfield>
  </datafield>
  <datafield tag="909" ind1="C" ind2="O">
    <subfield code="o">oai:zenodo.org:1183518</subfield>
  </datafield>
  <datafield tag="100" ind1=" " ind2=" ">
    <subfield code="u">University of Sussex</subfield>
    <subfield code="0">(orcid)0000-0003-3421-6080</subfield>
    <subfield code="a">Seery, David</subfield>
  </datafield>
  <datafield tag="245" ind1=" " ind2=" ">
    <subfield code="a">CppTransport 2018.1</subfield>
  </datafield>
  <datafield tag="536" ind1=" " ind2=" ">
    <subfield code="c">308082</subfield>
    <subfield code="a">Precision tests of the inflationary scenario</subfield>
  </datafield>
  <datafield tag="540" ind1=" " ind2=" ">
    <subfield code="u">http://creativecommons.org/licenses/by/4.0/legalcode</subfield>
    <subfield code="a">Creative Commons Attribution 4.0 International</subfield>
  </datafield>
  <datafield tag="650" ind1="1" ind2="7">
    <subfield code="a">cc-by</subfield>
    <subfield code="2">opendefinition.org</subfield>
  </datafield>
  <datafield tag="520" ind1=" " ind2=" ">
    <subfield code="a">&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;</subfield>
  </datafield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">doi</subfield>
    <subfield code="i">isNewVersionOf</subfield>
    <subfield code="a">10.5281/zenodo.61237</subfield>
  </datafield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">doi</subfield>
    <subfield code="i">isNewVersionOf</subfield>
    <subfield code="a">10.5281/zenodo.58710</subfield>
  </datafield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">doi</subfield>
    <subfield code="i">isNewVersionOf</subfield>
    <subfield code="a">10.5281/zenodo.59403</subfield>
  </datafield>
  <datafield tag="773" ind1=" " ind2=" ">
    <subfield code="n">doi</subfield>
    <subfield code="i">isVersionOf</subfield>
    <subfield code="a">10.5281/zenodo.1183517</subfield>
  </datafield>
  <datafield tag="024" ind1=" " ind2=" ">
    <subfield code="a">10.5281/zenodo.1183518</subfield>
    <subfield code="2">doi</subfield>
  </datafield>
  <datafield tag="980" ind1=" " ind2=" ">
    <subfield code="a">software</subfield>
  </datafield>
</record>
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