HPX is a C++ Standard Library for Concurrency and Parallelism

HPX master branch build status HPX Code Quality Assessment HPX coverage report JOSS Paper about HPX Latest software release of HPX

Documentation: latest, development (master)

HPX

HPX is a C++ Standard Library for Concurrency and Parallelism. It implements all of the corresponding facilities as defined by the C++ Standard. Additionally, in HPX we implement functionalities proposed as part of the ongoing C++ standardization process. We also extend the C++ Standard APIs to the distributed case.

The goal of HPX is to create a high quality, freely available, open source implementation of a new programming model for conventional systems, such as classic Linux based Beowulf clusters or multi-socket highly parallel SMP nodes. At the same time, we want to have a very modular and well designed runtime system architecture which would allow us to port our implementation onto new computer system architectures. We want to use real-world applications to drive the development of the runtime system, coining out required functionalities and converging onto a stable API which will provide a smooth migration path for developers.

The API exposed by HPX is not only modeled after the interfaces defined by the C++11/14/17/20 ISO standard, it also adheres to the programming guidelines used by the Boost collection of C++ libraries. We aim to improve the scalability of today's applications and to expose new levels of parallelism which are necessary to take advantage of the exascale systems of the future.

What's so special about HPX?

  • HPX exposes a uniform, standards-oriented API for ease of programming parallel and distributed applications.
  • It enables programmers to write fully asynchronous code using hundreds of millions of threads.
  • HPX provides unified syntax and semantics for local and remote operations.
  • HPX makes concurrency manageable with dataflow and future based synchronization.
  • It implements a rich set of runtime services supporting a broad range of use cases.
  • HPX exposes a uniform, flexible, and extendable performance counter framework which can enable runtime adaptivity
  • It is designed to solve problems conventionally considered to be scaling-impaired.
  • HPX has been designed and developed for systems of any scale, from hand-held devices to very large scale systems.
  • It is the first fully functional implementation of the ParalleX execution model.
  • HPX is published under a liberal open-source license and has an open, active, and thriving developer community.

Governance

The HPX project is a meritocratic, consensus-based community project. Anyone with an interest in the project can join the community, contribute to the project design and participate in the decision making process. This document describes how that participation takes place and how to set about earning merit within the project community.

Documentation

If you plan to use HPX we suggest to start with the latest released version which can be downloaded here.

To quickly get started with HPX on most Linux distributions you can read the quick start guide here. Detailed instructions on building and installing HPX on various platforms can be found here. The full documentation for the latest release of HPX can always be found here.

If you would like to work with the cutting edge version of this repository (master branch) the documentation can be found here. We strongly recommend that you follow the current health status of the master branch by looking at our continuous integration results website. While we try to keep the master branch stable and usable, sometimes new bugs trick their way into the code base. The CircleCI continuous integration service additionally tracks the current build status for the master branch: HPX master branch build status.

We use Codacy to assess the code quality of this project: HPX Code Quality Assessment. For our coverage analysis we rely on Coveralls to present the results: HPX coverage report .

If you can't find what you are looking for in the documentation or you suspect you've found a bug in HPX we very much encourage and appreciate any issue reports through the issue tracker for this Github project.

If you have any questions feel free to ask it over at StackOverflow and tag the question with hpx.

For a full list of support options please see our Support page.

Code of conduct

We have adopted a code of conduct for this project. Please refer to this document if you would like to know more about the expectations for members of our community, with regard to how they will behave toward each other.

Please find the project's gpg key, which is used to sign HPX releases here.

Citing

In publications, please use our paper in The Journal of Open Source Software as the main citation for HPX: JOSS Paper about HPX . For referring to the latest release of HPX please use: Latest software release of HPX .

Acknowledgements

Past and current funding and support for HPX is listed here

