Skip to content

Microdata output UI release: 01 of February 2023

Compare
Choose a tag to compare
@amc1999 amc1999 released this 01 Feb 10:54
· 581 commits to master since this release

Microdata output UI release: 01 of February 2023

20230201 : v1.14.0

This release include initial version UI to support model microdata. 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:

  • BREAKING change in db schema: add microdata row count column;
  • c++ core: model_streams no longer required in model code;
  • c++ core: Local Random Streams;
  • c++ core: multilink size run-time warning;
  • c++ core: fix microdata value digest calculation;
  • UI: initial version of microdata UI;
  • oms: microdata must be enabled on the server to improve data security;
  • oms API: add microdata to model run request;
  • dbcopy: clean output folder by default, add new run option to keep it if required.

BREAKING change in db schema

There is a small, but breaking change in database schema in this release.

It does NOT affect you if all your models are in development:

  • remove existing model.sqlite files;
  • rebuild your model;
  • done.

It is applied to you only if openM++ models already deployed in production and you want to keep existing database(s).

If your production model version is 2022-09-23 (v1.11.1) or older then use upgrade scripts and instruction from current release, located in sql/upgrade_to_20230201/ folder.

If you are using model version 2022-12-10 (v1.12.0) or 2023-01-17 (v1.13.0) and do want to upgrade your database(s) then please contact us for further instructions.

model_streams no longer required in model code

In previous releases, models specified the maximum number of random number streams used in the model using code like the following in in ompp_framework.ompp:

namespace fmk {
 /**
 * Maximum number of random streams in the model (increase if insufficient)
 */
 const int model_streams = 400;
}

In this release, this code is no longer required and can be removed. If this code is retained, it will have no effect in this and subsequent OpenM++ releases. However, this code is required to build and run a model using previous OpenM++ releases.

The OpenM++ compiler now detects the maximum random stream used in model code. During build, an informational message like the following is written to the log:

Maximum random stream = 393

Local Random Streams

Model code can now optionally specify that the state of random number streams be maintained locally for each entity rather than shared among entities.

This can significantly reduce variance in run comparisons of models which simulate multiple instances of entities together, such as time-based models or case-based models with multiple entities in a case. It can also make run comparisons at the microdata level feasible for such models.

To see charts comparing the effect with and without local random streams in a highly interacting time-based model, see https://github.com/openmpp/openmpp.github.io/wiki/Local-Random-Streams#base-variant-coherence.

For more information on local random streams, see the wiki topic: https://github.com/openmpp/openmpp.github.io/wiki/Local-Random-Streams

Multilink size run-time warning

A run-time warning such as the following will be issued if a multilink exceeds 1,000 in size:

warning : A multilink has grown larger than 1000 - possible performance impact

A multilink holds the 'many' side of a one-to-many or a many-to-many link.
It is designed to be economical in memory but consequently some operations scale poorly if the size becomes large.
The resource_use option can be used to see the maximize size of each multilink in a model run.

Microdata must be enabled on the server to improve data security

By default model microdata are not visible in UI and not available through oms web-service API. In order to use it oms must be started with -oms.AllowMicrodata argument. For example:

oms -l localhost:4040 -oms.AllowMicrodata

dbcopy do clean output folder by default

Previous version of dbcopy utility did not clean existing output directory, For example:

dbcopy -m RiskPaths
dbcopy -m RiskPaths -dbcopy.To csv

Results of both commands above would be stored in the same output directory RiskPaths.

Current release of dbcopy does delete existing output directory by default to avoid mixing results of multiple commands. If you want to keep existing output directory then use -dbcopy.KeepOutputDir run option:

dbcopy -m RiskPaths -dbcopy.KeepOutputDir
dbcopy -m RiskPaths -dbcopy.KeepOutputDir -dbcopy.To csv

Known Issues

  1. MPI version of models (cluster and cloud version, not desktop) suffering from heap fragmentation and excessive memory consumption if microdata are written into database. We are planning to fix this problem in subsequent releases.

  2. There is no switch to English language button in UI, only to French. That issue would be fixed soon.

Download source code and binaries:

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.