This example is designed to be used as a template for creating FleCSI-based application codes, and is intended as the last example in the tutorial. As such, this example provides the following components:

  • A basic CMake build system.

  • A simple control model.

  • A standard FleCSI-based main function.

We discuss each of these individually. However, in general, to use this example as a template for a real application, you should just change all occurrances of standalone to whatever namespace name you would like to use for your project.

Build System

The build system uses standard CMake, and is entirely defined in CMakeLists.txt:

To prepare this file for your project, you should do the following:

  • Change standalone to the name of your project wherever it occurs.

  • Update and add source files to the project.

  • Add any dependencies.

For the most part, if you wish to extend this tutorial in any way, you will need a working knowledge of CMake. Documentation for CMake is here.

Control Model

The control model for this exmample is located in specialization/control.hh. This implementation is consistent with the examples in Topologies Tutorial.


Fig. 9 Control Model for Stand-Alone Application.

Main Function

The main function for this example is located in Unless you need to initialize additional runtimes that are not handled internally by FleCSI, you can likely use this file as-is (except for renaming occurances of standalone to something sensible).

Building the Stand-Alone Example

Build & Install FleCSI somewhere on your system, and make sure that the location is set in your CMAKE_PREFIX_PATH environement variable. Then, you can build this example like:

$ mkdir build
$ cd build
$ cmake ..
$ make