Added an example that demonstrates “How to accumulate results from multiple submissions of the same workflow”

When a gspc::workflow is submitted multiple times, then each submission is independent and a later submission does not include the output of an earlier submission. It is the responsibility of the application to accumulate results from multiple submissions of the same workflow.

Add modules with target and correct the xml schema

  • added new type for modules with user specified targets
  • allowed multiple occurrences only for this type of modules

Added the stochastic heureka example

Adds multiple stochastic algorithms examples using GPI-Space.

Added a demonstration of how to use priorities to resolve conflicts

The Petri net allows to assign “priorities” to transitions. Priorities are integral numbers from the range [0,2^16) and are used to resolve “conflicts”. A “conflict” describes the situation when two transitions t1 and t2 are both enabled but to fire one disables the other. This happens when transitions share input places.

If t1 and t2 have no priorities assigned or they have the same priority assigned, then GPI-Space randomly fires one of the conflicting transitions (and thereby disables the other one).

If, however, the transitions t1 and t2 have different priorities, then GPI-Space fires the transition with the higher priority.

Two examples are added:

  1. Return the sum of all inputs provided. This tests uses priorities to select between multiple enabled transitions: If there are two arguments provided, then all transitions are enabled and the sum has the highest priority. If there is one argument provided, then the priority is to take that argument. Only if there is no argument provided the value zero is returned.

  2. Combine priorities and conditions. Make sure the priorities are only relevant for transitions that are enabled. For that always provide inputs to all ports of all transitions. The transitions have overlapping conditions and are ordered by their priorities.

Emphasize that execute_and_kill_on_cancel requires to not do any output to standard streams

The function execute_and_kill_on_cancel has been renamed to execute_and_kill_on_cancel_DO_NOT_OUTPUT_TO_STANDARD_STREAMS_FROM_WITHIN in order to emphasize that property. Please adopt and make sure to not output to standard streams from within, or else the call will block and never return.

API CHANGE: fhg/util/parse is no longer installed

If those includes are required, then please write a message to gpispace-support@itwm.fraunhofer.de to receive a copy.

The fix prevents the loss of notifications for a (failing) job while a subscriber (client) not having completed the subscription process

Skip empty memory transfers if the user explicitly allows this

If the memory transfers have the attribute ‘allow-empty-ranges’ set on true the memory transfers that are empty are skipped, otherwise an error is triggered.

Updating the GPI-2 dependency to version 1.3.2

GPI-2 version 1.3.2 includes a hotfix addressing an mkdir: cannot create directory xyz: File exists error during installation.

Documentation Improvements

Restructuring and updating GPI-Space’s installation instructions based on user feedback. The released source code now also provides a CMake configuration file to ease the build process.

Fixes

  • we_expr_parser: value_too_big<unsigned long, float> PARSE ERROR for -1f has been fixed
  • Several issues with the sdpa_Preferences test have been resolved
  • A race condition causing sdpa_InvalidNbWorkersReq to segfault has been fixed
  • Fixed several version inconsistencies

Meta

  • Ubuntu 18.04, Ubuntu 20.04, and Centos 8 were added to the platforms GPI-Space is tested on
  • GPI-Space is now also tested using the Clang compiler
  • GPI-Space is now using C++14 features