Using Dinamica's Remote Execution Feature (version 8.1.0+)

Coordinator Setup

To configure the coordinator, navigate to a directory where you have write permissions and execute the following command:

Windows

c:\Program Files\Dinamica EGO 8\DinamicaCoordinator8 --address X.X.X.X --port YYYY

Linux

./DinamicaEGO-810-Ubuntu-LTS.AppImage --coordinator --address X.X.X.X --port YYYY

Replace X.X.X.X with the IP address of the machine that will serve as the coordinator, and YYYY with the port number where it will listen for incoming connections. This machine will act as the coordinator, responsible for managing and distributing tasks to connected agents.

Agent Setup

To configure an agent, navigate to a directory where you have write permissions and run:

Windows

c:\Program Files\Dinamica EGO 8\DinamicaAgent --address X.X.X.X --port YYYY

Linux

./DinamicaEGO-810-Ubuntu-LTS.AppImage --agent --address X.X.X.X --port YYYY

Here, X.X.X.X should be the IP address of the coordinator, and YYYY is the port number used by the coordinator to communicate with agents. The machine running this command will function as an agent, executing tasks assigned by the coordinator. You can deploy agents on multiple machines to expand the processing capacity. Agents can also be run on the same machine as the coordinator, but this is not recommended if the agent's tasks are computationally intensive.

Running Parts of a Model Remotely

To execute parts of a model remotely, access the Dinamica interface on the machine where the model is located. Navigate to `Tools -> Options | Execution | Remote Computing` and input the coordinator’s address and port number.

Once the remote settings are configured, you can run models containing the Run Remotely container. All operations intended for remote execution must be placed within this container, and you can then run the model as usual. The Run Remotely container ensures that the designated parts of the model are executed remotely.

"Run Remotely" Configuration and Features

Overriding Coordinator Settings

The Run Remotely container allows you to override the coordinator address and other options defined in the global configuration by using the container’s input ports. This feature provides flexibility, enabling you to adjust the coordinator and connection settings dynamically during runtime. It is particularly useful when working in environments with varying network configurations or when managing multiple distributed setups.

Using Multiple Coordinators

You can configure different instances of the Run Remotely container to connect to different coordinators. This allows different parts of a model to be distributed and processed by distinct coordinators and agents, which is especially beneficial for large-scale simulations or workloads that need to be split across multiple machines. By distributing the workload across different environments, you can optimize resource utilization and reduce processing time. Each section of the model communicates with its designated coordinator, allowing for granular control over distributed execution.

"Run Remotely" Limitations

You can pass most data types from functors outside the Run Remotely container to functors inside it. However, passing maps from outside to inside the Run Remotely container is not supported and will result in an error.

Data cannot be passed from functors inside the Run Remotely container to functors outside of it. Attempting to do so will generate an error.