In order to configure HPX, you can set a variety of options to allow cmake to generate your specific makefiles/project files.
The options are split into these categories:
Enable weaker (non-conforming) iterator requirements for parallel algorithms (default: OFF)
Enable old style ..._sync/..._async functions in API (default: OFF)
Use automatic serialization registration for actions and functions. This affects compatibility between HPX applications compiled with different compilers (default ON)
Directory to place batch scripts in
Enable support for boost::chrono (default: OFF)
Enable backwards compatibility for apply_colocated, async_colocated and friends
Enable compiler warnings (default: ON)
Enable backwards compatibility for component::get_gid() functions
Enable bzip2 compression for parcel data (default: OFF).
Enable snappy compression for parcel data (default: OFF).
Enable zlib compression for parcel data (default: OFF).
Enable CUDA support (default: OFF)
Use clang to compile CUDA code (default: OFF)
Enable the use of auto as a return value in some places. Overriding this flag is only necessary if the C++ compiler is not standard compliant, e.g. nvcc.
Enable data parallel algorithm support using the external Boost.SIMD library (default: OFF)
Enable data parallel algorithm support using the external Vc library (default: OFF)
Enable warnings for deprecated facilities. (default: ON)
Disables the mechanism that produces debug output for caught signals and unhandled exceptions (default: OFF)
Enable old execution policy names in API (default: ON)
Enable old (pre-concurrency TS) executor API (default: ON)
Enable or disable the compilation of Fortran examples using HPX
Build and link HPX libraries and executables with full RPATHs (default: ON)
Don't ignore version reported by gcc (default: ON)
Use Boost.Context as the underlying coroutines context switch implementation.
Enable the generic execution policy (default: OFF)
Enable hcc support (default: OFF)
Use -fvisibility=hidden for builds on platforms which support it (default ON)
Use Hwloc for hardware topology information and thread pinning. If disabled, performance might be reduced.
Enable old overloads for inclusive_scan (default: ON)
Enable backwards compatibility for hpx::lcos::local::dataflow() functions
Build HPX with logging enabled (default: ON).
Define which allocator should be linked in. Options are: system, tcmalloc, jemalloc, tbbmalloc, and custom (default is: tcmalloc)
Use native TLS support if available (default: ON)
Set HPX worker threads to have high NICE level (may impact performance) (default: OFF)
Enable the parcel coalescing plugin (default: ON).
Enable old style queue components in API (default: OFF)
Run hpx_main by default on all localities (default: OFF).
Enable stackoverflow detection for HPX threads/coroutines. (default: OFF, debug: ON)
Compile HPX statically linked libraries (Default: OFF)
Enable sycl support (default: OFF)
Use a compatibility implementation of std::thread, i.e. fall back to Boost.Thread (default: OFF)
Enable old overloads for transform_reduce and inner_product (default: ON)
Enable the deprecated unwrapped function (default: ON)
Generate HPX completion file for VIM YouCompleteMe plugin
The threshhold in bytes to when perform zero copy optimizations (default: 128)
Create build system support for compile time only HPX tests (default ON)
Associate the core HPX library with the default build target (default: ON).
Build the HPX documentation (default OFF).
The HPX documentation should be built as a single page HTML (default OFF).
Build the HPX examples (default ON)
Enable examples requiring HDF5 support (default: OFF).
Enable examples requiring OpenMP support (default: OFF).
Enable examples requiring Qt4 support (default: OFF).
Enable examples requiring QThreads support (default: OFF).
Enable examples requiring TBB support (default: OFF).
Build HPX runtime (default: ON)
Force creating pseudo targets and pseudo dependencies (default ON).
Build HPX runtime (default: ON)
Build the HPX tests (default ON)
Build HPX benchmark tests (default: ON)
Build external cmake build tests (default: ON)
Build HPX header tests (default: OFF)
Build HPX regression tests (default: ON)
Build HPX unit tests (default: ON)
Build HPX tools (default: OFF)
Maximum number of terminated threads collected before those are cleaned up (default: 100)
Disable internal IO thread pool, do not change if not absolutely necessary (default: ON)
HPX applications will not use more that this number of OS-Threads (default: 64)
HPX applications will be able to run on more than 64 cores (default: OFF)
Enable scheduler local storage for all HPX schedulers (default: OFF)
Enable spinlock deadlock detection (default: OFF)
Attach backtraces to HPX exceptions (default: ON)
Emulate SwapContext API for coroutines (default: OFF)
Thread stack back trace depth being captured (default: 5)
Enable thread stack back trace being captured on suspension (default: OFF)
Enable measuring thread creation and cleanup times (default: OFF)
Enable keeping track of cumulative thread counts in the schedulers (default: ON)
Enable measuring the percentage of overhead times spent in the scheduler (default: OFF)
Enable thread local storage for all HPX threads (default: OFF)
HPX scheduler threads are backing off on idle queues (default: ON)
Enable collecting queue wait times for threads (default: OFF)
Which thread schedulers are build. Options are: all, abp-priority, local, static-priority, static, hierarchy, and periodic-priority. For multiple enabled schedulers, separate with a semicolon (default: all)
Use mmap for stack allocation on appropriate platforms
Enable keeping track of counts of thread stealing incidents in the schedulers (default: ON)
Enable storing target address in thread for NUMA awareness (default: OFF)
Disable internal timer thread pool, do not change if not absolutely necessary (default: ON)
Enable support for networking and multi-node runs (default: ON)
Enable performance counters reporting parcelport statistics on a per-action basis.
Enable the libfabric based parcelport. This is currently an experimental feature
Enable the MPI based parcelport.
List of environment variables checked to detect MPI (default: MV2_COMM_WORLD_RANK;PMI_RANK;OMPI_COMM_WORLD_SIZE;ALPS_APP_PE).
Turn on MPI multithreading support (default: ON).
Enable the TCP based parcelport.
Enable the ibverbs based parcelport. This is currently an experimental feature
Enable profiling data for parcels
Break the debugger if a test has failed (default: OFF)
Enable thread debugging information (default: OFF, implicitly enabled in debug builds)
Use function address for thread description (default: OFF)
Enable thread guard page (default: ON)
Enable Valgrind instrumentation support.
Enable lock verification code (default: OFF, implicitly enabled in debug builds)
Enable thread stack back trace being captured on lock registration (to be used in combination with HPX_WITH_VERIFY_LOCKS=ON, default: OFF)
Enable global lock verification code (default: OFF, implicitly enabled in debug builds)
Here is a list of additional libraries and tools which are either optionally supported by the build system or are optionally required for certain examples or tests. These libraries and tools can be detected by the HPX build system.
Each of the tools or libraries listed here will be automatically detected
if they are installed in some standard location. If a tool or library
is installed in a different location you can specify its base directory
to the variable name as listed below. For instance, to configure a
custom directory for
Additional Tools and Libraries used by HPX
Specifies where to look for the Boost installation to be used for compiling HPX. Set this if CMake is not able to locate a suitable version of Boost. The directory specified here can be either the root of a installed Boost distribution or the directory where you unpacked and built Boost without installing it (with staged libraries).
Specifies where to look for the Portable Hardware Locality (HWLOC) library. While it is not necessary to compile HPX with HWLOC, we strongly suggest you do so. HWLOC provides platform independent support for extracting information about the used hardware architecture (number of cores, number of NUMA domains, hyperthreading, etc.). HPX utilizes this information if available.
Specifies where to look for the Performance Application Programming Interface (PAPI) library. The PAPI library is necessary to compile a special component exposing PAPI hardware events and counters as HPX performance counters. This is not available on the Windows platform.
Specifies where to look for one of the tools of the Intel Parallel
Studio(tm) product, either Intel Amplifier(tm) or Intel Inspector(tm).
This should be set if the CMake variable
is set to
Enabling ITT support in HPX will integrate
any application with the mentioned Intel tools, which customizes
the generated information for your application and improves the
Specifies where to look for the Networking
and Cryptography library (NaCl) library. The Sodium library
is necessary to enable the security related functionality (see
Additional Tools and Libraries Required by some of the Examples
Specifies where to look for the Hierarchical Data Format V5 (HDF5) include files and libraries.