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

Overview

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

Issues
  • 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.

    category: CI 
    opened by msimberg 49
  • reorder forward declarations to get rid of C++14-only auto return types

    reorder forward declarations to get rid of C++14-only auto return types

    This fixes C++11-only builds (basically anything that's using CUDA). Closes #2718

    type: compatibility issue category: executors 
    opened by gentryx 45
  • 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

    type: enhancement type: compatibility issue category: algorithms split: local split: distributed split: docs 
    opened by Jedi18 42
  • Dataflow annotations for APEX

    Dataflow annotations for APEX

    Fixes #4257 (again) since the previous fixes were not complete.

    type: enhancement category: LCOs type: compatibility issue category: APEX 
    opened by biddisco 42
  • 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.

    tag: wontfix type: defect category: parcel transport 
    opened by KilianWerner 39
  • 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

    type: enhancement platform: CUDA category: modules 
    opened by biddisco 37
  • 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
    
    
    category: CMake type: defect platform: Windows 
    opened by brakmic 35
  • 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.

    type: defect affecting: LSU 
    opened by dmarce1 34
  • 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
    type: enhancement category: LCOs category: components 
    opened by hkaiser 34
  • 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.

    tag: wontfix type: enhancement category: algorithms 
    opened by ghost 34
  • Modernize when_all and friends (when_any, when_some, when_each)

    Modernize when_all and friends (when_any, when_some, when_each)

    This also moves those facilities into namespace hpx and deprecates the same in namespace hpx::lcos

    type: enhancement category: LCOs type: compatibility issue 
    opened by hkaiser 0
  • Parcelport options result in segfaults

    Parcelport options result in segfaults

    Expected Behavior

    Running the code with options like -Ihpx.parcel.tcp.enable=0 and -Ihpx.parcel.mpi.enable=1 whould work.

    Actual Behavior

    Adding these options and the working code fails

    Fri Dec  3 09:17:29 PST 2021
    srun: error: nid001813: tasks 1-3: Segmentation fault
    srun: launch/slurm: _step_signal: Terminating StepId=822550.0
    slurmstepd: error: *** STEP 822550.0 ON nid001813 CANCELLED AT 2021-12-03T17:17:29 ***
    srun: error: nid001813: task 0: Terminated
    srun: Force Terminated StepId=822550.0
    srun: error: nid001813: tasks 1-3: Segmentation fault
    

    Steps to Reproduce the Problem

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

    1. Run code with and without options

    Specifications

    • HPX Version: 1.7.1
    • Platform (compiler, OS):
    Currently Loaded Modules:
      1) craype-x86-rome         4) perftools-base/21.10.0                      7) cray-pmi-lib/6.0.14        10) darshan/3.2.1    (io)  13) cray-libsci/21.08.1.2 (math)  16) cray-mpich/8.1.10 (mpi)
      2) libfabric/1.11.0.4.79   5) xpmem/2.2.40-7.0.1.0_3.1__g1d7a24d.shasta   8) cuda/11.3.0         (g,c)  11) craype/2.7.11    (c)   14) PrgEnv-gnu/8.2.0      (cpe)
      3) craype-network-ofi      6) cray-pmi/6.0.14                             9) xalt/2.10.2                12) cray-dsmml/0.2.2       15) gcc/9.3.0             (c)
    
    
    type: defect 
    opened by diehlpk 2
  • Change default `get_function_annotation` implementation

    Change default `get_function_annotation` implementation

    Note, this is a proposal. There are pros and cons to this change. I'd like to hear some opinions from others about this.

    Currently on master get_function_annotation returns nullptr unless there's a specialization (like when using annotated_function). In practice this means that unannotated functions typically inherit the annotation from the spawning thread (like hpx_main). This is nice in some situations because you know what spawned the task.

    On the other hand it would be nice if the default annotations were actually related to the actual task being spawned. Instead of returning nullptr get_function_annotation can fall back to returning typeid(F).name(). Even if this a mangled name it will usually be more descriptive (in my opinion...). This also means that all the other fallback names that we use will never be taken into account because a function will always have a non-nullptr name.

    Ideally we'd be able to have both. APEX does keep track of parent task ids which indirectly gives the task name of the parent. However, tooling for viewing this data is still quite bad.

    Are there other pros/cons to using typeid instead?

    category: utilities split: local 
    opened by msimberg 0
  • Fix test errors with `_GLIBCXX_DEBUG` defined

    Fix test errors with `_GLIBCXX_DEBUG` defined

    Fixes part of #5544.

    The is_heap change is due to greater_equal not satisfying https://en.cppreference.com/w/cpp/named_req/Compare. With _GLIBCXX_DEBUG libstdc++ actually gives a surprisingly helpful error message:

     57: In function:
     57:     _RAIter std::is_heap_until(_RAIter, _RAIter, _Compare) [with _RAIter =
     57:     __gnu_debug::_Safe_iterator<__gnu_cxx::__normal_iterator<int*,
     57:     std::__cxx1998::vector<int, std::allocator<int> > >,
     57:     std::__debug::vector<int>, std::random_access_iterator_tag>; _Compare =
     57:     std::greater_equal<int>]
     57:
     57: Error: comparison doesn't meet irreflexive requirements, assert(!(a < a)).
     57:
     57: Objects involved in the operation:
     57:     instance "functor" @ 0x0x2b53cad26267 {
     57:       type = std::greater_equal<int>;
     57:     }
     57:     iterator::value_type "ordered type" {
     57:       type = int;
     57:     }
    

    The change to is_contiguous_iterator is because vector iterators are different with _GLIBCXX_DEBUG (the pointers are wrapped).

    The last change to incplace_merge tests is due to confused use of variables. With _GLIBCXX_DEBUG libstdc++ reported use of moved-from iterators.

    There are still a few tests that fail with _GLIBCXX_DEBUG, so I'm not enabling it in CI. If anyone feels like looking into them they're at least uninitialized_copyn and uninitialized_move. They both segfault.

    type: defect compiler: gcc 
    opened by msimberg 0
  • Kokkos compilation fails when using both HPX and CUDA execution spaces with gcc 9.3.0

    Kokkos compilation fails when using both HPX and CUDA execution spaces with gcc 9.3.0

    During the compilation of Kokkos, I get the following error during the compilation of Kokkos_Core.cpp (and other cpp files for that matter):

    .../build/hpx/include/asio/execution/allocator.hpp(94): internal error: assertion failed at: "decls.c", line 18210 in add_src_seq_end_of_variable_if_needed
    
    1 catastrophic error detected in the compilation of ".../src/kokkos/core/src/impl/Kokkos_Core.cpp".
    Compilation aborted.
    

    The error only seems to occur when Kokkos_ENABLE_CUDA is used together with Kokkos_ENABLE_HPX - compilation works when either HPX or CUDA is disabled.

    I have been using:

    • nvcc_wrapper + gcc 9.3.0
    • Kokkos with the newest HPX PR (msimberg/[email protected])
    • HPX master (70ef8024c7e5a7f7de018eb88bfe446ba83d48e5)
    • HPX is compiled with HPX_WITH_FETCH_ASIO=ON
    opened by G-071 0
  • Rename `annotate_function` to `scoped_annotation`

    Rename `annotate_function` to `scoped_annotation`

    Fixes #5686. Also moves the utilities to the top-level hpx namespace. Adds them to the public API list.

    Open question: which header should provide these? I've now added both to hpx/local/functional.hpp (and by extension hpx/functional.hpp). scoped_annotation could also fit in hpx/local/execution.hpp in my opinion (annotated_function could sort of also fit there).

    Some (in my opinion worse) alternative names:

    • annotation
    • annotate_scope
    • annotation_scoped
    • raii_annotation
    category: utilities split: local 
    opened by msimberg 1
  • Replace tag_dispatch with tag_invoke in minmax segmented

    Replace tag_dispatch with tag_invoke in minmax segmented

    null

    type: cleanup 
    opened by aurianer 0
  • Enable LTO in CI

    Enable LTO in CI

    Untested. Just checking how much breaks.

    category: CMake split: config/ci/cmake 
    opened by msimberg 0
  • Add most important CMake options

    Add most important CMake options

    Add the agreed most important CMake options in the Manual.

    category: documentation type: enhancement 
    opened by dimitraka 0
  • Rename `annotate_function`

    Rename `annotate_function`

    The distinction between annotate_function and annotated_function is often confusing to users. I think the current annotate_function could be renamed e.g. scoped_annotation as it

    1. clearly distinguishes it from annotated_function and
    2. at least in my opinion describes its purpose much better than annotate_function

    I'm sure there would be other alternative names as well so feel free to suggest some if you can think of any. The main reason for opening this issue is that I think it should be renamed.

    Bonus change that I'm adding as a reminder:

    • move annotate(d)_function from hpx::util to hpx
    type: enhancement 
    opened by msimberg 0
