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.
The Dinamica Coordinator supports various parameters, which can be viewed by running the following commands:
Windows
c:\Program Files\Dinamica EGO 8\DinamicaCoordinator8 --help
Linux
./DinamicaEGO-810-Ubuntu-LTS.AppImage --coordinator --help
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.
The Dinamica Agent supports various parameters, which can be viewed by running the following commands:
Windows
c:\Program Files\Dinamica EGO 8\DinamicaAgent --help
Linux
./DinamicaEGO-810-Ubuntu-LTS.AppImage --agent --help
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.