Nanos++ versions
The Nanos++ package compiles several versions of the runtime which are useful for diferent purposes. When the Nanos++ runtime is installed, the versions are placed in the install directory and applications can be linked to these versions with the help of the mercurium compiler. In this post we show what each version provides and how to deal with them.
The different compilation versions versions are installed in the lib directory in the installation directory. By default, the package compiles three versions that are installed in the following paths:
- ${NANOX_HOME}/lib/performance
- ${NANOX_HOME}/lib/debug
- ${NANOX_HOME}/lib/instrumentation
The performance version is compiled with optimization flags and all internal checks and warning messages are disabled. All instrumentation code is also disabled in this version. To have instrumentation (e.g. to take traces with the extrae pliugin), use the instrumentation version. If you are developing a runtime feature or extension or need to debug the runtime, the debug version is compiled with no optimizations, debug information and debug messages enabled.
All three versions are always compiled and the tests are also executed for them all. For faster compilation and test execution, the compilation versions can be disabled individually at configuration time through the flag --disable-version where version is the name of the version to be disabled.
> ./configure --prefix=${NANOX_HOME} ... --disable-version
To debug the instrumentation features there is a fourth version, instrumentation-debug (${NANOX_HOME}/lib/instrumentation-debug), which is disabled by default. To enable it use the flag --enable-instrumentation-debug. This version is compiled as the debug version but with the instrumentation features enabled.
When using the runtime together with the mcxx compiler the performance version is linked by default. To link with other version the --version flag can be passed to the compiler (where version is the name of the version to link the application with). As an example, to compile a StarSs application using mercurium to get a paraver trace we would execute:
> sscc -omy_app my_app.c --instrumentation
And then run it with the extrae plugin enabled:
> NX_ARGS="--instrumentation=extrae" ./my_app
- Log in to post comments
Recent comments