Releases(1.7.1)
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

Christian Blume 494 Dec 2, 2021
Yet Another Concurrency Library

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

null 83 Nov 28, 2021
Concurrency Kit 2k Nov 29, 2021
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

David Haim 711 Nov 28, 2021
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

Amanieu d'Antras 969 Dec 5, 2021
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.

Apple 2.1k Nov 30, 2021
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.

Martin Sustrik 2.5k Dec 4, 2021
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

null 181 Nov 30, 2021
Task System presented in "Better Code: Concurrency - Sean Parent"

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

Pranav 23 Nov 21, 2021
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

Josip Palavra 93 Nov 30, 2021
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

Lloyd 55 Dec 2, 2021
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

Hello_World 2 Nov 1, 2021
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

null 349 Oct 13, 2021
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

oneAPI-SRC 601 Nov 26, 2021
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

Andrea Guzzo 365 Nov 17, 2021
OOX: Out-of-Order Executor library. Yet another approach to efficient and scalable tasking API and task scheduling.

OOX Out-of-Order Executor library. Yet another approach to efficient and scalable tasking API and task scheduling. Try it Requirements: Install cmake,

Intel Corporation 16 Oct 29, 2021
An optimized C library for math, parallel processing and data movement

PAL: The Parallel Architectures Library The Parallel Architectures Library (PAL) is a compact C library with optimized routines for math, synchronizat

Parallella 289 Dec 6, 2021
C++20's jthread for C++11 and later in a single-file header-only library

jthread lite: C++20's jthread for C++11 and later A work in its infancy. Suggested by Peter Featherstone. Contents Example usage In a nutshell License

Martin Moene 20 Oct 26, 2021