Skip to content

Commit

Permalink
Merge Pull Request #12772 from trilinos/Trilinos/master_merge_2024022…
Browse files Browse the repository at this point in the history
…3_175828

Automatically Merged using Trilinos Master Merge AutoTester
PR Title: b'Trilinos Master Merge PR Generator: Auto PR created to promote from master_merge_20240223_175828 branch to master'
PR Author: trilinos-autotester
  • Loading branch information
trilinos-autotester authored Feb 24, 2024
2 parents e9f08ea + dde9850 commit a791e19
Show file tree
Hide file tree
Showing 340 changed files with 11,547 additions and 3,030 deletions.
1,042 changes: 557 additions & 485 deletions RELEASE_NOTES

Large diffs are not rendered by default.

6 changes: 3 additions & 3 deletions cmake/SimpleTesting/cmake/ctest-cdash-setup.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -65,14 +65,14 @@ endif()

# Optionally upload the config files
# TODO: Note how this works / what it's doing in CMake-land.
message(">>> Write `configure_command_file`:")
message(">>> Write `configure_command_file` and `genconfig_build_name_file`:")
if(skip_upload_config_files)
message(">>> - SKIPPED")
else()
message(">>> - WRITTEN")
#message(">>> - configure_command_file : ${configure_command_file}")
#message(">>> - CTEST_CONFIGURE_COMMAND: ${CTEST_CONFIGURE_COMMAND}")
file(WRITE ${configure_command_file} ${CTEST_CONFIGURE_COMMAND})
file(WRITE ${genconfig_build_name_file} $ENV{GENCONFIG_BUILD_NAME})

endif()
message(">>>")

Expand Down
1 change: 1 addition & 0 deletions cmake/SimpleTesting/cmake/ctest-common.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ set(CTEST_BUILD_FLAGS "-j${PARALLEL_LEVEL} -k 0")
# * REQUIRES `CTEST_BINARY_DIRECTORY` to be set.
if(NOT skip_upload_config_files)
set(configure_command_file ${CTEST_BINARY_DIRECTORY}/configure_command.txt)
set(genconfig_build_name_file ${CTEST_BINARY_DIRECTORY}/genconfig_build_name.txt)
endif()


Expand Down
11 changes: 9 additions & 2 deletions cmake/SimpleTesting/cmake/ctest-functions.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,14 @@ macro(submit_upload_config_files)
if( NOT (skip_single_submit AND skip_by_parts_submit) )
message(">>> ctest_upload(FILES ${configure_command_file}")
message(" ${configure_file}")
message(" ${package_enables_file} )")
ctest_upload(FILES ${configure_command_file} ${configure_file} ${package_enables_file})
message(" ${package_enables_file}")
message(" ${genconfig_build_name_file})")

ctest_upload(FILES ${configure_command_file}
${configure_file}
${package_enables_file}
${genconfig_build_name_file})

message(">>> ctest_submit(PARTS upload")
message(" RETRY_COUNT ${ctest_submit_retry_count}")
message(" RETRY_DELAY ${ctest_submit_retry_delay}")
Expand Down Expand Up @@ -127,6 +133,7 @@ macro(print_options_list)
message(">>> subproject_count = ${subproject_count}")
message(">>> dashboard_model = ${dashboard_model}")
message(">>> dashboard_track = ${dashboard_track}")
message(">>> genconfig_build_name_file= ${genconfig_build_name_file}")
message(">>> configure_command_file = ${configure_command_file}")
message(">>> configure_file = ${configure_file}")
message(">>> build_root = ${build_root}")
Expand Down
4 changes: 0 additions & 4 deletions packages/amesos2/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,6 @@ TRIBITS_ADD_OPTION_AND_DEFINE(${PACKAGE_NAME}_ENABLE_KLU2
ON
)

IF (Kokkos_ENABLE_CUDA OR Kokkos_ENABLE_HIP)
tribits_disable_optional_dependency(ShyLU_NodeTacho "NOTE: Disabling ${PACKAGE_NAME}_ENABLE_ShyLU_NodeTacho because CUDA or HIP is enabled in Kokkos")
ENDIF()

