Skip to content
Kevin Huck edited this page Jan 21, 2017 · 3 revisions

Building HPX with APEX support

As described on the instructions for building HPX on Cori, several CMake options are required to enable full support from APEX:

  • -DHPX_WITH_THREAD_IDLE_RATES=ON - this enables support for the idle rate counter in HPX, which can be captured by APEX and correlated with task performance.
  • -DHPX_WITH_APEX=TRUE - Enables APEX. Required for any amount of APEX support.
  • -DHPX_WITH_APEX_NO_UPDATE=TRUE - Prevents CMake from pulling the latest code from APEX, but builds what is currently in the hpx/apex directory. Useful for debugging/rebuilding only.
  • -DAPEX_WITH_ACTIVEHARMONY=TRUE - Enables Active Harmony support in APEX. Active Harmony is used for optimization searches in APEX policies (none of which are currently used with Octotiger)
  • -DACTIVEHARMONY_ROOT=${basedir}/${myarch}-build/contrib - Path to Active Harmony installation
  • -DAPEX_WITH_OTF2=TRUE - enables OTF2 trace collection support. OTF2 traces can be viewed in Vampir and some other trace analysis/visualization tools.
  • -DOTF2_ROOT=${basedir}/${myarch}-build/contrib - Path to OTF2 library installation.

Ways to disable APEX at runtime

If APEX is enabled at configuration time, but not wanted at runtime, it can be disabled completely by setting the APEX_DISABLE environment variable to a non-zero value (the default is 0). For example:

bash:$ export APEX_DISABLE=1
csh:% setenv APEX_DISABLE 1

If OTF2 tracing is enabled, but profile/screen output isn't needed, you can reduce APEX overhead by setting the APEX_PROCESS_ASYNC_STATE environment variable to a zero value (the default is 1). For example:

bash:$ export APEX_PROCESS_ASYNC_STATE=0
csh:% setenv APEX_PROCESS_ASYNC_STATE 0

Useful APEX features to enable

coming soon...