Skip to content
Snippets Groups Projects
Select Git revision
  • 105-memory-leak-in-pm-message-envelope-handling
  • devel default
  • 107-compilation-error-when-building-maestro-core-on-m1-apple-processors
  • 108-implement-cpu-id-query-for-apple-m1-hardware
  • 58-scripting-interface-to-maestro-core
  • 101-need-ci-test-using-installed-maestro
  • 57-sphinx-documentation
  • 104-permit-disabling-memory-pool
  • 103-liberl-installation-issue-on-devel
  • 94-maestro-rdma-transport-ignores-max_msg_size-2
  • main protected
  • 102-possible-race-in-check_pm_redundant_interlock-test
  • 97-check-if-shm-provider-can-be-enabled-after-libfabric-1-14-is-in-our-tree-2
  • 100-include-maestro-attributes-h-cannot-include-mamba-header-from-deps-path
  • 97-check-if-shm-provider-can-be-enabled-after-libfabric-1-14-is-in-our-tree
  • 17-job-failed-282354-needs-update-of-mio-interface-and-build-rules
  • 96-test-libfabric-update-to-1-13-or-1-14
  • feature/stop-telemetry-after-all-left
  • 94-maestro-rdma-transport-ignores-max_msg_size
  • 93-improve-performance-of-mstro_attribute_val_cmp_str
  • v0.3_rc1
  • maestro_d65
  • d65_experiments_20211113
  • v0.2
  • v0.2_rc1
  • d3.3
  • d3.3-review
  • d5.5
  • d5.5-review
  • v0.1
  • d3.2
  • d3.2-draft
  • v0.0
33 results

attributes.md

Blame
  • Maestro Attribute Specification

    Introduction

    Each CDO in Maestro has an attribute table (a key-value store). Abstractly, attributes are associated to the CDO, but practially they belong to the CDO instance accessible to a Maestro application through the CDO handle it hold. In many cases the application will not notice this difference. However, the pool manager keeps a table of all CDO instances (and their physical locations) along with the instance specific attributes, but serves queries by taking the union over some core attributes (in particular, for layouts), and checks consistency for others.

    Attribute keys are strings, interpreteded in tree structure, with `.' (period) as separators. The root of the attribute key tree is the empty string, making '.' the starting character of any full-qualified key; that permits operations to use relative keys (which never start with a dot), that are interpreted relative to a (application-, not thread-local) default namespace.

    Attribute values are either elementary types (that directly map to programming-language elementary types, including integer, double, and blob), or simple aggregate types (arrays, lists, dictionaries) over these. The permissible values are defined in the schema definition below.

    We are using YAML for writing and printing attribute data. There is a built-in schema defining the core attributes, and users can add their own user-defined schemata. The union of all schemata defined at Maestro startup forms the basis of attribute handling (active attribute schema).1 All components of a Maestro workflow need to share the same active attribute schema.

    The legal syntax of Maestro schemata is a subset of the full YAML specification. Schemata are parsed at startup, but not validated. This is partially due to the lack of embeddable and performant YAML schema validators.

    Similarly, Maestro core will only use as much of the schema information as is necessary to correctly handle attribute values: it will not perform validation of user-specified attributes, but will rely on correctness of their type when handling them.

    YAML-Schema-Schema

    Maestro permits the following elementary data types. Our choice is guided by the following principles:

    • simplicity,

    • direct mapping to a protobuf datatype for serialization,

    • direct mapping to C and FORTRAN data types.


    Schema type protobuf type C type FORTRAN type

    The current schema definition is given in maestro-schema-schema.yaml in the maestro source tree. Any modification to the core schema or a user-defined schema should be validated against this definition. We are currently using yamale, a python-based schema validator. It can be installed simply by

     $ pip3 install yamale

    and used by

     $ cd attributes 
     
     $ yamale -s maestro-core-core.yaml --strict <your-schema>

    Built-in Schema

    The built-in schema is defined in maestro-core.yaml in the source tree. Developers should be aware that some of this schema may be built-in at compile time for efficiency, and specifying a modified schema at Maestro startup time may raise an error. If the core schema is changed, the Maestro core library should be rebuilt.

    User-defined Schemata

    Users can define their own schemata. A superficial example is given in user.yaml.

    1. There are currently no provisions for dynamically modifying the active schemata at runtime.