Dragon Native

The following reference provides information about the Dragon Native API. It is Dragon’s top level API intended for users that require all supported programming languages or extended functionality. The API has bindings across Fortran, C, and C++ to the native Dragon run-time system. It is a cross-language API, so objects created in one language are usable across processes and languages by sharing their names or unique IDs. Dragon Native objects are available in mangaged and unmanaged version. As the naming suggests, unmanaged versions do not require the Dragon runtime to run, but may have limited functionality. In particular, they are not garbage collected and cannot be looked by name or uid.

Much of the API is inspired by Python Multiprocessing.

Reference by Language

Specification by Language

The following specification documents the intended API in C, C++ and Fortran. It is subject to change.

Architecture

../../_images/architecture.svg

Fig. 17 The Dragon native architecture

Dragon native components use the Dragon Global Services Client API to implement refcounted, managed, or unmanaged objects. Every object on the Native API is made up of the four base components of the Dragon GS Client API: processes, channels, (memory) pools and (hardware) nodes. The life-cycle of these objects is in-turn managed by Dragons runtime services.