Releases: openmpp/main
Microdata output initial release: 10 of December 2022
Microdata output initial release: 10 of December 2022
20221210 : v1.12.0
This is a first of multiple releases to support model entity microdata, it allow to output microdata into CSV files or model trace or database. New database tables added to store microdata and as result newly compiled models may not work under previous versions of openM++. It is a potentially BREAKING changes in database schema, but it is unlikely breaks compatibility unless you are using microdata. Next openM++ release would improve database compatibility. You can skip this release unless you want to start using model microdata values.
Please skip this release unless microdata is an important part of your model, use 23 of September 2022 release v1.11.1
Changes in that release:
- microdata output from model entities into CSV files or model trace or database
- c++ core: attribute visibility (see below)
- c++ core: changes to EventTrace (see below)
- c++ core: workaround to MSVC compiler error C1001 for models with many attributes (see below)
- c++ core: model notes syntax - Modgen and Markdown (see below)
- c++ core: added experimental model Align1 (see below)
- c++ core: model documentation enhancements (see below)
- c++ core: external names for classification enumerators (see below)
- Linux and MacOS: create optional views for Modgen schema compatibility
- Go back-end: initial version to handle old and db schemes (with and without microdata)
- UI: minor change: open new tab at leftmost position
Microdata Output
This release includes functionality for a model to output values of entity attributes during a run for later use.
Microdata output is controlled by run-time settings, build-time settings, and model code.
Run-time settings specify which attributes (if any) are output during a run.
If a model is enabled for microdata output by build-time settings, all attributes are available for selection at run-time without rebuilding the model.
Future OpenM++ functionality will allow tabulation of run microdata previously saved in the model database, including micro-level comparison operations between runs.
For more information, please see the wiki topic Microdata Output.
Attribute visibility
In this version, internal attributes generated by the OpenM++ compiler are by default not visible in EventTrace or Microdata. The option all_attributes_visible can be used to make all attributes visible by inserting the following statement into model code.
options all_attributes_visible = on;
Changes to EventTrace
Several changes and enhancements were made to EventTrace in this release.
- If EventTrace is enabled in a model, a warning message
"Warning : model can expose microdata at run-time with event_trace = on"
will be written to the log when the model is run. This warning can be disabled with a build-time option in model code. - EventTrace now reports entity time instead of global time in the
Time
column. This means that the time reported for initial values at the beginning of a run or case will be the starting entity time instead of-inf
. - A new ReportStyle
'csv'
was added to facilitate downstream processing of EventTrace output, e.g. in Excel.
For more information, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/Event-Trace.
Workaround to MSVC compiler error C1001 for models with many attributes
The Microsoft C++ compiler in Visual Studio (MSVC) might crash with "Fatal Error C1001 Compiler internal error"
when building the Release version of a model with many attributes.
A workaround was implemented in the OpenM++ compiler.
The workaround disables MSVC optimization for 2 generated entity member functions.
The workaround is unlikely to significantly affect model run time.
The workaround is only active in environments where MSVC is used to build the model.
NOTE syntax - modgen and markdown
To instruct the OpenM++ compiler to not convert Modgen syntax in NOTE
statements to equivalent markdown syntax, include the following statement in model code:
options convert_modgen_note_syntax = off;
The default and previous behaviour is on
.
For more information, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/model-documentation
Experimental model Align1
Align1 is an experimental time-based model which manipulates the event queue to align with external counts during a run.
For more information, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/Illustrative-Model-Align1 .
Model documentation enhancements
The OpenM++ compiler now generates doxygen brief descriptions for model symbols.
This can help model developers by improving integration with the Visual Studio IDE, and with doxygen.
For information on model documentation, please see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/model-documentation
External names for classification enumerators
In this release, external names can be specified for enumerators of classifications, and classification enumerators can participate in heuristic name generation.
For more information on external names, please see the wiki topic: Export Names · openmpp/openmpp.github.io Wiki · GitHub https://github.com/openmpp/openmpp.github.io/wiki/export-names.
Download source code and binaries:
- Windows
- Linux: Debian-11, Ubuntu 22.04, Ubuntu 20.04, RedHat 9
- Linux old stable: Debian 10, RedHat 8
- MacOS Intel
- MacOS Arm
Download release documentation archive:
Download cluster version (MPI):
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Minor release 23 of September 2022
Minor release 23 of September 2022
20220923 : v1.11.1
This is a minor release of openM++, you can skip it unless elastic cloud resource management is an important for your organization.
It is critical to deploy this release in cloud environment it contains multiple important fixes for racing conditions detected at:
- cloud servers start-stop
- model run resources allocation in case of multi-user cloud environment.
Other changes include:
- UI: ability to resubmit model run if it was failed
- UI: menus added to the toolbars to simplify user experience
- UI: fix tabs scroll issue to show tab close button
- UI and back-end: allow to view model parameters of model run in progress
Download source code and binaries:
- Windows
- Linux: Debian-11, Ubuntu 22.04, 20.04, RedHat 9, SUSE Leap, Tumbleweed
- Linux old stable: Debian 10, RedHat 8
- MacOS Intel
- MacOS Arm
Download release documentation archive:
Download cluster version (MPI):
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Elastic resources management release 27 of August 2022
Elastic resources management release, 27 of August 2022
20220827 : v1.11.0
This release is recommended for model developers:
- helps to improve code quality by eliminating warnings.
- provides tools and documentation for detailed event tracing.
It is also contains first version of elastic resources management for cloud deployment.
Warnings eliminated from non-model code
Fixing warnings when building a model can help improve code quality and robustness.
A 'no warnings' approach to model code helps identify issues in new model code because warnings from the new code stand out.
The test_models utility facilitates a 'no warnings' approach by visually highlighting non-zero counts of warnings. See Test Models · openmpp/openmpp.github.io Wiki · GitHub.
Previous releases of OpenM++ could compromise a 'no warnings' approach because of spurious (benign) warnings produced by non-model code.
In this version, warnings from non-model code have been eliminated in a large test suite of models, including several complex models, in both Windows (MSVC) and Linux (gcc).
OpenM++ compiler warning issued if a member function is used in the declaration of an identity attribute
The OpenM++ compiler will issue a warning if model code uses an entity member function in the declaration of an identity attribute.
The warning message looks like this:
../code/SyntaxProbes.mpp(479): warning : call to member function 'compute_stuff' in declaration of identity attribute 'stuff'. Consider using global function instead.
If a member function uses an attribute in its function body, changes in that attribute will not cause the identity attribute to be updated.
If a global function is used instead and attributes passed explicitly to it, consistency is assured.
Event Trace
OpenM++ models can write detailed information to a ‘trace file’ to probe the evolution of entities during a simulation.
This can help model developers verify correctness and understand anomalies in model results,
including large time-based runs which are infeasible in debug mode.
For more please see our wiki topic Event Trace · openmpp/openmpp.github.io Wiki · GitHub
Reversion of previous change to COERCE macro
Changes made to the COERCE macro in 2021-03-05 eliminated some C++ compiler warnings in model code.
Recent testing of a model not in our test suite revealed that these changes cause undesired behaviour in some uses of COERCE in model code.
Specifically, if a floating-point argument is given to COERCE, the fractional part will be truncated in ompp.
In this release, the COERCE macro has been reverted to its previous behaviour, and the fractional part (if any) is preserved.
Incidentally, Modgen developers should provide simple expressions to COERCE having no side effects (e.g. no call to RandUniform) because the Modgen implementation of COERCE may cause double evaluation of the argument expression.
Elastic resource management
This release contains first version of elastic resource management for cloud deployment. It does allow to start and stop computational resources on demand to reduce cloud experiences.
It is a beta version and next release may contain additional functionality and documentation.
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux workstation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Model resources tracking release
Model resources tracking release 17 of June 2022
20220617 : v1.10.0
This is a minor release of openM++ with emphasis on model resource usage tracking.
Resource use report
The new option resource_use gathers information on resource use by entities, events, sets, and tables during a model run and produces a detailed report in the run log. For more information please the wiki topic Model Resource Use · openmpp/openmpp.github.io Wiki · GitHub
Entity member packing
The new option entity_member_packing
can reduce the size of entities by packing their members in an efficient order. For more information please the wiki topic Entity Member Packing · openmpp/openmpp.github.io Wiki · GitHub.
New wiki topic on memory use
A compendium of information about managing memory use in OpenM++ microsimulation models has been added to our wiki at Memory Use · openmpp/openmpp.github.io Wiki · GitHub.
Improved entity member layout for model debugging
When debugging a model using an IDE such as Visual Studio one often examines the attributes of an entity. An entity typically contains many members, including internally generated members, which can make selection of attributes of interest tedious. In this release, the OpenM++ compiler changes the layout of entity members to make it easier to examine the attributes of most interest by placing them at the beginning. The new layout order is as follows:
- entity_id
- time
- age
- all attributes declared in model code, ordered lexicographically
- all other members, ordered lexicographically
Note that the new option entity_member_packing
changes the layout order to optimize memory use. So, for debugging sessions, it may be worthwhile to have entity member packing turned off. Note that by default entity_member_packing
is off
Model run-time bug fixes
There are two bugs fixed in model run-time, both are difficult to reproduce:
- on Linux Release mode model may crush with certain combination of model scalar parameters due to undefined (by c++ standard) initialization order of thread local and global references
- occasional deadlock at initialization of MPI model processes due to racing conditions. Example configuration to reproduce: 1 sub-sample, 3 model processes, 4 threads each and exclude root MPI process from modelling job.
Both above bugs may not affect your models.
**New R API and usages examples **
Our existing openMpp R package is 5 years old and suitable mostly for local desktop use. New R API and examples is identical to our Python version. It is a wrapper around oms
JSON web-service and it is easy to deploy by installing RStudio Server in cloud, side-by-side with cloud UI.
UI and oms
back-end web-service API improvements
- ability to cancel model run through UI (essential for cloud users)
- ability to delete model run even it is not completed
- automatically apply default model run settings (if there are default model run settings)
- change default parameter layout to keep it to be identical to Modgen (thanks to John Than for help);
- include model version and create date-time into model meatadata to simplify downstream analysis;
- detailed model run jobs history can be enabled to detect model failure by exception or resource shortage
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux workstation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Minor release 05 of May 2022
Minor release 05 of May 2022
20220505 : v1.9.9
This is a minor release of openM++ with multiple new features. It is recommended to install this release if you want to use new population scaling framework or experiencing Measure dimension issues with your models.
New population scaling framework module case_based_scaling_endogenous_or_none
This new framework module allows run-time choice between endogenous population scaling or no scaling, using a parameter named DisablePopulationScaling
. Disabling population scaling can make tables more useful when probing a model with a small number of cases, because individual table cell counts show cases rather than scaled population.
For more information see the wiki topic https://github.com/openmpp/openmpp.github.io/wiki/Population-Size-and-Scaling.
Measure dimension issue
In some models output table(s) may incorrectly contain multiple "Measure" dimensions. Those tables cannot be correctly viewed in UI.
Current release fixing that issue by:
- creating symbol for table measure dimension and associate label if present
- if above does not resolve the issue then UI output table viewer display the data with multiple "Measure_NN" dimensions
Model CSV microdata files: ability to fallback to the current directory if path environment variable not defined
OpenM++ allow to use environment variable at the beginning of microdata CSV file path, e.g.: $MY-CSV/population.csv
. That provides flexibility to model developer but required such environment variable to be defined at model run time. In above example, if MY-CSV
not defined during run time then model run fails.
Current release implement graceful fallback to avoid model failure if environment variable not defined. If model developer using ${NAME}
syntax for environment variable then undefined run time value does not produce an error but treated as empty "" string. For example: if model code opens CSV microdata as ${MY-CSV}population.csv
and MY-CSV
is not defined then result path is population.csv
.
That effectively treats undefined environment variables in microdata path as current directory.
UI and oms
back-end web-service API changes
- support model run upload. It is now possible to transfer model run results form desktop to cloud or between cloud user instances.
- allow to publish multiple model versions side by side
- allow to import input scenario into different version of the model
- display folders structure of published models to provide intuitive way of organizing models and model versions
This release is also contains following additional features and bug fixes:
- c++: eliminate build warning for endogenous population scaling
- c++: fix racing at final progress update for model sub-values (sub-samples)
- Perl:
test_models
bug fix Modgen build failure with VS 2019 - Perl:
create_import_set
bug fix if upstream run name contains non alphanumeric characters - Go:
oms
fix error of findingdbcopy
ifoms
started with-oms.HomeDir
path option - Go:
dbcopy
fix import from zip archive if zip not located in current directory
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux workstation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Bug fix release 23 of March 2022
Bug fix release 23 of March 2022
20220323 : v1.9.8
This is a bug fix release for openM++ UI and it is recommended for models with parameters of type classification or partition or range.
Following bugs are fixed in this release:
- fix UI bug: unable to edit model parameters if parameter type is classification or partition or range;
- fix UI bug: if all model runs failed then switching to Model Run tab can freeze UI;
- fix UI bug: if user doing run comparison then clicking on additional run do not update selection results;
This release is also contains small additional features:
- support VS 2022 for Modgen build for cross compatible models;
- UI: create scenario from run comparison to include parameters from variant run which are different from the base run;
- dbcopy utility: validate CSV file header on reading;
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux workstation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Minor release 08 of March 2022
Minor release 08 of March 2022
20220308 : v1.9.7
Main features of this release are support for linked models and UI for cloud scenario uploads. There are also significant bug fixes in R package and cloud support area.
New utility create_import_set:
The create_import_set utility creates a partial parameter set (aka scenario) for upload to a downstream model by processing a previously downloaded run from an upstream model. The utility is only relevant for two models which are linked via an ‘import’ specification in model code, e.g. an upstream model HPVMM linked to a downstream model OncoSim.
For more information, please see the wiki topic: Create Import Set
openMpp R package: significant bug fixes
There are a significant bug fixes in openMpp R package. Previous package version was compatible only with openM++ v1.9.4 or below (released on 30 of November 2021). Please use new version of R package to support model dimension names generated by current model compiler.
Thank you to Claude Nadeau for helping with openMpp R package problems.
User interface (UI) to upload model parameters and input scenarios.
It is possible now to upload model parameter as CSV file into remote cloud instance of openM++. It is also possible to upload entire input scenario as a collection of CSV parameter files and scenario metadata (value notes). Each model parameter can have multiple sub-values to describe statistical uncertainty of parameter value.
Multiple issues fixed in dbcopy and oms utilities
Dbcopy is an openM++ utilty to copy model data to and from database. Oms is a web service to support remote openM++ instances in cloud and provide integration API between openM++ and other software (Python, Perl, .NET, etc.).
Dbcopy and oms had significant memory usage problems and sometime performance with large (multi millions values) model parameters or output tables. Those issues resolved now.
Multiple UI improvements and small bug fixes:
- UI on Windows platform now insert byte order mark into CSV download files, which may help to utf-8 files in Excel;
- allow to use less restrictive input scenario names, for example allow to use % in the names;
- fix dbcopy error on Linux and MacOS which prevented unpacking of zip archives (folder access denied error);
- multiple small fixes in UI.
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux worksation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Pre-release March 2022
This is a pre-release version, for test only
To start UI double click on %OM_ROOT\bin\ompp_ui.bat
Back-end downloads directory: %OM_ROOT\models\home\io\download
Back-end uploads directory: %OM_ROOT\models\home\io\upload
Download source code and binaries:
Minor release 02 of February 2022
Minor release 02 of February 2022
20220202 : v1.9.6
This release contains multiple new features and small bug fixes.
Support for case-based models which set the number of cases endogenously:
Case-based models can specify the number of cases to simulate using the input parameter SimulationCases or the input parameter CasesPerMember, depending on which simulation framework is used by the model. This release includes two additional simulation frameworks to support models which set the number of cases endogenously, for example based on the size of an input microdata file.
For more information, please see the wiki topic: Population Size and Scaling
Small changes and fixes in c++ core:
- raise run-time error if SimulationCases exceeds number of records in micro-data input file
- generate better dimension and measure labels if absent in model code:
- Recognize label at first and last lines of declaration
- Bug fix: //LABEL not working for dimensions and measures
- Note correct last line of declaration of classifications and partitions
- Propagate explicit label from model's default language to other languages when missing
UI improvements:
- new version of scenario create and edit page
- allow user to switch between names and labels in tables and parameters tree view
- model run output tables selection
- model presets: simple one click button model run options
For more information please see our wiki:
Release updates:
- Windows release: openM++ tested on Windows 11
- Windows release: build using Visual Studio 2022, MS Build 2022, VC++ runtime 2022
Windows release tested and it does work under Visual Studio 2019. Microsoft VC++ runtimes are binary compatible between 2015, 2017, 2019, 2022 versions.
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux worksation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.
Minor release 11 of January 2022
Minor release 11 of January 2022
20220111 : v1.9.5
This release contains multiple new features and small bug fixes.
New option censor_event_time
A new option has been added which enables a model-specific optimization which can reduce event queue size and improve simulation speed. The option enables a model to specify, when an entity is created, a censoring time at which the entity is certain to have left the simulation. That censoring time can then be used internally to suppress from the event queue any event whose time exceeds the entity’s censoring time. Models with many rare events can gain a performance boost, because the event times of rare events are often far in the entity’s future. In a test with one such model, simulation time decreased by 17% using this option.
For more information, please see the wiki topic: Censor Event Time
New option weighted_tabulation
A new option has been added which enables entity weights for case-based models.
For more information, please see the wiki topic: Weighted Tabulation
Dimension and measure names
Dimensions and measures in parameters and tables have default short names like Dim1 or Expr2 which are visible in exported results. This release includes functionality to replace the default names with more meaningful names.
For more information, please see the wiki topic: Dimension and Measure Names at our Wiki
Cloud and MPI cluster improvements and fixes:
- fix MPI racing bug if model shutdown fast
- log MPI process rank to simplify log event tracing
UI improvements:
- notify user on progress of parameters reading and tables writing
- convenient Windows batch to open UI from model development directory by double click
- user now can choose fast download of aggregated output values only or full model data download, please see our wiki for details
Download source code and binaries:
Download release documentation archive:
Download cluster version (MPI):
Linux downloads:
- Desktop version build on Debian-10 and expected to work on any modern Linux, including Ubuntu 20.04 and RedHat 8
- Ubuntu downloads would allow you to build or debug your model on Ubuntu Linux (Ubuntu 20.04)
- Current stable Debian version is Debian 11 which you may want to use if you installing new Linux worksation or server.
- RedHat downloads build on Rocky Linux 8.5 and tested on RedHat 8.5 (Gnome)
- Cluster (MPI) Debian-10 version expected to work on any modern Linux with Open MPI version 3+ installed, including RedHat 8.
- Cluster (MPI) RedHat-8 version require Open MPI 4.x and it would not work on RedHat below 8.2 version.
IMPORTANT:
Full version of OpenM++ source code always included into "Download" links above.
Please do NOT use "Source code (zip)" or "Source code (tar.gz)" archives from "Assets" links below.
It is auto-generated by GitHub release tools and contains only half of OpenM++ source code.