diff --git a/.github/workflows/build-docs.yml b/.github/workflows/build-docs.yml
index b748649fe9..dbb595636f 100644
--- a/.github/workflows/build-docs.yml
+++ b/.github/workflows/build-docs.yml
@@ -1,8 +1,6 @@
name: Build Documentation
on:
- # Trigger the workflow on push or pull request,
- # but only for the master branch
push:
branches:
- develop
@@ -31,6 +29,6 @@ jobs:
TOKEN: ${{ secrets.GH_PAT }}
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Build the Docker image
run: docker-compose run ubuntu-docs
diff --git a/.github/workflows/build-statistics.yml b/.github/workflows/build-statistics.yml
index 7ab263c04e..5e46197c7c 100644
--- a/.github/workflows/build-statistics.yml
+++ b/.github/workflows/build-statistics.yml
@@ -12,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Generate build stats
uses: DARMA-tasking/build-stats@master
diff --git a/.github/workflows/check-commit-format.yml b/.github/workflows/check-commit-format.yml
index 4b0259d86a..2fe7393712 100644
--- a/.github/workflows/check-commit-format.yml
+++ b/.github/workflows/check-commit-format.yml
@@ -7,7 +7,7 @@ jobs:
name: Check commit
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
diff --git a/.github/workflows/check-include-guards.yml b/.github/workflows/check-include-guards.yml
index 12d0d62a90..5f15011f30 100644
--- a/.github/workflows/check-include-guards.yml
+++ b/.github/workflows/check-include-guards.yml
@@ -8,7 +8,7 @@ jobs:
steps:
- name: Checkout source code
- uses: actions/checkout@v2
+ uses: actions/checkout@v3
- name: Setup Dependencies
uses: actions/setup-python@v2
diff --git a/.github/workflows/check-trailing-whitespace.yml b/.github/workflows/check-trailing-whitespace.yml
index 98a9351f34..d7c287528d 100644
--- a/.github/workflows/check-trailing-whitespace.yml
+++ b/.github/workflows/check-trailing-whitespace.yml
@@ -7,7 +7,7 @@ jobs:
name: Find Trailing Whitespace
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- uses: DARMA-tasking/find-trailing-whitespace@master
with:
exclude: "sketches;lib"
diff --git a/.github/workflows/macosx-clang-mpich.yml b/.github/workflows/macosx-clang-mpich.yml
index c142b287e5..04ddf42da9 100644
--- a/.github/workflows/macosx-clang-mpich.yml
+++ b/.github/workflows/macosx-clang-mpich.yml
@@ -26,22 +26,20 @@ jobs:
CMAKE_BUILD_TYPE: release
VT_LB_ENABLED: 1
VT_TRACE_ENABLED: 1
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_WERROR: 1
CMAKE_CXX_STANDARD: 17
CMAKE_GENERATOR: "Unix Makefiles"
CMAKE_BUILD_PARALLEL_LEVEL: 4
steps:
- - uses: actions/checkout@v2
- - uses: actions/cache@v2
+ - uses: actions/checkout@v3
+ - uses: actions/cache@v3
with:
path: ~/.ccache
key: ${{ runner.os }}-macosx-clang-8-ccache-${{ secrets.GH_ACTIONS_CACHE_VERSION }}-${{ hashFiles('**/*') }}
restore-keys: |
${{ runner.os }}-macosx-clang-8-ccache-${{ secrets.GH_ACTIONS_CACHE_VERSION }}
- - uses: actions/cache@v2
+ - uses: actions/cache@v3
id: mpich-cache
with:
path: ~/.mpich
diff --git a/.github/workflows/pushdockerimage.yml b/.github/workflows/pushdockerimage.yml
index c007177c38..0fd24234c6 100644
--- a/.github/workflows/pushdockerimage.yml
+++ b/.github/workflows/pushdockerimage.yml
@@ -1,12 +1,9 @@
name: Docker Image CI
on:
- # Trigger the workflow on push or pull request,
- # but only for the master branch
push:
branches:
- develop
- - 1.*
jobs:
@@ -15,7 +12,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
- name: Docker Build & Push
uses: jerray/publish-docker-action@master
with:
diff --git a/.github/workflows/run-git-check.yml b/.github/workflows/run-git-check.yml
index 51e4c71c53..714cbb82b9 100644
--- a/.github/workflows/run-git-check.yml
+++ b/.github/workflows/run-git-check.yml
@@ -7,7 +7,7 @@ jobs:
name: Run git check
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v2
+ - uses: actions/checkout@v3
with:
fetch-depth: 0
ref: ${{ github.event.pull_request.head.sha }}
diff --git a/.gitignore b/.gitignore
index a8e6e47a87..ee9ae770e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,7 +3,6 @@ build
transport
lib/*-build
lib/checkpoint
-lib/detector
lib/googletest
lib/kokkos
.emacs.desktop
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 760070f899..2d33275dd0 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.17 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.23 FATAL_ERROR)
file(READ "VERSION" _vt_version_str)
string(STRIP "${_vt_version_str}" _vt_version_str)
@@ -39,7 +39,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
if(NOT CMAKE_CXX_STANDARD)
- set(CMAKE_CXX_STANDARD 14 CACHE STRING "The C++ standard to use")
+ set(CMAKE_CXX_STANDARD 17 CACHE STRING "The C++ standard to use")
endif()
message(STATUS "CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD}")
diff --git a/README.md b/README.md
index e39ef4d542..e3975b37ac 100644
--- a/README.md
+++ b/README.md
@@ -8,11 +8,17 @@
[![gcc-8, ubuntu, mpich, address sanitizer](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(gcc-8%2C%20ubuntu%2C%20mpich%2C%20address%20sanitizer)?branchName=develop&Label=(gcc-8%2C%20ubuntu%2C%20mpich%2C%20address%20sanitizer))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=9&branchName=develop)
[![gcc-9, ubuntu, mpich, zoltan](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(gcc-9%2C%20ubuntu%2C%20mpich%2C%20zoltan)?branchName=develop&Label=(gcc-9%2C%20ubuntu%2C%20mpich%2C%20zoltan))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=10&branchName=develop)
[![gcc-10, ubuntu, openmpi, no LB](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(gcc-10%2C%20ubuntu%2C%20openmpi%2C%20no%20LB)?branchName=develop&Label=(gcc-10%2C%20ubuntu%2C%20openmpi%2C%20no%20LB))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=4&branchName=develop)
-[![clang-5, ubuntu, mpich, trace](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-5.0%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-5.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=5&branchName=develop)
+[![gcc-11, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(gcc-11%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(gcc-11%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=29&branchName=develop)
+[![gcc-12, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(gcc-12%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(gcc-12%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=30&branchName=develop)
[![clang-9, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-9%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-9.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=22&branchName=develop)
[![clang-10, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-10%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-10.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=21&branchName=develop)
-[![nvidia cuda 10.1, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(nvidia%20cuda%2010.1%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(nvidia%20cuda%2010.1%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=11&branchName=develop)
+[![clang-11, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-11%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-11.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=25&branchName=develop)
+[![clang-12, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-12%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-12.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=26&branchName=develop)
+[![clang-13, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-13%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-13.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=27&branchName=develop)
+[![clang-13, alpine, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-13%2C%20alpine%2C%20mpich)?branchName=develop&Label=(clang-13.0%2C%20alpine%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=23&branchName=develop)
+[![clang-14, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(clang-14%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(clang-14.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=28&branchName=develop)
[![nvidia cuda 11.0, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(nvidia%20cuda%2011.0%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(nvidia%20cuda%2011.0%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=12&branchName=develop)
+[![nvidia cuda 11.2, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(nvidia%20cuda%2011.2%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(nvidia%20cuda%2011.2%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=32&branchName=develop)
[![gcc-10, ubuntu, openmpi, no LB, spack-package](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20spack-package%20(gcc-10%2C%20ubuntu%2C%20openmpi%2C%20no%20LB%2C%20spack-package)?branchName=develop&Label=(gcc-10%2C%20ubuntu%2C%20openmpi%2C%20no%20LB%2C%20spack-package))](https://dev.azure.com/DARMA-tasking/DARMA/_build/latest?definitionId=20&branchName=develop)
[![icpx, ubuntu, mpich](https://dev.azure.com/DARMA-tasking/DARMA/_apis/build/status/PR%20tests%20(intel%20icpx%2C%20ubuntu%2C%20mpich)?branchName=develop&Label=(icpx%2C%20ubuntu%2C%20mpich))](https://dev.azure.com/DARMA-tasking/DARMA/_build?definitionId=24&branchName=develop)
![apple clang, macosx, mpich](https://github.com/DARMA-tasking/vt/workflows/PR%20tests%20(clang-8,%20macosx,%20mpich)/badge.svg?branch=develop)
diff --git a/VERSION b/VERSION
index 23aa839063..f0bb29e763 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.2.2
+1.3.0
diff --git a/ci/azure/azure-clang-10-ubuntu-mpich.yml b/ci/azure/azure-clang-10-ubuntu-mpich.yml
index 0ac50073f3..f43987d6a0 100644
--- a/ci/azure/azure-clang-10-ubuntu-mpich.yml
+++ b/ci/azure/azure-clang-10-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-clang-10-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-clang-11-ubuntu-mpich.yml b/ci/azure/azure-clang-11-ubuntu-mpich.yml
index d5fdade5ec..396c74c6f6 100644
--- a/ci/azure/azure-clang-11-ubuntu-mpich.yml
+++ b/ci/azure/azure-clang-11-ubuntu-mpich.yml
@@ -45,16 +45,14 @@ variables:
VT_TESTS_NUM_NODES: 2
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
- VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
+ VT_FCONTEXT: 1
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-clang-11-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-clang-12-ubuntu-mpich.yml b/ci/azure/azure-clang-12-ubuntu-mpich.yml
index 3a53fd419c..78cc859b96 100644
--- a/ci/azure/azure-clang-12-ubuntu-mpich.yml
+++ b/ci/azure/azure-clang-12-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-clang-12-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-clang-13-ubuntu-mpich.yml b/ci/azure/azure-clang-13-ubuntu-mpich.yml
index 9cdfb186fd..f393cc8694 100644
--- a/ci/azure/azure-clang-13-ubuntu-mpich.yml
+++ b/ci/azure/azure-clang-13-ubuntu-mpich.yml
@@ -46,8 +46,6 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-clang-14-ubuntu-mpich.yml b/ci/azure/azure-clang-14-ubuntu-mpich.yml
index 15039a055e..d348c2e827 100644
--- a/ci/azure/azure-clang-14-ubuntu-mpich.yml
+++ b/ci/azure/azure-clang-14-ubuntu-mpich.yml
@@ -32,7 +32,7 @@ variables:
ULIMIT_CORE: 0
CODE_COVERAGE: 0
VT_LB: 1
- VT_TRACE: 0
+ VT_TRACE: 1
VT_TRACE_RT: 0
VT_TRACE_ONLY: 1
VT_MIMALLOC: 0
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-clang-14-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-clang-5.0-ubuntu-mpich.yml b/ci/azure/azure-clang-5.0-ubuntu-mpich.yml
deleted file mode 100644
index 8d2fe025e3..0000000000
--- a/ci/azure/azure-clang-5.0-ubuntu-mpich.yml
+++ /dev/null
@@ -1,211 +0,0 @@
-###############################################################################
-############## Warning this is a generated file---do not modify ###############
-###############################################################################
-
-name: PR tests (clang-5.0, ubuntu, mpich)
-
-trigger:
- branches:
- include:
- - develop
- - 1.0.0*
-
-pr:
- drafts: false
- autoCancel: true
- branches:
- include:
- - '*'
-
-
-resources:
-- repo: self
-
-variables:
- tag: '$(Build.BuildId)'
- REPO: lifflander1/vt
- ARCH: amd64
- UBUNTU: 18.04
- COMPILER_TYPE: clang
- COMPILER: clang-5.0
- BUILD_TYPE: release
- ULIMIT_CORE: 0
- CODE_COVERAGE: 0
- VT_LB: 1
- VT_TRACE: 1
- VT_TRACE_RT: 0
- VT_TRACE_ONLY: 1
- VT_MIMALLOC: 0
- VT_DOCS: 0
- VT_ASAN: 0
- VT_UBSAN: 0
- VT_WERROR: 1
- VT_POOL: 1
- VT_EXTENDED_TESTS: 1
- VT_TESTS_NUM_NODES: 2
- VT_UNITY_BUILD: 1
- VT_PRODUCTION_BUILD: 0
- VT_FCONTEXT: 0
- VT_USE_OPENMP: 1
- VT_USE_STD_THREAD: 0
- VT_ZOLTAN: 0
- VT_CI_BUILD: 1
- VT_DIAGNOSTICS: 1
- VT_NO_COLOR: 1
- VT_BUILD_SHARED_LIBS: 0
- VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
- TEST_LB_SCHEMA: 0
- CACHE: "$(Agent.TempDirectory)/cache/"
- cache_name: ubuntu-clang-5.0-cache
- build_root: "$(CACHE)/$(ARCH)-ubuntu-$(UBUNTU)-$(COMPILER)-cache/"
- TS: 0
- TS_YEAR: 0
- TS_MONTH: 0
- TS_DAY: 0
-
-
-
-stages:
-- stage: Build
- displayName: Build image
- jobs:
- - job: Build
- displayName: Build
- pool:
- vmImage: 'ubuntu-22.04'
- timeoutInMinutes: 180
- steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
- - task: Bash@3
- displayName: Build timestamp for caching
- continueOnError: true
- inputs:
- targetType: 'inline'
- script: |
- echo 'string(TIMESTAMP current_date "%H;%M;%S" UTC)' > script
- echo 'execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${current_date}")' >> script
- val=$(cmake -P script)
- echo "##vso[task.setvariable variable=TS]$val"
- echo 'string(TIMESTAMP current_date "%Y" UTC)' > script
- echo 'execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${current_date}")' >> script
- val=$(cmake -P script)
- echo "##vso[task.setvariable variable=TS_YEAR]$val"
- echo 'string(TIMESTAMP current_date "%m" UTC)' > script
- echo 'execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${current_date}")' >> script
- val=$(cmake -P script)
- echo "##vso[task.setvariable variable=TS_MONTH]$val"
- echo 'string(TIMESTAMP current_date "%d" UTC)' > script
- echo 'execute_process(COMMAND ${CMAKE_COMMAND} -E echo "${current_date}")' >> script
- val=$(cmake -P script)
- echo "##vso[task.setvariable variable=TS_DAY]$val"
- - task: Bash@3
- displayName: Output timestamp for caching
- continueOnError: true
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- targetType: 'inline'
- script: 'echo "my pipeline variable is $(TS) $(TS_YEAR) $(TS_MONTH) $(TS_DAY)"'
- - task: Cache@2
- displayName: Update cache
- continueOnError: true
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- securityNamespace: cache
- key: $(Agent.OS) | "$(cache_name)" | $(TS_YEAR) | $(TS_MONTH) | $(TS_DAY) | $(TS)
- path: '$(build_root)/ccache'
- restoreKeys: |
- $(Agent.OS) | "$(cache_name)" | $(TS_YEAR) | $(TS_MONTH) | $(TS_DAY)
- $(Agent.OS) | "$(cache_name)" | $(TS_YEAR) | $(TS_MONTH)
- $(Agent.OS) | "$(cache_name)" | $(TS_YEAR)
- $(Agent.OS) | "$(cache_name)"
- - task: Bash@3
- displayName: Check for changes in containers
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- targetType: 'inline'
- script: |
- val=$(./scripts/check_containers.sh)
- echo "##vso[task.setvariable variable=compose_command]$val"
- - task: DockerCompose@0
- displayName: Pull container
- inputs:
- containerregistrytype: 'Container Registry'
- dockerComposeFile: '**/docker-compose.yml'
- action: 'Run a Docker Compose command'
- dockerComposeCommand: '$(compose_command) ubuntu-cpp-clean'
- - task: DockerCompose@0
- displayName: Build container
- inputs:
- containerregistrytype: 'Container Registry'
- dockerComposeFile: '**/docker-compose.yml'
- action: 'Run a Docker Compose command'
- dockerComposeCommand: 'run ubuntu-cpp-clean'
- env:
- CODECOV_TOKEN: $(codecov_token)
- - task: Bash@3
- displayName: Put compilation's and tests' logs in PR comment
- continueOnError: true
- condition: and(succeededOrFailed(), eq(variables['Build.Reason'], 'PullRequest'))
- inputs:
- targetType: 'inline'
- script: |
- ./scripts/report_logs_in_comment.sh \
- "$(build_root)/vt/compilation_errors_warnings.out" \
- "$(build_root)/vt/cmake-output.log" \
- "$(Build.BuildNumber)" \
- "$(System.PullRequest.PullRequestNumber)" \
- "$(Build.Repository.Name)" \
- "$GITHUB_PAT" \
- "$(Build.BuildId)" \
- "$(System.JobId)" \
- "$(Agent.JobStatus)"
- env:
- GITHUB_PAT: $(github_pat)
- - task: DockerCompose@0
- displayName: Push container to registry
- continueOnError: true
- condition: and(succeeded(), eq(variables['Build.SourceBranch'], 'refs/heads/develop'))
- inputs:
- containerregistrytype: 'Container Registry'
- dockerRegistryEndpoint: 'dockerRegistryConnection1'
- dockerComposeFile: '**/docker-compose.yml'
- action: 'Run a Docker Compose command'
- dockerComposeCommand: 'push ubuntu-cpp-clean'
- - task: Bash@3
- displayName: Create artifacts
- continueOnError: true
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- targetType: 'inline'
- script: |
- zip -j $(Agent.TempDirectory)/LastTest.log.gz $(build_root)/vt/Testing/Temporary/LastTest.log
- zip -j $(Agent.TempDirectory)/cmake-output.log.gz $(build_root)/vt/cmake-output.log
- - task: PublishPipelineArtifact@1
- displayName: Upload CMake test output artifact
- continueOnError: true
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- targetPath: '$(Agent.TempDirectory)/LastTest.log.gz'
- artifact: 'CMakeLastTestLog'
- publishLocation: 'pipeline'
- - task: PublishPipelineArtifact@1
- displayName: Upload CMake full output artifact
- continueOnError: true
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- targetPath: '$(Agent.TempDirectory)/cmake-output.log.gz'
- artifact: 'CMakeOutputLog'
- publishLocation: 'pipeline'
- - task: Bash@3
- displayName: Finish pipeline
- condition: in(variables['Agent.JobStatus'], 'Succeeded', 'SucceededWithIssues')
- inputs:
- targetType: 'inline'
- script: |
- echo Done
diff --git a/ci/azure/azure-clang-9-ubuntu-mpich.yml b/ci/azure/azure-clang-9-ubuntu-mpich.yml
index 2a82daef40..6ffc1053b2 100644
--- a/ci/azure/azure-clang-9-ubuntu-mpich.yml
+++ b/ci/azure/azure-clang-9-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 1
VT_INCLUSION: EXT_LIB
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-clang-9-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-clang-alpine-mpich.yml b/ci/azure/azure-clang-alpine-mpich.yml
index 5714f8d0ef..6511ef65c5 100644
--- a/ci/azure/azure-clang-alpine-mpich.yml
+++ b/ci/azure/azure-clang-alpine-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 1
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: alpine-clang-13-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-gcc-10-ubuntu-openmpi-spack.yml b/ci/azure/azure-gcc-10-ubuntu-openmpi-spack.yml
index 314ddb024f..2403745511 100644
--- a/ci/azure/azure-gcc-10-ubuntu-openmpi-spack.yml
+++ b/ci/azure/azure-gcc-10-ubuntu-openmpi-spack.yml
@@ -34,8 +34,6 @@ variables:
VT_EXTENDED_TESTS: 0
VT_UNITY_BUILD: 1
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
diff --git a/ci/azure/azure-gcc-10-ubuntu-openmpi.yml b/ci/azure/azure-gcc-10-ubuntu-openmpi.yml
index fe0eae6b13..051dfa3769 100644
--- a/ci/azure/azure-gcc-10-ubuntu-openmpi.yml
+++ b/ci/azure/azure-gcc-10-ubuntu-openmpi.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-gcc-10-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-gcc-11-ubuntu-mpich.yml b/ci/azure/azure-gcc-11-ubuntu-mpich.yml
index 7c12573f48..bce0aa68bd 100644
--- a/ci/azure/azure-gcc-11-ubuntu-mpich.yml
+++ b/ci/azure/azure-gcc-11-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 1
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-gcc-11-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-gcc-12-ubuntu-mpich.yml b/ci/azure/azure-gcc-12-ubuntu-mpich.yml
index ef4ecf34b1..dac939334e 100644
--- a/ci/azure/azure-gcc-12-ubuntu-mpich.yml
+++ b/ci/azure/azure-gcc-12-ubuntu-mpich.yml
@@ -46,8 +46,6 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-gcc-7-ubuntu-mpich.yml b/ci/azure/azure-gcc-7-ubuntu-mpich.yml
index 704b0b9176..a8ba7da182 100644
--- a/ci/azure/azure-gcc-7-ubuntu-mpich.yml
+++ b/ci/azure/azure-gcc-7-ubuntu-mpich.yml
@@ -43,18 +43,16 @@ variables:
VT_POOL: 1
VT_EXTENDED_TESTS: 1
VT_TESTS_NUM_NODES: 2
- VT_UNITY_BUILD: 1
+ VT_UNITY_BUILD: 0
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-gcc-7-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-gcc-8-ubuntu-mpich.yml b/ci/azure/azure-gcc-8-ubuntu-mpich.yml
index 7bdc753f51..af37277c9e 100644
--- a/ci/azure/azure-gcc-8-ubuntu-mpich.yml
+++ b/ci/azure/azure-gcc-8-ubuntu-mpich.yml
@@ -43,18 +43,16 @@ variables:
VT_POOL: 0
VT_EXTENDED_TESTS: 1
VT_TESTS_NUM_NODES: 2
- VT_UNITY_BUILD: 1
+ VT_UNITY_BUILD: 0
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 1
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-gcc-8-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-gcc-9-ubuntu-mpich.yml b/ci/azure/azure-gcc-9-ubuntu-mpich.yml
index e4470087d4..412fdfdfe1 100644
--- a/ci/azure/azure-gcc-9-ubuntu-mpich.yml
+++ b/ci/azure/azure-gcc-9-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 1
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-gcc-9-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-intel-oneapi-icpc-ubuntu-mpich.yml b/ci/azure/azure-intel-oneapi-icpc-ubuntu-mpich.yml
index c4e30dcd3c..3b20cedf91 100644
--- a/ci/azure/azure-intel-oneapi-icpc-ubuntu-mpich.yml
+++ b/ci/azure/azure-intel-oneapi-icpc-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-intel-oneapi-icpc-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-intel-oneapi-icpx-ubuntu-mpich.yml b/ci/azure/azure-intel-oneapi-icpx-ubuntu-mpich.yml
index 763f524106..8221fad655 100644
--- a/ci/azure/azure-intel-oneapi-icpx-ubuntu-mpich.yml
+++ b/ci/azure/azure-intel-oneapi-icpx-ubuntu-mpich.yml
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-intel-oneapi-icpx-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-nvidia-10-ubuntu-mpich.yml b/ci/azure/azure-nvidia-11-2-ubuntu-mpich.yml
similarity index 95%
rename from ci/azure/azure-nvidia-10-ubuntu-mpich.yml
rename to ci/azure/azure-nvidia-11-2-ubuntu-mpich.yml
index 59f46c75b3..bcfc857ab5 100644
--- a/ci/azure/azure-nvidia-10-ubuntu-mpich.yml
+++ b/ci/azure/azure-nvidia-11-2-ubuntu-mpich.yml
@@ -2,7 +2,7 @@
############## Warning this is a generated file---do not modify ###############
###############################################################################
-name: PR tests (nvidia cuda 10.1, ubuntu, mpich)
+name: PR tests (nvidia cuda 11.2, ubuntu, mpich)
trigger:
branches:
@@ -25,9 +25,9 @@ variables:
tag: '$(Build.BuildId)'
REPO: lifflander1/vt
ARCH: amd64
- UBUNTU: 18.04
+ UBUNTU: 20.04
COMPILER_TYPE: nvidia
- COMPILER: nvcc-10
+ COMPILER: 11.2.0
BUILD_TYPE: release
ULIMIT_CORE: 0
CODE_COVERAGE: 0
@@ -42,22 +42,20 @@ variables:
VT_WERROR: 1
VT_POOL: 0
VT_EXTENDED_TESTS: 0
- VT_TESTS_NUM_NODES: 2
+ VT_TESTS_NUM_NODES: 4
VT_UNITY_BUILD: 1
- VT_PRODUCTION_BUILD: 1
+ VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 0
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
- cache_name: ubuntu-nvidia-10-cache
+ cache_name: ubuntu-nvidia-11.2-cache
build_root: "$(CACHE)/$(ARCH)-ubuntu-$(UBUNTU)-$(COMPILER)-cache/"
TS: 0
TS_YEAR: 0
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/azure/azure-nvidia-11-ubuntu-mpich.yml b/ci/azure/azure-nvidia-11-ubuntu-mpich.yml
index 84c4368f2d..b9e412655d 100644
--- a/ci/azure/azure-nvidia-11-ubuntu-mpich.yml
+++ b/ci/azure/azure-nvidia-11-ubuntu-mpich.yml
@@ -25,9 +25,9 @@ variables:
tag: '$(Build.BuildId)'
REPO: lifflander1/vt
ARCH: amd64
- UBUNTU: 18.04
+ UBUNTU: 20.04
COMPILER_TYPE: nvidia
- COMPILER: nvcc-11
+ COMPILER: 11.0.3
BUILD_TYPE: release
ULIMIT_CORE: 0
CODE_COVERAGE: 0
@@ -46,15 +46,13 @@ variables:
VT_UNITY_BUILD: 1
VT_PRODUCTION_BUILD: 0
VT_FCONTEXT: 0
- VT_USE_OPENMP: 0
- VT_USE_STD_THREAD: 0
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 0
VT_NO_COLOR: 1
VT_BUILD_SHARED_LIBS: 0
VT_INCLUSION: TPL
- CMAKE_CXX_STANDARD: 14
+ CMAKE_CXX_STANDARD: 17
TEST_LB_SCHEMA: 0
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-nvidia-11-cache
@@ -76,12 +74,8 @@ stages:
vmImage: 'ubuntu-22.04'
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- echo setup
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/ci/build_cpp.sh b/ci/build_cpp.sh
index 38baeb16bf..ddb76f1d5b 100755
--- a/ci/build_cpp.sh
+++ b/ci/build_cpp.sh
@@ -6,7 +6,6 @@ source_dir=${1}
build_dir=${2}
# Dependency versions, when fetched via git.
-detector_rev=master
checkpoint_rev=develop
if test "${VT_DOXYGEN_ENABLED:-0}" -eq 1
@@ -38,40 +37,11 @@ fi
mkdir -p "${build_dir}"
pushd "${build_dir}"
-if test -d "detector"
-then
- rm -Rf detector
-fi
-
if test -d "checkpoint"
then
rm -Rf checkpoint
fi
-if test -d "${source_dir}/lib/detector"
-then
- { echo "Detector already in lib... not downloading, building, and installing"; } 2>/dev/null
-else
- if test "${VT_DOXYGEN_ENABLED:-0}" -eq 1
- then
- cd "${source_dir}/lib"
- git clone -b "${detector_rev}" --depth 1 https://github.com/DARMA-tasking/detector.git
- cd -
- else
- git clone -b "${detector_rev}" --depth 1 https://github.com/DARMA-tasking/detector.git
- export DETECTOR=$PWD/detector
- export DETECTOR_BUILD=${build_dir}/detector
- mkdir -p "$DETECTOR_BUILD"
- cd "$DETECTOR_BUILD"
- mkdir build
- cd build
- cmake -G "${CMAKE_GENERATOR:-Ninja}" \
- -DCMAKE_INSTALL_PREFIX="$DETECTOR_BUILD/install" \
- "$DETECTOR"
- cmake --build . ${dashj} --target install
- fi
-fi
-
if test -d "${source_dir}/lib/checkpoint"
then
{ echo "Checkpoint already in lib... not downloading, building, and installing"; } 2>/dev/null
@@ -91,7 +61,6 @@ else
cd build
cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-DCMAKE_INSTALL_PREFIX="$CHECKPOINT_BUILD/install" \
- -Ddetector_DIR="$DETECTOR_BUILD/install" \
"$CHECKPOINT"
cmake --build . ${dashj} --target install
fi
@@ -133,8 +102,6 @@ cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-Dvt_fcontext_enabled="${VT_FCONTEXT_ENABLED:-0}" \
-Dvt_fcontext_build_tests_examples="${VT_FCONTEXT_BUILD_TESTS_EXAMPLES:-0}" \
-Dvt_rdma_tests_enabled="${VT_RDMA_TESTS_ENABLED:-1}" \
- -DUSE_OPENMP="${VT_USE_OPENMP:-0}" \
- -DUSE_STD_THREAD="${VT_USE_STD_THREAD:-0}" \
-DCODE_COVERAGE="${CODE_COVERAGE:-0}" \
-DMI_INTERPOSE:BOOL=ON \
-DMI_OVERRIDE:BOOL=ON \
@@ -146,7 +113,6 @@ cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-DCMAKE_CXX_COMPILER="${CXX:-c++}" \
-DCMAKE_C_COMPILER="${CC:-cc}" \
-DCMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS:-}" \
- -Ddetector_DIR="$DETECTOR_BUILD/install" \
-Dcheckpoint_DIR="$CHECKPOINT_BUILD/install" \
-DCMAKE_PREFIX_PATH="${CMAKE_PREFIX_PATH:-}" \
-DCMAKE_INSTALL_PREFIX="$VT_BUILD/install" \
@@ -154,7 +120,7 @@ cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-Dvt_debug_verbose="${VT_DEBUG_VERBOSE:-}" \
-Dvt_tests_num_nodes="${VT_TESTS_NUM_NODES:-}" \
-Dvt_no_color_enabled="${VT_NO_COLOR_ENABLED:-0}" \
- -DCMAKE_CXX_STANDARD="${CMAKE_CXX_STANDARD:-14}" \
+ -DCMAKE_CXX_STANDARD="${CMAKE_CXX_STANDARD:-17}" \
-DBUILD_SHARED_LIBS="${BUILD_SHARED_LIBS:-0}" \
"$VT"
cmake_conf_ret=$?
diff --git a/ci/build_vt_sample.sh b/ci/build_vt_sample.sh
index 2537151af8..68d6fcd574 100755
--- a/ci/build_vt_sample.sh
+++ b/ci/build_vt_sample.sh
@@ -20,9 +20,8 @@ if test "$is_alpine" -eq 0 && test "${VT_CI_BUILD:-0}" -eq 1
then
export VT=${source_dir}
export VT_BUILD=${build_dir}/vt
- export VT_INSTALL=${VT_BUILD}/install
- export DETECTOR=${build_dir}/detector
- export CHECKPOINT=${DETECTOR}/build/checkpoint
+ export VT_INSTALL=${VT_BUILD}/install/cmake
+ export CHECKPOINT=${build_dir}/checkpoint
cd "$VT_BUILD"
@@ -35,7 +34,8 @@ then
if test "$VT_INCLUSION_TYPE" = "EXT_LIB"
then
- export vt_DIR="$VT_INSTALL"
+ VT="$VT_INSTALL"
+ CHECKPOINT=""
fi
git clone https://github.com/DARMA-tasking/vt-sample-project
@@ -45,13 +45,12 @@ then
cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-Dvt_DIR="${VT}" \
-Dcheckpoint_DIR="${CHECKPOINT}" \
- -Ddetector_DIR="${DETECTOR}" \
-Dkokkos_DISABLE:BOOL=1 \
-Dkokkos_kernels_DISABLE:BOOL=1 \
-Dvt_trace_only="1" \
-DVT_BUILD_EXAMPLES="0" \
-DVT_BUILD_TESTS="0" \
- -DCMAKE_CXX_STANDARD="${CMAKE_CXX_STANDARD:-14}" \
+ -DCMAKE_CXX_STANDARD="${CMAKE_CXX_STANDARD:-17}" \
-DCMAKE_EXPORT_COMPILE_COMMANDS=1 \
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE:-Release}" \
-DCMAKE_CXX_COMPILER="${CXX:-c++}" \
diff --git a/ci/ctest_build_all.sh b/ci/ctest_build_all.sh
index a0d83754e5..59fcc5fffd 100755
--- a/ci/ctest_build_all.sh
+++ b/ci/ctest_build_all.sh
@@ -6,7 +6,6 @@ source_dir=${1}
build_dir=${2}
# Dependency versions, when fetched via git.
-detector_rev=master
checkpoint_rev=develop
if test "${VT_DOXYGEN_ENABLED:-0}" -eq 1
@@ -40,40 +39,11 @@ fi
mkdir -p "${build_dir}"
pushd "${build_dir}"
-if test -d "detector"
-then
- rm -Rf detector
-fi
-
if test -d "checkpoint"
then
rm -Rf checkpoint
fi
-if test -d "${source_dir}/lib/detector"
-then
- { echo "Detector already in lib... not downloading, building, and installing"; } 2>/dev/null
-else
- if test "${VT_DOXYGEN_ENABLED:-0}" -eq 1
- then
- cd "${source_dir}/lib"
- git clone -b "${detector_rev}" --depth 1 https://github.com/DARMA-tasking/detector.git
- cd -
- else
- git clone -b "${detector_rev}" --depth 1 https://github.com/DARMA-tasking/detector.git
- export DETECTOR=$PWD/detector
- export DETECTOR_BUILD=${build_dir}/detector
- mkdir -p "$DETECTOR_BUILD"
- cd "$DETECTOR_BUILD"
- mkdir build
- cd build
- cmake -G "${CMAKE_GENERATOR:-Ninja}" \
- -DCMAKE_INSTALL_PREFIX="$DETECTOR_BUILD/install" \
- "$DETECTOR"
- cmake --build . ${dashj} --target install
- fi
-fi
-
if test -d "${source_dir}/lib/checkpoint"
then
{ echo "Checkpoint already in lib... not downloading, building, and installing"; } 2>/dev/null
@@ -93,7 +63,6 @@ else
cd build
cmake -G "${CMAKE_GENERATOR:-Ninja}" \
-DCMAKE_INSTALL_PREFIX="$CHECKPOINT_BUILD/install" \
- -Ddetector_DIR="$DETECTOR_BUILD/install" \
"$CHECKPOINT"
cmake --build . ${dashj} --target install
fi
diff --git a/ci/ctest_job_script.cmake b/ci/ctest_job_script.cmake
index d8333086a8..b6d354dc2f 100644
--- a/ci/ctest_job_script.cmake
+++ b/ci/ctest_job_script.cmake
@@ -83,12 +83,6 @@ endif()
if ( NOT DEFINED ENV{VT_RDMA_TESTS_ENABLED} )
set(ENV{VT_RDMA_TESTS_ENABLED} "1")
endif()
-if ( NOT DEFINED ENV{VT_USE_OPENMP} )
- set(ENV{VT_USE_OPENMP} "0")
-endif()
-if ( NOT DEFINED ENV{VT_USE_STD_THREAD} )
- set(ENV{VT_USE_STD_THREAD} "0")
-endif()
if ( NOT DEFINED ENV{CODE_COVERAGE} )
set(ENV{CODE_COVERAGE} "0")
endif()
@@ -143,8 +137,6 @@ set(configureOpts
"-Dvt_fcontext_enabled=$ENV{VT_FCONTEXT_ENABLED}"
"-Dvt_fcontext_build_tests_examples=$ENV{VT_FCONTEXT_BUILD_TESTS_EXAMPLES}"
"-Dvt_rdma_tests_enabled=$ENV{VT_RDMA_TESTS_ENABLED}"
- "-DUSE_OPENMP=$ENV{VT_USE_OPENMP}"
- "-DUSE_STD_THREAD=$ENV{VT_USE_STD_THREAD}"
"-DCODE_COVERAGE=$ENV{CODE_COVERAGE}"
"-DMI_INTERPOSE:BOOL=ON"
"-DMI_OVERRIDE:BOOL=ON"
@@ -156,7 +148,6 @@ set(configureOpts
"-DCMAKE_CXX_COMPILER=$ENV{CXX}"
"-DCMAKE_C_COMPILER=$ENV{CC}"
"-DCMAKE_EXE_LINKER_FLAGS=$ENV{CMAKE_EXE_LINKER_FLAGS}"
- "-Ddetector_DIR=$ENV{DETECTOR_BUILD}/install"
"-Dcheckpoint_DIR=$ENV{CHECKPOINT_BUILD}/install"
"-DCMAKE_PREFIX_PATH=$ENV{CMAKE_PREFIX_PATH}"
"-DCMAKE_INSTALL_PREFIX=$ENV{VT_BUILD}/install"
diff --git a/ci/docker/alpine-cpp.dockerfile b/ci/docker/alpine-cpp.dockerfile
index 844ec6d788..a2cf6b73c5 100644
--- a/ci/docker/alpine-cpp.dockerfile
+++ b/ci/docker/alpine-cpp.dockerfile
@@ -64,8 +64,6 @@ ARG VT_WERROR_ENABLED
ARG VT_POOL_ENABLED
ARG VT_PRODUCTION_BUILD_ENABLED
ARG VT_FCONTEXT_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG CMAKE_BUILD_TYPE
ARG VT_NO_COLOR_ENABLED
ARG BUILD_SHARED_LIBS
@@ -82,8 +80,6 @@ ENV VT_LB_ENABLED=${VT_LB_ENABLED} \
VT_POOL_ENABLED=${VT_POOL_ENABLED} \
VT_PRODUCTION_BUILD_ENABLED=${VT_PRODUCTION_BUILD_ENABLED} \
VT_FCONTEXT_ENABLED=${VT_FCONTEXT_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_NO_COLOR_ENABLED=${VT_NO_COLOR_ENABLED} \
CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} \
BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \
diff --git a/ci/docker/develop.dockerfile b/ci/docker/develop.dockerfile
index dd1a58af51..ba5cc734cc 100644
--- a/ci/docker/develop.dockerfile
+++ b/ci/docker/develop.dockerfile
@@ -44,8 +44,6 @@ ARG VT_ZOLTAN_ENABLED
ARG CMAKE_BUILD_TYPE
ARG VT_EXTENDED_TESTS_ENABLED
ARG VT_FCONTEXT_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG VT_NO_COLOR_ENABLED
ARG BUILD_SHARED_LIBS
ARG CMAKE_CXX_STANDARD
@@ -64,8 +62,6 @@ ENV VT_LB_ENABLED=${VT_LB_ENABLED} \
VT_EXTENDED_TESTS_ENABLED=${VT_EXTENDED_TESTS_ENABLED} \
VT_UNITY_BUILD_ENABLED=${VT_UNITY_BUILD_ENABLED} \
VT_FCONTEXT_ENABLED=${VT_FCONTEXT_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_DIAGNOSTICS_ENABLED=${VT_DIAGNOSTICS_ENABLED} \
VT_DIAGNOSTICS_RUNTIME_ENABLED=${VT_DIAGNOSTICS_RUNTIME_ENABLED} \
VT_NO_COLOR_ENABLED=${VT_NO_COLOR_ENABLED} \
diff --git a/ci/docker/ubuntu-18.04-gnu-docs.dockerfile b/ci/docker/ubuntu-18.04-gnu-docs.dockerfile
index ff83f47016..b88af792e3 100644
--- a/ci/docker/ubuntu-18.04-gnu-docs.dockerfile
+++ b/ci/docker/ubuntu-18.04-gnu-docs.dockerfile
@@ -39,7 +39,7 @@ ENV MPI_EXTRA_FLAGS="" \
PATH=/usr/lib/ccache/:$PATH
COPY ./ci/deps/cmake.sh cmake.sh
-RUN ./cmake.sh 3.18.4
+RUN ./cmake.sh 3.23.4
ENV PATH=/cmake/bin/:$PATH
@@ -60,8 +60,6 @@ ARG VT_PRODUCTION_BUILD_ENABLED
ARG CMAKE_BUILD_TYPE
ARG VT_EXTENDED_TESTS_ENABLED
ARG VT_FCONTEXT_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG VT_NO_COLOR_ENABLED
ARG BUILD_SHARED_LIBS
ARG CMAKE_CXX_STANDARD
@@ -79,8 +77,6 @@ ENV VT_LB_ENABLED=${VT_LB_ENABLED} \
VT_MPI_GUARD_ENABLED=${VT_MPI_GUARD_ENABLED} \
VT_EXTENDED_TESTS_ENABLED=${VT_EXTENDED_TESTS_ENABLED} \
VT_FCONTEXT_ENABLED=${VT_FCONTEXT_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_DIAGNOSTICS_ENABLED=${VT_DIAGNOSTICS_ENABLED} \
VT_DIAGNOSTICS_RUNTIME_ENABLED=${VT_DIAGNOSTICS_RUNTIME_ENABLED} \
VT_NO_COLOR_ENABLED=${VT_NO_COLOR_ENABLED} \
diff --git a/ci/docker/ubuntu-20.04-gnu-openmpi-cpp.dockerfile b/ci/docker/ubuntu-20.04-gnu-openmpi-cpp.dockerfile
index 7630963b4d..20ae266e7d 100644
--- a/ci/docker/ubuntu-20.04-gnu-openmpi-cpp.dockerfile
+++ b/ci/docker/ubuntu-20.04-gnu-openmpi-cpp.dockerfile
@@ -52,7 +52,7 @@ ENV CC=gcc \
CXX=g++
COPY ./ci/deps/cmake.sh cmake.sh
-RUN ./cmake.sh 3.18.4
+RUN ./cmake.sh 3.23.4
ENV PATH=/cmake/bin/:$PATH
ENV LESSCHARSET=utf-8
@@ -89,8 +89,6 @@ ARG VT_POOL_ENABLED
ARG VT_PRODUCTION_BUILD_ENABLED
ARG VT_ZOLTAN_ENABLED
ARG VT_FCONTEXT_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG CMAKE_BUILD_TYPE
ARG VT_EXTENDED_TESTS_ENABLED
ARG VT_NO_COLOR_ENABLED
@@ -112,8 +110,6 @@ ENV VT_LB_ENABLED=${VT_LB_ENABLED} \
VT_UNITY_BUILD_ENABLED=${VT_UNITY_BUILD_ENABLED} \
VT_PRODUCTION_BUILD_ENABLED=${VT_PRODUCTION_BUILD_ENABLED} \
VT_FCONTEXT_ENABLED=${VT_FCONTEXT_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_DIAGNOSTICS_ENABLED=${VT_DIAGNOSTICS_ENABLED} \
VT_DIAGNOSTICS_RUNTIME_ENABLED=${VT_DIAGNOSTICS_RUNTIME_ENABLED} \
VT_NO_COLOR_ENABLED=${VT_NO_COLOR_ENABLED} \
diff --git a/ci/docker/ubuntu-clang-cpp.dockerfile b/ci/docker/ubuntu-clang-cpp.dockerfile
index df7d0de7be..0436a57db9 100644
--- a/ci/docker/ubuntu-clang-cpp.dockerfile
+++ b/ci/docker/ubuntu-clang-cpp.dockerfile
@@ -44,7 +44,7 @@ COPY ./ci/deps/libunwind.sh libunwind.sh
RUN ./libunwind.sh 1.6.2
COPY ./ci/deps/cmake.sh cmake.sh
-RUN ./cmake.sh 3.18.4
+RUN ./cmake.sh 3.23.4
ENV PATH=/cmake/bin/:$PATH
ENV LESSCHARSET=utf-8
@@ -77,8 +77,6 @@ ARG VT_PRODUCTION_BUILD_ENABLED
ARG VT_TRACE_ENABLED
ARG VT_TRACE_RUNTIME_ENABLED
ARG VT_UBSAN_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG VT_WERROR_ENABLED
ARG CMAKE_CXX_STANDARD
@@ -100,8 +98,6 @@ ENV BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \
VT_TRACE_RUNTIME_ENABLED=${VT_TRACE_RUNTIME} \
VT_UBSAN_ENABLED=${VT_UBSAN_ENABLED} \
VT_UNITY_BUILD_ENABLED=${VT_UNITY_BUILD_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_WERROR_ENABLED=${VT_WERROR_ENABLED} \
CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
diff --git a/ci/docker/ubuntu-gnu-cpp.dockerfile b/ci/docker/ubuntu-gnu-cpp.dockerfile
index 0c234aa9c0..d32a4e7df6 100644
--- a/ci/docker/ubuntu-gnu-cpp.dockerfile
+++ b/ci/docker/ubuntu-gnu-cpp.dockerfile
@@ -57,7 +57,7 @@ ENV CC=gcc \
CXX=g++
COPY ./ci/deps/cmake.sh cmake.sh
-RUN ./cmake.sh 3.18.4
+RUN ./cmake.sh 3.23.4
ENV PATH=/cmake/bin/:$PATH
ENV LESSCHARSET=utf-8
@@ -104,8 +104,6 @@ ARG VT_PRODUCTION_BUILD_ENABLED
ARG VT_TRACE_ENABLED
ARG VT_TRACE_RUNTIME_ENABLED
ARG VT_UBSAN_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG VT_WERROR_ENABLED
ARG VT_ZOLTAN_ENABLED
ARG CMAKE_CXX_STANDARD
@@ -128,8 +126,6 @@ ENV BUILD_SHARED_LIBS=${BUILD_SHARED_LIBS} \
VT_TRACE_RUNTIME_ENABLED=${VT_TRACE_RUNTIME} \
VT_UBSAN_ENABLED=${VT_UBSAN_ENABLED} \
VT_UNITY_BUILD_ENABLED=${VT_UNITY_BUILD_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_WERROR_ENABLED=${VT_WERROR_ENABLED} \
VT_ZOLTAN_ENABLED=${VT_ZOLTAN_ENABLED} \
CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD}
diff --git a/ci/docker/ubuntu-intel-oneapi-cpp.dockerfile b/ci/docker/ubuntu-intel-oneapi-cpp.dockerfile
index 1cc6a200d3..c3ce8235c7 100644
--- a/ci/docker/ubuntu-intel-oneapi-cpp.dockerfile
+++ b/ci/docker/ubuntu-intel-oneapi-cpp.dockerfile
@@ -11,7 +11,7 @@ ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y -q && \
apt-get install -y -q --no-install-recommends \
- intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic \
+ intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic-2022.2.1 \
ca-certificates \
less \
curl \
@@ -70,8 +70,6 @@ ARG VT_WERROR_ENABLED
ARG VT_POOL_ENABLED
ARG VT_PRODUCTION_BUILD_ENABLED
ARG VT_FCONTEXT_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG CMAKE_BUILD_TYPE
ARG VT_EXTENDED_TESTS_ENABLED
ARG CMAKE_CXX_STANDARD
@@ -89,8 +87,6 @@ ENV VT_LB_ENABLED=${VT_LB_ENABLED} \
VT_UNITY_BUILD_ENABLED=${VT_UNITY_BUILD_ENABLED} \
VT_PRODUCTION_BUILD_ENABLED=${VT_PRODUCTION_BUILD_ENABLED} \
VT_FCONTEXT_ENABLED=${VT_FCONTEXT_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_DIAGNOSTICS_ENABLED=${VT_DIAGNOSTICS_ENABLED} \
VT_DIAGNOSTICS_RUNTIME_ENABLED=${VT_DIAGNOSTICS_RUNTIME_ENABLED} \
CMAKE_CXX_STANDARD=${CMAKE_CXX_STANDARD} \
diff --git a/ci/docker/ubuntu-nvidia-cpp.dockerfile b/ci/docker/ubuntu-nvidia-cpp.dockerfile
index 316fc385d2..8c803045ca 100644
--- a/ci/docker/ubuntu-nvidia-cpp.dockerfile
+++ b/ci/docker/ubuntu-nvidia-cpp.dockerfile
@@ -1,10 +1,11 @@
-ARG cuda=10.1
+ARG compiler=11.0.3
ARG arch=amd64
-FROM ${arch}/ubuntu:18.04 as base
+# Works with 20.04 and 22.04
+ARG ubuntu=20.04
+FROM --platform=${arch} nvidia/cuda:${compiler}-devel-ubuntu${ubuntu} as base
ARG proxy=""
-ARG compiler=nvcc-10
ENV https_proxy=${proxy} \
http_proxy=${proxy}
@@ -12,9 +13,8 @@ ENV https_proxy=${proxy} \
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update -y -q && \
- apt-get install -y -q --no-install-recommends \
+ apt-get install -y --no-install-recommends \
ca-certificates \
- g++-7 \
curl \
less \
git \
@@ -31,49 +31,11 @@ RUN apt-get update -y -q && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
-RUN if test ${compiler} = "nvcc-10"; then \
- wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin && \
- mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \
- wget http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb && \
- dpkg -i cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb && \
- apt-key add /var/cuda-repo-10-1-local-10.1.243-418.87.00/7fa2af80.pub && \
- apt-get update && \
- apt-get -y install cuda-nvcc-10-1 cuda-cudart-dev-10-1 && \
- apt-get clean && \
- rm -rf /var/lib/apt/lists/* && \
- rm -rf cuda-repo-ubuntu1804-10-1-local-10.1.243-418.87.00_1.0-1_amd64.deb && \
- ln -s /usr/local/cuda-10.1 /usr/local/cuda-versioned; \
- elif test ${compiler} = "nvcc-10.2"; then \
- wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin && \
- mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \
- wget https://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb && \
- dpkg -i cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb && \
- apt-key add /var/cuda-repo-10-2-local-10.2.89-440.33.01/7fa2af80.pub && \
- apt-get update && \
- apt-get -y install cuda && \
- apt-get clean && \
- rm -rf /var/lib/apt/lists/* && \
- rm -rf cuda-repo-ubuntu1804-10-2-local-10.2.89-440.33.01_1.0-1_amd64.deb && \
- ln -s /usr/local/cuda-10.2 /usr/local/cuda-versioned; \
- else \
- wget http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin && \
- mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600 && \
- wget http://developer.download.nvidia.com/compute/cuda/11.0.1/local_installers/cuda-repo-ubuntu1804-11-0-local_11.0.1-450.36.06-1_amd64.deb && \
- dpkg -i cuda-repo-ubuntu1804-11-0-local_11.0.1-450.36.06-1_amd64.deb && \
- apt-key add /var/cuda-repo-ubuntu1804-11-0-local/7fa2af80.pub && \
- apt-get update && \
- apt-get -y install cuda-nvcc-11-0 && \
- apt-get clean && \
- rm -rf /var/lib/apt/lists/* && \
- rm -rf cuda-repo-ubuntu1804-11-0-local_11.0.1-450.36.06-1_amd64.deb && \
- ln -s /usr/local/cuda-11.0 /usr/local/cuda-versioned; \
- fi
-
ENV CC=gcc \
CXX=g++
COPY ./ci/deps/cmake.sh cmake.sh
-RUN ./cmake.sh 3.18.4
+RUN ./cmake.sh 3.23.4
ENV PATH=/cmake/bin/:$PATH
ENV LESSCHARSET=utf-8
@@ -81,16 +43,13 @@ ENV LESSCHARSET=utf-8
COPY ./ci/deps/mpich.sh mpich.sh
RUN ./mpich.sh 3.3.2 -j4
-ENV CUDACXX=/usr/local/cuda-versioned/bin/nvcc
-ENV PATH=/usr/local/cuda-versioned/bin/:$PATH
-
RUN mkdir -p /nvcc_wrapper/build && \
- wget https://raw.githubusercontent.com/kokkos/kokkos/3.4.00/bin/nvcc_wrapper -P /nvcc_wrapper/build && \
+ wget https://raw.githubusercontent.com/kokkos/kokkos/master/bin/nvcc_wrapper -P /nvcc_wrapper/build && \
chmod +x /nvcc_wrapper/build/nvcc_wrapper
ENV MPI_EXTRA_FLAGS="" \
- CXX=/nvcc_wrapper/build/nvcc_wrapper \
- PATH=/usr/lib/ccache/:$PATH
+ PATH=/usr/lib/ccache/:/nvcc_wrapper/build:$PATH \
+ CXX=nvcc_wrapper
FROM base as build
COPY . /vt
@@ -108,8 +67,6 @@ ARG VT_PRODUCTION_BUILD_ENABLED
ARG CMAKE_BUILD_TYPE
ARG VT_EXTENDED_TESTS_ENABLED
ARG VT_FCONTEXT_ENABLED
-ARG VT_USE_OPENMP
-ARG VT_USE_STD_THREAD
ARG VT_NO_COLOR_ENABLED
ARG BUILD_SHARED_LIBS
ARG CMAKE_CXX_STANDARD
@@ -127,8 +84,6 @@ ENV VT_LB_ENABLED=${VT_LB_ENABLED} \
VT_UNITY_BUILD_ENABLED=${VT_UNITY_BUILD_ENABLED} \
VT_PRODUCTION_BUILD_ENABLED=${VT_PRODUCTION_BUILD_ENABLED} \
VT_FCONTEXT_ENABLED=${VT_FCONTEXT_ENABLED} \
- VT_USE_OPENMP=${VT_USE_OPENMP} \
- VT_USE_STD_THREAD=${VT_USE_STD_THREAD} \
VT_DIAGNOSTICS_ENABLED=${VT_DIAGNOSTICS_ENABLED} \
VT_DIAGNOSTICS_RUNTIME_ENABLED=${VT_DIAGNOSTICS_RUNTIME_ENABLED} \
VT_NO_COLOR_ENABLED=${VT_NO_COLOR_ENABLED} \
diff --git a/ci/test_spack_package.sh b/ci/test_spack_package.sh
index ccb1d00de0..abdc18eed2 100755
--- a/ci/test_spack_package.sh
+++ b/ci/test_spack_package.sh
@@ -26,8 +26,6 @@ variables_map["diagnostics_enabled"]="${VT_DIAGNOSTICS_ENABLED:-0}"
variables_map["diagnostics_runtime_enabled"]="${VT_DIAGNOSTICS_RUNTIME_ENABLED:-0}"
variables_map["unity_build_enabled"]="${VT_UNITY_BUILD_ENABLED:-0}"
variables_map["fcontext_enabled"]="${VT_FCONTEXT_ENABLED:-0}"
-variables_map["use_openmp"]="${VT_USE_OPENMP:-0}"
-variables_map["use_std_thread"]="${VT_USE_STD_THREAD:-0}"
cmd_vars=()
for flag in "${!variables_map[@]}"
diff --git a/cmake/check_compiler.cmake b/cmake/check_compiler.cmake
index cc513d3df9..3212345d8f 100644
--- a/cmake/check_compiler.cmake
+++ b/cmake/check_compiler.cmake
@@ -12,7 +12,7 @@ function(check_cc_quirk VAR CC_FILE)
${CMAKE_CURRENT_BINARY_DIR}
${CMAKE_CURRENT_SOURCE_DIR}/cmake/cc_tests/${CC_FILE}
OUTPUT_VARIABLE check_cc_quirk_output
- CXX_STANDARD 14
+ CXX_STANDARD 17
CXX_STANDARD_REQUIRED ON
CXX_EXTENSIONS OFF
)
diff --git a/cmake/link_vt.cmake b/cmake/link_vt.cmake
index e1fa69d8c4..b85f79dff0 100644
--- a/cmake/link_vt.cmake
+++ b/cmake/link_vt.cmake
@@ -17,8 +17,6 @@ function(link_target_with_vt)
singleValArg
TARGET
BUILD_TYPE
- LINK_OPENMP
- LINK_STDTHREAD
LINK_GTEST
# the following linking options are enabled by default
LINK_ATOMIC
@@ -29,7 +27,6 @@ function(link_target_with_vt)
LINK_ZLIB
LINK_FCONTEXT
LINK_CHECKPOINT
- LINK_DETECTOR
LINK_CLI11
LINK_DL
LINK_ZOLTAN
@@ -196,15 +193,6 @@ function(link_target_with_vt)
)
endif()
- if (NOT DEFINED ARG_LINK_DETECTOR AND ${ARG_DEFAULT_LINK_SET} OR ARG_LINK_DETECTOR)
- if (${ARG_DEBUG_LINK})
- message(STATUS "link_target_with_vt: detector=${ARG_LINK_DETECTOR}")
- endif()
- target_link_libraries(
- ${ARG_TARGET} PUBLIC ${ARG_BUILD_TYPE} vt::lib::detector
- )
- endif()
-
if (NOT DEFINED ARG_LINK_CLI11 AND ${ARG_DEFAULT_LINK_SET} OR ARG_LINK_CLI11)
if (${ARG_DEBUG_LINK})
message(STATUS "link_target_with_vt: cli11=${ARG_LINK_CLI11}")
@@ -215,25 +203,6 @@ function(link_target_with_vt)
)
endif()
- if (NOT DEFINED ARG_LINK_OPENMP AND DEFAULT_THREADING STREQUAL openmp OR ARG_LINK_OPENMP)
- if (${ARG_DEBUG_LINK})
- message(
- STATUS
- "link_target_with_vt: dt=${DEFAULT_THREADING}, omp=${ARG_LINK_OPENMP}"
- )
- endif()
- target_link_libraries(
- ${ARG_TARGET} PUBLIC ${ARG_BUILD_TYPE} OpenMP::OpenMP_CXX
- )
- elseif (NOT DEFINED ARG_LINK_STDTHREAD AND DEFAULT_THREADING STREQUAL stdthread OR ARG_LINK_STDTHREAD)
- if (${ARG_DEBUG_LINK})
- message(STATUS "link_target_with_vt(..): stdthread=${ARG_LINK_STDTHREAD}")
- endif()
- target_link_libraries(
- ${ARG_TARGET} PUBLIC ${ARG_BUILD_TYPE} Threads::Threads
- )
- endif()
-
if (${vt_mimalloc_enabled})
if (${ARG_DEBUG_LINK})
message(STATUS "link_target_with_vt: mimalloc=${vt_mimalloc_enabled}")
diff --git a/cmake/load_bundled_libraries.cmake b/cmake/load_bundled_libraries.cmake
index 6331d8f93c..96146ad6d3 100644
--- a/cmake/load_bundled_libraries.cmake
+++ b/cmake/load_bundled_libraries.cmake
@@ -2,9 +2,6 @@
include(SetCXXCompilerFlags)
-# Export a minimum version flag for any bundled libraries that don't set their own
-set(CMAKE_CXX_STANDARD 14)
-
# Optionally include libfort which is used by diagnostics
if (vt_libfort_enabled)
set(FORT_ENABLE_TESTING OFF CACHE INTERNAL "")
diff --git a/cmake/load_local_packages.cmake b/cmake/load_local_packages.cmake
index ac98393db5..029d8bd96e 100644
--- a/cmake/load_local_packages.cmake
+++ b/cmake/load_local_packages.cmake
@@ -5,15 +5,6 @@
include(cmake/local_package.cmake)
-if (EXISTS "${PROJECT_LIB_DIR}/detector")
- add_subdirectory(${PROJECT_LIB_DIR}/detector)
-else()
- # require directories for these packages
- require_pkg_directory(detector "VT detector library")
- # find these required packages locally
- find_package_local(detector "${detector_DIR}" detector)
-endif()
-
if (EXISTS "${PROJECT_LIB_DIR}/checkpoint")
add_subdirectory(${PROJECT_LIB_DIR}/checkpoint)
else()
diff --git a/cmake/load_packages.cmake b/cmake/load_packages.cmake
index b3c8eb05c7..01c60990e4 100644
--- a/cmake/load_packages.cmake
+++ b/cmake/load_packages.cmake
@@ -1,6 +1,6 @@
get_directory_property(projHasParent PARENT_DIRECTORY)
-# Local packages that VT depends on (detector/checkpoint)
+# Local packages that VT depends on: checkpoint
include(cmake/load_local_packages.cmake)
# MPI package
diff --git a/cmake/load_threading_package.cmake b/cmake/load_threading_package.cmake
index 29350db140..8b5e5e1c36 100644
--- a/cmake/load_threading_package.cmake
+++ b/cmake/load_threading_package.cmake
@@ -2,46 +2,17 @@
# Load and discover threading settings
#
-include(cmake/threading_config.cmake)
-
# Threading build configuration
-option(USE_STD_THREAD "whether to force use of std::thread for threading" OFF)
-option(USE_OPENMP "whether to force use of OpenMP for threading" OFF)
option(vt_fcontext_enabled "Build VT with fcontext (ULT) enabled" OFF)
-if (USE_STD_THREAD)
- message(
- STATUS
- "Using std::thread for worker threading"
- )
- find_package(Threads)
- config_for_std_thread()
-elseif(USE_OPENMP)
- message(
- STATUS
- "Using OpenMP for worker threading"
- )
- find_package(OpenMP)
- config_for_openmp()
- if (NOT OpenMP_FOUND)
- message(
- FATAL_ERROR
- "requested OpenMP with -DUSE_OPENMP=On, but cannot find "
- "valid OpenMP in compiler"
- )
- endif()
-elseif(vt_fcontext_enabled)
+if(vt_fcontext_enabled)
message(
STATUS
"Using fcontext for worker threading"
)
- config_for_fcontext()
else()
message(
STATUS
"Threading disabled"
)
- config_no_threading()
endif()
-
-set(THREADS_DEPENDENCY ${LOCAL_THREADS_DEPENDENCY} CACHE STRING "Rule for threading dependency used in vtConfig" FORCE)
diff --git a/cmake/threading_config.cmake b/cmake/threading_config.cmake
deleted file mode 100644
index 39a878d483..0000000000
--- a/cmake/threading_config.cmake
+++ /dev/null
@@ -1,39 +0,0 @@
-function(config_for_openmp)
- message(
- STATUS
- "OpenMP has been found: "
- "Linker=\"${OpenMP_EXE_LINKER_FLAGS}\", "
- "CC FLAGS=\"${OpenMP_C_FLAGS}\", "
- "CXX FLAGS=\"${OpenMP_CXX_FLAGS}\""
- )
-
- set(DEFAULT_THREADING openmp PARENT_SCOPE)
-
- set(vt_feature_cmake_openmp "1" PARENT_SCOPE)
- set(vt_feature_cmake_stdthread "0" PARENT_SCOPE)
- set(vt_fcontext_enabled "0" PARENT_SCOPE)
-
- set(LOCAL_THREADS_DEPENDENCY "find_dependency(OpenMP REQUIRED)" PARENT_SCOPE)
-endfunction(config_for_openmp)
-
-function(config_for_std_thread)
- set(DEFAULT_THREADING stdthread PARENT_SCOPE)
-
- set(vt_feature_cmake_openmp "0" PARENT_SCOPE)
- set(vt_feature_cmake_stdthread "1" PARENT_SCOPE)
- set(vt_fcontext_enabled "0" PARENT_SCOPE)
-
- set(LOCAL_THREADS_DEPENDENCY "find_dependency(Threads REQUIRED)" PARENT_SCOPE)
-endfunction(config_for_std_thread)
-
-function(config_for_fcontext)
- set(vt_feature_cmake_openmp "0" PARENT_SCOPE)
- set(vt_feature_cmake_stdthread "0" PARENT_SCOPE)
- set(vt_fcontext_enabled "1" PARENT_SCOPE)
-endfunction(config_for_fcontext)
-
-function(config_no_threading)
- set(vt_feature_cmake_openmp "0" PARENT_SCOPE)
- set(vt_feature_cmake_stdthread "0" PARENT_SCOPE)
- set(vt_fcontext_enabled "0" PARENT_SCOPE)
-endfunction(config_no_threading)
diff --git a/cmake/trace_only_functions.cmake b/cmake/trace_only_functions.cmake
index 591f56075c..edeaf57ff4 100644
--- a/cmake/trace_only_functions.cmake
+++ b/cmake/trace_only_functions.cmake
@@ -50,8 +50,7 @@ function(create_trace_only_target)
vt/utils/demangle/demangle.h vt/utils/bits/bits_counter.h
vt/utils/bits/bits_common.h vt/utils/bits/bits_packer.h
vt/utils/bits/bits_packer.impl.h vt/utils/adt/union.h
- vt/utils/tls/tls.h vt/utils/tls/std_tls.h vt/utils/tls/null_tls.h
- vt/utils/tls/tls.impl.h vt/utils/adt/histogram_approx.h
+ vt/utils/adt/histogram_approx.h
# vt/collective
vt/collective/basic.h
@@ -157,7 +156,7 @@ function(set_trace_only_config)
# since the scope is local to this function
set(vt_feature_cmake_trace_enabled "1")
set(vt_feature_cmake_trace_only "1")
- config_no_threading()
+ set(vt_fcontext_enabled "0" PARENT_SCOPE)
configure_file(
${PROJECT_BASE_DIR}/cmake_config.h.in
diff --git a/cmake/vtConfig.cmake.in b/cmake/vtConfig.cmake.in
index c13ed413d6..97a179750d 100644
--- a/cmake/vtConfig.cmake.in
+++ b/cmake/vtConfig.cmake.in
@@ -14,16 +14,10 @@ endif()
include(CMakeFindDependencyMacro)
-@THREADS_DEPENDENCY@
@ZOLTAN_DEPENDENCY@
find_dependency(MPI REQUIRED)
-if (@detector_PACKAGE_LOADED@)
- set (detector_DIR @detector_DIR@)
- find_dependency(detector REQUIRED HINTS @detector_DIR@)
-endif()
-
if (@checkpoint_PACKAGE_LOADED@)
set (checkpoint_DIR @checkpoint_DIR@)
find_dependency(checkpoint REQUIRED HINTS @checkpoint_DIR@)
diff --git a/cmake_config.h.in b/cmake_config.h.in
index 686c98e95e..fe189b7565 100644
--- a/cmake_config.h.in
+++ b/cmake_config.h.in
@@ -46,9 +46,7 @@
#define vt_feature_cmake_trace_enabled @vt_feature_cmake_trace_enabled@
#define vt_feature_cmake_trace_only @vt_feature_cmake_trace_only@
#define vt_feature_cmake_lblite @vt_feature_cmake_lblite@
-#define vt_feature_cmake_openmp @vt_feature_cmake_openmp@
#define vt_feature_cmake_production @vt_feature_cmake_production@
-#define vt_feature_cmake_stdthread @vt_feature_cmake_stdthread@
#define vt_feature_cmake_mpi_rdma @vt_feature_cmake_mpi_rdma@
#define vt_feature_cmake_print_term_msgs @vt_feature_cmake_print_term_msgs@
#define vt_feature_cmake_no_pool_alloc_env @vt_feature_cmake_no_pool_alloc_env@
diff --git a/docker-compose.yml b/docker-compose.yml
index 08a5d240dc..f9048ba96d 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -14,7 +14,7 @@
# clang-4.0, clang-5.0, clang-6.0, clang-7, clang-8,
# clang-9, clang-10,
# icpx,
-# nvcc-10, nvcc-10.2, nvcc-11}
+# nvcc-11, nvcc-11.2}
# REPO=lifflander1/vt
# UBUNTU={18.04, 20.04}
# ULIMIT_CORE=0
@@ -33,8 +33,6 @@
# VT_UNITY_BUILD=0 # Build with Unity/Jumbo mode enabled
# VT_PRODUCTION_BUILD=0 # Disable assertions and debug prints
# VT_FCONTEXT=0 # Force use of fcontext for threading
-# VT_USE_OPENMP=0 # Force use of OpenMP for threading
-# VT_USE_STD_THREAD=0 # Force use of std::thread for threading
# VT_DIAGNOSTICS=1 # Build with diagnostics enabled
# VT_DIAGNOSTICS_RUNTIME=0 # Enable diagnostics collection at runtime by default
# BUILD_TYPE=release # CMake build type
@@ -86,9 +84,8 @@ volumes:
amd64-ubuntu-20.04-gcc-10-cache:
amd64-ubuntu-18.04-icpx-cache:
amd64-ubuntu-18.04-icpc-cache:
- amd64-ubuntu-18.04-nvcc-10-cache:
- amd64-ubuntu-18.04-nvcc-10.2-cache:
amd64-ubuntu-18.04-nvcc-11-cache:
+ amd64-ubuntu-18.04-nvcc-11.2-cache:
amd64-alpine-clang-4.0-cache:
amd64-alpine-clang-5.0-cache:
amd64-alpine-clang-6.0-cache:
@@ -106,9 +103,8 @@ volumes:
amd64-alpine-icc-20-cache:
amd64-alpine-icpx-cache:
amd64-alpine-icpc-cache:
- amd64-alpine-nvcc-10-cache:
- amd64-alpine-nvcc-10.2-cache:
amd64-alpine-nvcc-11-cache:
+ amd64-alpine-nvcc-11.2-cache:
arm64v8-ubuntu-18.04-gcc-7-cache:
arm64v8-alpine-gcc-7-cache:
@@ -139,8 +135,6 @@ x-vtopts: &vtopts
VT_UNITY_BUILD_ENABLED: ${VT_UNITY_BUILD:-0}
VT_PRODUCTION_BUILD_ENABLED: ${VT_PRODUCTION_BUILD:-0}
VT_FCONTEXT_ENABLED: ${VT_FCONTEXT:-0}
- VT_USE_OPENMP: ${VT_USE_OPENMP:-0}
- VT_USE_STD_THREAD: ${VT_USE_STD_THREAD:-0}
VT_DIAGNOSTICS_ENABLED: ${VT_DIAGNOSTICS:-1}
VT_DIAGNOSTICS_RUNTIME_ENABLED: ${VT_DIAGNOSTICS_RUNTIME:-0}
CMAKE_BUILD_TYPE: ${BUILD_TYPE:-release}
@@ -159,7 +153,7 @@ x-vtopts: &vtopts
VT_INCLUSION_TYPE: ${VT_INCLUSION:-TPL}
CODECOV_TOKEN: ${CODECOV_TOKEN:-}
TEST_LB_SCHEMA: ${TEST_LB_SCHEMA:-0}
- CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD:-14}
+ CMAKE_CXX_STANDARD: ${CMAKE_CXX_STANDARD:-17}
services:
##############################################################################
diff --git a/docs/Doxyfile.in-mcss b/docs/Doxyfile.in-mcss
index aa8bc4751f..8d1fd5803e 100644
--- a/docs/Doxyfile.in-mcss
+++ b/docs/Doxyfile.in-mcss
@@ -14,7 +14,7 @@ M_LINKS_NAVBAR1 = \
M_LINKS_NAVBAR2 = \
"annotated" \
"files" \
- "GitHub Checkpoint Detector LBAF Checkpoint Analyzer Documentation"
+ "GitHub Checkpoint LBAF Checkpoint Analyzer Documentation"
ALIASES += \
diff --git a/docs/md/building.md b/docs/md/building.md
index 60728d090f..d47c2b7048 100644
--- a/docs/md/building.md
+++ b/docs/md/building.md
@@ -9,26 +9,19 @@ external dependencies come bundled with \vt for ease of compiling.
To build \vt, one must obtain the following dependencies:
\subsection required-deps Required
- - detector, (*vt* ecosystem)
- checkpoint, (*vt* ecosystem)
- MPI (mpich/openmpi/mvapich/IBM Spectrum MPI/Cray MPICH/etc.)
-\subsection optional-deps Optional (if threading enabled)
-
- - OpenMP _or_
- - Default to `std::thread`
-
\subsection automatic-build-deps Automatically build dependencies
-Assuming MPI is installed and accessible via CC/CXX, the only other dependencies
-that are required are checkpoint and detector. The easiest way to get these
-built are to clone them inside `vt/lib`:
+Assuming MPI is installed and accessible via CC/CXX, the only other dependency
+that is required is checkpoint. The easiest way to get these
+built are to clone it inside `vt/lib`:
```bash
$ git clone git@github.com:DARMA-tasking/vt
$ cd vt/lib
$ git clone git@github.com:DARMA-tasking/checkpoint
-$ git clone git@github.com:DARMA-tasking/detector
```
With these in `vt/lib`, cmake will automatically build them and stitch them into
@@ -36,7 +29,7 @@ With these in `vt/lib`, cmake will automatically build them and stitch them into
\subsection use-cmake-directly-vars Using cmake directly
-One may use `cmake` as normal on *vt*, with checkpoint and detector cloned in
+One may use `cmake` as normal on *vt*, with checkpoint cloned in
`vt/lib` to compile them all together as explained above. The following are some
custom configuration build options that can be provided to `cmake` to change the
build configuration:
@@ -65,8 +58,6 @@ build configuration:
| `vt_fcontext_enabled` | 0 | Force use of fcontext for threading |
| `vt_tests_num_nodes` | - | Maximum number of nodes used for tests. If empty, then the default value detected by CMake is used |
| `CODE_COVERAGE` | 0 | Enable code coverage for VT examples/tests |
-| `USE_OPENMP` | 0 | Force use of OpenMP for threading |
-| `USE_STD_THREAD` | 0 | Force use of std::thread for threading |
| `VT_BUILD_TESTS` | 1 | Build all VT tests |
| `VT_BUILD_EXAMPLES` | 1 | Build all VT examples |
| `vt_debug_verbose` | 1 (not Release) | Enable VT verbose debug prints at compile-time |
@@ -95,8 +86,6 @@ parameters.
| `VT_WERROR_ENABLED ` | 0 | Treat all warnings as errors |
| `VT_POOL_ENABLED ` | 1 | Use memory pool in *vt* for message allocation |
| `VT_FCONTEXT_ENABLED` | 0 | Force use of fcontext for threading |
-| `VT_USE_OPENMP` | 0 | Force use of OpenMP for threading |
-| `VT_USE_STD_THREAD` | 0 | Force use of std::thread for threading |
| `VT_ZOLTAN_ENABLED ` | 0 | Build with Zoltan enabled for `ZoltanLB` support |
| `ZOLTAN_DIR ` | | Directory pointing to Zoltan installation |
| `VT_MPI_GUARD_ENABLED ` | 0 | Guards against mis-use of MPI calls in code using *vt* |
@@ -154,7 +143,7 @@ which `docker-compose` will read.
# clang-4.0, clang-5.0, clang-6.0, clang-7, clang-8,
# clang-9, clang-10,
# icc-18, icc-19,
-# nvcc-10, nvcc-11}
+# nvcc-10, nvcc-11, nvcc-11.2}
# REPO=lifflander1/vt
# UBUNTU={18.04, 20.04}
# ULIMIT_CORE=0
@@ -172,8 +161,6 @@ which `docker-compose` will read.
# VT_ZOLTAN=0 # Build with Zoltan enabled
# VT_UNITY_BUILD=0 # Build with Unity/Jumbo mode enabled
# VT_FCONTEXT=0 # Force use of fcontext for threading
-# VT_USE_OPENMP=0 # Force use of OpenMP for threading
-# VT_USE_STD_THREAD=0 # Force use of std::thread for threading
# VT_DIAGNOSTICS=1 # Build with diagnostics enabled
# VT_DIAGNOSTICS_RUNTIME=0 # Enable diagnostics at runtime by default
# BUILD_TYPE=release # CMake build type
diff --git a/docs/md/mainpage.md b/docs/md/mainpage.md
index 270b84eb70..7583c0aa63 100644
--- a/docs/md/mainpage.md
+++ b/docs/md/mainpage.md
@@ -27,7 +27,6 @@ supercomputer architectures. The main public repositories are:
| ---------------------------------- | -------------------------------------------------------------- | -------------------------- |
| HPC Runtime | @m_span{m-text m-success} DARMA/vt @m_endspan (Virtual Transport) | [Github](https://github.com/DARMA-tasking/vt) |
| HPC Serialization | @m_span{m-text m-success} DARMA/checkpoint @m_endspan (Checkpointing and Serialization Library) | [Github](https://github.com/DARMA-tasking/checkpoint) |
-| C++ trait detection and checking | @m_span{m-text m-success} DARMA/detector @m_endspan (C++ trait detector) | [Github](https://github.com/DARMA-tasking/detector) |
| HPC LB Simulator | @m_span{m-text m-success} DARMA/LBAF @m_endspan (Load Balancing Analysis Framework) | [Github](https://github.com/DARMA-tasking/LB-analysis-framework) |
| HPC Serializer compiler analyzer | @m_span{m-text m-success} DARMA/checkpoint-analyzer @m_endspan (Static verification of serializers) | [Github](https://github.com/DARMA-tasking/checkpoint-member-analyzer) |
| Toolkit documentation | @m_span{m-text m-success} DARMA/docs @m_endspan | [Docs](https://github.com/DARMA-tasking/DARMA-tasking.github.io) |
diff --git a/docs/md/param.md b/docs/md/param.md
deleted file mode 100644
index e51af1a698..0000000000
--- a/docs/md/param.md
+++ /dev/null
@@ -1,8 +0,0 @@
-\page param Parameterization
-\brief Handler parameterization
-
-@m_class{m-label m-danger} **Experimental**
-
-The parameterization component `vt::param::Param`, accessed via `vt::theParam()`
-is an experimental component for parameterizing arguments into active function
-handlers as an alternative to messages.
diff --git a/docs/md/vt.md b/docs/md/vt.md
index 10d1c888b6..a9c4064320 100644
--- a/docs/md/vt.md
+++ b/docs/md/vt.md
@@ -29,7 +29,7 @@ management.
- RDMA using MPI one-sided for data transfer
- Asynchronous Collectives across nodes/groups (scatter, async barrier, reduce, ...)
- General scheduler with prioritization
- - Built-in interoperability with MPI and threading libraries (Kokkos, OpenMP, ...)
+ - Built-in interoperability with MPI and threading libraries (e.g. Kokkos, fcontext)
- Object groups for node-level encapsulation
- Virtual contexts for migratable virtualization and dispatch
- Abstractions for multi-dimensional indices, mapping, and linearization
@@ -50,7 +50,6 @@ management.
| \subpage location | `vt::theLocMan()` | \copybrief location | @m_class{m-label m-success} **Core** |
| \subpage mem-usage | `vt::theMemUsage()` | \copybrief mem-usage | @m_class{m-label m-warning} **Optional** |
| \subpage objgroup | `vt::theObjGroup()` | \copybrief objgroup | @m_class{m-label m-success} **Core** |
-| \subpage param | `vt::theParam()` | \copybrief param | @m_class{m-label m-danger} **Experimental** |
| \subpage pipe | `vt::theCB()` | \copybrief pipe | @m_class{m-label m-success} **Core** |
| \subpage node-lb-data | `vt::theNodeLBData()` | \copybrief node-lb-data | @m_class{m-label m-warning} **Optional** |
| \subpage phase | `vt::thePhase()` | \copybrief phase | @m_class{m-label m-success} **Core** |
diff --git a/examples/callback/callback.cc b/examples/callback/callback.cc
index df734afcaf..316ddb0090 100644
--- a/examples/callback/callback.cc
+++ b/examples/callback/callback.cc
@@ -110,13 +110,13 @@ struct MyObj {
struct MyCol : vt::Collection { };
// Collection handler callback endpoint
-void colHan(TestMsg* msg, MyCol* col) {
+void colHan(MyCol* col, TestMsg* msg) {
printOutput(msg, "MyCol colHan (non-intrusive)");
}
void bounceCallback(vt::Callback cb) {
auto msg = vt::makeMessage(cb);
- vt::theMsg()->sendMsg(1, msg);
+ vt::theMsg()->sendMsg(1, msg);
}
int main(int argc, char** argv) {
diff --git a/examples/collection/jacobi1d_vt.cc b/examples/collection/jacobi1d_vt.cc
index 90311bdde1..959693ad09 100644
--- a/examples/collection/jacobi1d_vt.cc
+++ b/examples/collection/jacobi1d_vt.cc
@@ -322,7 +322,7 @@ struct LinearPb1DJacobi : vt::Collection {
bool isWorkDone( vt::objgroup::proxy::Proxy const& proxy){
auto const this_node = vt::theContext()->getNode();
- return proxy[this_node].invoke();
+ return proxy[this_node].invoke<&NodeObj::isWorkFinished>();
}
int main(int argc, char** argv) {
diff --git a/examples/collection/jacobi2d_vt.cc b/examples/collection/jacobi2d_vt.cc
index 747da6a3dc..46e9c2b8d7 100644
--- a/examples/collection/jacobi2d_vt.cc
+++ b/examples/collection/jacobi2d_vt.cc
@@ -427,7 +427,7 @@ struct LinearPb2DJacobi : vt::Collection {
bool isWorkDone( vt::objgroup::proxy::Proxy const& proxy){
auto const this_node = vt::theContext()->getNode();
- return proxy[this_node].invoke();
+ return proxy[this_node].invoke<&NodeObj::isWorkFinished>();
}
int main(int argc, char** argv) {
diff --git a/examples/collection/lb_iter.cc b/examples/collection/lb_iter.cc
index 5b4a3ac2ca..6d467b0347 100644
--- a/examples/collection/lb_iter.cc
+++ b/examples/collection/lb_iter.cc
@@ -47,22 +47,7 @@ static constexpr int32_t const default_num_elms = 64;
static int32_t num_iter = 8;
struct IterCol : vt::Collection {
- IterCol() = default;
-
- struct IterMsg : vt::CollectionMessage {
- IterMsg() = default;
- IterMsg(
- int64_t const in_work_amt, int64_t const in_iter, int64_t const subphase
- )
- : iter_(in_iter), work_amt_(in_work_amt), subphase_(subphase)
- { }
-
- int64_t iter_ = 0;
- int64_t work_amt_ = 0;
- int64_t subphase_ = 0;
- };
-
- void iterWork(IterMsg* msg);
+ void iterWork(int64_t work_amt, int64_t iter, int subphase);
template
void serialize(SerializerT& s) {
@@ -76,10 +61,10 @@ struct IterCol : vt::Collection {
static double weight = 1.0f;
-void IterCol::iterWork(IterMsg* msg) {
- this->lb_data_.setSubPhase(msg->subphase_);
+void IterCol::iterWork(int64_t work_amt, int64_t iter, int subphase) {
+ this->lb_data_.setSubPhase(subphase);
double val = 0.1f;
- double val2 = 0.4f * msg->work_amt_;
+ double val2 = 0.4f * work_amt;
auto const idx = getIndex().x();
int64_t const max_work = 1000 * weight;
int64_t const mid_work = 100 * weight;
@@ -131,13 +116,13 @@ int main(int argc, char** argv) {
auto cur_time = vt::timing::getCurrentTime();
vt::runInEpochCollective([=]{
- proxy.broadcastCollective(10, i, 0);
+ proxy.broadcastCollective<&IterCol::iterWork>(10, i, 0);
});
vt::runInEpochCollective([=]{
- proxy.broadcastCollective(5, i, 1);
+ proxy.broadcastCollective<&IterCol::iterWork>(5, i, 1);
});
vt::runInEpochCollective([=]{
- proxy.broadcastCollective(15, i, 2);
+ proxy.broadcastCollective<&IterCol::iterWork>(15, i, 2);
});
auto total_time = vt::timing::getCurrentTime() - cur_time;
diff --git a/examples/collection/migrate_collection.cc b/examples/collection/migrate_collection.cc
index bc77c205f3..ee86a8bd2d 100644
--- a/examples/collection/migrate_collection.cc
+++ b/examples/collection/migrate_collection.cc
@@ -65,20 +65,12 @@ struct Hello : vt::Collection {
double test_val = 0.0;
};
-struct ColMsg : vt::CollectionMessage {
- explicit ColMsg(vt::NodeType const& in_from_node)
- : from_node(in_from_node)
- { }
-
- vt::NodeType from_node = vt::uninitialized_destination;
-};
-
-static void doWork(ColMsg* msg, Hello* col) {
+static void doWork(Hello* col) {
vt::NodeType this_node = vt::theContext()->getNode();
fmt::print("{}: idx={}: val={}\n", this_node, col->getIndex(), col->test_val);
}
-static void migrateToNext(ColMsg* msg, Hello* col) {
+static void migrateToNext(Hello* col) {
vt::NodeType this_node = vt::theContext()->getNode();
vt::NodeType num_nodes = vt::theContext()->getNumNodes();
vt::NodeType next_node = (this_node + 1) % num_nodes;
@@ -109,13 +101,9 @@ int main(int argc, char** argv) {
.wait();
if (this_node == 0) {
- vt::runInEpochRooted([=] { proxy.broadcast(this_node); });
-
- vt::runInEpochRooted(
- [=] { proxy.broadcast(this_node); }
- );
-
- vt::runInEpochRooted([=] { proxy.broadcast(this_node); });
+ vt::runInEpochRooted([=] { proxy.broadcast(); });
+ vt::runInEpochRooted([=] { proxy.broadcast(); });
+ vt::runInEpochRooted([=] { proxy.broadcast(); });
}
vt::finalize();
diff --git a/examples/collection/polymorphic_collection.cc b/examples/collection/polymorphic_collection.cc
index e470b65576..88bab1448f 100644
--- a/examples/collection/polymorphic_collection.cc
+++ b/examples/collection/polymorphic_collection.cc
@@ -46,7 +46,6 @@
/// [Polymorphic collection example]
static constexpr int32_t const default_num_elms = 16;
struct InitialConsTag{};
-struct ColMsg;
struct Hello : vt::Collection {
checkpoint_virtual_serialize_root()
@@ -62,19 +61,11 @@ struct Hello : vt::Collection {
s | test_val;
}
- virtual void doWork(ColMsg* msg);
+ virtual void doWork();
double test_val = 0.0;
};
-struct ColMsg : vt::CollectionMessage {
- explicit ColMsg(vt::NodeType const& in_from_node)
- : from_node(in_from_node)
- { }
-
- vt::NodeType from_node = vt::uninitialized_destination;
-};
-
template
struct HelloTyped : Hello {
checkpoint_virtual_serialize_derived_from(Hello)
@@ -84,7 +75,7 @@ struct HelloTyped : Hello {
: Hello(checkpoint::SERIALIZE_CONSTRUCT_TAG{})
{}
- virtual void doWork(ColMsg* msg) override;
+ virtual void doWork() override;
template
void serialize(Serializer& s) {
@@ -95,14 +86,14 @@ struct HelloTyped : Hello {
};
template <>
-void HelloTyped::doWork(ColMsg* msg) {
+void HelloTyped::doWork() {
fmt::print("correctly doing this -- int!\n");
- Hello::doWork(msg);
+ Hello::doWork();
}
template <>
-void HelloTyped::doWork(ColMsg* msg) {
- Hello::doWork(msg);
+void HelloTyped::doWork() {
+ Hello::doWork();
fmt::print("correctly doing this -- double!\n");
}
@@ -124,7 +115,7 @@ HelloTyped::HelloTyped(InitialConsTag)
}
}
-void Hello::doWork(ColMsg* msg) {
+void Hello::doWork() {
vt_print(
gen, "idx={}: val={}, type={}\n",
getIndex(), test_val, typeid(*this).name()
@@ -147,7 +138,7 @@ void Hello::doWork(ColMsg* msg) {
}
-static void migrateToNext(ColMsg* msg, Hello* col) {
+static void migrateToNext(Hello* col) {
vt::NodeType this_node = vt::theContext()->getNode();
vt::NodeType num_nodes = vt::theContext()->getNumNodes();
vt::NodeType next_node = (this_node + 1) % num_nodes;
@@ -191,21 +182,13 @@ int main(int argc, char** argv) {
.wait();
for (int p = 0; p < 10; p++) {
- vt::runInEpochCollective([&]{
- proxy.broadcastCollective(this_node);
- });
- vt::runInEpochCollective([&]{
- proxy.broadcastCollective(this_node);
- });
- vt::runInEpochCollective([&]{
- proxy.broadcastCollective(this_node);
- });
+ vt::runInEpochCollective([&]{ proxy.broadcastCollective<&Hello::doWork>(); });
+ vt::runInEpochCollective([&]{ proxy.broadcastCollective(); });
+ vt::runInEpochCollective([&]{ proxy.broadcastCollective<&Hello::doWork>(); });
}
for (int p = 0; p < 10; p++) {
- vt::runInEpochCollective([&]{
- proxy.broadcastCollective(this_node);
- });
+ vt::runInEpochCollective([&]{ proxy.broadcastCollective<&Hello::doWork>(); });
vt::thePhase()->nextPhaseCollective();
}
diff --git a/examples/collection/transpose.cc b/examples/collection/transpose.cc
index 32b1074880..0a4c1ad965 100644
--- a/examples/collection/transpose.cc
+++ b/examples/collection/transpose.cc
@@ -165,7 +165,7 @@ struct Block : vt::Collection {
);
auto const from_idx = getIndex().x();
auto data_msg = vt::makeMessage(data_,from_idx);
- vt::theMsg()->sendMsg(
+ vt::theMsg()->sendMsg(
requesting_node, data_msg
);
}
@@ -313,7 +313,7 @@ static void solveGroupSetup(vt::NodeType this_node, vt::VirtualProxyType coll_pr
if (this_node == 1) {
auto msg = vt::makeMessage(coll_proxy);
vt::envelopeSetGroup(msg->env, group_id);
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->broadcastMsg(msg);
}
}, true
);
diff --git a/examples/group/group_collective.cc b/examples/group/group_collective.cc
index f75ea2664a..e43a4b0e5e 100644
--- a/examples/group/group_collective.cc
+++ b/examples/group/group_collective.cc
@@ -91,7 +91,7 @@ int main(int argc, char** argv) {
if (this_node == 1) {
auto msg = vt::makeMessage();
vt::envelopeSetGroup(msg->env, group);
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->broadcastMsg(msg);
}
}
);
diff --git a/examples/group/group_rooted.cc b/examples/group/group_rooted.cc
index bd3f3777ef..094da60fe9 100644
--- a/examples/group/group_rooted.cc
+++ b/examples/group/group_rooted.cc
@@ -71,7 +71,7 @@ int main(int argc, char** argv) {
if (this_node == 0) {
auto msg = vt::makeMessage(this_node);
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->broadcastMsg(msg);
using RangeType = vt::group::region::Range;
auto list = std::make_unique(num_nodes / 2, num_nodes);
@@ -79,7 +79,7 @@ int main(int argc, char** argv) {
vt::theGroup()->newGroup(std::move(list), [=](vt::GroupType group){
auto gmsg = vt::makeMessage(this_node);
vt::envelopeSetGroup(gmsg->env, group);
- vt::theMsg()->broadcastMsg(gmsg);
+ vt::theMsg()->broadcastMsg(gmsg);
});
}
diff --git a/examples/hello_world/CMakeLists.txt b/examples/hello_world/CMakeLists.txt
index 2fa6194395..1b7d464fc1 100644
--- a/examples/hello_world/CMakeLists.txt
+++ b/examples/hello_world/CMakeLists.txt
@@ -10,7 +10,6 @@ set(
hello_world_virtual_context
hello_world_virtual_context_remote
ring
- param
objgroup
)
diff --git a/examples/hello_world/hello_world.cc b/examples/hello_world/hello_world.cc
index 659dc86bda..5200de3783 100644
--- a/examples/hello_world/hello_world.cc
+++ b/examples/hello_world/hello_world.cc
@@ -49,9 +49,9 @@ struct HelloMsg : vt::Message {
vt::NodeType from = 0;
};
-static void hello_world(HelloMsg* msg) {
+void hello_world(int a, int b, float c) {
vt::NodeType this_node = vt::theContext()->getNode();
- fmt::print("{}: Hello from node {}\n", this_node, msg->from);
+ fmt::print("{}: Hello from node vals = {} {} {}\n", this_node, a, b, c);
}
int main(int argc, char** argv) {
@@ -65,8 +65,7 @@ int main(int argc, char** argv) {
}
if (this_node == 0) {
- auto msg = vt::makeMessage(this_node);
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->send(vt::Node{1}, 10, 20, 11.3f);
}
vt::finalize();
diff --git a/examples/hello_world/hello_world_collection.cc b/examples/hello_world/hello_world_collection.cc
index 0bfbd3d826..bd9305dc2e 100644
--- a/examples/hello_world/hello_world_collection.cc
+++ b/examples/hello_world/hello_world_collection.cc
@@ -51,10 +51,8 @@ struct Hello : vt::Collection {
vtAssert(counter_ == 1, "Must be equal");
}
- using TestMsg = vt::CollectionMessage;
-
- void doWork(TestMsg* msg) {
- fmt::print("Hello from {}\n", this->getIndex());
+ void doWork(int val) {
+ fmt::print("Hello from {}: val={}\n", this->getIndex(), val);
counter_++;
}
@@ -79,7 +77,7 @@ int main(int argc, char** argv) {
.bounds(range)
.bulkInsert()
.wait();
- proxy.broadcast();
+ proxy.broadcast<&Hello::doWork>(10);
}
vt::finalize();
diff --git a/examples/hello_world/hello_world_collection_collective.cc b/examples/hello_world/hello_world_collection_collective.cc
index 091f67101a..d0e06fcd59 100644
--- a/examples/hello_world/hello_world_collection_collective.cc
+++ b/examples/hello_world/hello_world_collection_collective.cc
@@ -52,11 +52,11 @@ struct Hello : vt::Collection {
vtAssert(counter_ == num_nodes, "Should receive # nodes broadcasts");
}
- using TestMsg = vt::CollectionMessage;
-
- void doWork(TestMsg* msg) {
+ void doWork(int val) {
counter_++;
- fmt::print("Hello from {}, counter_={}\n", this->getIndex().x(), counter_);
+ fmt::print(
+ "Hello from {}, val={}, counter_={}\n", getIndex(), val, counter_
+ );
}
private:
@@ -78,7 +78,7 @@ int main(int argc, char** argv) {
.wait();
// All nodes send a broadcast to all elements
- proxy.broadcast();
+ proxy.broadcast<&Hello::doWork>(29);
vt::finalize();
diff --git a/examples/hello_world/hello_world_collection_reduce.cc b/examples/hello_world/hello_world_collection_reduce.cc
index dcbb5f2930..38db1bde36 100644
--- a/examples/hello_world/hello_world_collection_reduce.cc
+++ b/examples/hello_world/hello_world_collection_reduce.cc
@@ -51,9 +51,7 @@ struct Hello : vt::Collection {
fmt::print("Reduce complete at {} value {}\n", this->getIndex(), msg->getVal());
}
- using TestMsg = vt::CollectionMessage;
-
- void doWork(TestMsg* msg) {
+ void doWork() {
fmt::print("Hello from {}\n", this->getIndex());
// Get the proxy for the collection
@@ -85,7 +83,7 @@ int main(int argc, char** argv) {
.wait();
if (this_node == 0) {
- proxy.broadcast();
+ proxy.broadcast<&Hello::doWork>();
}
vt::finalize();
diff --git a/examples/hello_world/hello_world_collection_staged_insert.cc b/examples/hello_world/hello_world_collection_staged_insert.cc
index e3c026d5ec..ef097c61cd 100644
--- a/examples/hello_world/hello_world_collection_staged_insert.cc
+++ b/examples/hello_world/hello_world_collection_staged_insert.cc
@@ -58,9 +58,7 @@ struct Hello : vt::Collection {
vtAssert(counter_ == 1, "Must be equal");
}
- using TestMsg = vt::CollectionMessage;
-
- void doWork(TestMsg* msg) {
+ void doWork() {
counter_++;
vt::NodeType this_node = vt::theContext()->getNode();
@@ -107,7 +105,7 @@ int main(int argc, char** argv) {
.wait();
if (this_node == 1) {
- proxy.broadcast();
+ proxy.broadcast<&Hello::doWork>();
}
vt::finalize();
diff --git a/examples/hello_world/hello_world_virtual_context.cc b/examples/hello_world/hello_world_virtual_context.cc
index 0153a5097e..8b7e6c7591 100644
--- a/examples/hello_world/hello_world_virtual_context.cc
+++ b/examples/hello_world/hello_world_virtual_context.cc
@@ -67,7 +67,7 @@ struct MyVC : vt::vrt::VirtualContext {
{ }
};
-static void my_han(TestMsg* msg, MyVC* vc) {
+static void my_han(MyVC* vc, TestMsg* msg) {
auto this_node = vt::theContext()->getNode();
fmt::print(
"{}: vc={}: msg->from={}, vc->my_data={}\n",
@@ -105,7 +105,7 @@ int main(int argc, char** argv) {
// send out the proxy to all the nodes
auto msg = vt::makeMessage(proxy);
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->broadcastMsg(msg);
}
vt::finalize();
diff --git a/examples/hello_world/hello_world_virtual_context_remote.cc b/examples/hello_world/hello_world_virtual_context_remote.cc
index 98a579aa64..69a1ce73b5 100644
--- a/examples/hello_world/hello_world_virtual_context_remote.cc
+++ b/examples/hello_world/hello_world_virtual_context_remote.cc
@@ -61,7 +61,7 @@ struct MyVC : vt::vrt::VirtualContext {
}
};
-static void testHan(TestMsg* msg, MyVC* vc) {
+static void testHan(MyVC* vc, TestMsg* msg) {
fmt::print("testHan: msg->from={}, my_data={}\n", msg->from, vc->my_data);
}
diff --git a/examples/hello_world/objgroup.cc b/examples/hello_world/objgroup.cc
index a9d5620657..73b377000c 100644
--- a/examples/hello_world/objgroup.cc
+++ b/examples/hello_world/objgroup.cc
@@ -44,15 +44,10 @@
#include
/// [Object group creation]
-struct MyMsg : vt::Message {
- MyMsg(int in_a, int in_b) : a(in_a), b(in_b) { }
- int a = 0, b = 0;
-};
-
struct MyObjGroup {
- void handler(MyMsg* msg) {
+ void handler(int a, int b) {
auto node = vt::theContext()->getNode();
- fmt::print("{}: MyObjGroup::handler on a={}, b={}\n", node, msg->a, msg->b);
+ fmt::print("{}: MyObjGroup::handler on a={}, b={}\n", node, a, b);
}
};
@@ -67,11 +62,11 @@ int main(int argc, char** argv) {
);
if (this_node == 0) {
- proxy[0].send(5,10);
+ proxy[0].send<&MyObjGroup::handler>(5,10);
if (num_nodes > 1) {
- proxy[1].send(10,20);
+ proxy[1].send<&MyObjGroup::handler>(10,20);
}
- proxy.broadcast(400,500);
+ proxy.broadcast<&MyObjGroup::handler>(400,500);
}
vt::finalize();
diff --git a/examples/hello_world/param.cc b/examples/hello_world/param.cc
deleted file mode 100644
index d9af0a2b10..0000000000
--- a/examples/hello_world/param.cc
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
-//@HEADER
-// *****************************************************************************
-//
-// param.cc
-// DARMA/vt => Virtual Transport
-//
-// Copyright 2019-2021 National Technology & Engineering Solutions of Sandia, LLC
-// (NTESS). Under the terms of Contract DE-NA0003525 with NTESS, the U.S.
-// Government retains certain rights in this software.
-//
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-//
-// * Redistributions of source code must retain the above copyright notice,
-// this list of conditions and the following disclaimer.
-//
-// * Redistributions in binary form must reproduce the above copyright notice,
-// this list of conditions and the following disclaimer in the documentation
-// and/or other materials provided with the distribution.
-//
-// * Neither the name of the copyright holder nor the names of its
-// contributors may be used to endorse or promote products derived from this
-// software without specific prior written permission.
-//
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-// ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
-// LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-// CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-// SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-// INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-// CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-// POSSIBILITY OF SUCH DAMAGE.
-//
-// Questions? Contact darma@sandia.gov
-//
-// *****************************************************************************
-//@HEADER
-*/
-
-#include
-
-#define VT_COMPILE_PARAM_EXAMPLE 0
-
-#if VT_COMPILE_PARAM_EXAMPLE
-
-static void fnTest(int a, int b, bool x) {
- fmt::print("fn: a={}, b={}, x={}\n", a, b, x ? "true" : "false");
-}
-
-static void fnTest2(int x, int y) {
- fmt::print("fn2: x={},y={}\n",x,y);
-}
-
-static void fnTest3(int x, double y) {
- fmt::print("fn3: x={},y={}\n",x,y);
-}
-
-struct FunctorTest1 {
- void operator()(int x, double y) const {
- fmt::print("FunctorTest1: x={},y={}\n",x,y);
- }
-};
-
-#endif
-
-int main(int argc, char** argv) {
- vt::initialize(argc, argv);
-
- vt::NodeType num_nodes = vt::theContext()->getNumNodes();
-
- if (num_nodes == 1) {
- return vt::rerror("requires at least 2 nodes");
- }
-
-#if VT_COMPILE_PARAM_EXAMPLE
- vt::NodeType this_node = vt::theContext()->getNode();
-
- if (this_node == 0) {
- vt::theParam()->sendData(1, vt::buildData(10, 20, false), PARAM_FUNCTION_RHS(fnTest));
- vt::theParam()->sendData(1, PARAM_FUNCTION_RHS(fnTest), 50, 29, false);
- vt::theParam()->sendData(1, vt::buildData(10, 20, false));
- vt::theParam()->sendData(1, 45, 23, true);
-
- vt::theParam()->sendData(1, 20, 10);
- vt::theParam()->sendData(1, 20, 50.0);
-
- vt::theParam()->sendData(1, vt::buildData(20, 50.0));
- vt::theParam()->sendData(1, 20, 100.0);
- vt::theParam()->sendData(1, vt::buildData(10, 70.0));
- }
-#endif
-
- vt::finalize();
-
- return 0;
-}
diff --git a/examples/hello_world/ring.cc b/examples/hello_world/ring.cc
index b955c930f6..2488dbf24f 100644
--- a/examples/hello_world/ring.cc
+++ b/examples/hello_world/ring.cc
@@ -75,7 +75,7 @@ static void sendToNext() {
vt::NodeType next_node = this_node + 1 >= num_nodes ? 0 : this_node + 1;
auto msg = vt::makeMessage(this_node);
- vt::theMsg()->sendMsg(next_node, msg);
+ vt::theMsg()->sendMsg(next_node, msg);
}
int main(int argc, char** argv) {
diff --git a/examples/rdma/rdma_simple_get.cc b/examples/rdma/rdma_simple_get.cc
index 6ae5587d49..79d92ceb07 100644
--- a/examples/rdma/rdma_simple_get.cc
+++ b/examples/rdma/rdma_simple_get.cc
@@ -112,7 +112,7 @@ int main(int argc, char** argv) {
auto msg = vt::makeMessage(this_node);
msg->han = my_handle;
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->broadcastMsg(msg);
}
vt::finalize();
diff --git a/examples/rdma/rdma_simple_get_direct.cc b/examples/rdma/rdma_simple_get_direct.cc
index ae4a9e00e7..5a720caab6 100644
--- a/examples/rdma/rdma_simple_get_direct.cc
+++ b/examples/rdma/rdma_simple_get_direct.cc
@@ -87,7 +87,7 @@ int main(int argc, char** argv) {
auto msg = vt::makeMessage(this_node);
msg->han = my_handle;
- vt::theMsg()->broadcastMsg(msg);
+ vt::theMsg()->broadcastMsg(msg);
}
vt::finalize();
diff --git a/examples/rdma/rdma_simple_put.cc b/examples/rdma/rdma_simple_put.cc
index 854e3d11e5..b9f24bb036 100644
--- a/examples/rdma/rdma_simple_put.cc
+++ b/examples/rdma/rdma_simple_put.cc
@@ -88,7 +88,7 @@ static void put_data_fn(HandleMsg* msg) {
fmt::print("{}: after put: sending msg back to 0\n", this_node);
auto msg2 = vt::makeMessage(this_node);
msg2->han = handle;
- vt::theMsg()->sendMsg(0, msg2);
+ vt::theMsg()->sendMsg(0, msg2);
}
);
}
@@ -144,7 +144,7 @@ int main(int argc, char** argv) {
auto msg = vt::makeMessage(this_node);
msg->han = my_handle;
- vt::theMsg()->broadcastMsg(msg, false);
+ vt::theMsg()->broadcastMsg(msg, false);
}
vt::finalize();
diff --git a/examples/rdma/rdma_simple_put_direct.cc b/examples/rdma/rdma_simple_put_direct.cc
index 7463b0a959..eba91a7c25 100644
--- a/examples/rdma/rdma_simple_put_direct.cc
+++ b/examples/rdma/rdma_simple_put_direct.cc
@@ -84,7 +84,7 @@ static void putDataFn(HandleMsg* msg) {
);
auto back = vt::makeMessage(han);
- vt::theMsg()->sendMsg(0, back);
+ vt::theMsg()->sendMsg(0, back);
});
}
}
@@ -117,8 +117,8 @@ int main(int argc, char** argv) {
auto msg1 = vt::makeMessage(my_handle);
auto msg2 = vt::makeMessage(my_handle);
- vt::theMsg()->sendMsg(1, msg1);
- vt::theMsg()->sendMsg(2, msg2);
+ vt::theMsg()->sendMsg(1, msg1);
+ vt::theMsg()->sendMsg(2, msg2);
}
vt::finalize();
diff --git a/examples/termination/termination_collective.cc b/examples/termination/termination_collective.cc
index 09ecfa6a4a..90f4ef68f1 100644
--- a/examples/termination/termination_collective.cc
+++ b/examples/termination/termination_collective.cc
@@ -63,7 +63,7 @@ static void test_handler(TestMsg* msg) {
num--;
if (num > 0) {
auto msg_send = vt::makeMessage();
- vt::theMsg()->sendMsg(nextNode(), msg_send);
+ vt::theMsg()->sendMsg(nextNode(), msg_send);
}
}
@@ -89,7 +89,7 @@ int main(int argc, char** argv) {
{
auto msg = vt::makeMessage();
vt::envelopeSetEpoch(msg->env, epoch);
- vt::theMsg()->sendMsg(nextNode(), msg);
+ vt::theMsg()->sendMsg(nextNode(), msg);
}
vt::theTerm()->finishedEpoch(epoch);
diff --git a/examples/termination/termination_rooted.cc b/examples/termination/termination_rooted.cc
index 08c3977b2f..3eb2c752d0 100644
--- a/examples/termination/termination_rooted.cc
+++ b/examples/termination/termination_rooted.cc
@@ -63,7 +63,7 @@ static void test_handler(TestMsg* msg) {
num--;
if (num > 0) {
auto msg_send = vt::makeMessage();
- vt::theMsg()->sendMsg(nextNode(), msg_send);
+ vt::theMsg()->sendMsg(nextNode(), msg_send);
}
}
@@ -88,7 +88,7 @@ int main(int argc, char** argv) {
auto msg = vt::makeMessage();
vt::envelopeSetEpoch(msg->env, epoch);
- vt::theMsg()->sendMsg(nextNode(), msg);
+ vt::theMsg()->sendMsg(nextNode(), msg);
vt::theTerm()->finishedEpoch(epoch);
}
diff --git a/scripts/JSON_data_files_validator.py b/scripts/JSON_data_files_validator.py
index 8f81933559..436f17d14b 100644
--- a/scripts/JSON_data_files_validator.py
+++ b/scripts/JSON_data_files_validator.py
@@ -38,11 +38,22 @@ def get_error_message(iterable_collection: Iterable) -> str:
def _get_valid_schema(self) -> Schema:
""" Returns representation of a valid schema
"""
- allowed_types = ("LBDatafile", "LBStatsfile")
+ allowed_types_data = ("LBDatafile")
valid_schema_data = Schema(
{
- 'type': And(str, lambda a: a in allowed_types,
- error=f"{self.get_error_message(allowed_types)} must be chosen"),
+ Optional('type'): And(str, lambda a: a in allowed_types_data,
+ error=f"{self.get_error_message(allowed_types_data)} must be chosen"),
+ Optional('metadata'): {
+ Optional('type'): And(str, lambda a: a in allowed_types_data,
+ error=f"{self.get_error_message(allowed_types_data)} must be chosen"),
+ Optional('rank'): int,
+ Optional('shared_node'): {
+ 'id': int,
+ 'size': int,
+ 'rank': int,
+ 'num_nodes': int,
+ },
+ },
'phases': [
{
'id': int,
@@ -98,10 +109,15 @@ def _get_valid_schema(self) -> Schema:
]
}
)
+ allowed_types_stats = ("LBStatsfile")
valid_schema_stats = Schema(
{
- 'type': And(str, lambda a: a in allowed_types,
- error=f"{self.get_error_message(allowed_types)} must be chosen"),
+ Optional('type'): And(str, lambda a: a in allowed_types_stats,
+ error=f"{self.get_error_message(allowed_types_stats)} must be chosen"),
+ Optional('metadata'): {
+ Optional('type'): And(str, lambda a: a in allowed_types_stats,
+ error=f"{self.get_error_message(allowed_types_stats)} must be chosen"),
+ },
'phases': [
{
"id": int,
@@ -417,7 +433,13 @@ def __validate_file(file_path):
decompressed_dict = json.loads(compr_bytes.decode("utf-8"))
# Extracting type from JSON data
- schema_type = decompressed_dict.get("type")
+ schema_type = None
+ if decompressed_dict.get("metadata") is not None:
+ schema_type = decompressed_dict.get("metadata").get("type")
+ else:
+ if decompressed_dict.get("type") is not None:
+ schema_type = decompressed_dict.get("type")
+
if schema_type is not None:
# Validate schema
if SchemaValidator(schema_type=schema_type).is_valid(schema_to_validate=decompressed_dict):
diff --git a/scripts/check_containers.sh b/scripts/check_containers.sh
index dd56b273f0..87e89121b6 100755
--- a/scripts/check_containers.sh
+++ b/scripts/check_containers.sh
@@ -1,11 +1,14 @@
#!/usr/bin/env bash
-# Check if there were any dockerfiles modified in the latest pull request.
-# Note: this is specific to the way Azure checks out git repo.
+# Check if there were any dockerfiles modified in the PR.
+# Note: this is specific to Azure - in the pipeline's local branch git history
+# contains one merge commit for all of the changes in the PR.
diff_latest() {
- git diff --name-only "$(git log --skip=1 -1 --merges --pretty=format:%H)"..
+ printf "Files modified in the pull request:\n" >&2
+ git diff --name-only HEAD^1 HEAD | tee >(cat >&2)
}
+# Decide which docker-compose command to use:
if diff_latest | grep -i dockerfile > /dev/null
then
echo "build --pull"
diff --git a/scripts/workflow-azure-template.yml b/scripts/workflow-azure-template.yml
index 66acb678d1..f7b7f3edc0 100644
--- a/scripts/workflow-azure-template.yml
+++ b/scripts/workflow-azure-template.yml
@@ -34,8 +34,6 @@ variables:
VT_UNITY_BUILD: [% vt_unity_build %]
VT_PRODUCTION_BUILD: [% vt_production_build %]
VT_FCONTEXT: [% vt_fcontext %]
- VT_USE_OPENMP: [% vt_use_openmp %]
- VT_USE_STD_THREAD: [% vt_use_std_thread %]
VT_ZOLTAN: [% vt_zoltan %]
VT_CI_BUILD: [% vt_ci_build %]
VT_DIAGNOSTICS: [% vt_diagnostics %]
@@ -64,12 +62,8 @@ stages:
[% workflow_runs_on %]
timeoutInMinutes: 180
steps:
- - task: Bash@3
- displayName: Job setup
- inputs:
- targetType: 'inline'
- script: |
- [% job_setup %]
+ - checkout: self
+ fetchDepth: 0
- task: Bash@3
displayName: Build timestamp for caching
continueOnError: true
diff --git a/scripts/workflows-azure.ini b/scripts/workflows-azure.ini
index cf556adae8..661c4bbff8 100644
--- a/scripts/workflows-azure.ini
+++ b/scripts/workflows-azure.ini
@@ -14,8 +14,6 @@ vt_extended_tests = 1
vt_unity_build = 1
vt_production_build = 0
vt_fcontext = 0
-vt_use_openmp = 0
-vt_use_std_thread = 0
vt_zoltan = 0
vt_ci_build = 1
vt_tests_num_nodes = 2
@@ -39,11 +37,10 @@ build_root = $(ARCH)-[% linux %]-$(UBUNTU)-$(COMPILER)-cache
linux_env = " UBUNTU: [% distro %]"
vt_diagnostics = 1
pr_pattern = "pr:\\n drafts: false\\n autoCancel: true\\n branches:\\n include:\\n - '*'\\n"
-job_setup = "echo setup"
vt_no_color = 1
vt_build_shared_libs = 0
vt_inclusion = TPL
-cmake_cxx_standard = 14
+cmake_cxx_standard = 17
[PR-tests-intel-oneAPI]
test_configuration = "intel icpx, ubuntu, mpich"
@@ -63,27 +60,27 @@ cache_name = ubuntu-intel-oneapi-icpc-cache
output_name = ci/azure/azure-intel-oneapi-icpc-ubuntu-mpich.yml
vt_extended_tests = 0
-[PR-tests-nvcc-10-1]
-test_configuration = "nvidia cuda 10.1, ubuntu, mpich"
+[PR-tests-nvcc-11-0]
+test_configuration = "nvidia cuda 11.0, ubuntu, mpich"
compiler_type = nvidia
-compiler = nvcc-10
-distro = 18.04
-cache_name = ubuntu-nvidia-10-cache
-output_name = ci/azure/azure-nvidia-10-ubuntu-mpich.yml
+compiler = 11.0.3
+distro = 20.04
+cache_name = ubuntu-nvidia-11-cache
+output_name = ci/azure/azure-nvidia-11-ubuntu-mpich.yml
vt_extended_tests = 0
job_name = build_optional
+vt_diagnostics = 0
vt_trace = 1
vt_pool = 0
-vt_diagnostics = 0
-vt_production_build = 1
+vt_tests_num_nodes = 4
-[PR-tests-nvcc-11-0]
-test_configuration = "nvidia cuda 11.0, ubuntu, mpich"
+[PR-tests-nvcc-11-2]
+test_configuration = "nvidia cuda 11.2, ubuntu, mpich"
compiler_type = nvidia
-compiler = nvcc-11
-distro = 18.04
-cache_name = ubuntu-nvidia-11-cache
-output_name = ci/azure/azure-nvidia-11-ubuntu-mpich.yml
+compiler = 11.2.0
+distro = 20.04
+cache_name = ubuntu-nvidia-11.2-cache
+output_name = ci/azure/azure-nvidia-11-2-ubuntu-mpich.yml
vt_extended_tests = 0
job_name = build_optional
vt_diagnostics = 0
@@ -98,6 +95,7 @@ compiler = gcc-7
distro = 18.04
vt_trace = 1
vt_trace_rt = 1
+vt_unity_build = 0
code_coverage = 1
docker_target = "[% linux %]-cpp-clean-noinstall"
output_name = ci/azure/azure-gcc-7-ubuntu-mpich.yml
@@ -110,8 +108,8 @@ distro = 18.04
vt_trace = 1
vt_pool = 0
vt_asan = 1
+vt_unity_build = 0
output_name = ci/azure/azure-gcc-8-ubuntu-mpich.yml
-vt_use_std_thread = 1
lsan_options = suppressions=/vt/tests/lsan.supp
[PR-tests-gcc-9]
@@ -145,16 +143,6 @@ compiler = gcc-12
distro = 22.04
output_name = ci/azure/azure-gcc-12-ubuntu-mpich.yml
pr_pattern = "pr:\\n drafts: true\\n autoCancel: true\\n branches:\\n include:\\n - '*'\\n"
-cmake_cxx_standard = 17
-
-[PR-tests-clang-5]
-test_configuration = "clang-5.0, ubuntu, mpich"
-compiler_type = clang
-compiler = clang-5.0
-distro = 18.04
-output_name = ci/azure/azure-clang-5.0-ubuntu-mpich.yml
-vt_trace = 1
-vt_use_openmp = 1
[PR-tests-clang-13-alpine]
test_configuration = "clang-13, alpine, mpich"
@@ -191,6 +179,7 @@ compiler_type = clang
compiler = clang-11
distro = 22.04
output_name = ci/azure/azure-clang-11-ubuntu-mpich.yml
+vt_fcontext = 1
[PR-tests-clang-12]
test_configuration = "clang-12, ubuntu, mpich"
@@ -205,7 +194,6 @@ compiler_type = clang
compiler = clang-13
distro = 22.04
output_name = ci/azure/azure-clang-13-ubuntu-mpich.yml
-cmake_cxx_standard = 17
[PR-tests-clang-14]
test_configuration = "clang-14, ubuntu, mpich"
@@ -213,3 +201,4 @@ compiler_type = clang
compiler = clang-14
distro = 22.04
output_name = ci/azure/azure-clang-14-ubuntu-mpich.yml
+vt_trace = 1
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 97351d778d..d9326cd274 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -19,8 +19,8 @@ set(TOP_LEVEL_SUBDIRS
runnable
activefn
# Add single-directory components
- context event handler parameterization sequence termination
- scheduler worker standalone runtime trace timing demangle rdmahandle
+ context event handler sequence termination
+ scheduler standalone runtime trace timing demangle rdmahandle
)
set(
PROJECT_SUBDIRS_LIST
@@ -98,7 +98,7 @@ set(
serialization/messaging serialization/traits serialization/auto_dispatch
serialization/sizing
utils/demangle utils/container utils/bits utils/mutex utils/file_spec
- utils/hash utils/atomic utils/tls utils/static_checks utils/string
+ utils/hash utils/atomic utils/static_checks utils/string
utils/memory utils/mpi_limits utils/compress utils/json utils/strong
registry/auto
registry/auto/functor registry/auto/map registry/auto/collection
@@ -340,3 +340,10 @@ export(
FILE "vtTargets.cmake"
NAMESPACE vt::runtime::
)
+
+if (EXISTS "${PROJECT_LIB_DIR}/checkpoint")
+ install(
+ TARGETS checkpoint
+ EXPORT ${VIRTUAL_TRANSPORT_LIBRARY}
+ )
+endif()
diff --git a/src/vt/collective/collective_ops.cc b/src/vt/collective/collective_ops.cc
index d376da4337..b69d7d1122 100644
--- a/src/vt/collective/collective_ops.cc
+++ b/src/vt/collective/collective_ops.cc
@@ -46,7 +46,6 @@
#include "vt/runtime/runtime.h"
#include "vt/scheduler/scheduler.h"
#include "vt/runtime/runtime_inst.h"
-#include "vt/utils/tls/tls.h"
#include
#include
@@ -215,8 +214,8 @@ void printOverwrittens(
template
RuntimePtrType CollectiveAnyOps::initialize(
- int& argc, char**& argv, WorkerCountType const num_workers,
- bool is_interop, MPI_Comm* comm, arguments::AppConfig const* appConfig
+ int& argc, char**& argv, bool is_interop, MPI_Comm* comm,
+ arguments::AppConfig const* appConfig
) {
using vt::runtime::RuntimeInst;
using vt::runtime::Runtime;
@@ -225,7 +224,7 @@ RuntimePtrType CollectiveAnyOps::initialize(
MPI_Comm resolved_comm = comm not_eq nullptr ? *comm : MPI_COMM_WORLD;
RuntimeInst::rt = std::make_unique(
- argc, argv, num_workers, is_interop, resolved_comm,
+ argc, argv, is_interop, resolved_comm,
eRuntimeInstance::DefaultInstance, appConfig
);
@@ -254,9 +253,7 @@ void CollectiveAnyOps::setCurrentRuntimeTLS(RuntimeUnsafePtrType in) {
}
template
-void CollectiveAnyOps::scheduleThenFinalize(
- RuntimePtrType in_rt, WorkerCountType const workers
-) {
+void CollectiveAnyOps::scheduleThenFinalize(RuntimePtrType in_rt) {
bool const has_rt = in_rt != nullptr;
auto rt_use = has_rt ? in_rt.unsafe() : curRT;
@@ -264,15 +261,7 @@ void CollectiveAnyOps::scheduleThenFinalize(
theSched()->runSchedulerWhile([rt_use]{ return not rt_use->isTerminated(); });
};
- if (workers == no_workers) {
- sched_fn();
- } else {
- #if vt_threading_enabled
- theWorkerGrp()->spawnWorkersBlock(sched_fn);
- #else
- sched_fn();
- #endif
- }
+ sched_fn();
CollectiveAnyOps::finalize(has_rt ? std::move(in_rt) : nullptr);
}
diff --git a/src/vt/collective/collective_ops.h b/src/vt/collective/collective_ops.h
index 2a9d17dc5f..3b36e8a29f 100644
--- a/src/vt/collective/collective_ops.h
+++ b/src/vt/collective/collective_ops.h
@@ -61,14 +61,19 @@ template
struct CollectiveAnyOps {
// The general methods that interact with the managed runtime holder
static RuntimePtrType initialize(
- int& argc, char**& argv, WorkerCountType const num_workers = no_workers,
- bool is_interop = false, MPI_Comm* comm = nullptr,
+ int& argc, char**& argv, bool is_interop = false, MPI_Comm* comm = nullptr,
arguments::AppConfig const* appConfig = nullptr
);
+ [[deprecated]] static RuntimePtrType initialize(
+ int& argc, char**& argv, PhysicalResourceType const /* num_workers */,
+ bool is_interop = false, MPI_Comm* comm = nullptr,
+ arguments::AppConfig const* appConfig = nullptr
+ )
+ {
+ return initialize(argc, argv, is_interop, comm, appConfig);
+ }
static void finalize(RuntimePtrType in_rt = nullptr);
- static void scheduleThenFinalize(
- RuntimePtrType in_rt = nullptr, WorkerCountType const workers = no_workers
- );
+ static void scheduleThenFinalize(RuntimePtrType in_rt = nullptr);
static void setCurrentRuntimeTLS(RuntimeUnsafePtrType in_rt = nullptr);
static void abort(std::string const str = "", ErrorCodeType const code = 0);
static void output(
diff --git a/src/vt/collective/reduce/reduce.h b/src/vt/collective/reduce/reduce.h
index 55b5d30083..71a3809827 100644
--- a/src/vt/collective/reduce/reduce.h
+++ b/src/vt/collective/reduce/reduce.h
@@ -58,6 +58,7 @@
#include "vt/collective/tree/tree.h"
#include "vt/utils/hash/hash_tuple.h"
#include "vt/messaging/pending_send.h"
+#include "vt/utils/fntraits/fntraits.h"
#include
#include
@@ -146,6 +147,27 @@ struct Reduce : virtual collective::tree::Tree {
ReduceNumType num_contrib = 1
);
+ /**
+ * \brief Reduce a message up the tree, possibly delayed through a pending send
+ *
+ * \param[in] root the root node where the final handler provides the result
+ * \param[in] msg the message to reduce on this node
+ * \param[in] id the reduction stamp (optional), provided if out-of-order
+ * \param[in] num_contrib number of expected contributions from this node
+ *
+ * \return the pending send corresponding to the reduce
+ */
+ template
+ PendingSendType reduce(
+ NodeType root,
+ typename FuncTraits::MsgT* const msg,
+ detail::ReduceStamp id = detail::ReduceStamp{},
+ ReduceNumType num_contrib = 1
+ ) {
+ using MsgT = typename FuncTraits::MsgT;
+ return reduce(root, msg, id, num_contrib);
+ }
+
/**
* \brief Reduce a message up the tree
*
@@ -163,6 +185,27 @@ struct Reduce : virtual collective::tree::Tree {
ReduceNumType num_contrib = 1
);
+ /**
+ * \brief Reduce a message up the tree
+ *
+ * \param[in] root the root node where the final handler provides the result
+ * \param[in] msg the message to reduce on this node
+ * \param[in] id the reduction stamp (optional), provided if out-of-order
+ * \param[in] num_contrib number of expected contributions from this node
+ *
+ * \return the next reduction stamp
+ */
+ template
+ detail::ReduceStamp reduceImmediate(
+ NodeType root,
+ typename FuncTraits::MsgT* const msg,
+ detail::ReduceStamp id = detail::ReduceStamp{},
+ ReduceNumType num_contrib = 1
+ ) {
+ using MsgT = typename FuncTraits::MsgT;
+ return reduceImmediate(root, msg, id, num_contrib);
+ }
+
/**
* \brief Reduce a message up the tree
*
@@ -205,6 +248,29 @@ struct Reduce : virtual collective::tree::Tree {
>(root, msg, cb, id, num_contrib);
}
+ /**
+ * \brief Reduce a message up the tree
+ *
+ * \param[in] root the root node where the final handler provides the result
+ * \param[in] msg the message to reduce on this node
+ * \param[in] cb the callback to trigger on the root node
+ * \param[in] id the reduction stamp (optional), provided if out-of-order
+ * \param[in] num_contrib number of expected contributions from this node
+ *
+ * \return the next reduction stamp
+ */
+ template
+ PendingSendType reduce(
+ NodeType const& root,
+ typename FuncTraits::MsgT* msg,
+ Callback::MsgT> cb,
+ detail::ReduceStamp id = detail::ReduceStamp{},
+ ReduceNumType const& num_contrib = 1
+ ) {
+ using MsgT = typename FuncTraits::MsgT;
+ return reduce(root, msg, cb, id, num_contrib);
+ }
+
/**
* \brief Reduce a message up the tree
*
@@ -247,6 +313,29 @@ struct Reduce : virtual collective::tree::Tree {
>(root, msg, cb, id, num_contrib);
}
+ /**
+ * \brief Reduce a message up the tree
+ *
+ * \param[in] root the root node where the final handler provides the result
+ * \param[in] msg the message to reduce on this node
+ * \param[in] cb the callback to trigger on the root node
+ * \param[in] id the reduction stamp (optional), provided if out-of-order
+ * \param[in] num_contrib number of expected contributions from this node
+ *
+ * \return the next reduction stamp
+ */
+ template
+ detail::ReduceStamp reduceImmediate(
+ NodeType const& root,
+ typename FuncTraits::MsgT* msg,
+ Callback::MsgT> cb,
+ detail::ReduceStamp id = detail::ReduceStamp{},
+ ReduceNumType const& num_contrib = 1
+ ) {
+ using MsgT = typename FuncTraits::MsgT;
+ return reduceImmediate(root, msg, cb, id, num_contrib);
+ }
+
/**
* \brief Reduce a message up the tree with a target function on the root node
*
@@ -287,6 +376,31 @@ struct Reduce : virtual collective::tree::Tree {
>(root, msg, id, num_contrib);
}
+ /**
+ * \brief Reduce a message up the tree with a target function on the root node
+ *
+ * \param[in] root the root node where the final handler provides the result
+ * \param[in] msg the message to reduce on this node
+ * \param[in] id the reduction stamp (optional), provided if out-of-order
+ * \param[in] num_contrib number of expected contributions from this node
+ *
+ * \return the next reduction stamp
+ */
+ template <
+ typename OpT,
+ typename FunctorT,
+ auto f
+ >
+ PendingSendType reduce(
+ NodeType const& root,
+ typename FuncTraits::MsgT* msg,
+ detail::ReduceStamp id = detail::ReduceStamp{},
+ ReduceNumType const& num_contrib = 1
+ ) {
+ using MsgT = typename FuncTraits::MsgT;
+ return reduce(root, msg, id, num_contrib);
+ }
+
/**
* \brief Reduce a message up the tree with a target function on the root node
*
@@ -327,6 +441,31 @@ struct Reduce : virtual collective::tree::Tree {
>(root, msg, id, num_contrib);
}
+ /**
+ * \brief Reduce a message up the tree with a target function on the root node
+ *
+ * \param[in] root the root node where the final handler provides the result
+ * \param[in] msg the message to reduce on this node
+ * \param[in] id the reduction stamp (optional), provided if out-of-order
+ * \param[in] num_contrib number of expected contributions from this node
+ *
+ * \return the next reduction stamp
+ */
+ template <
+ typename OpT,
+ typename FunctorT,
+ auto f
+ >
+ detail::ReduceStamp reduceImmediate(
+ NodeType const& root,
+ typename FuncTraits::MsgT* msg,
+ detail::ReduceStamp id = detail::ReduceStamp{},
+ ReduceNumType const& num_contrib = 1
+ ) {
+ using MsgT = typename FuncTraits::MsgT;
+ return reduceImmediate(root, msg, id, num_contrib);
+ }
+
/**
* \internal \brief Combine in a new message for a given reduction
*
diff --git a/src/vt/collective/reduce/reduce.impl.h b/src/vt/collective/reduce/reduce.impl.h
index 0a2724d38d..ccd37b57c4 100644
--- a/src/vt/collective/reduce/reduce.impl.h
+++ b/src/vt/collective/reduce/reduce.impl.h
@@ -128,7 +128,7 @@ Reduce::PendingSendType Reduce::reduce(
) {
auto msg_ptr = promoteMsg(msg);
return PendingSendType{theMsg()->getEpochContextMsg(msg_ptr), [=](){
- reduceImmediate(root, msg_ptr.get(), id, num_contrib);
+ reduceImmediate(root, msg_ptr.get(), id, num_contrib);
} };
}
@@ -282,7 +282,7 @@ void Reduce::startReduce(detail::ReduceStamp id, bool use_num_contrib) {
scope_.str(), detail::stringizeStamp(id), root, this_node
);
- theMsg()->sendMsg>(root, typed_msg);
+ theMsg()->sendMsg>(root, typed_msg);
} else {
vt_debug_print(
normal, reduce,
@@ -300,7 +300,7 @@ void Reduce::startReduce(detail::ReduceStamp id, bool use_num_contrib) {
scope_.str(), detail::stringizeStamp(id), parent
);
- theMsg()->sendMsg>(parent, typed_msg);
+ theMsg()->sendMsg>(parent, typed_msg);
}
}
}
diff --git a/src/vt/collective/scatter/scatter.cc b/src/vt/collective/scatter/scatter.cc
index 370672f88a..1d9ee9dde0 100644
--- a/src/vt/collective/scatter/scatter.cc
+++ b/src/vt/collective/scatter/scatter.cc
@@ -112,7 +112,7 @@ void Scatter::scatterIn(ScatterMsg* msg) {
);
std::memcpy(ptr, in_ptr, child_bytes_size);
in_ptr += child_bytes_size;
- theMsg()->sendMsg(
+ theMsg()->sendMsg(
child, child_msg
);
});
diff --git a/src/vt/collective/scatter/scatter.h b/src/vt/collective/scatter/scatter.h
index a15d59c3ca..291527211b 100644
--- a/src/vt/collective/scatter/scatter.h
+++ b/src/vt/collective/scatter/scatter.h
@@ -49,6 +49,7 @@
#include "vt/activefn/activefn.h"
#include "vt/messaging/message.h"
#include "vt/collective/tree/tree.h"
+#include "vt/utils/fntraits/fntraits.h"
#include
#include
@@ -89,6 +90,26 @@ struct Scatter : virtual collective::tree::Tree {
FuncSizeType size_fn, FuncDataType data_fn
);
+ /**
+ * \brief Scatter data to all nodes
+ *
+ * The functions passed to scatter through the arguments \c size_fn and
+ * \c data_fn will not be retained after this call returns.
+ *
+ * \param[in] total_size total size of data to scatter
+ * \param[in] max_proc_size max data to be scattered to any node
+ * \param[in] size_fn callback to get size for each node
+ * \param[in] data_fn callback to get data for each node
+ */
+ template
+ void scatter(
+ std::size_t const& total_size, std::size_t const& max_proc_size,
+ FuncSizeType size_fn, FuncDataType data_fn
+ ) {
+ using MsgT = std::remove_pointer_t::Arg1>;
+ return scatter(total_size, max_proc_size, size_fn, data_fn);
+ }
+
protected:
/**
* \internal \brief Receive scattered data down the spanning tree
diff --git a/src/vt/collective/scatter/scatter.impl.h b/src/vt/collective/scatter/scatter.impl.h
index 0e757b67fb..8423d08177 100644
--- a/src/vt/collective/scatter/scatter.impl.h
+++ b/src/vt/collective/scatter/scatter.impl.h
@@ -93,7 +93,7 @@ void Scatter::scatter(
auto const& this_node = theContext()->getNode();
scatter_msg->user_han = handler;
if (this_node != root_node) {
- theMsg()->sendMsg(
+ theMsg()->sendMsg(
root_node, scatter_msg
);
} else {
diff --git a/src/vt/collective/startup.cc b/src/vt/collective/startup.cc
index 1c01d3d56d..6ad271c485 100644
--- a/src/vt/collective/startup.cc
+++ b/src/vt/collective/startup.cc
@@ -50,21 +50,12 @@
namespace vt {
// vt::{initialize,finalize} for main ::vt namespace
-RuntimePtrType initialize(
- int& argc, char**& argv, WorkerCountType const num_workers,
- bool is_interop, MPI_Comm* comm, arguments::AppConfig const* appConfig
-) {
- return CollectiveOps::initialize(
- argc, argv, num_workers, is_interop, comm, appConfig
- );
-}
-
RuntimePtrType initialize(
int& argc, char**& argv, MPI_Comm* comm, arguments::AppConfig const* appConfig
) {
bool const is_interop = comm != nullptr;
return CollectiveOps::initialize(
- argc, argv, no_workers, is_interop, comm, appConfig
+ argc, argv, is_interop, comm, appConfig
);
}
@@ -72,7 +63,7 @@ RuntimePtrType initialize(MPI_Comm* comm) {
int argc = 0;
char** argv = nullptr;
bool const is_interop = comm != nullptr;
- return CollectiveOps::initialize(argc,argv,no_workers,is_interop,comm);
+ return CollectiveOps::initialize(argc,argv,is_interop,comm);
}
RuntimePtrType initialize(
diff --git a/src/vt/collective/startup.h b/src/vt/collective/startup.h
index 2f50850c0c..bd70071384 100644
--- a/src/vt/collective/startup.h
+++ b/src/vt/collective/startup.h
@@ -49,11 +49,6 @@
namespace vt {
-RuntimePtrType initialize(
- int& argc, char**& argv, WorkerCountType const num_workers,
- bool is_interop = false, MPI_Comm* comm = nullptr,
- arguments::AppConfig const* appConfig = nullptr
-);
RuntimePtrType initialize(
int& argc, char**& argv, MPI_Comm* comm = nullptr,
arguments::AppConfig const* appConfig = nullptr
diff --git a/src/vt/configs/arguments/app_config.h b/src/vt/configs/arguments/app_config.h
index 00224cbfe8..6a7f961b88 100644
--- a/src/vt/configs/arguments/app_config.h
+++ b/src/vt/configs/arguments/app_config.h
@@ -145,6 +145,7 @@ struct AppConfig {
bool vt_lb_keep_last_elm = false;
bool vt_lb_data = false;
bool vt_lb_data_compress = true;
+ bool vt_lb_data_in = false;
std::string vt_lb_data_dir = "vt_lb_data";
std::string vt_lb_data_file = "data.%p.json";
std::string vt_lb_data_dir_in = "vt_lb_data_in";
@@ -319,6 +320,7 @@ struct AppConfig {
| vt_lb_data_compress
| vt_lb_data_dir
| vt_lb_data_file
+ | vt_lb_data_in
| vt_lb_data_dir_in
| vt_lb_data_file_in
| vt_lb_statistics
diff --git a/src/vt/configs/arguments/args.cc b/src/vt/configs/arguments/args.cc
index bc5d1e5825..0e8d8f0186 100644
--- a/src/vt/configs/arguments/args.cc
+++ b/src/vt/configs/arguments/args.cc
@@ -356,7 +356,6 @@ void addDebugPrintArgs(CLI::App& app, AppConfig& appConfig) {
auto lap = "Enable debug_rdma = \"" debug_pp(rdma) "\"";
auto map = "Enable debug_rdma_channel = \"" debug_pp(rdma_channel) "\"";
auto nap = "Enable debug_rdma_state = \"" debug_pp(rdma_state) "\"";
- auto oap = "Enable debug_param = \"" debug_pp(param) "\"";
auto pap = "Enable debug_handler = \"" debug_pp(handler) "\"";
auto qap = "Enable debug_hierlb = \"" debug_pp(hierlb) "\"";
auto qbp = "Enable debug_temperedlb = \"" debug_pp(temperedlb) "\"";
@@ -393,7 +392,6 @@ void addDebugPrintArgs(CLI::App& app, AppConfig& appConfig) {
auto la = app.add_flag("--vt_debug_rdma", appConfig.vt_debug_rdma, lap);
auto ma = app.add_flag("--vt_debug_rdma_channel", appConfig.vt_debug_rdma_channel, map);
auto na = app.add_flag("--vt_debug_rdma_state", appConfig.vt_debug_rdma_state, nap);
- auto oa = app.add_flag("--vt_debug_param", appConfig.vt_debug_param, oap);
auto pa = app.add_flag("--vt_debug_handler", appConfig.vt_debug_handler, pap);
auto qa = app.add_flag("--vt_debug_hierlb", appConfig.vt_debug_hierlb, qap);
auto qb = app.add_flag("--vt_debug_temperedlb", appConfig.vt_debug_temperedlb, qbp);
@@ -430,7 +428,6 @@ void addDebugPrintArgs(CLI::App& app, AppConfig& appConfig) {
la->group(debugGroup);
ma->group(debugGroup);
na->group(debugGroup);
- oa->group(debugGroup);
pa->group(debugGroup);
qa->group(debugGroup);
qb->group(debugGroup);
@@ -468,6 +465,7 @@ void addLbArgs(CLI::App& app, AppConfig& appConfig) {
auto lb_interval = "Load balancing interval";
auto lb_keep_last_elm = "Do not migrate last element in collection";
auto lb_data = "Enable load balancing data";
+ auto lb_data_in = "Enable load balancing data input";
auto lb_data_comp = "Compress load balancing data output with brotli";
auto lb_data_dir = "Load balancing data output directory";
auto lb_data_file = "Load balancing data output file name";
@@ -489,6 +487,7 @@ void addLbArgs(CLI::App& app, AppConfig& appConfig) {
auto w = app.add_option("--vt_lb_interval", appConfig.vt_lb_interval, lb_interval)->capture_default_str();
auto wl = app.add_flag("--vt_lb_keep_last_elm", appConfig.vt_lb_keep_last_elm, lb_keep_last_elm);
auto ww = app.add_flag("--vt_lb_data", appConfig.vt_lb_data, lb_data);
+ auto za = app.add_flag("--vt_lb_data_in", appConfig.vt_lb_data_in, lb_data_in);
auto xz = app.add_flag("--vt_lb_data_compress", appConfig.vt_lb_data_compress, lb_data_comp);
auto wx = app.add_option("--vt_lb_data_dir", appConfig.vt_lb_data_dir, lb_data_dir)->capture_default_str();
auto wy = app.add_option("--vt_lb_data_file", appConfig.vt_lb_data_file, lb_data_file)->capture_default_str();
@@ -502,6 +501,10 @@ void addLbArgs(CLI::App& app, AppConfig& appConfig) {
auto lbspec = app.add_flag("--vt_lb_spec", appConfig.vt_lb_spec, lb_spec);
auto lbspecfile = app.add_option("--vt_lb_spec_file", appConfig.vt_lb_spec_file, lb_spec_file)->capture_default_str()->check(CLI::ExistingFile);
+ // --vt_lb_name excludes --vt_lb_file_name, and vice versa
+ v->excludes(u);
+ u->excludes(v);
+
auto debugLB = "Load Balancing";
s->group(debugLB);
t1->group(debugLB);
@@ -513,6 +516,7 @@ void addLbArgs(CLI::App& app, AppConfig& appConfig) {
wl->group(debugLB);
ww->group(debugLB);
wx->group(debugLB);
+ za->group(debugLB);
wy->group(debugLB);
xx->group(debugLB);
xy->group(debugLB);
diff --git a/src/vt/configs/debug/debug_config.h b/src/vt/configs/debug/debug_config.h
index e9edddcd06..999586b1fc 100644
--- a/src/vt/configs/debug/debug_config.h
+++ b/src/vt/configs/debug/debug_config.h
@@ -63,25 +63,24 @@ enum CatEnum : uint64_t {
rdma = 1ull<<11,
rdma_channel = 1ull<<12,
rdma_state = 1ull<<13,
- param = 1ull<<14,
- handler = 1ull<<15,
- hierlb = 1ull<<16,
- scatter = 1ull<<17,
- serial_msg = 1ull<<18,
- trace = 1ull<<19,
- location = 1ull<<20,
- lb = 1ull<<21,
- vrt = 1ull<<22,
- vrt_coll = 1ull<<23,
- worker = 1ull<<24,
- group = 1ull<<25,
- broadcast = 1ull<<26,
- objgroup = 1ull<<27,
- temperedlb = 1ull<<28,
- phase = 1ull<<29,
- context = 1ull<<30,
- epoch = 1ull<<31,
- temperedwmin = 1ull<<32
+ handler = 1ull<<14,
+ hierlb = 1ull<<15,
+ scatter = 1ull<<16,
+ serial_msg = 1ull<<17,
+ trace = 1ull<<18,
+ location = 1ull<<19,
+ lb = 1ull<<20,
+ vrt = 1ull<<21,
+ vrt_coll = 1ull<<22,
+ worker = 1ull<<23,
+ group = 1ull<<24,
+ broadcast = 1ull<<25,
+ objgroup = 1ull<<26,
+ temperedlb = 1ull<<27,
+ phase = 1ull<<28,
+ context = 1ull<<29,
+ epoch = 1ull<<30,
+ temperedwmin = 1ull<<31
};
enum CtxEnum : uint64_t {
@@ -132,7 +131,6 @@ vt_option_category_pretty_print(temperedwmin, "TemperedWMin")
vt_option_category_pretty_print(lb, "lb")
vt_option_category_pretty_print(location, "location")
vt_option_category_pretty_print(objgroup, "objgroup")
-vt_option_category_pretty_print(param, "parameterization")
vt_option_category_pretty_print(phase, "phase")
vt_option_category_pretty_print(pipe, "pipe")
vt_option_category_pretty_print(pool, "pool")
diff --git a/src/vt/configs/debug/debug_masterconfig.h b/src/vt/configs/debug/debug_masterconfig.h
index 716c0264a4..fe6cd1d75e 100644
--- a/src/vt/configs/debug/debug_masterconfig.h
+++ b/src/vt/configs/debug/debug_masterconfig.h
@@ -78,12 +78,4 @@ using VTPrintConfig = Configuration<
}} /* end namespace vt::config */
-#define backend_no_threading \
- !vt_check_enabled(openmp) && !vt_check_enabled(stdthread)
-
-#define vt_threading_enabled \
- (vt_check_enabled(openmp) \
- or vt_check_enabled(stdthread) \
- or vt_check_enabled(fcontext))
-
#endif /*INCLUDED_VT_CONFIGS_DEBUG_DEBUG_MASTERCONFIG_H*/
diff --git a/src/vt/configs/features/features_defines.h b/src/vt/configs/features/features_defines.h
index ab782a6b49..86e40db65d 100644
--- a/src/vt/configs/features/features_defines.h
+++ b/src/vt/configs/features/features_defines.h
@@ -56,9 +56,7 @@
#define vt_feature_trace_enabled 0 || vt_feature_cmake_trace_enabled
#define vt_feature_trace_only 0 || vt_feature_cmake_trace_only
#define vt_feature_lblite 0 || vt_feature_cmake_lblite
-#define vt_feature_openmp 0 || vt_feature_cmake_openmp
#define vt_feature_production 0 || vt_feature_cmake_production
-#define vt_feature_stdthread 0 || vt_feature_cmake_stdthread
#define vt_feature_mpi_rdma 0 || vt_feature_cmake_mpi_rdma
#define vt_feature_print_term_msgs 0 || vt_feature_cmake_print_term_msgs
#define vt_feature_no_pool_alloc_env 0 || vt_feature_cmake_no_pool_alloc_env
diff --git a/src/vt/configs/features/features_featureswitch.h b/src/vt/configs/features/features_featureswitch.h
index 7cd43ff34b..53841cdb4c 100644
--- a/src/vt/configs/features/features_featureswitch.h
+++ b/src/vt/configs/features/features_featureswitch.h
@@ -58,12 +58,10 @@
#define vt_feature_str_mpi_rdma "Native RDMA with MPI"
#define vt_feature_str_no_feature "No feature"
#define vt_feature_str_no_pool_alloc_env "No memory pool envelope"
-#define vt_feature_str_openmp "OpenMP Threading"
#define vt_feature_str_print_term_msgs "Print Termination Control Messages"
#define vt_feature_str_priorities "Message priorities"
#define vt_feature_str_production_build "Production Build (assertions and " \
"debug prints disabled)"
-#define vt_feature_str_stdthread "std::thread Threading"
#define vt_feature_str_trace_enabled "Tracing Projections"
#define vt_feature_str_zoltan "Zoltan for load balancing"
diff --git a/src/vt/configs/types/types_sentinels.h b/src/vt/configs/types/types_sentinels.h
index 62d942f8dd..cc2235a17a 100644
--- a/src/vt/configs/types/types_sentinels.h
+++ b/src/vt/configs/types/types_sentinels.h
@@ -49,12 +49,10 @@
namespace vt {
-// Physical identifier sentinel values (nodes, cores, workers, etc.)
+// Physical identifier sentinel values (nodes etc.)
static constexpr NodeType const uninitialized_destination = static_cast(0xFFFF);
-static constexpr WorkerCountType const no_workers = static_cast(0xFFFF);
-static constexpr WorkerIDType const no_worker_id = static_cast(0xFFFE);
-static constexpr WorkerIDType const worker_id_comm_thread = static_cast(0xFEED);
-static constexpr WorkerIDType const comm_debug_print = static_cast(-1);
+
+static constexpr PhysicalResourceType const no_workers [[deprecated]] = static_cast(0xFFFF);
// Runtime default `empty' sentinel value
static constexpr uint64_t const u64empty = 0xFFFFFFFFFFFFFFFF;
diff --git a/src/vt/configs/types/types_type.h b/src/vt/configs/types/types_type.h
index 0397318e5a..6b7809311e 100644
--- a/src/vt/configs/types/types_type.h
+++ b/src/vt/configs/types/types_type.h
@@ -57,10 +57,6 @@ using PhysicalResourceType = int16_t;
using NodeType = PhysicalResourceType;
/// Used to hold a core ID
using CoreType = PhysicalResourceType;
-/// Used to hold the number of workers on a node
-using WorkerCountType = PhysicalResourceType;
-/// Used to hold the ID of a worker on a node
-using WorkerIDType = PhysicalResourceType;
// Runtime system entity types
/// Used to hold a handler ID which identifier a function pointer/context
diff --git a/src/vt/context/context.cc b/src/vt/context/context.cc
index 5215863db1..7c559883b8 100644
--- a/src/vt/context/context.cc
+++ b/src/vt/context/context.cc
@@ -90,20 +90,12 @@ Context::Context(bool const is_interop, MPI_Comm comm) {
communicator_ = comm;
numNodes_ = static_cast(numNodesLocal);
thisNode_ = static_cast(thisNodeLocal);
-
- setDefaultWorker();
}
Context::~Context() {
MPI_Comm_free(&communicator_);
}
-void Context::setDefaultWorker() {
- setWorker(worker_id_comm_thread);
-}
-
-DeclareClassOutsideInitTLS(Context, WorkerIDType, thisWorker_, no_worker_id)
-
void Context::setTask(runnable::RunnableNew* in_task) {
cur_task_ = in_task;
}
diff --git a/src/vt/context/context.h b/src/vt/context/context.h
index 4955997e04..c391ee0305 100644
--- a/src/vt/context/context.h
+++ b/src/vt/context/context.h
@@ -50,7 +50,6 @@
#include "vt/config.h"
#include "vt/runtime/component/component_pack.h"
#include "vt/context/context_attorney_fwd.h"
-#include "vt/utils/tls/tls.h"
#if vt_check_enabled(trace_only)
namespace vt { namespace runnable {
@@ -120,35 +119,6 @@ struct Context : runtime::component::Component {
*/
inline MPI_Comm getComm() const { return communicator_; }
- /**
- * \brief Relevant only in threaded mode (e.g., \c std::thread, or OpenMP
- * threads), gets the number of worker threads being used on a given node
- *
- * \see \c vt::WorkerCountType
- *
- * \return the number of worker threads
- */
- inline WorkerCountType getNumWorkers() const { return numWorkers_; }
-
- /**
- * \brief Informs whether VT is running threaded mode
- *
- * \return whether the VT runtime has workers enabled on a given node
- */
- inline bool hasWorkers() const { return numWorkers_ != no_workers; }
-
- /**
- * \brief Relevant only in threaded mode (e.g., \c std::thread, or OpenMP
- * threads), gets the current worker thread being used to execute a handler
- *
- * \see \c vt::WorkerIDType
- *
- * \return whether the worker thread ID being used, sequentially numbered
- */
- inline WorkerIDType getWorker() const {
- return AccessClassTLS(Context, thisWorker_);
- }
-
/// Used to manage protected access for other VT runtime components
friend struct ContextAttorney;
@@ -158,7 +128,6 @@ struct Context : runtime::component::Component {
void serialize(SerializerT& s) {
s | thisNode_
| numNodes_
- | numWorkers_
| communicator_;
}
@@ -204,25 +173,10 @@ struct Context : runtime::component::Component {
*/
void setTask(runnable::RunnableNew* in_task);
- /// Set the number of workers through the attorney (internal)
- void setNumWorkers(WorkerCountType const worker_count) {
- numWorkers_ = worker_count;
- }
- /// Set the worker through the attorney (internal)
- void setWorker(WorkerIDType const worker) {
- AccessClassTLS(Context, thisWorker_) = worker;
- }
-
-private:
- /// Set the default worker that runs in threaded mode
- void setDefaultWorker();
-
private:
NodeType thisNode_ = uninitialized_destination;
NodeType numNodes_ = uninitialized_destination;
- WorkerCountType numWorkers_ = no_workers;
MPI_Comm communicator_ = MPI_COMM_NULL;
- DeclareClassInsideInitTLS(Context, WorkerIDType, thisWorker_, no_worker_id)
runnable::RunnableNew* cur_task_ = nullptr;
};
diff --git a/src/vt/context/context_attorney.cc b/src/vt/context/context_attorney.cc
index 78024ee136..0098c01587 100644
--- a/src/vt/context/context_attorney.cc
+++ b/src/vt/context/context_attorney.cc
@@ -44,18 +44,9 @@
#include "vt/config.h"
#include "vt/context/context.h"
#include "vt/context/context_attorney.h"
-#include "vt/worker/worker_common.h"
namespace vt { namespace ctx {
-/*static*/ void ContextAttorney::setWorker(WorkerIDType const worker) {
- theContext()->setWorker(worker);
-}
-
-/*static*/ void ContextAttorney::setNumWorkers(WorkerCountType const nworkers) {
- theContext()->setNumWorkers(nworkers);
-}
-
/*static*/ void ContextAttorney::setTask(runnable::RunnableNew* in_task) {
theContext()->setTask(in_task);
}
diff --git a/src/vt/context/context_attorney.h b/src/vt/context/context_attorney.h
index dbd01acc71..8a41b7a179 100644
--- a/src/vt/context/context_attorney.h
+++ b/src/vt/context/context_attorney.h
@@ -46,7 +46,6 @@
#include "vt/config.h"
#include "vt/context/context_attorney_fwd.h"
-#include "vt/worker/worker_headers.h"
#include "vt/runtime/runtime_headers.h"
#include "vt/runnable/runnable.fwd.h"
#include "vt/context/runnable_context/set_context.fwd.h"
@@ -60,27 +59,14 @@ namespace vt { namespace ctx {
*
* \brief Used by VT internals for write access to the Context
*
- * Attorney pattern to Context for setting number of workers and current worker
+ * Attorney pattern to Context for setting the running task
* by the runtime and other components
*/
struct ContextAttorney {
- #if vt_threading_enabled
- /// Allow the worker to modify the contextual worker
- friend worker::WorkerGroupType;
- /// Allow the worker group to modify the contextual worker
- friend worker::WorkerType;
- #endif
- /// Allow the runtime to set the number of workers
- friend runtime::Runtime;
-
/// Allow \c ctx::SetContext to modify the running task
friend ctx::SetContext;
private:
- /// Allow internal runtime to set the worker
- static void setWorker(WorkerIDType const worker);
- /// Allow internal runtime to set the number of workers
- static void setNumWorkers(WorkerCountType const worker_count);
/// Allow setting the current running task
static void setTask(runnable::RunnableNew* in_task);
};
diff --git a/src/vt/context/runnable_context/collection.cc b/src/vt/context/runnable_context/collection.cc
index 41ebb250ff..666ef0cb7e 100644
--- a/src/vt/context/runnable_context/collection.cc
+++ b/src/vt/context/runnable_context/collection.cc
@@ -46,7 +46,7 @@
namespace vt { namespace ctx {
void Collection::start() {
- set_();
+ set_(elm_);
}
void Collection::finish() {
diff --git a/src/vt/context/runnable_context/collection.h b/src/vt/context/runnable_context/collection.h
index a31246d95d..8b1abd67ae 100644
--- a/src/vt/context/runnable_context/collection.h
+++ b/src/vt/context/runnable_context/collection.h
@@ -87,8 +87,9 @@ struct Collection {
void resume();
private:
- std::function set_; /**< Set context function */
- std::function clear_; /**< Clear context function */
+ std::function set_; /**< Set context function */
+ std::function clear_; /**< Clear context function */
+ void* elm_ = nullptr; /**< The element (untyped) */
};
}} /* end namespace vt::ctx */
diff --git a/src/vt/context/runnable_context/collection.impl.h b/src/vt/context/runnable_context/collection.impl.h
index 9a22c23bc4..403cc960f8 100644
--- a/src/vt/context/runnable_context/collection.impl.h
+++ b/src/vt/context/runnable_context/collection.impl.h
@@ -54,9 +54,11 @@ template
/*explicit*/ Collection::Collection(
vrt::collection::Indexable* elm
) {
- auto idx_ = elm->getIndex();
- auto proxy_ = elm->getProxy();
- set_ = [=]{
+ elm_ = elm;
+ set_ = [](void* in_elm){
+ auto e = static_cast*>(in_elm);
+ auto& idx_ = e->getIndex();
+ auto proxy_ = e->getProxy();
vrt::collection::CollectionContextHolder::set(&idx_, proxy_);
};
clear_ = []{
diff --git a/src/vt/context/runnable_context/lb_data.cc b/src/vt/context/runnable_context/lb_data.cc
index 917f239291..bb0d57105e 100644
--- a/src/vt/context/runnable_context/lb_data.cc
+++ b/src/vt/context/runnable_context/lb_data.cc
@@ -46,30 +46,32 @@
namespace vt { namespace ctx {
-void LBData::start() {
+void LBData::start(TimeType time) {
// record start time
if (should_instrument_) {
- lb_data_->startTime();
+ lb_data_->start(time);
}
}
-void LBData::finish() {
+void LBData::finish(TimeType time) {
// record end time
if (should_instrument_) {
- lb_data_->stopTime();
+ lb_data_->stop(time);
}
}
void LBData::send(elm::ElementIDStruct dest, MsgSizeType bytes) {
- lb_data_->sendToEntity(dest, cur_elm_id_, bytes);
+ if (should_instrument_) {
+ lb_data_->sendToEntity(dest, cur_elm_id_, bytes);
+ }
}
-void LBData::suspend() {
- finish();
+void LBData::suspend(TimeType time) {
+ finish(time);
}
-void LBData::resume() {
- start();
+void LBData::resume(TimeType time) {
+ start(time);
}
typename LBData::ElementIDStruct const& LBData::getCurrentElementID() const {
diff --git a/src/vt/context/runnable_context/lb_data.h b/src/vt/context/runnable_context/lb_data.h
index 89dc703025..f211a90839 100644
--- a/src/vt/context/runnable_context/lb_data.h
+++ b/src/vt/context/runnable_context/lb_data.h
@@ -81,15 +81,20 @@ struct LBData {
should_instrument_(true)
{ }
+ /**
+ * \brief Return whether time is required
+ */
+ bool needsTime() const { return should_instrument_; }
+
/**
* \brief Set the context and timing for a collection task
*/
- void start();
+ void start(TimeType time);
/**
* \brief Remove the context and store timing for a collection task
*/
- void finish();
+ void finish(TimeType time);
/**
* \brief Record LB data whenever a message is sent and a collection
@@ -100,8 +105,8 @@ struct LBData {
*/
void send(elm::ElementIDStruct dest, MsgSizeType bytes);
- void suspend();
- void resume();
+ void suspend(TimeType time);
+ void resume(TimeType time);
/**
* \brief Get the current element ID struct for the running context
diff --git a/src/vt/context/runnable_context/trace.cc b/src/vt/context/runnable_context/trace.cc
index 921d6cb43a..bb955a8212 100644
--- a/src/vt/context/runnable_context/trace.cc
+++ b/src/vt/context/runnable_context/trace.cc
@@ -54,7 +54,7 @@
namespace vt { namespace ctx {
-void Trace::start() {
+void Trace::start(TimeType time) {
if (not is_traced_) {
return;
}
@@ -67,30 +67,30 @@ void Trace::start() {
from_node_ != uninitialized_destination ? from_node_ : cur_node;
processing_tag_ = theTrace()->beginProcessing(
- trace_id, msg_size_, event_, from_node, idx1_, idx2_, idx3_, idx4_
+ trace_id, msg_size_, event_, from_node, idx1_, idx2_, idx3_, idx4_, time
);
} else {
processing_tag_ = theTrace()->beginProcessing(
- trace_id, msg_size_, event_, from_node_
+ trace_id, msg_size_, event_, from_node_, time
);
}
}
-void Trace::finish() {
+void Trace::finish(TimeType time) {
if (not is_traced_) {
return;
}
- theTrace()->endProcessing(processing_tag_);
+ theTrace()->endProcessing(processing_tag_, time);
}
-void Trace::suspend() {
- finish();
+void Trace::suspend(TimeType time) {
+ finish(time);
}
-void Trace::resume() {
+void Trace::resume(TimeType time) {
// @todo: connect up the last event to this new one after suspension
- start();
+ start(time);
}
}} /* end namespace vt::ctx */
diff --git a/src/vt/context/runnable_context/trace.h b/src/vt/context/runnable_context/trace.h
index d09f35a9cd..aa4577bf28 100644
--- a/src/vt/context/runnable_context/trace.h
+++ b/src/vt/context/runnable_context/trace.h
@@ -101,10 +101,10 @@ struct Trace {
*/
trace::TraceEventIDType getEvent() const { return event_; }
- void start();
- void finish();
- void suspend();
- void resume();
+ void start(TimeType time);
+ void finish(TimeType time);
+ void suspend(TimeType time);
+ void resume(TimeType time);
private:
/// Whether it's a collection or not
diff --git a/src/vt/elm/elm_lb_data.cc b/src/vt/elm/elm_lb_data.cc
index d5dc5d5584..ff8f09ebad 100644
--- a/src/vt/elm/elm_lb_data.cc
+++ b/src/vt/elm/elm_lb_data.cc
@@ -50,8 +50,8 @@
namespace vt { namespace elm {
-void ElementLBData::startTime() {
- TimeTypeWrapper const start_time = timing::getCurrentTime();
+void ElementLBData::start(TimeType time) {
+ TimeTypeWrapper const start_time = time;
cur_time_ = start_time.seconds();
cur_time_started_ = true;
@@ -62,8 +62,8 @@ void ElementLBData::startTime() {
);
}
-void ElementLBData::stopTime() {
- TimeTypeWrapper const stop_time = timing::getCurrentTime();
+void ElementLBData::stop(TimeType time) {
+ TimeTypeWrapper const stop_time = time;
TimeTypeWrapper const total_time = stop_time.seconds() - cur_time_;
//vtAssert(cur_time_started_, "Must have started time");
auto const started = cur_time_started_;
diff --git a/src/vt/elm/elm_lb_data.h b/src/vt/elm/elm_lb_data.h
index 554856f8d1..1ebc07c6c3 100644
--- a/src/vt/elm/elm_lb_data.h
+++ b/src/vt/elm/elm_lb_data.h
@@ -61,8 +61,8 @@ struct ElementLBData {
ElementLBData(ElementLBData const&) = default;
ElementLBData(ElementLBData&&) = default;
- void startTime();
- void stopTime();
+ void start(TimeType time);
+ void stop(TimeType time);
void addTime(TimeTypeWrapper const& time);
void sendToEntity(ElementIDStruct to, ElementIDStruct from, double bytes);
diff --git a/src/vt/event/event.cc b/src/vt/event/event.cc
index f9b8dd7653..59737386cc 100644
--- a/src/vt/event/event.cc
+++ b/src/vt/event/event.cc
@@ -123,7 +123,7 @@ EventType AsyncEvent::attachAction(EventType const& event, ActionType callable)
event, event_id, static_cast(event_state), this_node
);
- theMsg()->sendMsg(
+ theMsg()->sendMsg(
owning_node, msg
);
@@ -162,7 +162,7 @@ EventType AsyncEvent::attachAction(EventType const& event, ActionType callable)
vtAssertExpr(send_back == msg->sent_from_node_);
auto msg_send = makeMessage(event, msg->event_back_);
- theMsg()->sendMsg(
+ theMsg()->sendMsg(
send_back, msg_send
);
};
diff --git a/src/vt/group/collective/group_collective_finished.cc b/src/vt/group/collective/group_collective_finished.cc
index 2b7b1864e6..a327676f17 100644
--- a/src/vt/group/collective/group_collective_finished.cc
+++ b/src/vt/group/collective/group_collective_finished.cc
@@ -68,7 +68,7 @@ void InfoColl::CollSetupFinished::operator()(FinishedReduceMsg* msg) {
auto nmsg = makeMessage(
msg->getGroup(),info->new_tree_cont_
);
- theMsg()->sendMsg(
+ theMsg()->sendMsg(
info->known_root_node_, nmsg
);
} else {
diff --git a/src/vt/group/collective/group_info_collective.cc b/src/vt/group/collective/group_info_collective.cc
index 248c02deda..7c7075eb67 100644
--- a/src/vt/group/collective/group_info_collective.cc
+++ b/src/vt/group/collective/group_info_collective.cc
@@ -227,7 +227,7 @@ void InfoColl::setupCollective() {
auto msg = makeMessage(
group_, up_tree_cont_, in_group, size, child
);
- theMsg()->sendMsg(parent, msg);
+ theMsg()->sendMsg(parent, msg);
}
}
@@ -336,7 +336,7 @@ void InfoColl::upTree() {
auto msg = makeMessage(
group,new_root_cont_,true,subtree_zero,root_node,0,extra
);
- theMsg()->sendMsg(root_node, msg);
+ theMsg()->sendMsg(root_node, msg);
for (std::size_t i = 1; i < msg_list.size(); i++) {
vt_debug_print(
@@ -347,7 +347,7 @@ void InfoColl::upTree() {
msg_list[i]->setOpID(down_tree_cont_);
auto pmsg = promoteMsg(msg_list[i]);
- theMsg()->sendMsg(root_node, pmsg);
+ theMsg()->sendMsg(root_node, pmsg);
++send_down_;
}
in_phase_two_ = true;
@@ -377,7 +377,7 @@ void InfoColl::upTree() {
auto cmsg = makeMessage(
group,op,is_in_group,total_subtree,child,level
);
- theMsg()->sendMsg(p, cmsg);
+ theMsg()->sendMsg(p, cmsg);
for (auto&& msg : msg_in_group) {
span_children_.push_back(msg->getChild());
@@ -406,14 +406,14 @@ void InfoColl::upTree() {
auto msg = makeMessage(
group,op,is_in_group,static_cast(subtree_),child,0,extra
);
- theMsg()->sendMsg(p, msg);
+ theMsg()->sendMsg(p, msg);
/*
* Forward all the children messages up the tree (up to 2 of them)
*/
for (std::size_t i = 0; i < msg_in_group.size(); i++) {
// new MsgPtr to avoid thief of original in collection
auto msg_out = promoteMsg(msg_in_group[i].get());
- theMsg()->sendMsg(p, msg_out);
+ theMsg()->sendMsg(p, msg_out);
}
} else if (is_in_group && msg_in_group.size() == 1) {
/*
@@ -438,10 +438,10 @@ void InfoColl::upTree() {
auto msg = makeMessage(
group,op,is_in_group,total_subtree,child,0,extra
);
- theMsg()->sendMsg(p, msg);
+ theMsg()->sendMsg(p, msg);
// new MsgPtr to avoid thief of original in collection
auto msg_out = promoteMsg(msg_in_group[0].get());
- theMsg()->sendMsg(p, msg_out);
+ theMsg()->sendMsg(p, msg_out);
} else {
vtAssertExpr(msg_in_group.size() > 2);
@@ -478,7 +478,7 @@ void InfoColl::upTree() {
auto msg = makeMessage(
group,op,is_in_group,total_subtree,child,0,extra
);
- theMsg()->sendMsg(p, msg);
+ theMsg()->sendMsg(p, msg);
vt_debug_print(
verbose, group,
@@ -494,7 +494,7 @@ void InfoColl::upTree() {
GroupCollectiveMsg* tmsg = *iter;
c[i] = tmsg->getChild();
auto pmsg = promoteMsg(tmsg);
- theMsg()->sendMsg(p, pmsg);
+ theMsg()->sendMsg(p, pmsg);
iter++;
}
@@ -503,7 +503,7 @@ void InfoColl::upTree() {
GroupCollectiveMsg* tmsg = *iter;
tmsg->setOpID(down_tree_cont_);
auto pmsg = promoteMsg(tmsg);
- theMsg()->sendMsg(c[i % extra], pmsg);
+ theMsg()->sendMsg(c[i % extra], pmsg);
++send_down_;
++iter;
}
@@ -639,13 +639,13 @@ void InfoColl::downTree(GroupCollectiveMsg* msg) {
auto const& num = collective_->span_children_.size();
auto const& child = collective_->span_children_[msg->getChild() % num];
auto nmsg = makeMessage(*msg);
- theMsg()->sendMsg(child, nmsg);
+ theMsg()->sendMsg(child, nmsg);
++send_down_;
}
auto const& group_ = getGroupID();
auto nmsg = makeMessage(group_,down_tree_fin_cont_);
- theMsg()->sendMsg(from, nmsg);
+ theMsg()->sendMsg(from, nmsg);
}
void InfoColl::newTree(NodeType const& parent) {
@@ -686,7 +686,7 @@ void InfoColl::sendDownNewTree() {
group_, c
);
auto msg = makeMessage(group_,new_tree_cont_);
- theMsg()->sendMsg(c, msg);
+ theMsg()->sendMsg(c, msg);
}
}
@@ -727,7 +727,7 @@ void InfoColl::finalize() {
auto msg = makeMessage(
group_,finalize_cont_,known_root_node_,is_default_group_
);
- theMsg()->sendMsg(c, msg);
+ theMsg()->sendMsg(c, msg);
}
if (!is_in_group) {
diff --git a/src/vt/group/global/group_default.impl.h b/src/vt/group/global/group_default.impl.h
index 57ec37eca8..8d50239776 100644
--- a/src/vt/group/global/group_default.impl.h
+++ b/src/vt/group/global/group_default.impl.h
@@ -65,7 +65,7 @@ template * handler>
} else {
auto msg = makeMessage();
envelopeSetTag(msg->env, phase);
- theMsg()->sendMsg(node, msg);
+ theMsg()->sendMsg(node, msg);
}
}
diff --git a/src/vt/group/group_info.impl.h b/src/vt/group/group_info.impl.h
index ba8ca3113b..10fdfd5794 100644
--- a/src/vt/group/group_info.impl.h
+++ b/src/vt/group/group_info.impl.h
@@ -115,7 +115,7 @@ template
if (op_id != no_op_id) {
// Send back message
auto retmsg = makeMessage