Comments
  • The new LCI parcelport for HPX

    The new LCI parcelport for HPX

    About

    Add a new parcelport (LCI) for HPX. (Still a work in progress)

    Background

    The Lightweight Communication Interface (LCI) is designed to be a low-level communication library used by high-level libraries and frameworks. It aims to support irregular and asynchronous applications such as graph analysis, sparse linear algebra, and task-based runtime on modern parallel architectures. Major features include (a) support for more communication primitives such as two-sided send/recv and one-sided (dynamic or direct) remote put (b) better multi-threaded performance (c) explicit user control of communication resource (d) flexible signaling mechanisms such as synchronizer, completion queue, and active message handler. It is an ongoing research project (https://github.com/uiuc-hpc/LC).

    Checklist

    Completed

    • basic parcelport code development for a naive implementation.
    • basic cmake system support for LCI parcelport.
    • HPX_WITH_FETCH_LCI: cmake fetchcontent support for LCI parcelport
    • Jenkin test scripts (lsu cluster with infiniband) for LCI.

    Known Issues

    • HPX_WITH_FETCH_LCI does not work with HPX_WITH_PKGCONFIG=ON
  • Use bors for merging pull requests

    Use bors for merging pull requests

    Bors is meant to avoid this problem: https://bors.tech/essay/2017/02/02/pitch/, which happened (again) yesterday.

    This will not be very useful until CI actually passes reliably, but I'm starting by setting it up for a subset, i.e. one single GitHub action on Linux that builds and runs the examples (i.e. the current "Linux CI (Debug)" configuration). Eventually all CI should just report to bors, but I'm keeping it separate for now until we get some experience with how well this works.

  • Adapt min_element, max_element and minmax_element to C++20

    Adapt min_element, max_element and minmax_element to C++20

    Adapts min_element, max_element and minmax_element to C++20. Adds min_max_result result type Add segmented algorithm tests for min_element, max_element and minmax_element

    Any background context you want to provide?

    https://github.com/STEllAR-GROUP/hpx/issues/4822 https://github.com/STEllAR-GROUP/hpx/issues/5156

  • MPI Backend Trouble

    MPI Backend Trouble

    Expected Behavior

    Given a system with a single clean OpenMPI installation an mpi hello world program finds a given Comm_size and Comm_rank. (for example 0/2 and 1/2 for mpirun -np 2)

    We now compile HPX with MPI_Parcelport=ON with this same OpenMPI installation. Then an HPX application run with mpirun -np 2 should find those same ranks and sizes as hpx::get_locality_id() and hpx::find_all_localities().size().

    Actual Behavior

    All hpx::find_all_localities() method calls return vectors with size 1, no communication between localities is possile.

    Steps to Reproduce the Problem

    A docker container containing a minimal HPX hello world setup is available at docker://kilianwerner/hpxminimal

    The used docker folder including all source and configuration is available at https://github.com/KilianWerner/HPXMinimalDocker

    Running on any host with singularity and openmpi version 4.0.1 the following commands

    sudo singularity build min.sif docker://kilianwerner/hpxminimal mpirun -np 2 singularity exec min.sif /opt/mpitest

    result in output: Hello, I am rank 1/2Hello, I am rank 0/2

    However mpirun -np 2 singularity exec min.sif /home/myUser/MinimalExample/build/hpxmin

    results in output:

    Localities: 1Threads: 4Localities: 1Threads: 4

    Specifications

    • HPX Version: 1.3.0
    • Platform (compiler, OS): ubuntu:disco
    • OpenMPI Version: 4.0.1

    Comments:

    Our work group often stumbles into the problem that hpx::find_all_localities().size() = 1 regardless of the mpi backend situation. Most of the times this is "solved" by changing to older versions of hpx, openmpi, use other mpi implementations (like intel mpi) and just generally swap things around until hpx localities find each other.

    As we are now trying to get a robust common solution working in a docker container, we face the problem again and need hpx to behave consistent with raw mpi applications in a robust manner.

  • exclusive_scan is faster in sequential than parallel

    exclusive_scan is faster in sequential than parallel

    Expected Behavior

    Parallel should be slower than sequential for small data sizes, then faster after some crossover point.

    Actual Behavior

    Parallel is consistently slower than sequential for data sizes from 10 to 10000000

    Steps to Reproduce the Problem

    Compile and run the attached code with Google Benchmark.

    Specifications

    gbench hardware report:

    Run on (8 X 3800 MHz CPU s)
    CPU Caches:
      L1 Data 32K (x4)
      L1 Instruction 32K (x4)
      L2 Unified 256K (x4)
      L3 Unified 6144K (x1)
    
    • HPX Version: 1.2.1
    • Platform (compiler, OS): gcc 8.2.0, Ubuntu 18.10

    Benchmark results:

    -----------------------------------------------------------
    Benchmark                    Time           CPU Iterations
    -----------------------------------------------------------
    Sequential/10                4 ns          4 ns  151589055
    Sequential/64               27 ns         27 ns   26228755
    Sequential/512             215 ns        215 ns    3314081
    Sequential/4096           1719 ns       1719 ns     426286
    Sequential/32768         13536 ns      13535 ns      50881
    Sequential/262144       111051 ns     111045 ns       4988
    Sequential/2097152     1108953 ns    1108894 ns        652
    Sequential/10000000    5183736 ns    5183256 ns        131
    Parallel/10              60798 ns    2172331 ns       3530
    Parallel/64             149103 ns     172653 ns      10000
    Parallel/512            151103 ns     312761 ns       1841
    Parallel/4096           130873 ns 7155866560 ns          1
    Parallel/32768          158808 ns     151704 ns       5030
    Parallel/262144         227019 ns     161383 ns       3287
    Parallel/2097152       1642302 ns 7508294482 ns          1
    Parallel/10000000      7278212 ns    7715326 ns        182
    
  • Cuda futures

    Cuda futures

    This moves the most basic support for cuda stream handling and setting of futures into a small library called cuda_support.

    To enable this library, one must use HPX_WITH_CUDA_SUPPORT=ON and it will work even when HPX_WITH_CUDA=OFF

    The motivation for this is to allow applications that use cuda, but do not need any hpx:: algorithms making use of cuda, and the user has provided their own kernels for all device code.

    This permits the connecting of user kernels via futures obtained from hpx::cuda::to arbitrary hpx code.

    I would like to go further and rename the main HPX_WITH_CUDA to HPX_WITH_CUDA_COMPUTE to force the user to choose between basic support and full hpx algorithms in cuda.

    This PR includes #4380

  • {what}: mmap() failed to allocate thread stack: HPX(unhandled_exception)

    {what}: mmap() failed to allocate thread stack: HPX(unhandled_exception)

    Expected Behavior

    "Hello World!"

    Actual Behavior

    [email protected]:~/IBJts/l337/build $ cmake -DCMAKE_PREFIX_PATH=~/SDKs/hpx/build .. -- The CXX compiler identification is AppleClang 13.1.6.13160021 -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Check for working CXX compiler: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ - skipped -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Asio: /opt/homebrew/include (found suitable version "1.22.1", minimum required is "1.12.0") -- Using system allocator. -- Looking for C++ include pthread.h -- Looking for C++ include pthread.h - found -- Performing Test CMAKE_HAVE_LIBC_PTHREAD -- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success -- Found Threads: TRUE
    -- Found Boost: /opt/homebrew/include (found suitable version "1.78.0", minimum required is "1.71")
    -- Found Boost: /opt/homebrew/include (found suitable version "1.78.0", minimum required is "1.71") found components: context thread chrono atomic -- Found Boost: /opt/homebrew/include (found suitable version "1.78.0", minimum required is "1.71") found components: filesystem -- Found Hwloc: /opt/homebrew/lib/libhwloc.dylib
    -- Found MPI_CXX: /opt/homebrew/Cellar/open-mpi/4.1.4/lib/libmpi.dylib (found version "3.1") -- Found MPI: TRUE (found version "3.1")
    -- MPI version: -- Configuring done -- Generating done -- Build files have been written to: /Users/asset-overflow/IBJts/l337/build [email protected]:~/IBJts/l337/build $ make all
    [ 50%] Building CXX object CMakeFiles/l337.dir/main.cpp.o [100%] Linking CXX executable l337 [100%] Built target l337 [email protected]:~/IBJts/l337/build $ ./l337

    {config}: Core library: HPX_AGAS_LOCAL_CACHE_SIZE=4096 HPX_HAVE_MALLOC=system HPX_PARCEL_MAX_CONNECTIONS=512 HPX_PARCEL_MAX_CONNECTIONS_PER_LOCALITY=4 HPX_PREFIX (configured)= HPX_PREFIX=

    HPX_FILESYSTEM_WITH_BOOST_FILESYSTEM_COMPATIBILITY=OFF HPX_ITERATOR_SUPPORT_WITH_BOOST_ITERATOR_TRAVERSAL_TAG_COMPATIBILITY=OFF HPX_WITH_AGAS_DUMP_REFCNT_ENTRIES=OFF HPX_WITH_APEX=ON HPX_WITH_APEX_NO_UPDATE=OFF HPX_WITH_ASYNC_MPI=OFF HPX_WITH_ATTACH_DEBUGGER_ON_TEST_FAILURE=OFF HPX_WITH_AUTOMATIC_SERIALIZATION_REGISTRATION=ON HPX_WITH_COROUTINE_COUNTERS=OFF HPX_WITH_DISTRIBUTED_RUNTIME=ON HPX_WITH_DYNAMIC_HPX_MAIN=ON HPX_WITH_GENERIC_CONTEXT_COROUTINES=ON HPX_WITH_GOOGLE_PERFTOOLS=OFF HPX_WITH_IO_POOL=ON HPX_WITH_ITTNOTIFY=OFF HPX_WITH_LOGGING=ON HPX_WITH_NETWORKING=ON HPX_WITH_PAPI=OFF HPX_WITH_PARALLEL_TESTS_BIND_NONE=OFF HPX_WITH_PARCELPORT_ACTION_COUNTERS=OFF HPX_WITH_PARCELPORT_LIBFABRIC=OFF HPX_WITH_PARCELPORT_MPI=ON HPX_WITH_PARCELPORT_MPI_MULTITHREADED=ON HPX_WITH_PARCELPORT_TCP=ON HPX_WITH_PARCEL_COALESCING=ON HPX_WITH_PARCEL_PROFILING=ON HPX_WITH_SANITIZERS=OFF HPX_WITH_SCHEDULER_LOCAL_STORAGE=OFF HPX_WITH_SPINLOCK_DEADLOCK_DETECTION=OFF HPX_WITH_STACKTRACES=ON HPX_WITH_TESTS_DEBUG_LOG=OFF HPX_WITH_THREAD_BACKTRACE_ON_SUSPENSION=OFF HPX_WITH_THREAD_CREATION_AND_CLEANUP_RATES=OFF HPX_WITH_THREAD_CUMULATIVE_COUNTS=ON HPX_WITH_THREAD_DEBUG_INFO=OFF HPX_WITH_THREAD_DESCRIPTION_FULL=OFF HPX_WITH_THREAD_GUARD_PAGE=ON HPX_WITH_THREAD_IDLE_RATES=OFF HPX_WITH_THREAD_LOCAL_STORAGE=OFF HPX_WITH_THREAD_MANAGER_IDLE_BACKOFF=ON HPX_WITH_THREAD_QUEUE_WAITTIME=OFF HPX_WITH_THREAD_STACK_MMAP=ON HPX_WITH_THREAD_STEALING_COUNTS=OFF HPX_WITH_THREAD_TARGET_ADDRESS=OFF HPX_WITH_TIMER_POOL=ON HPX_WITH_TUPLE_RVALUE_SWAP=ON HPX_WITH_VALGRIND=OFF HPX_WITH_VERIFY_LOCKS=OFF HPX_WITH_VERIFY_LOCKS_BACKTRACE=OFF HPX_WITH_VERIFY_LOCKS_GLOBALLY=OFF

    Module coroutines: HPX_COROUTINES_WITH_SWAP_CONTEXT_EMULATION=OFF

    Module datastructures: HPX_DATASTRUCTURES_WITH_ADAPT_STD_TUPLE=ON

    Module serialization: HPX_SERIALIZATION_WITH_ALL_TYPES_ARE_BITWISE_SERIALIZABLE=OFF HPX_SERIALIZATION_WITH_BOOST_TYPES=ON

    Module topology: HPX_TOPOLOGY_WITH_ADDITIONAL_HWLOC_TESTING=OFF

    {version}: V1.7.1 (AGAS: V3.0), Git: 3fe2356ff5 {boost}: V1.78.0 {build-type}: release {date}: Jun 13 2022 22:50:09 {platform}: Mac OS {compiler}: Clang version 13.1.6 (clang-1316.0.21.2.5) {stdlib}: libc++ version 13000 {os-thread}: worker-thread#0 {what}: mmap() failed to allocate thread stack: HPX(unhandled_exception)

    Steps to Reproduce the Problem

    ... Please be as specific as possible while describing how to reproduce your problem.

    1.follow the exact instructions on the quickstart section of documentation webpage 2.build from source with cmake build instructions as follows:

    cmake -DCMAKE_INSTALL_PREFIX=. -DHPX_WITH_CXX_STANDARD=20 -DHPX_WITH_GENERIC_CONTEXT_COROUTINES=ON -DHPX_WITH_PARCELPORT_MPI=ON -DHPX_WITH_APEX=ON ..

    then, per website instruction:

    cmake --build . --target install

    3.create hello world following all instructions (changing each of the "my_hpx_project" to "l337")

    hpx source code was saved to a folder in my home directory as follows under :

    ~/SDKs/hpx

    Specifications

    ... Please describe your environment

    • HPX Version: 1.7.1
    • Platform (compiler, OS): MacOS - Arm64 16gbRAM M1 chip 1TB storage, compiler = Clang version 13.1.6 (clang-1316.0.21.2.5)
  • Windows 10 x64, VS 2015 - Unknown CMake command

    Windows 10 x64, VS 2015 - Unknown CMake command "add_hpx_pseudo_target".

    Hi,

    I've followed the tutorial on building under Win64 but still receive the error regarding add_hpx_pseudo_target. Before posting here I've searched through the older entries and could find a few similar errors from the past but they were Linux-only.

    What's even more surprising is that the generated log-file shows no errors. :hushed:

    These are my CMake settings

    cmake

    This is the generated CMakeOutput.log

    The system is: Windows - 6.2 - AMD64
    Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
    Compiler:  
    Build flags: 
    Id flags: 
    
    The output was:
    0
    Microsoft (R) Build Engine version 14.0.23107.0
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    Build started 12.08.2015 21:16:37.
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\3.3.0\CompilerIdC\CompilerIdC.vcxproj" on node 1 (default targets).
    PrepareForBuild:
      Creating directory "Debug\".
      Creating directory "Debug\CompilerIdC.tlog\".
    InitializeBuildStatus:
      Creating "Debug\CompilerIdC.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    ClCompile:
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TC /errorReport:queue CMakeCCompilerId.c
      CMakeCCompilerId.c
    Link:
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdC.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdC.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdC.lib" /MACHINE:X64 Debug\CMakeCCompilerId.obj
      CompilerIdC.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\3.3.0\CompilerIdC\.\CompilerIdC.exe
    PostBuildEvent:
      for %%i in (cl.exe) do @echo CMAKE_C_COMPILER=%%~$PATH:i
      :VCEnd
      CMAKE_C_COMPILER=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\cl.exe
    FinalizeBuildStatus:
      Deleting file "Debug\CompilerIdC.tlog\unsuccessfulbuild".
      Touching "Debug\CompilerIdC.tlog\CompilerIdC.lastbuildstate".
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\3.3.0\CompilerIdC\CompilerIdC.vcxproj" (default targets).
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:01.80
    
    
    Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CompilerIdC.exe"
    
    Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "CompilerIdC.vcxproj"
    
    The C compiler identification is MSVC, found in "C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/3.3.0/CompilerIdC/CompilerIdC.exe"
    
    Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
    Compiler:  
    Build flags: 
    Id flags: 
    
    The output was:
    0
    Microsoft (R) Build Engine version 14.0.23107.0
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    Build started 12.08.2015 21:16:40.
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\3.3.0\CompilerIdCXX\CompilerIdCXX.vcxproj" on node 1 (default targets).
    PrepareForBuild:
      Creating directory "Debug\".
      Creating directory "Debug\CompilerIdCXX.tlog\".
    InitializeBuildStatus:
      Creating "Debug\CompilerIdCXX.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    ClCompile:
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /nologo /W0 /WX- /Od /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"Debug\\" /Fd"Debug\vc140.pdb" /Gd /TP /errorReport:queue CMakeCXXCompilerId.cpp
      CMakeCXXCompilerId.cpp
    Link:
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:".\CompilerIdCXX.exe" /INCREMENTAL:NO /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /PDB:".\CompilerIdCXX.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:".\CompilerIdCXX.lib" /MACHINE:X64 Debug\CMakeCXXCompilerId.obj
      CompilerIdCXX.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\3.3.0\CompilerIdCXX\.\CompilerIdCXX.exe
    PostBuildEvent:
      for %%i in (cl.exe) do @echo CMAKE_CXX_COMPILER=%%~$PATH:i
      :VCEnd
      CMAKE_CXX_COMPILER=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\cl.exe
    FinalizeBuildStatus:
      Deleting file "Debug\CompilerIdCXX.tlog\unsuccessfulbuild".
      Touching "Debug\CompilerIdCXX.tlog\CompilerIdCXX.lastbuildstate".
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\3.3.0\CompilerIdCXX\CompilerIdCXX.vcxproj" (default targets).
    
    Build succeeded.
        0 Warning(s)
        0 Error(s)
    
    Time Elapsed 00:00:01.82
    
    
    Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CompilerIdCXX.exe"
    
    Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "CompilerIdCXX.vcxproj"
    
    The CXX compiler identification is MSVC, found in "C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/3.3.0/CompilerIdCXX/CompilerIdCXX.exe"
    
    Determining if the C compiler works passed with the following output:
    Change Dir: C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp
    
    Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe" "cmTC_b8ad5.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
    Microsoft (R) Build Engine version 14.0.23107.0
    
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    
    
    Build started 12.08.2015 21:16:43.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_b8ad5.vcxproj" on node 1 (default targets).
    
    PrepareForBuild:
    
      Creating directory "cmTC_b8ad5.dir\Debug\".
    
      Creating directory "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\".
    
      Creating directory "cmTC_b8ad5.dir\Debug\cmTC_b8ad5.tlog\".
    
    InitializeBuildStatus:
    
      Creating "cmTC_b8ad5.dir\Debug\cmTC_b8ad5.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    
    ClCompile:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_b8ad5.dir\Debug\\" /Fd"cmTC_b8ad5.dir\Debug\vc140.pdb" /Gd /TC /errorReport:queue C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\testCCompiler.c
    
      Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x64
    
      Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    
      cl /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_b8ad5.dir\Debug\\" /Fd"cmTC_b8ad5.dir\Debug\vc140.pdb" /Gd /TC /errorReport:queue C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\testCCompiler.c
    
    
    
      testCCompiler.c
    
    Link:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_b8ad5.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_b8ad5.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_b8ad5.lib" /MACHINE:X64  /machine:x64 /debug cmTC_b8ad5.dir\Debug\testCCompiler.obj
    
      cmTC_b8ad5.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_b8ad5.exe
    
    FinalizeBuildStatus:
    
      Deleting file "cmTC_b8ad5.dir\Debug\cmTC_b8ad5.tlog\unsuccessfulbuild".
    
      Touching "cmTC_b8ad5.dir\Debug\cmTC_b8ad5.tlog\cmTC_b8ad5.lastbuildstate".
    
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_b8ad5.vcxproj" (default targets).
    
    
    
    Build succeeded.
    
        0 Warning(s)
    
        0 Error(s)
    
    
    
    Time Elapsed 00:00:02.07
    
    
    
    Detecting C compiler ABI info compiled with the following output:
    Change Dir: C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp
    
    Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe" "cmTC_c7576.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
    Microsoft (R) Build Engine version 14.0.23107.0
    
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    
    
    Build started 12.08.2015 21:16:46.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_c7576.vcxproj" on node 1 (default targets).
    
    PrepareForBuild:
    
      Creating directory "cmTC_c7576.dir\Debug\".
    
      Creating directory "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\".
    
      Creating directory "cmTC_c7576.dir\Debug\cmTC_c7576.tlog\".
    
    InitializeBuildStatus:
    
      Creating "cmTC_c7576.dir\Debug\cmTC_c7576.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    
    ClCompile:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_c7576.dir\Debug\\" /Fd"cmTC_c7576.dir\Debug\vc140.pdb" /Gd /TC /errorReport:queue "C:\bin\CMake\share\cmake-3.3\Modules\CMakeCCompilerABI.c"
    
      Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x64
    
      Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    
      cl /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Fo"cmTC_c7576.dir\Debug\\" /Fd"cmTC_c7576.dir\Debug\vc140.pdb" /Gd /TC /errorReport:queue "C:\bin\CMake\share\cmake-3.3\Modules\CMakeCCompilerABI.c"
    
    
    
      CMakeCCompilerABI.c
    
    Link:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_c7576.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_c7576.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_c7576.lib" /MACHINE:X64  /machine:x64 /debug cmTC_c7576.dir\Debug\CMakeCCompilerABI.obj
    
      cmTC_c7576.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_c7576.exe
    
    FinalizeBuildStatus:
    
      Deleting file "cmTC_c7576.dir\Debug\cmTC_c7576.tlog\unsuccessfulbuild".
    
      Touching "cmTC_c7576.dir\Debug\cmTC_c7576.tlog\cmTC_c7576.lastbuildstate".
    
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_c7576.vcxproj" (default targets).
    
    
    
    Build succeeded.
    
        0 Warning(s)
    
        0 Error(s)
    
    
    
    Time Elapsed 00:00:01.71
    
    
    
    Determining if the CXX compiler works passed with the following output:
    Change Dir: C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp
    
    Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe" "cmTC_3128c.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
    Microsoft (R) Build Engine version 14.0.23107.0
    
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    
    
    Build started 12.08.2015 21:16:49.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_3128c.vcxproj" on node 1 (default targets).
    
    PrepareForBuild:
    
      Creating directory "cmTC_3128c.dir\Debug\".
    
      Creating directory "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\".
    
      Creating directory "cmTC_3128c.dir\Debug\cmTC_3128c.tlog\".
    
    InitializeBuildStatus:
    
      Creating "cmTC_3128c.dir\Debug\cmTC_3128c.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    
    ClCompile:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_3128c.dir\Debug\\" /Fd"cmTC_3128c.dir\Debug\vc140.pdb" /Gd /TP /errorReport:queue C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\testCXXCompiler.cxx
    
      Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x64
    
      Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    
      cl /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_3128c.dir\Debug\\" /Fd"cmTC_3128c.dir\Debug\vc140.pdb" /Gd /TP /errorReport:queue C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\testCXXCompiler.cxx
    
    
    
      testCXXCompiler.cxx
    
    Link:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_3128c.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_3128c.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_3128c.lib" /MACHINE:X64  /machine:x64 /debug cmTC_3128c.dir\Debug\testCXXCompiler.obj
    
      cmTC_3128c.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_3128c.exe
    
    FinalizeBuildStatus:
    
      Deleting file "cmTC_3128c.dir\Debug\cmTC_3128c.tlog\unsuccessfulbuild".
    
      Touching "cmTC_3128c.dir\Debug\cmTC_3128c.tlog\cmTC_3128c.lastbuildstate".
    
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_3128c.vcxproj" (default targets).
    
    
    
    Build succeeded.
    
        0 Warning(s)
    
        0 Error(s)
    
    
    
    Time Elapsed 00:00:01.89
    
    
    
    Detecting CXX compiler ABI info compiled with the following output:
    Change Dir: C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp
    
    Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe" "cmTC_f3834.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
    Microsoft (R) Build Engine version 14.0.23107.0
    
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    
    
    Build started 12.08.2015 21:16:52.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_f3834.vcxproj" on node 1 (default targets).
    
    PrepareForBuild:
    
      Creating directory "cmTC_f3834.dir\Debug\".
    
      Creating directory "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\".
    
      Creating directory "cmTC_f3834.dir\Debug\cmTC_f3834.tlog\".
    
    InitializeBuildStatus:
    
      Creating "cmTC_f3834.dir\Debug\cmTC_f3834.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    
    ClCompile:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_f3834.dir\Debug\\" /Fd"cmTC_f3834.dir\Debug\vc140.pdb" /Gd /TP /errorReport:queue "C:\bin\CMake\share\cmake-3.3\Modules\CMakeCXXCompilerABI.cpp"
    
      Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x64
    
      Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    
      cl /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_f3834.dir\Debug\\" /Fd"cmTC_f3834.dir\Debug\vc140.pdb" /Gd /TP /errorReport:queue "C:\bin\CMake\share\cmake-3.3\Modules\CMakeCXXCompilerABI.cpp"
    
    
    
      CMakeCXXCompilerABI.cpp
    
    Link:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_f3834.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_f3834.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_f3834.lib" /MACHINE:X64  /machine:x64 /debug cmTC_f3834.dir\Debug\CMakeCXXCompilerABI.obj
    
      cmTC_f3834.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_f3834.exe
    
    FinalizeBuildStatus:
    
      Deleting file "cmTC_f3834.dir\Debug\cmTC_f3834.tlog\unsuccessfulbuild".
    
      Touching "cmTC_f3834.dir\Debug\cmTC_f3834.tlog\cmTC_f3834.lastbuildstate".
    
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_f3834.vcxproj" (default targets).
    
    
    
    Build succeeded.
    
        0 Warning(s)
    
        0 Error(s)
    
    
    
    Time Elapsed 00:00:01.92
    
    
    
    
    
    Detecting CXX [] compiler features compiled with the following output:
    Change Dir: C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp
    
    Run Build Command:"C:/Program Files (x86)/MSBuild/14.0/bin/MSBuild.exe" "cmTC_16dcf.vcxproj" "/p:Configuration=Debug" "/p:VisualStudioVersion=14.0"
    Microsoft (R) Build Engine version 14.0.23107.0
    
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    
    
    Build started 12.08.2015 21:16:56.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (68,11)" does not exist in the project, and will be ignored.
    
    The target "_GeneratePrisForPortableLibraries" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.Net.CoreRuntime.targets (177,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (126,11)" does not exist in the project, and will be ignored.
    
    The target "AfterGenerateAppxManifest" listed in an AfterTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\.NetNative\Microsoft.NetNative.targets (174,11)" does not exist in the project, and will be ignored.
    
    The target "BeforeGenerateProjectPriFile" listed in a BeforeTargets attribute at "C:\Program Files (x86)\MSBuild\Microsoft\NuGet\Microsoft.NuGet.targets (149,61)" does not exist in the project, and will be ignored.
    
    Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_16dcf.vcxproj" on node 1 (default targets).
    
    PrepareForBuild:
    
      Creating directory "cmTC_16dcf.dir\Debug\".
    
      Creating directory "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\".
    
      Creating directory "cmTC_16dcf.dir\Debug\cmTC_16dcf.tlog\".
    
    InitializeBuildStatus:
    
      Creating "cmTC_16dcf.dir\Debug\cmTC_16dcf.tlog\unsuccessfulbuild" because "AlwaysCreate" was specified.
    
    ClCompile:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\CL.exe /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_16dcf.dir\Debug\\" /Fd"cmTC_16dcf.dir\Debug\vc140.pdb" /Gd /TP /errorReport:queue C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\feature_tests.cxx
    
      Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23026 for x64
    
      Copyright (C) Microsoft Corporation.  All rights reserved.
    
    
    
      cl /c /Zi /W3 /WX- /Od /Ob0 /D WIN32 /D _WINDOWS /D _DEBUG /D "CMAKE_INTDIR=\"Debug\"" /D _MBCS /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /GR /Fo"cmTC_16dcf.dir\Debug\\" /Fd"cmTC_16dcf.dir\Debug\vc140.pdb" /Gd /TP /errorReport:queue C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\feature_tests.cxx
    
    
    
      feature_tests.cxx
    
    Link:
    
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\x86_amd64\link.exe /ERRORREPORT:QUEUE /OUT:"C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_16dcf.exe" /INCREMENTAL /NOLOGO kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib /MANIFEST /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /manifest:embed /Debug /PDB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_16dcf.pdb" /SUBSYSTEM:CONSOLE /TLBID:1 /DYNAMICBASE /NXCOMPAT /IMPLIB:"C:/Users/Harris/Documents/GitHub/hpx/build/CMakeFiles/CMakeTmp/Debug/cmTC_16dcf.lib" /MACHINE:X64  /machine:x64 /debug cmTC_16dcf.dir\Debug\feature_tests.obj
    
      cmTC_16dcf.vcxproj -> C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\Debug\cmTC_16dcf.exe
    
    FinalizeBuildStatus:
    
      Deleting file "cmTC_16dcf.dir\Debug\cmTC_16dcf.tlog\unsuccessfulbuild".
    
      Touching "cmTC_16dcf.dir\Debug\cmTC_16dcf.tlog\cmTC_16dcf.lastbuildstate".
    
    Done Building Project "C:\Users\Harris\Documents\GitHub\hpx\build\CMakeFiles\CMakeTmp\cmTC_16dcf.vcxproj" (default targets).
    
    
    
    Build succeeded.
    
        0 Warning(s)
    
        0 Error(s)
    
    
    
    Time Elapsed 00:00:01.81
    
    
    
        Feature record: CXX_FEATURE:1cxx_alias_templates
        Feature record: CXX_FEATURE:1cxx_alignas
        Feature record: CXX_FEATURE:1cxx_alignof
        Feature record: CXX_FEATURE:1cxx_attributes
        Feature record: CXX_FEATURE:1cxx_attribute_deprecated
        Feature record: CXX_FEATURE:1cxx_auto_type
        Feature record: CXX_FEATURE:1cxx_binary_literals
        Feature record: CXX_FEATURE:1cxx_constexpr
        Feature record: CXX_FEATURE:1cxx_contextual_conversions
        Feature record: CXX_FEATURE:1cxx_decltype
        Feature record: CXX_FEATURE:1cxx_decltype_auto
        Feature record: CXX_FEATURE:1cxx_default_function_template_args
        Feature record: CXX_FEATURE:1cxx_defaulted_functions
        Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
        Feature record: CXX_FEATURE:1cxx_delegating_constructors
        Feature record: CXX_FEATURE:1cxx_deleted_functions
        Feature record: CXX_FEATURE:1cxx_digit_separators
        Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
        Feature record: CXX_FEATURE:1cxx_explicit_conversions
        Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
        Feature record: CXX_FEATURE:1cxx_extern_templates
        Feature record: CXX_FEATURE:1cxx_final
        Feature record: CXX_FEATURE:1cxx_func_identifier
        Feature record: CXX_FEATURE:1cxx_generalized_initializers
        Feature record: CXX_FEATURE:1cxx_generic_lambdas
        Feature record: CXX_FEATURE:1cxx_inheriting_constructors
        Feature record: CXX_FEATURE:1cxx_inline_namespaces
        Feature record: CXX_FEATURE:1cxx_lambdas
        Feature record: CXX_FEATURE:1cxx_lambda_init_captures
        Feature record: CXX_FEATURE:1cxx_local_type_template_args
        Feature record: CXX_FEATURE:1cxx_long_long_type
        Feature record: CXX_FEATURE:1cxx_noexcept
        Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
        Feature record: CXX_FEATURE:1cxx_nullptr
        Feature record: CXX_FEATURE:1cxx_override
        Feature record: CXX_FEATURE:1cxx_range_for
        Feature record: CXX_FEATURE:1cxx_raw_string_literals
        Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
        Feature record: CXX_FEATURE:1cxx_return_type_deduction
        Feature record: CXX_FEATURE:1cxx_right_angle_brackets
        Feature record: CXX_FEATURE:1cxx_rvalue_references
        Feature record: CXX_FEATURE:1cxx_sizeof_member
        Feature record: CXX_FEATURE:1cxx_static_assert
        Feature record: CXX_FEATURE:1cxx_strong_enums
        Feature record: CXX_FEATURE:1cxx_template_template_parameters
        Feature record: CXX_FEATURE:1cxx_thread_local
        Feature record: CXX_FEATURE:1cxx_trailing_return_types
        Feature record: CXX_FEATURE:1cxx_unicode_literals
        Feature record: CXX_FEATURE:1cxx_uniform_initialization
        Feature record: CXX_FEATURE:1cxx_unrestricted_unions
        Feature record: CXX_FEATURE:1cxx_user_literals
        Feature record: CXX_FEATURE:1cxx_variadic_macros
        Feature record: CXX_FEATURE:1cxx_variadic_templates
    
    
  • Implemented segmented find_end and find_first_of for partitioned vector

    Implemented segmented find_end and find_first_of for partitioned vector

    PR #2792 should be merged before this.

    Tasks completed as part of GSoC project (See: #1338) -

    • Implemented segmented find_end and associated function object
    • Implemented segmented find_first_of and associated function object.
    • Using a custom return type called find_return
    • Almost all test cases pass for both for Localities = 1 to 11 Threads = 4 for both algorithms.

    Pending work -

    • Overlapping prefix or suffix test case fails for parallel version of the algorithms. To reproduce run find_end test with localities = 7 or find_first_of test with localities = 4. Example if sequence is 1111 and vector is 11 | 1111 | 1111 both find_end and find_first of gives erroneous outputs due to the need for returning multiple partial sequences from each segment.

    • Need to reverse the iteration of segments in sequential find_end (send to sit instead of sit to send). This will result in better performance and handle a lot of possible errors.

  • HPX performance degrades with time since execution begins

    HPX performance degrades with time since execution begins

    In the runs where octotiger runs for a bit before crashing or locking up, I am noticing that the performance gets worse as time progresses.

    Example: http://s7.postimg.org/5x1kah1wb/degrade.png

    This seems to be the case for every run I have looked at, each with 100 or 128 processors on SuperMIC. There is no computational reason that should be happening - the number of floating point operations required for each time-step is nearly constant.

  • Generic client

    Generic client

    Cleaning up client object implementation …

    • adding generic components::client<> facility
    • move extract_action to traits
    • extract launch_policy into separate header
    • adding overloads for async and async_cb taking clients
    • cleaning up headers included by async and async_cb
    • added traits::is_valid_action
    • client_base is now a class semantically equivalent to future, it directly holds a shared state
  • Implement P2690 for our algorithms

    Implement P2690 for our algorithms

    This PR adds the facilities that are proposed by P2690. It also adds default implementations for all of our algorithms.

    Coincidentally, this goes beyond P2690 as it also enables asynchronous invocations of the algorithms using the new facilities. Here are a couple of examples:

    // synchronous parallel invocation
    hpx::for_each(scheduler_t(), std::begin(c), std::end(c), f);
    
    // synchronous invocation using hpx::execution::par
    hpx::for_each(ex::execute_on(scheduler_t(), hpx::execution::par), std::begin(c), std::end(c), f);
    
    // asynchronous invocation using hpx::execution::par
    hpx::for_each(
        ex::execute_on(scheduler_t(), hpx::execution::par(hpx::execution::task)), std::begin(c), std::end(c), f) | 
    tt::sync_wait();
    
    // asynchronous invocation using hpx::execution::par as part of a S/R chain
    ex::just(std::begin(c), std::end(c), f) |
        hpx::for_each(
            ex::execute_on(scheduler_t(), hpx::execution::par(hpx::execution::task))) |
        tt::sync_wait();
    
  • Create a dedicated thread pool to run LCI_progress.

    Create a dedicated thread pool to run LCI_progress.

    The LCI_progress function is not thread-safe and must be called frequently. Previously, we created a dedicated progress thread using pthread when initializing LCI. However, HPX doesn't know this progress thread and thus cannot bind threads to cores correctly.

    This PR uses the new resource partitioner hook in the parcelport to create a thread pool "lci-progress-pool" (which only contains one core) to run LCI_progress.

    Known issues:

    1. The thread pool will be allocated even if users are not using LCI parcelport.
    2. hello_world_distributed example will fail. Commands to reproduce this error: python3 ./hpxrun.py ./hello_world_distributed -l 2 -t 3 -p mpi -r mpi -- --hpx:print-bind
  • Support for new performance tool suite : LIKWID

    Support for new performance tool suite : LIKWID

    Proposed Changes

    Adds support to use LIKWID using executors

    • Added cmake integration to find and link LIKWID library with HPX
    • Added new executor named likwid_executor
    • Added unit tests for likwid_exectuor
Cpp-concurrency - cpp implementation of golang style concurrency

cpp-concurrency C++ implementation of golang style concurrency Usage Use existing single header concurrency.hpp or run script to merge multiple header

Aug 11, 2022
A header-only C++ library for task concurrency
A header-only C++ library for task concurrency

transwarp Doxygen documentation transwarp is a header-only C++ library for task concurrency. It allows you to easily create a graph of tasks where eve

Nov 23, 2022
Yet Another Concurrency Library

YACLib YACLib (Yet Another Concurrency Library) is a C++ library for concurrent tasks execution. Documentation Install guide About dependencies Target

Nov 15, 2022
The RaftLib C++ library, streaming/dataflow concurrency via C++ iostream-like operators

RaftLib is a C++ Library for enabling stream/data-flow parallel computation. Using simple right shift operators (just like the C++ streams that you wo

Nov 17, 2022
Nov 19, 2022
Modern concurrency for C++. Tasks, executors, timers and C++20 coroutines to rule them all

concurrencpp, the C++ concurrency library concurrencpp is a tasking library for C++ allowing developers to write highly concurrent applications easily

Nov 23, 2022
Async++ concurrency framework for C++11

Async++ Async++ is a lightweight concurrency framework for C++11. The concept was inspired by the Microsoft PPL library and the N3428 C++ standard pro

Nov 20, 2022
The libdispatch Project, (a.k.a. Grand Central Dispatch), for concurrency on multicore hardware

Grand Central Dispatch Grand Central Dispatch (GCD or libdispatch) provides comprehensive support for concurrent code execution on multicore hardware.

Nov 18, 2022
Go-style concurrency in C

LIBMILL Libmill is a library that introduces Go-style concurrency to C. Documentation For the documentation check the project website: http://libmill.

Nov 23, 2022
Complementary Concurrency Programs for course "Linux Kernel Internals"

Complementary Programs for course "Linux Kernel Internals" Project Listing tpool: A lightweight thread pool. tinync: A tiny nc implementation using co

Nov 18, 2022
Task System presented in "Better Code: Concurrency - Sean Parent"
Task System presented in

task_system task_system provides a task scheduler for modern C++. The scheduler manages an array of concurrent queues A task, when scheduled, is enque

Sep 14, 2022
Laughably simple Actor concurrency framework for C++20

Light Actor Framework Concurrency is a breeze. Also a nightmare, if you ever used synchronization techniques. Mostly a nightmare, though. This tiny li

Sep 11, 2022
Deadlockempire.github.io - The Deadlock Empire: Slay dragons, learn concurrency!

The Deadlock Empire A game that teaches locking and concurrency. It runs on https://deadlockempire.github.io. Contributing We gladly welcome all contr

Nov 10, 2022
Libgo - Go-style concurrency in C++11
Libgo - Go-style concurrency in C++11

libgo libgo -- a coroutine library and a parallel Programming Library Libgo is a stackful coroutine library for collaborative scheduling written in C+

Nov 17, 2022
A novel technique to communicate between threads using the standard ETHREAD structure
A novel technique to communicate between threads using the standard ETHREAD structure

??️ dearg-thread-ipc-stealth Usage There are two main exported methods, one to read from another thread, and another to serve the content to another t

Nov 10, 2022
CppThreadPool - The original intention of this project is to learn the new C++20 standard in use.

CppThreadPool Introduction The original intention of this project is to learn the new C++20 standard in use. Therefore, make sure your compiler suppor

Sep 27, 2022
Bolt is a C++ template library optimized for GPUs. Bolt provides high-performance library implementations for common algorithms such as scan, reduce, transform, and sort.

Bolt is a C++ template library optimized for heterogeneous computing. Bolt is designed to provide high-performance library implementations for common

Nov 14, 2022
oneAPI DPC++ Library (oneDPL) https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/dpc-library.html

oneAPI DPC++ Library (oneDPL) The oneAPI DPC++ Library (oneDPL) aims to work with the oneAPI DPC++ Compiler to provide high-productivity APIs to devel

Nov 16, 2022
Simple and fast C library implementing a thread-safe API to manage hash-tables, linked lists, lock-free ring buffers and queues

libhl C library implementing a set of APIs to efficiently manage some basic data structures such as : hashtables, linked lists, queues, trees, ringbuf

Nov 19, 2022