TRIBITS_ADD_OPTION_AND_DEFINE(${PACKAGE_NAME}_ENABLE_Basker
HAVE_AMESOS2_BASKER
"Enable Basker in Amesos2"
Expand Down
13 changes: 11 additions & 2 deletions packages/framework/ini-files/config-specs.ini
Original file line number Diff line number Diff line change
Expand Up @@ -791,10 +791,12 @@ opt-set-cmake-var Kokkos_ENABLE_CUDA_RELOCATABLE_DEVICE_CODE BOOL : OFF
#

[USE-UVM|YES]
opt-set-cmake-var Kokkos_ENABLE_CUDA_UVM BOOL : ON
opt-set-cmake-var Tpetra_ALLOCATE_IN_SHARED_SPACE BOOL : ON
opt-set-cmake-var KokkosKernels_INST_MEMSPACE_CUDAUVMSPACE BOOL : ON

[USE-UVM|NO]
opt-set-cmake-var Kokkos_ENABLE_CUDA_UVM BOOL : OFF
opt-set-cmake-var Tpetra_ALLOCATE_IN_SHARED_SPACE BOOL : OFF
opt-set-cmake-var KokkosKernels_INST_MEMSPACE_CUDAUVMSPACE BOOL : OFF



Expand Down Expand Up @@ -2406,6 +2408,13 @@ use CUDA11-RUN-SERIAL-TESTS
# MPI issue (TRILFRAME-552)
opt-set-cmake-var ROL_example_PinT_parabolic-control_AugmentedSystem_test_MPI_2_DISABLE BOOL FORCE : ON


[rhel7_sems-cuda-11.4.2-sems-gnu-10.1.0-sems-openmpi-4.0.5_release_static_Volta70_no-asan_complex_no-fpic_mpi_pt_no-rdc_uvm_deprecated-on_all]
use rhel7_sems-cuda-11.4.2-sems-gnu-10.1.0-sems-openmpi-4.0.5_release_static_Volta70_no-asan_complex_no-fpic_mpi_pt_no-rdc_uvm_deprecated-on_no-package-enables
use PACKAGE-ENABLES|ALL
opt-set-cmake-var Trilinos_ENABLE_TESTS BOOL FORCE : OFF


[rhel7_sems-cuda-11.4.2-sems-gnu-10.1.0-sems-openmpi-4.0.5_release_static_Volta70_no-asan_complex_no-fpic_mpi_pt_rdc_uvm_deprecated-on_all]
# uses sems-v2 modules
use rhel7_sems-cuda-11.4.2-sems-gnu-10.1.0-sems-openmpi-4.0.5_release_static_Volta70_no-asan_complex_no-fpic_mpi_pt_no-rdc_uvm_deprecated-on_no-package-enables
Expand Down
1 change: 1 addition & 0 deletions packages/framework/pr_tools/PullRequestLinuxDriver.sh
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ test_cmd_options=(
--build-dir=${TRILINOS_BUILD_DIR:?}
--ctest-driver=${WORKSPACE:?}/Trilinos/cmake/SimpleTesting/cmake/ctest-driver.cmake
--ctest-drop-site=${TRILINOS_CTEST_DROP_SITE:?}
--dashboard-build-name=${DASHBOARD_BUILD_NAME}
)

if [[ ${on_kokkos_develop} == "1" ]]
Expand Down
8 changes: 8 additions & 0 deletions packages/framework/pr_tools/PullRequestLinuxDriverTest.py
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,13 @@ def parse_args():
help='The Jenkins build number',
required=True)

optional.add_argument('--dashboard-build-name',
dest="dashboard_build_name",
action='store',
default="UNKNOWN",
help='The build name posted by ctest to a dashboard',
required=False)

