Table of Contents

Description of Steereo

Introduction

Steereo is a framework for Computational Steering. With Steereo you should be able to make your existing simulation (provided that it is written in C/C++ or Fortran 90+) steerable. Please note, that this is an FRAMEWORK, not a complete Steering Environment.

Features

How does it work

A specific example can be found in the Howto. Here I will explain the mode of operation.
Usually we have a simulation and several clients. The simulation will be enhanced with an SimSteering instance which accepts the requests from the client, that will have an ClientSteering instance for connecting to a simulation, making requests and handling the responses.
The workflow seems simple enough - the client sends requests and the simulation side will execute them and send some response (at least the notification, that the request was handled), see figure 1 (left). However the requests aren't processed immediately in the simulation, but rather stored in a queue and executed at predefined points in the simulation (you have to determine when this queue should be processed in your code), see figure 2(right). So it is a soft real-time system, not a hard one.

Steering

Parallel Steering

At the moment parallel steering just works using only the root nodes (rank 0) of both simulation and client for communication (see figure below). Also not much support in the framework itself exists, so you have to adjust your commands in the way, that all data to be sent is collected at rank 0.
Parallel Steering 1
For parallel steering clients it is also possible to take advantage of the parallelity: every process (or small process groups) can directly steer a certain process partition of the simulation, as seen in the next figure.
Parallel Steering 2