[Go to TAO Home Page]

Documentation for SIDL Interface Tools for TAO

Directory: src/sidl
Contents: SIDL interface tools for TAO

Subdirectories:


Dependencies:

In addition to standard TAO dependencies (PETSc, MPI), a distribution of Babel is required to use the SIDL interface. (Version 1.6 of TAO uses version 0.8.8 of Babel; other versions may or may not be compatible.)

To use the examples that employ the CCA reference framework, Ccaffeine version 0.4.3 should be used. Instructions for dowload can be found at cca-forum.org.


Building:

  1. In the bmake/packages/${PETSC_ARCH} file, specify the location of the Babel distribution, the Babel sh script, and the location of ccafe information if you wish to use Ccaffeine components.
  2. To build the Ccaffeine components, set the location of the cca-spec-classic, cca-spec-babel, and ccafe directories in the bmake/packages.${PETSC_ARCH} file.
  3. Compile TAO according to standard installation instructions. If PETSc is already installed, then you should only have to set the TAO_DIR environment variable and run 'make'.

Writing your own model implementation:

This can be done by writing your own SIDL file that declares a class implementing all of the methods in the Optimize.OptimizationModel interface (declared in the file Optimize.sidl; see Rosenbrock.sidl for an example. Run Babel on your SIDL file to create C++ client files for TAO to access, client files for whatever language your driver will employ, and server files for your implementation. (If the driver is also in C++, then it can use the same library that TAO uses.) For example, to build your model in F77 and use F77 in your driver program, use:

  %babel -cC++ -o{C++ client directory} -R$TAO_DIR/src/sidl/repositories/Optimize {your SIDL file}
  %babel -cF77 -o{F77 client directory} -R$TAO_DIR/src/sidl/repositories/Optimize {your SIDL file}
  %babel -sF77 -o{F77 server directory} -R$TAO_DIR/src/sidl/repositories/Optimize {your SIDL file}

The -R flag indicates the location TAO places the xml parsing of the Optimize.OptimizeModel interface.

Now you need to edit the files in the server directory with the '_Impl' endings -- you should not need to edit any other files -- to perform the desired implementations.

For examples, see Rosenbrock_RosenbrockModel_Impl.cc and Rosenbrock_RosenbrockModel_Impl.hh for a C++ implementation, or Rosenbrock_RosenbrockModel_Impl.f for a F77 implementation.

For references on implementing SIDL functions and accessing SIDL arrays, see the Babel documentation.

Next, the various client and server files must be compiled, and ideally built into shared libraries. Again, see the Babel documentation and RosenbrockModel examples.

Finally, you must compile your driver (see example drivers in C++, C, and F77) and link with the necessary client and server libraries, the TAO and PETSc libraries, and the Babel runtime library. (see example makefile).


Using Components

We have included five components that can be used the Ccaffeine (SIDL-enabled version) framework to run a sample program: Review the SIDL and source files for more information on the components:
If you have any questions at all, please feel free to email us at tao-comments@mcs.anl.gov.

[Go to TAO Home Page]