optional.add_argument('--source-dir',
dest="source_dir",
action='store',
Expand Down Expand Up @@ -280,6 +287,7 @@ def parse_args():
print("| - [O] test-mode : {test_mode}".format(**vars(arguments)))
print("| - [O] workspace-dir : {workspace_dir}".format(**vars(arguments)))
print("| - [O] extra_configure_args : {extra_configure_args}".format(**vars(arguments)))
print("| - [O] dashboard_build_name : {dashboard_build_name}".format(**vars(arguments)))
#print("| - [O] : {}".format(**vars(arguments)))
print("+" + "="*78 + "+")

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@ class TrilinosPRConfigurationBase(object):
arg_pr_config_file: The config.ini file that specifies the configuration to load.
arg_pr_jenkins_job_name: The Jenkins Job Name.
arg_ccache_enable: Enable ccache.
arg_dashboard_build_name: A shortened genconfig build name
for posting to a testing dashboard.
filename_subprojects: The subprojects file.
working_directory_ctest: Gen. working dir where TFW_testing_single_configure_prototype
is executed from.
Expand Down Expand Up @@ -299,6 +301,14 @@ def arg_pr_genconfig_job_name(self):
"""
return self.args.genconfig_build_name

@property
def arg_dashboard_build_name(self):
"""
The simplified genconfig build name containing only the
special attributes of the full build name.
Default is to use the value in args.dashboard_build_name.
"""
return self.args.dashboard_build_name

@property
def arg_filename_subprojects(self):
Expand Down Expand Up @@ -474,6 +484,8 @@ def pullrequest_build_name(self):
"""
if self.arg_pullrequest_cdash_track == "Pull Request":
output = "PR-{}-test-{}-{}".format(self.arg_pullrequest_number, self.arg_pr_genconfig_job_name, self.arg_jenkins_job_number)
elif self.arg_pullrequest_cdash_track == "Nightly":
output = self.arg_dashboard_build_name
else:
output = self.arg_pr_genconfig_job_name
return output
Expand Down Expand Up @@ -698,6 +710,7 @@ def prepare_test(self):
self.message("--- arg_pr_gen_config_file = {}".format(self.arg_pr_gen_config_file))
self.message("--- arg_pr_jenkins_job_name = {}".format(self.arg_pr_jenkins_job_name))
self.message("--- arg_pr_genconfig_job_name = {}".format(self.arg_pr_genconfig_job_name))
self.message("--- arg_dashboard_build_name = {}".format(self.arg_dashboard_build_name))
self.message("--- arg_pullrequest_number = {}".format(self.arg_pullrequest_number))
self.message("--- arg_pullrequest_cdash_track = {}".format(self.arg_pullrequest_cdash_track))
self.message("--- arg_req_mem_per_core = {}".format(self.arg_req_mem_per_core))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -212,6 +212,7 @@ def dummy_args(self):
target_branch_name="develop",
pullrequest_build_name="Trilinos-pullrequest-gcc-7.2.0",
genconfig_build_name="rhel7_sems-gnu-7.2.0-openmpi-1.10.1-openmp_release_static_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_no-package-enables",
dashboard_build_name="gnu-7.2.0-openmpi-1.10.1_release_static_openmp",
jenkins_job_number=99,
pullrequest_number='0000',
pullrequest_cdash_track="Pull Request",
Expand Down Expand Up @@ -266,6 +267,12 @@ def dummy_args_non_pr_track(self):
return args


def dummy_args_nightly_track(self):
args = copy.deepcopy(self.dummy_args())
args.pullrequest_cdash_track = "Nightly"
return args


def dummy_args_master_pass(self):
"""
Modify arguments to test a develop->master with a valid
Expand Down Expand Up @@ -357,6 +364,14 @@ def test_TrilinosPRConfigurationBaseBuildNameNonPRTrack(self):
self.assertEqual(build_name, expected_build_name)


def test_TrilinosPRConfigurationBaseBuildNameNightlyTrack(self):
args = self.dummy_args_nightly_track()
pr_config = trilinosprhelpers.TrilinosPRConfigurationBase(args)
build_name = pr_config.pullrequest_build_name
expected_build_name = args.dashboard_build_name
self.assertEqual(build_name, expected_build_name)


def test_TrilinosPRConfigurationBaseDashboardModelPRTrack(self):
args = self.dummy_args()
pr_config = trilinosprhelpers.TrilinosPRConfigurationBase(args)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,7 @@ def dummy_args(self):
target_branch_name="develop",
pullrequest_build_name="Trilinos-pullrequest-gcc-8.3.0-installation-testing",
genconfig_build_name="rhel7_sems-gnu-8.3.0-openmpi-1.10.1-openmp_release-debug_static_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_trilinos-pr",
dashboard_build_name="gnu-7.2.0-openmpi-1.10.1_release-debug_shared_openmp",
pullrequest_cdash_track="Pull Request",
jenkins_job_number=99,
pullrequest_number='0000',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,7 @@ def dummy_args(self):
target_branch_name="develop",
pullrequest_build_name="Trilinos-pullrequest-gcc-7.2.0",
genconfig_build_name="rhel7_sems-gnu-7.2.0-openmpi-1.10.1-openmp_release-debug_shared_no-kokkos-arch_no-asan_no-complex_no-fpic_mpi_no-pt_no-rdc_trilinos-pr",
dashboard_build_name="gnu-7.2.0-openmpi-1.10.1_release-debug_shared_openmp",
pullrequest_cdash_track="Pull Request",
jenkins_job_number=99,
pullrequest_number='0000',
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ def setUp(self):
target_branch_name='real_trash',
pullrequest_build_name='Some_odd_compiler',
genconfig_build_name='Some_odd_compiler_and_options',
dashboard_build_name='UNKNOWN',
pullrequest_number='4242',
jenkins_job_number='2424',
source_dir='UNKNOWN',
Expand Down Expand Up @@ -121,6 +122,7 @@ def setUp(self):
--genconfig-build-name GENCONFIG_BUILD_NAME
--pullrequest-number PULLREQUEST_NUMBER
--jenkins-job-number JENKINS_JOB_NUMBER
[--dashboard-build-name DASHBOARD_BUILD_NAME]
[--source-dir SOURCE_DIR] [--build-dir BUILD_DIR]
[--use-explicit-cachefile] [--ctest-driver CTEST_DRIVER]
[--ctest-drop-site CTEST_DROP_SITE]
Expand Down Expand Up @@ -159,6 +161,8 @@ def setUp(self):
The Jenkins build number
Optional Arguments:
--dashboard-build-name DASHBOARD_BUILD_NAME
The build name posted by ctest to a dashboard
--source-dir SOURCE_DIR
Directory containing the source code to compile/test.
--build-dir BUILD_DIR
Expand Down Expand Up @@ -227,6 +231,7 @@ def setUp(self):
--genconfig-build-name GENCONFIG_BUILD_NAME
--pullrequest-number PULLREQUEST_NUMBER
--jenkins-job-number JENKINS_JOB_NUMBER
[--dashboard-build-name DASHBOARD_BUILD_NAME]
[--source-dir SOURCE_DIR] [--build-dir BUILD_DIR]
[--use-explicit-cachefile] [--ctest-driver CTEST_DRIVER]
[--ctest-drop-site CTEST_DROP_SITE]
Expand Down
22 changes: 21 additions & 1 deletion packages/ifpack2/src/Ifpack2_BlockRelaxation_def.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,12 @@
#include "Ifpack2_BlockRelaxation_decl.hpp"
#include "Ifpack2_LinearPartitioner.hpp"
#include "Ifpack2_LinePartitioner.hpp"
#include "Ifpack2_Zoltan2Partitioner_decl.hpp"
#include "Ifpack2_Zoltan2Partitioner_def.hpp"
#include "Ifpack2_Details_UserPartitioner_decl.hpp"
#include "Ifpack2_Details_UserPartitioner_def.hpp"
#include <Ifpack2_Parameters.hpp>
#include "Ifpack2_LocalFilter.hpp"
#include "Ifpack2_Parameters.hpp"
#include "Teuchos_TimeMonitor.hpp"

namespace Ifpack2 {
Expand Down Expand Up @@ -141,6 +144,7 @@ getValidParameters () const
validParams->set("schwarz: filter singletons", false);
validParams->set("schwarz: overlap level", 0);
validParams->set("partitioner: type", "greedy");
validParams->set("zoltan2: algorithm", "phg");
validParams->set("partitioner: local parts", 1);
validParams->set("partitioner: overlap", 0);
validParams->set("partitioner: combine mode", "ZERO"); // use string mode for this
Expand Down Expand Up @@ -650,6 +654,22 @@ initialize ()
} else if (PartitionerType_ == "user") {
Partitioner_ =
rcp (new Ifpack2::Details::UserPartitioner<row_graph_type> (A_->getGraph () ) );
} else if (PartitionerType_ == "zoltan2") {
#if defined(HAVE_IFPACK2_ZOLTAN2)
if (A_->getGraph ()->getComm ()->getSize () == 1) {
// Only one MPI, so call zoltan2 with global graph
Partitioner_ =
rcp (new Ifpack2::Zoltan2Partitioner<row_graph_type> (A_->getGraph ()) );
} else {
// Form local matrix to get local graph for calling zoltan2
Teuchos::RCP<const row_matrix_type> A_local = rcp (new LocalFilter<row_matrix_type> (A_));
Partitioner_ =
rcp (new Ifpack2::Zoltan2Partitioner<row_graph_type> (A_local->getGraph ()) );
}
#else
TEUCHOS_TEST_FOR_EXCEPTION
(true, std::logic_error, "Ifpack2::BlockRelaxation::initialize: Zoltan2 not enabled.");
#endif
} else {
// We should have checked for this in setParameters(), so it's a
// logic_error, not an invalid_argument or runtime_error.
Expand Down
16 changes: 13 additions & 3 deletions packages/ifpack2/src/Ifpack2_LocalFilter_decl.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@

#include "Ifpack2_ConfigDefs.hpp"
#include "Ifpack2_Details_RowMatrix.hpp"
#include "Tpetra_CrsGraph.hpp"
#include <type_traits>
#include <vector>

Expand Down Expand Up @@ -210,6 +211,11 @@ class LocalFilter :
global_ordinal_type,
node_type> row_matrix_type;

//! Type of the Tpetra::RowGraph specialization that this class uses.
typedef Tpetra::RowGraph<local_ordinal_type,
global_ordinal_type,
node_type> row_graph_type;

//! Type of the Tpetra::Map specialization that this class uses.
typedef Tpetra::Map<local_ordinal_type,
global_ordinal_type,
Expand Down Expand Up @@ -467,10 +473,11 @@ class LocalFilter :

//@}
private:
//! Type of a read-only interface to a graph.
typedef Tpetra::RowGraph<local_ordinal_type,
//! Type of Tpetra::CrsGraph that this class uses to create local row-graph.
typedef Tpetra::CrsGraph<local_ordinal_type,
global_ordinal_type,
node_type> row_graph_type;
node_type> crs_graph_type;

//! Special case of apply() for when X and Y do not alias one another.
void
applyNonAliased (const Tpetra::MultiVector<scalar_type,local_ordinal_type,global_ordinal_type,node_type> &X,
Expand Down Expand Up @@ -514,6 +521,9 @@ class LocalFilter :
//! Range Map of the locally filtered matrix.
Teuchos::RCP<const map_type> localRangeMap_;

//! Local Graph
mutable Teuchos::RCP<const row_graph_type> local_graph_;

//! Number of nonzeros in the local matrix.
size_t NumNonzeros_;
//! Maximum number of nonzero entries in a row for the filtered matrix.
Expand Down
26 changes: 22 additions & 4 deletions packages/ifpack2/src/Ifpack2_LocalFilter_def.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -291,10 +291,28 @@ Teuchos::RCP<const Tpetra::RowGraph<typename MatrixType::local_ordinal_type,
typename MatrixType::node_type> >
LocalFilter<MatrixType>::getGraph () const
{
// FIXME (mfh 20 Nov 2013) This is not what the documentation says
// this method should do! It should return the graph of the locally
// filtered matrix, not the original matrix's graph.
return A_->getGraph ();
if (local_graph_ == Teuchos::null) {
local_ordinal_type numRows = this->getLocalNumRows();
Teuchos::Array<size_t> entriesPerRow(numRows);
for(local_ordinal_type i = 0; i < numRows; i++) {
entriesPerRow[i] = this->getNumEntriesInLocalRow(i);
}
Teuchos::RCP<crs_graph_type> local_graph_nc =
Teuchos::rcp (new crs_graph_type (this->getRowMap (),
this->getColMap (),
entriesPerRow()));
// copy local indexes into local graph
nonconst_local_inds_host_view_type indices("indices",this->getLocalMaxNumRowEntries());
nonconst_values_host_view_type values("values",this->getLocalMaxNumRowEntries());
for(local_ordinal_type i = 0; i < numRows; i++) {
size_t numEntries = 0;
this->getLocalRowCopy(i, indices, values, numEntries); // get indices & values
local_graph_nc->insertLocalIndices (i, numEntries, indices.data());
}
local_graph_nc->fillComplete (this->getDomainMap (), this->getRangeMap ());
local_graph_ = Teuchos::rcp_const_cast<const crs_graph_type> (local_graph_nc);
}
return local_graph_;
}


Expand Down
1 change: 1 addition & 0 deletions packages/ifpack2/src/Ifpack2_Parameters.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ void getValidParameters(Teuchos::ParameterList& params)
// params.get("relaxation: damping factor", 1.0); // already set
// params.get("relaxation: zero starting solution", true); // already set
params.set("partitioner: type", "greedy");
params.set("zoltan2: algorithm", "phg");
params.set("partitioner: local parts", 1);
params.set("partitioner: overlap", 0);
Teuchos::Array<Teuchos::ArrayRCP<int>> tmp0;
Expand Down
Loading

0 comments on commit a791e19

Please sign in to comment.