Skip to content

Commit

Permalink
Merge pull request #1178 from DARMA-tasking/728-intel-19
Browse files Browse the repository at this point in the history
 #728: Avoid ICEs and compilation failures in Intel 19.x and Nvidia with gcc<=7.2.0
  • Loading branch information
PhilMiller authored and cz4rs committed Dec 14, 2020
2 parents c86eb77 + b290e7e commit 2b23980
Show file tree
Hide file tree
Showing 7 changed files with 307 additions and 19 deletions.
145 changes: 145 additions & 0 deletions ci/azure/azure-intel-19-ubuntu-mpich.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
###############################################################################
############## Warning this is a generated file---do not modify ###############
###############################################################################

name: PR tests (intel 19, ubuntu, mpich)

trigger:
branches:
include:
- develop
- 1.0.0*

pr:
branches:
include:
- '*'


resources:
- repo: self

variables:
tag: '$(Build.BuildId)'
REPO: lifflander1/vt
ARCH: amd64
UBUNTU: 18.04
COMPILER_TYPE: intel
COMPILER: icc-19
BUILD_TYPE: release
ULIMIT_CORE: 0
CODE_COVERAGE: 0
VT_LB: 1
VT_TRACE: 1
VT_TRACE_RT: 0
VT_MIMALLOC: 0
VT_DOCS: 0
VT_ASAN: 0
VT_POOL: 0
VT_EXTENDED_TESTS: 0
VT_UNITY_BUILD: 1
VT_ZOLTAN: 0
VT_CI_BUILD: 1
VT_DIAGNOSTICS: 1
CACHE: "$(Agent.TempDirectory)/cache/"
cache_name: ubuntu-intel-19-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-18.04'
timeoutInMinutes: 180
steps:
- task: Bash@3
displayName: Job setup
inputs:
targetType: 'inline'
script: |
echo setup
- task: Bash@3
displayName: Build timestep for caching
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
inputs:
targetType: 'inline'
script: 'echo "my pipeline variable is $(TS) $(TS_YEAR) $(TS_MONTH) $(TS_DAY)"'
- task: Cache@2
displayName: Update cache
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: DockerCompose@0
displayName: Pull container
inputs:
containerregistrytype: 'Container Registry'
dockerComposeFile: '**/docker-compose.yml'
action: 'Run a Docker Compose command'
dockerComposeCommand: 'pull --ignore-pull-failures 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'
- task: DockerCompose@0
displayName: Push container to registry
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
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
inputs:
targetPath: '$(Agent.TempDirectory)/LastTest.log.gz'
artifact: 'CMakeLastTestLog'
publishLocation: 'pipeline'
- task: PublishPipelineArtifact@1
displayName: Upload CMake full output artifact
inputs:
targetPath: '$(Agent.TempDirectory)/cmake-output.log.gz'
artifact: 'CMakeOutputLog'
publishLocation: 'pipeline'
10 changes: 10 additions & 0 deletions scripts/workflows-azure.ini
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@ vt_trace = 1
vt_pool = 0
vt_extended_tests = 0

[PR-tests-intel-19]
test_configuration = "intel 19, ubuntu, mpich"
compiler_type = intel
compiler = icc-19
cache_name = ubuntu-intel-19-cache
output_name = ci/azure/azure-intel-19-ubuntu-mpich.yml
vt_trace = 1
vt_pool = 0
vt_extended_tests = 0

