Glossary

../_images/dragon_domain_model.svg

Fig. 4 UML diagram of the most important Dragon concepts and their relation. Open arrows are read as “is a”, diamond edges as “contains”, normal arrows are annotated

to attach

Synonym for bringing an object in Dragon managed memory into scope of the current process by deserializing a Serialized Descriptor and thus gaining access to the object.

Channel

Dragon’s communication primitive, which is implemented as a message queue in managed memory with a feature rich collection of events. Supports zero-copy for on Node transfer and arbitrary message sizes via side loading.

Directed Graph

A data structure made of knots and arrows that abstracts the control flow of a computer program in a general way. Directed Graphs are self-similar and can describe data movement across multiple systems and heterogeneous network environments, if they abstract a hardware description.

Distributed System

A Distributed System is a collection of Nodes connected by a homogeneous network - think cluster or supercomputer. Such a Distributed System has relaxed requirements regarding network security/encryption and possibly a performant interconnect.

Dragon Object

A Dragon Object is an abstraction of one or more System Resource into a programmable object. High level Dragon objects, such as the dragon.data.distdictionary.distributed_dict are composites of other Dragon Objects to provide convenient functionality to the programmer. Every Dragon Object can be represented by either Object Name, Object UID or Serialized Descriptor. The representation can be handed to other processes, who can in turn use the representation to gain access to the object and its functionality. See also the Dragon resource model.

Federated System

A Federated System is a collection of distributed systems connected by a heterogeneous network - think your laptop, a supercomputer and a cloud instance connected via the internet. Such a Federated System has strict requirements regarding network security/encryption and an unreliable interconnect with long latencies and possibly even packet loss.

Group of resources

A Group of resources is a primary resource component that consists of the same or different types of primary Dragon objects, such as processes, channels, memory pools and nodes. A Group can collectively manage its members.

Managed Object

We call a Dragon object managed, if the object can be discovered by Object Name or Object UID, i.e. the Dragon runtime services can be queried for an object’s Serialized Descriptor by any process or thread on a system.

Node

A Node is the smallest part of a system that can function on its own. We would refer to a laptop as a single Node. A Node is a System Resource in the Dragon model. Hence it is abstracted by the node Dragon Object in the Dragon Client API. The abstraction contains information such as the number of CPUs or GPUs.

Object Name

A unique string given to a Managed Object upon creation. Thus it is registered with the Dragon runtime. Managed processes may query the runtime with the Object Name to obtain the Serialized Descriptor and use/attach to the Managed Object.

Object UID

Same as Object Name, but using a 64-bit integer.

Policy

A data structure handed to APIs of the runtime that controls aspects of the interfaces and its objects.

Primary Object

Primary objects are Dragon objects in the Client API that are not composed of other Dragon objects, i.e. are irreducible. At present Dragon has four primary objects: managed memory, processes, channels and nodes. Each primary object abstracts a system resource: memory/disk, compute, network, node capabilities. See also the Dragon resource model.

Refcounted Object

A Refcounted Object is a Managed Object that is garbage collected by the Dragon runtime services. Dragon’s services will maintain a count of the number of references to the resource across processes. When the count drops to zero the resource will be cleaned up automatically. Reference counting of unmanaged objects is invalid, and such a request will return an error. See also Policies and dragonPolicy_t.

Serialized Descriptor

A small unique bytes-like object that allows a process to “attach” to a Dragon object created by another process. Serialized Descriptors can be encoded to appear as strings and be passed between processes via stdin. They are a fundamental property of Dragon’s managed memory implementation.

System Resource

A System Resource is a property of a system that is abstracted into a programmable Dragon Object by one or more of the Dragon APIs. The four fundamental system resources abstracted by Dragon in the Client API are: processes, shared memory, network connectivity and hardware nodes.

Transparency

We call a programming model transparent, when its objects can be used independently of process location on a Distributed System or Federated System. For a more precise definition see Arjona et al. 2022.

Unmanaged Object

We call a Dragon object unmanaged, if the user program cannot obtain the object’s Serialized Descriptor from the Dragon runtime services. Its life-cycle must be completely managed by user process(es), Unmanaged Objects are never refcounted. Processes can only gain access to the resource through explicit communication of a serialized descriptor of the resource.

Workflow

A Workflow is a program describing the movement and processing of data across a Federated System. Workflows can be conveniently abstracted by directed graphs. Dragon will enable workflow programming by providing a directed graph Dragon Object in the Dragon Native API.