Skip to content

Commit

Permalink
Merge 'trilinos/Trilinos:develop' (14d6270) into 'tcad-charon/Trilino…
Browse files Browse the repository at this point in the history
…s:develop' (62508f2).

* trilinos-develop:
  Tacho - disable tests for kokkos task scheduler
  TrilinosCouplings: More cleanup to Poisson2D driver
  MueLu: Avoid throwing exceptions in smoother construction
  MueLu RefMaxwell: Copy D0 matrix
  ATDM: Remove some duplicate asserts found in review (trilinos#5939)
  Fix capitalization of Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE in ShyLU dependencies.
  Update TrilinosFrameworkTests for addition of TrilinosATDMConfigTest package (trilinos#5939)
  ATDM: van1-tx2: Switch to atdm_match_any_buildname_keyword (trilinos#5939, CDOFA-27)
  ATDM: van1-tx2: Add unit tests for custom_builds.sh (CDOFA-72)
  Add TrilinosATDMConfigTests package (trilinos#5939)
  ATDM: Change to true keyword matching with unit tests for set_build_options.sh (trilinos#4063, trilinos#5939)
  Add atdm_match_any_keyword (trilinos#5939)
  Add atdm_match_keyword (trilinos#4063, trilinos#5939, ATDV-339)
  Allow 'default' to have stuff after it (trilinos#5939, ATDV-339)
  Automatic snapshot commit from shunit2 at ebc4baa
  Tacho - export crs matrix in external interface example
  • Loading branch information
Jenkins Pipeline committed Apr 21, 2020
2 parents 62508f2 + 14d6270 commit ad8c057
Show file tree
Hide file tree
Showing 73 changed files with 8,142 additions and 222 deletions.
1 change: 1 addition & 0 deletions PackagesList.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@
#
TRIBITS_REPOSITORY_DEFINE_PACKAGES(
TrilinosFrameworkTests commonTools/framework PT
TrilinosATDMConfigTests cmake/std/atdm PT
Gtest commonTools/gtest PT
Kokkos packages/kokkos PT
Teuchos packages/teuchos PT
Expand Down
6 changes: 3 additions & 3 deletions cmake/RepositoryDependenciesSetup.cmake
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
if (TPL_ENABLE_CUDA AND NOT Kokkos_ENABLE_Cuda_Relocatable_Device_Code)
if (TPL_ENABLE_CUDA AND NOT Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE)
if ("${${PROJECT_NAME}_ENABLE_ShyLU_NodeTacho}" STREQUAL "")
message(
"-- " "NOTE: Setting ${PROJECT_NAME}_ENABLE_ShyLU_NodeTacho=OFF by default since TPL_ENABLE_CUDA='${TPL_ENABLE_CUDA}' AND Kokkos_ENABLE_Cuda_Relocatable_Device_Code='${Kokkos_ENABLE_Cuda_Relocatable_Device_Code}'!\n"
"-- NOTE: To allow the enable of ShyLU_NodeTacho, please set Kokkos_ENABLE_Cuda_Relocatable_Device_Code=ON.")
"-- " "NOTE: Setting ${PROJECT_NAME}_ENABLE_ShyLU_NodeTacho=OFF by default since TPL_ENABLE_CUDA='${TPL_ENABLE_CUDA}' AND Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE='${Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE}'!\n"
"-- NOTE: To allow the enable of ShyLU_NodeTacho, please set Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE=ON.")
set(${PROJECT_NAME}_ENABLE_ShyLU_NodeTacho OFF)
# NOTE: Above we set the non-cache var
# ${PROJECT_NAME}_ENABLE_ShyLU_NodeTacho so that each reconfigure will
Expand Down
12 changes: 12 additions & 0 deletions cmake/std/PullRequestLinuxGCC4.8.4TestingSettings.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,18 @@ set (ShyLU_DDFROSch_test_frosch_laplacian_epetra_2d_gdsw_MPI_4_DISABLE ON CACHE
set (ShyLU_DDFROSch_test_frosch_laplacian_epetra_2d_rgdsw_MPI_4_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")
set (ShyLU_DDFROSch_test_frosch_interfacesets_2D_MPI_4_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")

# Disable a single task scheduler test
# According to #3276 and #7209, the openmp test only fails for the task scheduler. However, all tests for different
# execution space are also disabled as they share the same kokkos task scheduler code. The default task scheduler
# used in Tacho is Kokkos::TaskSchedulerMultiple and it is tested by PR tests.
set (ShyLU_NodeTacho_Tacho_TestOpenMPDoubleTaskScheduler_MPI_1_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")
set (ShyLU_NodeTacho_Tacho_TestSerialDoubleTaskScheduler_MPI_1_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")
set (ShyLU_NodeTacho_Tacho_TestCudaDoubleTaskScheduler_MPI_1_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")

set (ShyLU_NodeTacho_Tacho_TestOpenMPDoubleComplexTaskScheduler_MPI_1_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")
set (ShyLU_NodeTacho_Tacho_TestSerialDoubleComplexTaskScheduler_MPI_1_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")
set (ShyLU_NodeTacho_Tacho_TestCudaDoubleComplexTaskScheduler_MPI_1_DISABLE ON CACHE BOOL "Temporarily disabled in PR testing")

# this build is different from the others in using static libraries
set (BUILD_SHARED_LIBS OFF CACHE BOOL "Off by default for PR testing in GCC 4.8.4")

Expand Down
4 changes: 4 additions & 0 deletions cmake/std/atdm/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
TRIBITS_PACKAGE(TrilinosATDMConfigTests)
TRIBITS_ADD_TEST_DIRECTORIES(test)
TRIBITS_ADD_TEST_DIRECTORIES(van1-tx2)
TRIBITS_PACKAGE_POSTPROCESS()
45 changes: 22 additions & 23 deletions cmake/std/atdm/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,16 +74,18 @@ Using white/ride compiler stack GNU to build DEBUG code with Kokkos node type OP
<a name="build-name-keywords"/>

**[build-name-keywords]** The `<build-name>` argument is a single string of
the form `XXX-<keyword0>-<keyword1>-...-YYY` (or
`XXX_<keyword0>_<keyword1>_..._YYY`, either separator is supported) . The
keywords of the form `XXX-<keyword0>-<keyword1>-...-YYY` (or
`XXX_<keyword0>_<keyword1>_..._YYY`, either separator is supported). The
typical order and format of this string is:

<system_name>-<kokkos_arch>-<compiler>-<kokkos_thread>-<rdc>-<complex>-<shared_static>-<release_debug>-<pt>

(but almost any order is supported). All of these keywords, except for
`<compiler>` (which can be `default`), are optional. All of the other
keywords have reasonable defaults for a given system. See some examples of
build name strings [below](#build-name-examples).
but any order of these keywords is supported. Also, the keywords are
case-insensitive All of these keywords, except for `<compiler>` (which can be
`default`), are optional. All of the other keywords have default values. Any
strings not recognised as keywords are ignored. (Therefore, mispelling the
name of a keyword is ignored.) See some examples of build name strings
[below](#build-name-examples).

Each of these keywords [`<system_name>`](#system_name),
[`<kokkos_arch>`](#kokkos_arch), [`<compiler>`](#compiler),
Expand Down Expand Up @@ -115,23 +117,21 @@ href="#spack-rhel-environment">spack-rhel</a> will attempted to be loaded.
<a name="kokkos_arch"/>

**`<kokkos_arch>`:** The `<build-name>` string can also contain keywords to
determine the `KOKKOS_ARCH` option of the build. This is the case-sensitive
determine the `KOKKOS_ARCH` option of the build. This is the case-insensitive
architecture name that is recognized by the CMake
[KOKKOS_ARCH](https://trilinos.org/docs/files/TrilinosBuildReference.html#configuring-with-kokkos-and-advanced-back-ends)
configure option for Trilinos and Kokkos. Some common supported Kokkos
architectures for the host node include `BDW`, `HSW`, `Power8`, `Power9`, and
`KNL`. When a GPU is present, some common Kokkos architecture options include
`Kepler37` and `Pascal60`. If one selects a `KOKKOS_ARCH` value that is not
supported by the current system or selected compiler, then the `load-env.sh`
script will return an error message listing the value choices for
`KOKKOS_ARCH` for each supported compiler.

Note that currently only a single `KOKKOS_ARCH` value is recognized in the
`<build-name>` string and it must be proceeded a dash '-' such as with
`intel-KNL` or `cuda-Kepler37`. This setup does not currently support
specifying multiple `KOKKOS_ARCH` values (since there is no example yet where
that would be needed or useful) but such functionality could be supported in
the future if needed.
`Kepler37`, `Pascal60`, and `Volta70`. (Note that the `KOKKOS_ARCH` keywords
are case-insensitive and can be `hsw`, 'volta70`, etc.) If one selects a
`KOKKOS_ARCH` value that is not supported by the current system or selected
compiler, then the `load-env.sh` script will return an error message listing
the valid choices for `KOKKOS_ARCH` for each supported compiler.

This setup does not currently support specifying multiple `KOKKOS_ARCH` values
(since there is no example yet where that would be needed or useful) but such
functionality could be supported in the future if needed.

<a name="compiler"/>

Expand Down Expand Up @@ -176,8 +176,8 @@ Kokkos threading / backend model variable `<NODE_TYPE>` (default is
* `serial`: Use no host threading (`NODE_TYPE=SERIAL`, DEFAULT)
* `openmp`: Use OpenMP for host threading (`NODE_TYPE=OPENMP`)

If `cuda` (or `cuda-8.0`, `cuda-9.2`, etc.) is given, then `<NODE_TYPE>` is
automatically set to `CUDA`.
If the compiler is set as `cuda` (or `cuda-8.0`, `cuda-9.2`, etc.), then
`<NODE_TYPE>` is automatically set to `CUDA`.

<a name="rdc"/>

Expand Down Expand Up @@ -250,9 +250,8 @@ checking etc.):
Secondary Tested packages with disables for packages that the ATDM APPs do not
use (as specified in the file `ATDMDisables.cmake`):

* `-pt` or `_pt` and the very end of the `<build-name>` string: Allow enable
if all PT packages, don't disable any PT packages by default and enable
Fortran.
* `pt`: Allow enable if all PT packages, don't disable any PT packages by
default and enable Fortran.

All other strings in `<build-name>` are ignored but are allowed for
informational purposes. The reason that a `<build-name>` string is defined in
Expand Down
1 change: 1 addition & 0 deletions cmake/std/atdm/cmake/Dependencies.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
TRIBITS_PACKAGE_DEFINE_DEPENDENCIES()
1 change: 1 addition & 0 deletions cmake/std/atdm/test/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
ADD_SUBDIRECTORY(unit_tests)
33 changes: 33 additions & 0 deletions cmake/std/atdm/test/shunit2/.githooks/generic
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/sh
#
# A generic git hook proxy.
# https://git-scm.com/docs/githooks

run() {
hook=$1
file=$2

n=$(echo "${file}" |sed "s/^.*${hook}\.//")
echo "running ${n} ${hook}"
${file}
}

die() {
hook=$1
echo "${hook} hook did not succeed" >&2
exit 1
}

# Redirect output to stderr.
exec 1>&2

githooks='.githooks'
basename=$(basename "$0")

for f in $(cd ${githooks} && echo *); do
case "${f}" in
${basename}.*)
run ${basename} "${githooks}/${f}" || die "${f}"
;;
esac
done
41 changes: 41 additions & 0 deletions cmake/std/atdm/test/shunit2/.githooks/pre-commit.shellcheck
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
#!/bin/sh
#
# Git hook to run ShellCheck.
#
# ShellCheck <https://www.shellcheck.net/>

# Treat unset variables as an error when performing parameter expansion.
set -u

TRUE=0
FALSE=1

die() {
echo "$@" >&2
exit 1
}

if ! command -v shellcheck >/dev/null; then
echo 'unable to locate shellcheck' >&2
return 0
fi

success=${TRUE}
for f in $(git diff --cached --name-only); do
# Check for file deletion.
if [ ! -r "${f}" ]; then
continue
fi

cmd=':'
case "${f}" in
shflags|shflags_test_helpers) cmd="shellcheck -s sh ${f}" ;;
*.sh) cmd="shellcheck ${f}" ;;
esac
if ! ${cmd}; then
success=${FALSE}
echo "shellcheck error for '${f}'" >&2
fi
done

exit ${success}
3 changes: 3 additions & 0 deletions cmake/std/atdm/test/shunit2/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# Hidden files generated by macOS.
.DS_Store
._*
40 changes: 40 additions & 0 deletions cmake/std/atdm/test/shunit2/.travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
language: bash

env:
- SHUNIT_COLOR='always'

script:
# Execute the unit tests.
- ./test_runner

addons:
apt:
packages:
- ksh
- mksh
- zsh

matrix:
include:
- os: linux
# Support Ubuntu Bionic 18.04 through at least Apr 2023.
dist: bionic
- os: linux
# Support Ubuntu Xenial 16.04 through at least Apr 2021.
dist: xenial
- os: linux
# Support Ubuntu Trusty 14.04 through at least Apr 2019.
dist: trusty
- os: osx
- os: linux
script:
# Run the source through ShellCheck (http://www.shellcheck.net).
- shellcheck shunit2 *_test.sh
- shellcheck -s sh shunit2_test_helpers

branches:
only:
- master
- 2.1.x
# Tags, e.g. v.2.1.8.
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
46 changes: 46 additions & 0 deletions cmake/std/atdm/test/shunit2/CODE_OF_CONDUCT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at kate.ward@forestent.com. The project team will review and investigate all complaints, and will respond in a way that it deems appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [http://contributor-covenant.org/version/1/4][version]

[homepage]: http://contributor-covenant.org
[version]: http://contributor-covenant.org/version/1/4/
Loading

0 comments on commit ad8c057

Please sign in to comment.