[PR-tests-intel-18-03-extended]
test_type = "PR tests extended"
test_configuration = "intel 18.03, ubuntu, mpich"
Expand Down
88 changes: 80 additions & 8 deletions src/vt/collective/reduce/reduce.h
Original file line number Diff line number Diff line change
Expand Up @@ -179,15 +179,33 @@ struct Reduce : virtual collective::tree::Tree {
template <
typename OpT,
typename MsgT,
ActiveTypedFnType<MsgT> *f = MsgT::template msgHandler<
MsgT, OpT, collective::reduce::operators::ReduceCallback<MsgT>
>
ActiveTypedFnType<MsgT> *f
>
PendingSendType reduce(
NodeType const& root, MsgT* msg, Callback<MsgT> cb,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
);
template <
typename OpT,
typename MsgT
>
PendingSendType reduce(
NodeType const& root, MsgT* msg, Callback<MsgT> cb,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
)
{
return reduce<
OpT,
MsgT,
&MsgT::template msgHandler<
MsgT,
OpT,
collective::reduce::operators::ReduceCallback<MsgT>
>
>(root, msg, cb, id, num_contrib);
}

/**
* \brief Reduce a message up the tree
Expand All @@ -203,15 +221,33 @@ struct Reduce : virtual collective::tree::Tree {
template <
typename OpT,
typename MsgT,
ActiveTypedFnType<MsgT> *f = MsgT::template msgHandler<
MsgT, OpT, collective::reduce::operators::ReduceCallback<MsgT>
>
ActiveTypedFnType<MsgT> *f
>
detail::ReduceStamp reduceImmediate(
NodeType const& root, MsgT* msg, Callback<MsgT> cb,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
);
template <
typename OpT,
typename MsgT
>
detail::ReduceStamp reduceImmediate(
NodeType const& root, MsgT* msg, Callback<MsgT> cb,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
)
{
return reduceImmediate<
OpT,
MsgT,
&MsgT::template msgHandler<
MsgT,
OpT,
collective::reduce::operators::ReduceCallback<MsgT>
>
>(root, msg, cb, id, num_contrib);
}

/**
* \brief Reduce a message up the tree with a target function on the root node
Expand All @@ -227,13 +263,31 @@ struct Reduce : virtual collective::tree::Tree {
typename OpT,
typename FunctorT,
typename MsgT,
ActiveTypedFnType<MsgT> *f = MsgT::template msgHandler<MsgT, OpT, FunctorT>
ActiveTypedFnType<MsgT> *f
>
PendingSendType reduce(
NodeType const& root, MsgT* msg,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
);
template <
typename OpT,
typename FunctorT,
typename MsgT
>
PendingSendType reduce(
NodeType const& root, MsgT* msg,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
)
{
return reduce<
OpT,
FunctorT,
MsgT,
&MsgT::template msgHandler<MsgT, OpT, FunctorT>
>(root, msg, id, num_contrib);
}

/**
* \brief Reduce a message up the tree with a target function on the root node
Expand All @@ -249,13 +303,31 @@ struct Reduce : virtual collective::tree::Tree {
typename OpT,
typename FunctorT,
typename MsgT,
ActiveTypedFnType<MsgT> *f = MsgT::template msgHandler<MsgT, OpT, FunctorT>
ActiveTypedFnType<MsgT> *f
>
detail::ReduceStamp reduceImmediate(
NodeType const& root, MsgT* msg,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
);
template <
typename OpT,
typename FunctorT,
typename MsgT
>
detail::ReduceStamp reduceImmediate(
NodeType const& root, MsgT* msg,
detail::ReduceStamp id = detail::ReduceStamp{},
ReduceNumType const& num_contrib = 1
)
{
return reduceImmediate<
OpT,
FunctorT,
MsgT,
&MsgT::template msgHandler<MsgT, OpT, FunctorT>
>(root, msg, id, num_contrib);
}

/**
* \internal \brief Combine in a new message for a given reduction
Expand Down
42 changes: 37 additions & 5 deletions src/vt/objgroup/proxy/proxy_objgroup.h
Original file line number Diff line number Diff line change
Expand Up @@ -149,14 +149,30 @@ struct Proxy {
template <
typename OpT = collective::None,
typename MsgPtrT,
typename MsgT = typename util::MsgPtrType<MsgPtrT>::MsgType,
ActiveTypedFnType<MsgT> *f = MsgT::template msgHandler<
MsgT, OpT, collective::reduce::operators::ReduceCallback<MsgT>
>
typename MsgT,
ActiveTypedFnType<MsgT> *f
>
PendingSendType reduce(
MsgPtrT msg, Callback<MsgT> cb, ReduceStamp stamp = ReduceStamp{}
) const;
template <
typename OpT = collective::None,
typename MsgPtrT,
typename MsgT = typename util::MsgPtrType<MsgPtrT>::MsgType
>
PendingSendType reduce(
MsgPtrT msg, Callback<MsgT> cb, ReduceStamp stamp = ReduceStamp{}
) const
{
return reduce<
OpT,
MsgPtrT,
MsgT,
&MsgT::template msgHandler<
MsgT, OpT, collective::reduce::operators::ReduceCallback<MsgT>
>
>(msg, cb, stamp);
}

/**
* \brief Reduce over the objgroup instances on each node with a functor
Expand All @@ -172,9 +188,25 @@ struct Proxy {
typename FunctorT,
typename MsgPtrT,
typename MsgT = typename util::MsgPtrType<MsgPtrT>::MsgType,
ActiveTypedFnType<MsgT> *f = MsgT::template msgHandler<MsgT, OpT, FunctorT>
ActiveTypedFnType<MsgT> *f
>
PendingSendType reduce(MsgPtrT msg, ReduceStamp stamp = ReduceStamp{}) const;
template <
typename OpT = collective::None,
typename FunctorT,
typename MsgPtrT,
typename MsgT = typename util::MsgPtrType<MsgPtrT>::MsgType
>
PendingSendType reduce(MsgPtrT msg, ReduceStamp stamp = ReduceStamp{}) const
{
return reduce<
OpT,
FunctorT,
MsgPtrT,
MsgT,
&MsgT::template msgHandler<MsgT, OpT, FunctorT>
>(msg, stamp);
}

/**
* \brief Reduce over the objgroup instance on each node with target specified
Expand Down
Loading

0 comments on commit 2b23980

Please sign in to comment.