Version: 9.12.0
YACS Documentation


YACS is a tool to supervise execution of complex interconnected scientific applications on computer networks and clusters. Interconnected scientific applications can be seen as a collection of computational tasks that are executed in a known order.

In YACS such a kind of application is described by a calculation schema. A calculation schema can be defined with an XML syntax and is mainly a graph of nodes that refer to computational tasks or control structures. Nodes are connected by control and data flow links.


  • Build calculation schemas from XML files
  • Execute calculation schema (batch, step by step)
  • Can manage mainly Salome component nodes, inline python nodes but also to a lesser extent : C++ component nodes, XML component nodes


YACS is composed of several packages

  • Base classes : common base classes (threads,...) and constants
  • Engine : calculation schema generic classes (calculation nodes, control nodes, control and data flow links, ...)
  • SALOME Runtime : implementation of generic calculation nodes for Salome platform
  • XML file loader : XML reader for generic calculation schema
  • GUI design : Graphic User Interface design

A Python API is provided by wrapping with swig : Python wrapping


For building YACS, you need some prerequisites

  • g++ 4.1 or more (mandatory)
  • libxml2 (mandatory)
  • omniorb 4.1 or more (mandatory)
  • python 2.3 and + (mandatory)
  • swig 1.3.31 (mandatory)
  • cppunits (optional, for unit tests only)
  • Salome 4.1.x (optional)

If you want to install YACS for SALOME, you need to set environment variable: KERNEL_ROOT_DIR.

If you want to install YACS with SALOME GUI, you need to set environment variable: GUI_ROOT_DIR.

The building process is the traditional cmake/make/make install:

  • cmake -DCMAKE_INSTALL_PREFIX=path_to_install ../src_path
  • make

Then you can run unit tests if cppunits is installed :

  • make test

Then you can run a small demo in Demo directory:

  • cd Demo
  • make
  • launch the echoSrv server : ./echoSrv& (if the omniorb name server is not running you need to launch it : omniNames -start -logdir /tmp & should be enough)
  • run yacs supervisor with the schema.xml file : ../src/yacsloader/driver schema.xml

Finally you can install yacs:

  • make install
  • read the doc in doc directory
  • go to src/yacsloader/samples directory for XML examples


Many things but mainly:

  • add resource management features
  • add GUIs