From 55a08bda9436dc2fd06511f69e242df1a5f9ece7 Mon Sep 17 00:00:00 2001 From: "K. Devine" Date: Mon, 25 Nov 2019 22:38:49 -0700 Subject: [PATCH 1/7] tpetra: workaround one parallel_scan as an experiment for stria #6345 --- .../src/Tpetra_Details_computeOffsets.hpp | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/packages/tpetra/core/src/Tpetra_Details_computeOffsets.hpp b/packages/tpetra/core/src/Tpetra_Details_computeOffsets.hpp index 29f819bfefd4..9819318e9d9b 100644 --- a/packages/tpetra/core/src/Tpetra_Details_computeOffsets.hpp +++ b/packages/tpetra/core/src/Tpetra_Details_computeOffsets.hpp @@ -279,6 +279,32 @@ computeOffsetsFromCounts (const ExecutionSpace& execSpace, ": counts.size() = " << numCounts << " >= ptr.size() = " << numOffsets << "."); +#ifdef TPETRA_AVOID_PARALLEL_SCAN + // KDD 11/25/19 Temporary workaround to the one scan whose behavior + // makes a difference for GPU runs. On the GPU platforms, serializing + // this scan (via Kokkos' magic) makes the code perform correctly. + // This code serializes the scan, without the Kokkos magic, for debugging + // on stria. #6345 + // To use this code, add -DTPETRA_AVOID_PARALLEL_SCAN to CMAKE_CXX_FLAGS + + Kokkos::View + ptrAPS(Kokkos::ViewAllocateWithoutInitializing("APS_offsets"), + numOffsets); + Kokkos::View + countsAPS(Kokkos::ViewAllocateWithoutInitializing("APS_counts"), + numCounts); + + Kokkos::deep_copy(countsAPS, counts); + + ptrAPS(0) = 0; + for (size_t i = 0; i < numCounts; i++) + ptrAPS(i+1) = ptrAPS(i) + countsAPS(i); + + total = ptrAPS(numCounts); + + Kokkos::deep_copy(ptr, ptrAPS); + +#else using Kokkos::AnonymousSpace; using Kokkos::View; View ptr_a = ptr; @@ -313,6 +339,7 @@ computeOffsetsFromCounts (const ExecutionSpace& execSpace, using functor_type = ComputeOffsetsFromCounts; total = functor_type::run (execSpace, ptr_a, counts_a); +#endif } return total; From ba993aae437dec9556554cadf2df823d481194b4 Mon Sep 17 00:00:00 2001 From: "Irina K. Tezaur" Date: Fri, 27 Dec 2019 16:40:00 -0800 Subject: [PATCH 2/7] Tempus: creating test for Newmark d-Form stepper, which currently does not have any tests within Tempus. --- packages/tempus/test/Newmark/CMakeLists.txt | 2 +- ..._HarmonicOscillator_Damped_SecondOrder.xml | 104 +++++++++ .../test/Newmark/Tempus_NewmarkTest.cpp | 211 +++++++++++++++++- .../HarmonicOscillatorModel_decl.hpp | 2 +- .../HarmonicOscillatorModel_impl.hpp | 13 +- 5 files changed, 325 insertions(+), 7 deletions(-) create mode 100644 packages/tempus/test/Newmark/Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml diff --git a/packages/tempus/test/Newmark/CMakeLists.txt b/packages/tempus/test/Newmark/CMakeLists.txt index 87f138ce5985..0542c540fc03 100644 --- a/packages/tempus/test/Newmark/CMakeLists.txt +++ b/packages/tempus/test/Newmark/CMakeLists.txt @@ -19,6 +19,6 @@ TRIBITS_ADD_EXECUTABLE_AND_TEST( # ) TRIBITS_COPY_FILES_TO_BINARY_DIR(Test_NewmarkImplicitAForm_CopyFiles - DEST_FILES Tempus_NewmarkImplicitAForm_HarmonicOscillator_Damped_SecondOrder.xml Tempus_NewmarkImplicitAForm_HarmonicOscillator_Damped_FirstOrder.xml Tempus_NewmarkExplicitAForm_SinCos.xml Tempus_NewmarkExplicitAForm_BallParabolic.xml Tempus_NewmarkExplicitAForm_HarmonicOscillator_Damped.xml + DEST_FILES Tempus_NewmarkImplicitAForm_HarmonicOscillator_Damped_SecondOrder.xml Tempus_NewmarkImplicitAForm_HarmonicOscillator_Damped_FirstOrder.xml Tempus_NewmarkExplicitAForm_SinCos.xml Tempus_NewmarkExplicitAForm_BallParabolic.xml Tempus_NewmarkExplicitAForm_HarmonicOscillator_Damped.xml Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml EXEDEPS Newmark ) diff --git a/packages/tempus/test/Newmark/Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml b/packages/tempus/test/Newmark/Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml new file mode 100644 index 000000000000..9701dc8251ed --- /dev/null +++ b/packages/tempus/test/Newmark/Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/tempus/test/Newmark/Tempus_NewmarkTest.cpp b/packages/tempus/test/Newmark/Tempus_NewmarkTest.cpp index d8538ec0f7b5..2a0e78f518b2 100644 --- a/packages/tempus/test/Newmark/Tempus_NewmarkTest.cpp +++ b/packages/tempus/test/Newmark/Tempus_NewmarkTest.cpp @@ -352,7 +352,6 @@ TEUCHOS_UNIT_TEST(NewmarkExplicitAForm, HarmonicOscillatorDamped) #ifdef TEST_HARMONIC_OSCILLATOR_DAMPED_CTOR // ************************************************************ -// ************************************************************ TEUCHOS_UNIT_TEST(NewmarkImplicitAForm, ConstructingFromDefaults) { double dt = 1.0; @@ -449,6 +448,106 @@ TEUCHOS_UNIT_TEST(NewmarkImplicitAForm, ConstructingFromDefaults) std::cout << " =========================" << std::endl; TEST_FLOATING_EQUALITY(get_ele(*(x), 0), -0.222222, 1.0e-4 ); } + + +// ************************************************************ +TEUCHOS_UNIT_TEST(NewmarkImplicitDForm, ConstructingFromDefaults) +{ + double dt = 1.0; + + // Read params from .xml file + RCP pList = getParametersFromXmlFile( + "Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml"); + RCP pl = sublist(pList, "Tempus", true); + + // Setup the HarmonicOscillatorModel + RCP hom_pl = sublist(pList, "HarmonicOscillatorModel", true); + RCP > model = + Teuchos::rcp(new HarmonicOscillatorModel(hom_pl, true)); + + // Setup Stepper for field solve ---------------------------- + auto sf = Teuchos::rcp(new Tempus::StepperFactory()); + RCP > stepper = + sf->createStepperNewmarkImplicitDForm(model, Teuchos::null); + + // Setup TimeStepControl ------------------------------------ + RCP > timeStepControl = + Teuchos::rcp(new Tempus::TimeStepControl()); + ParameterList tscPL = pl->sublist("Default Integrator") + .sublist("Time Step Control"); + timeStepControl->setStepType (tscPL.get("Integrator Step Type")); + timeStepControl->setInitIndex(tscPL.get ("Initial Time Index")); + timeStepControl->setInitTime (tscPL.get("Initial Time")); + timeStepControl->setFinalTime(tscPL.get("Final Time")); + timeStepControl->setInitTimeStep(dt); + timeStepControl->initialize(); + + // Setup initial condition SolutionState -------------------- + using Teuchos::rcp_const_cast; + Thyra::ModelEvaluatorBase::InArgs inArgsIC = + stepper->getModel()->getNominalValues(); + RCP > icX = + rcp_const_cast > (inArgsIC.get_x()); + RCP > icXDot = + rcp_const_cast > (inArgsIC.get_x_dot()); + RCP > icXDotDot = + rcp_const_cast > (inArgsIC.get_x_dot_dot()); + RCP > icState = + Teuchos::rcp(new Tempus::SolutionState(icX, icXDot, icXDotDot)); + icState->setTime (timeStepControl->getInitTime()); + icState->setIndex (timeStepControl->getInitIndex()); + icState->setTimeStep(0.0); + icState->setOrder (stepper->getOrder()); + icState->setSolutionStatus(Tempus::Status::PASSED); // ICs are passing. + + // Setup SolutionHistory ------------------------------------ + RCP > solutionHistory = + Teuchos::rcp(new Tempus::SolutionHistory()); + solutionHistory->setName("Forward States"); + solutionHistory->setStorageType(Tempus::STORAGE_TYPE_STATIC); + solutionHistory->setStorageLimit(2); + solutionHistory->addState(icState); + + // Setup Integrator ----------------------------------------- + RCP > integrator = + Tempus::integratorBasic(); + integrator->setStepperWStepper(stepper); + integrator->setTimeStepControl(timeStepControl); + integrator->setSolutionHistory(solutionHistory); + //integrator->setObserver(...); + integrator->initialize(); + + + // Integrate to timeMax + bool integratorStatus = integrator->advanceTime(); + TEST_ASSERT(integratorStatus) + + + // Test if at 'Final Time' + double time = integrator->getTime(); + double timeFinal =pl->sublist("Default Integrator") + .sublist("Time Step Control").get("Final Time"); + TEST_FLOATING_EQUALITY(time, timeFinal, 1.0e-14); + + // Time-integrated solution and the exact solution + RCP > x = integrator->getX(); + RCP > x_exact = + model->getExactSolution(time).get_x(); + + // Calculate the error + RCP > xdiff = x->clone_v(); + Thyra::V_StVpStV(xdiff.ptr(), 1.0, *x_exact, -1.0, *(x)); + + // Check the order and intercept + std::cout << " Stepper = " << stepper->description() << std::endl; + std::cout << " =========================" << std::endl; + std::cout << " Exact solution : " << get_ele(*(x_exact), 0) << std::endl; + std::cout << " Computed solution: " << get_ele(*(x ), 0) << std::endl; + std::cout << " Difference : " << get_ele(*(xdiff ), 0) << std::endl; + std::cout << " =========================" << std::endl; + TEST_FLOATING_EQUALITY(get_ele(*(x), 0), -0.222222, 1.0e-4 ); +} + #endif @@ -561,6 +660,116 @@ TEUCHOS_UNIT_TEST(NewmarkImplicitAForm, HarmonicOscillatorDamped_SecondOrder) Teuchos::TimeMonitor::summarize(); } + + +// ************************************************************ +TEUCHOS_UNIT_TEST(NewmarkImplicitDForm, HarmonicOscillatorDamped_SecondOrder) +{ + RCP > integrator; + std::vector>> solutions; + std::vector>> solutionsDot; + std::vector StepSize; + std::vector xErrorNorm; + std::vector xDotErrorNorm; + const int nTimeStepSizes = 10; + double time = 0.0; + + // Read params from .xml file + RCP pList = + getParametersFromXmlFile("Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.xml"); + + // Setup the HarmonicOscillatorModel + RCP hom_pl = sublist(pList, "HarmonicOscillatorModel", true); + RCP > model = + Teuchos::rcp(new HarmonicOscillatorModel(hom_pl, true)); + + + // Setup the Integrator and reset initial time step + RCP pl = sublist(pList, "Tempus", true); + + //Set initial time step = 2*dt specified in input file (for convergence study) + // + double dt =pl->sublist("Default Integrator") + .sublist("Time Step Control").get("Initial Time Step"); + dt *= 2.0; + + for (int n=0; nsublist("Default Integrator") + .sublist("Time Step Control").set("Initial Time Step", dt); + integrator = Tempus::integratorBasic(pl, model); + + // Integrate to timeMax + bool integratorStatus = integrator->advanceTime(); + TEST_ASSERT(integratorStatus) + + // Test if at 'Final Time' + time = integrator->getTime(); + double timeFinal =pl->sublist("Default Integrator") + .sublist("Time Step Control").get("Final Time"); + TEST_FLOATING_EQUALITY(time, timeFinal, 1.0e-14); + + // Plot sample solution and exact solution + if (n == 0) { + RCP > solutionHistory = + integrator->getSolutionHistory(); + writeSolution("Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder.dat", solutionHistory); + + RCP > solnHistExact = + Teuchos::rcp(new Tempus::SolutionHistory()); + for (int i=0; igetNumStates(); i++) { + double time_i = (*solutionHistory)[i]->getTime(); + RCP > state = + Teuchos::rcp(new Tempus::SolutionState( + model->getExactSolution(time_i).get_x(), + model->getExactSolution(time_i).get_x_dot())); + state->setTime((*solutionHistory)[i]->getTime()); + solnHistExact->addState(state); + } + writeSolution("Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder-Ref.dat", solnHistExact); + } + + // Store off the final solution and step size + StepSize.push_back(dt); + auto solution = Thyra::createMember(model->get_x_space()); + Thyra::copy(*(integrator->getX()),solution.ptr()); + solutions.push_back(solution); + auto solutionDot = Thyra::createMember(model->get_x_space()); + Thyra::copy(*(integrator->getXdot()),solutionDot.ptr()); + solutionsDot.push_back(solutionDot); + if (n == nTimeStepSizes-1) { // Add exact solution last in vector. + StepSize.push_back(0.0); + auto solutionExact = Thyra::createMember(model->get_x_space()); + Thyra::copy(*(model->getExactSolution(time).get_x()),solutionExact.ptr()); + solutions.push_back(solutionExact); + auto solutionDotExact = Thyra::createMember(model->get_x_space()); + Thyra::copy(*(model->getExactSolution(time).get_x_dot()), + solutionDotExact.ptr()); + solutionsDot.push_back(solutionDotExact); + } + } + + // Check the order and intercept + double xSlope = 0.0; + double xDotSlope = 0.0; + RCP > stepper = integrator->getStepper(); + double order = stepper->getOrder(); + writeOrderError("Tempus_NewmarkImplicitDForm_HarmonicOscillator_Damped_SecondOrder_SinCos-Error.dat", + stepper, StepSize, + solutions, xErrorNorm, xSlope, + solutionsDot, xDotErrorNorm, xDotSlope); + + TEST_FLOATING_EQUALITY( xSlope, order, 0.01 ); + TEST_FLOATING_EQUALITY( xErrorNorm[0], 0.0484483, 1.0e-4 ); + TEST_FLOATING_EQUALITY( xDotSlope, order, 0.01 ); + TEST_FLOATING_EQUALITY( xDotErrorNorm[0], 0.0484483, 1.0e-4 ); + + Teuchos::TimeMonitor::summarize(); +} #endif #ifdef TEST_HARMONIC_OSCILLATOR_DAMPED_FIRST_ORDER diff --git a/packages/tempus/test/TestModels/HarmonicOscillatorModel_decl.hpp b/packages/tempus/test/TestModels/HarmonicOscillatorModel_decl.hpp index 5713f5592db9..39fe092552b5 100644 --- a/packages/tempus/test/TestModels/HarmonicOscillatorModel_decl.hpp +++ b/packages/tempus/test/TestModels/HarmonicOscillatorModel_decl.hpp @@ -56,7 +56,7 @@ class HarmonicOscillatorModel public: // Constructor - HarmonicOscillatorModel(Teuchos::RCP pList = Teuchos::null); + HarmonicOscillatorModel(Teuchos::RCP pList = Teuchos::null, const bool use_accel_IC = false); // Exact solution Thyra::ModelEvaluatorBase::InArgs getExactSolution(double t) const; diff --git a/packages/tempus/test/TestModels/HarmonicOscillatorModel_impl.hpp b/packages/tempus/test/TestModels/HarmonicOscillatorModel_impl.hpp index ef708db58ac6..41e8fec68c0c 100644 --- a/packages/tempus/test/TestModels/HarmonicOscillatorModel_impl.hpp +++ b/packages/tempus/test/TestModels/HarmonicOscillatorModel_impl.hpp @@ -25,7 +25,7 @@ namespace Tempus_Test { template HarmonicOscillatorModel:: -HarmonicOscillatorModel(Teuchos::RCP pList_): +HarmonicOscillatorModel(Teuchos::RCP pList_, const bool use_accel_IC): out_(Teuchos::VerboseObjectBase::getDefaultOStream()) { isInitialized_ = false; @@ -52,9 +52,14 @@ HarmonicOscillatorModel(Teuchos::RCP pList_): //is computed correctly using displacement and velocity ICs //inside 2nd order steppers. //Thyra::put_scalar(f_-c_, x_dot_dot_vec_.ptr()); - //Instead of real IC, putting arbitrary, incorrect IC to check correctness - //in stepper involving calculation of a IC. - Thyra::put_scalar(7.0, x_dot_dot_vec_.ptr()); + if (use_accel_IC == true) { + Thyra::put_scalar(-2.0, x_dot_dot_vec_.ptr()); + } + else { + //Instead of real IC, putting arbitrary, incorrect IC to check correctness + //in stepper involving calculation of a IC. + Thyra::put_scalar(7.0, x_dot_dot_vec_.ptr()); + } //Set up responses numResponses_ = 1; From 58e96496036f9c666fc5f24ab7278a0785ddf670 Mon Sep 17 00:00:00 2001 From: Christian Glusa Date: Thu, 2 Jan 2020 15:10:09 -0700 Subject: [PATCH 3/7] Teuchos utils: Improve stacked timer visualization script * Parse output correctly. * Add option to switch to another timer as root. * Add option to display timer numbers in plot instead of labels. --- .../teuchos/comm/utils/plotStackedTimers.py | 42 ++++++++++++++++++- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/packages/teuchos/comm/utils/plotStackedTimers.py b/packages/teuchos/comm/utils/plotStackedTimers.py index 45693ac7883d..2c8f02cd7604 100755 --- a/packages/teuchos/comm/utils/plotStackedTimers.py +++ b/packages/teuchos/comm/utils/plotStackedTimers.py @@ -17,11 +17,15 @@ parser.add_argument('-n', '--non-interactive', help="Disable interactive features", dest='non_interactive', action="store_true", default=False) parser.add_argument('logFile', type=str, help="Log file with stacked timers") +parser.add_argument('--root', help="Use a different node as root. Use format \'Level 0 timer name/Level 1 timer name\'", + dest='root', default='') +parser.add_argument('-N', '--useTimerNumbers', help="Use timer numbers in plot instead of labels.", + dest='useTimerNumbers', action="store_true", default=False) options = parser.parse_args() # parse log file with stacked timer output -timerRegExp = re.compile(r'([\s|]*)(.*):\s([0-9]*\.[0-9]*)\s-\s([0-9]*\.[0-9]*)%') +timerRegExp = re.compile(r'([\s|]*)(.*):\s([0-9]*\.[0-9]*)\s(-\s([0-9]*\.[0-9]*)%\s)*\[[0-9]+\]') with open(options.logFile) as f: data = {} prevDepth = -1 @@ -44,7 +48,33 @@ data['/'.join(stack[:depth-1])] = total_time - time else: data['/'.join(stack[:depth-1])] = 0.0 - + +if options.root != '': + data_new = {} + for label in data: + if label.find(options.root) >= 0: + newlabel = label[label.find(options.root)+len(options.root)+1:] + if len(newlabel) > 0: + data_new[newlabel] = data[label] + data = data_new + +if options.useTimerNumbers: + translate = {} + k = 0 + dataNew = {} + for label in data: + for key in label.split('/'): + try: + translate[key] + except KeyError: + translate[key] = str(k) + k += 1 + labelNew = '/'.join([translate[key] for key in label.split('/')]) + dataNew[labelNew] = data[label] + data = dataNew + s = '\n'.join([str(translate[key])+': '+key for key in sorted(translate, key=lambda key: int(translate[key]))]) + print(s) + # create plot dataAll = stringvalues_to_pv(data) if not options.non_interactive: @@ -54,6 +84,8 @@ ax = plt.gca() hp = HPie(dataAll, ax) hp.plot(setup_axes=True, interactive=True) + if options.useTimerNumbers: + ax.text(1, 0, s, horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes) # set up left and right click actions base = Path([]) @@ -70,6 +102,8 @@ def onClick(event): ax.clear() hp = HPie(data, ax) hp.plot(setup_axes=True, interactive=True) + if options.useTimerNumbers: + ax.text(1, 0, s, horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes) ax.figure.canvas.draw_idle() base = Path(path[:-1]) break @@ -84,6 +118,8 @@ def onClick(event): ax.clear() hp = HPie(data, ax) hp.plot(setup_axes=True, interactive=True) + if options.useTimerNumbers: + ax.text(1, 0, s, horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes) ax.figure.canvas.draw_idle() base = Path(path[:-1]) @@ -92,5 +128,7 @@ def onClick(event): ax = plt.gca() hp = HPie(dataAll, ax) hp.plot(setup_axes=True) + if options.useTimerNumbers: + ax.text(1, 0, s, horizontalalignment='left', verticalalignment='bottom', transform=ax.transAxes) plt.show() From 4a3e968127315028974e2c96fb61eb03abb1ae55 Mon Sep 17 00:00:00 2001 From: Luc Berger-Vergiat Date: Mon, 6 Jan 2020 08:28:47 -0700 Subject: [PATCH 4/7] MueLu: updating the nightly configuration from geminga's cuda build Enabling Tpetra_INST_INT_INT so that Tpetra builds at least one global ordinal type. We might want to change that and enable Tpetra_INST_INT_LONG_LONG instead as it is Tpetra's default and will likely be what users do... --- ...e_muelu_kokkos_refactor_cuda_geminga.cmake | 33 ++++++++++--------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake b/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake index 6076c25d1aee..597ea9ebbfae 100644 --- a/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake +++ b/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake @@ -75,29 +75,30 @@ SET(Trilinos_PACKAGES MueLu Xpetra Amesos2) SET(EXTRA_CONFIGURE_OPTIONS ### ETI ### - "-DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON" - "-DTpetra_INST_INT_LONG_LONG:BOOL=OFF" - "-DTrilinos_ENABLE_COMPLEX:BOOL=ON" - "-DTeuchos_ENABLE_COMPLEX:BOOL=OFF" - "-DTpetra_INST_COMPLEX_DOUBLE:BOOL=OFF" - "-DTpetra_INST_COMPLEX_FLOAT:BOOL=OFF" - "-DTpetra_INST_SERIAL=ON" + "-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON" + "-D Tpetra_INST_INT_LONG_LONG:BOOL=OFF" + "-D Tpetra_INST_INT_INT:BOOL=ON" + "-D Trilinos_ENABLE_COMPLEX:BOOL=OFF" + "-D Teuchos_ENABLE_COMPLEX:BOOL=OFF" + "-D Tpetra_INST_COMPLEX_DOUBLE:BOOL=OFF" + "-D Tpetra_INST_COMPLEX_FLOAT:BOOL=OFF" + "-D Tpetra_INST_SERIAL=ON" ### MISC ### - "-DTrilinos_ENABLE_DEPENDENCY_UNIT_TESTS:BOOL=OFF" - "-DTeuchos_GLOBALLY_REDUCE_UNITTEST_RESULTS:BOOL=ON" + "-D Trilinos_ENABLE_DEPENDENCY_UNIT_TESTS:BOOL=OFF" + "-D Teuchos_GLOBALLY_REDUCE_UNITTEST_RESULTS:BOOL=ON" ### TPLS ### "-DTPL_ENABLE_SuperLU:BOOL=ON" - "-DSuperLU_INCLUDE_DIRS:PATH=$ENV{SEMS_SUPERLU_INCLUDE_PATH}" - "-DSuperLU_LIBRARY_DIRS:PATH=$ENV{SEMS_SUPERLU_LIBRARY_PATH}" + "-D SuperLU_INCLUDE_DIRS:PATH=$ENV{SEMS_SUPERLU_INCLUDE_PATH}" + "-D SuperLU_LIBRARY_DIRS:PATH=$ENV{SEMS_SUPERLU_LIBRARY_PATH}" ### PACKAGES CONFIGURATION ### - "-DMueLu_ENABLE_Experimental:BOOL=ON" - "-DMueLu_ENABLE_Kokkos_Refactor:BOOL=ON" - "-DMueLu_ENABLE_Kokkos_Refactor_Use_By_Default:BOOL=ON" - "-DXpetra_ENABLE_Experimental:BOOL=ON" - "-DXpetra_ENABLE_Kokkos_Refactor:BOOL=ON" + "-D MueLu_ENABLE_Experimental:BOOL=ON" + "-D MueLu_ENABLE_Kokkos_Refactor:BOOL=ON" + "-D MueLu_ENABLE_Kokkos_Refactor_Use_By_Default:BOOL=ON" + "-D Xpetra_ENABLE_Experimental:BOOL=ON" + "-D Xpetra_ENABLE_Kokkos_Refactor:BOOL=ON" ) # From 15faff93644dcfec6b610364d67e80f535825814 Mon Sep 17 00:00:00 2001 From: Luc Berger-Vergiat Date: Mon, 6 Jan 2020 09:41:36 -0700 Subject: [PATCH 5/7] MueLu: small clean-up in nightly build configuration for geminga-cuda --- ...htly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake b/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake index 597ea9ebbfae..d19797c569a7 100644 --- a/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake +++ b/cmake/ctest/drivers/geminga/ctest_linux_nightly_mpi_release_muelu_kokkos_refactor_cuda_geminga.cmake @@ -76,12 +76,9 @@ SET(Trilinos_PACKAGES MueLu Xpetra Amesos2) SET(EXTRA_CONFIGURE_OPTIONS ### ETI ### "-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON" + "-D Trilinos_ENABLE_COMPLEX:BOOL=OFF" "-D Tpetra_INST_INT_LONG_LONG:BOOL=OFF" "-D Tpetra_INST_INT_INT:BOOL=ON" - "-D Trilinos_ENABLE_COMPLEX:BOOL=OFF" - "-D Teuchos_ENABLE_COMPLEX:BOOL=OFF" - "-D Tpetra_INST_COMPLEX_DOUBLE:BOOL=OFF" - "-D Tpetra_INST_COMPLEX_FLOAT:BOOL=OFF" "-D Tpetra_INST_SERIAL=ON" ### MISC ### From 298e94a5b99cdbce5dab5e9a9b534fc633555433 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Mon, 6 Jan 2020 11:23:29 -0700 Subject: [PATCH 6/7] ATDM: cts1: Eliminate usage of 'sparc' and old 'atdv' modules (ATDV-212) EMPIRE developers can't load 'sparc' modules. Therefore, we replace 'sparc-git/2.19.1' with 'sems-git/2.10.1' which should be good enough. Also, I replaced atdm-ninja_fortran/1.7.2 with sems-ninja_fortran/1.8.2 which is newer and eliminates usage of the old 'atdv-env' modules (which will be replaced by Spack modules when I get a chance). --- cmake/std/atdm/common/toss3/environment_new.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/cmake/std/atdm/common/toss3/environment_new.sh b/cmake/std/atdm/common/toss3/environment_new.sh index e1a9cf96ef75..7577f41c60fc 100755 --- a/cmake/std/atdm/common/toss3/environment_new.sh +++ b/cmake/std/atdm/common/toss3/environment_new.sh @@ -21,9 +21,8 @@ module purge &> /dev/null module purge . /projects/sems/modulefiles/utils/sems-modules-init.sh module load sems-env -module load atdm-env -module load atdm-ninja_fortran/1.7.2 -module load sparc-git/2.19.1 +module load sems-ninja_fortran/1.8.2 +module load sems-git/2.10.1 if [ "$ATDM_CONFIG_NODE_TYPE" == "OPENMP" ] ; then export ATDM_CONFIG_CTEST_PARALLEL_LEVEL=8 From 4bbac0be3883db3235b11eb08249a3cf34810cb5 Mon Sep 17 00:00:00 2001 From: "Roscoe A. Bartlett" Date: Mon, 6 Jan 2020 18:36:53 -0700 Subject: [PATCH 7/7] Promote new cee-rhel6 openmpi-4.0.1 builds to ATDM group (ATDV-237) I triaged the one randomly faling test in #6532. I think it is appropriate to promote these builds given the other builds in the ATDM group are not 100% clean (and no one seems to care that much). --- ...tdm-cee-rhel6_clang-5.0.1_openmpi-4.0.1_serial_static_opt.sh | 2 +- ...-atdm-cee-rhel6_gnu-7.2.0_openmpi-4.0.1_serial_shared_opt.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_clang-5.0.1_openmpi-4.0.1_serial_static_opt.sh b/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_clang-5.0.1_openmpi-4.0.1_serial_static_opt.sh index fe4efc2f825f..040ceaffc154 100755 --- a/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_clang-5.0.1_openmpi-4.0.1_serial_static_opt.sh +++ b/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_clang-5.0.1_openmpi-4.0.1_serial_static_opt.sh @@ -1,5 +1,5 @@ #!/bin/bash if [ "${Trilinos_TRACK}" == "" ]; then - export Trilinos_TRACK=Specialized + export Trilinos_TRACK=ATDM fi $WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/cee-rhel6/local-driver.sh diff --git a/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_gnu-7.2.0_openmpi-4.0.1_serial_shared_opt.sh b/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_gnu-7.2.0_openmpi-4.0.1_serial_shared_opt.sh index fe4efc2f825f..040ceaffc154 100755 --- a/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_gnu-7.2.0_openmpi-4.0.1_serial_shared_opt.sh +++ b/cmake/ctest/drivers/atdm/cee-rhel6/drivers/Trilinos-atdm-cee-rhel6_gnu-7.2.0_openmpi-4.0.1_serial_shared_opt.sh @@ -1,5 +1,5 @@ #!/bin/bash if [ "${Trilinos_TRACK}" == "" ]; then - export Trilinos_TRACK=Specialized + export Trilinos_TRACK=ATDM fi $WORKSPACE/Trilinos/cmake/ctest/drivers/atdm/cee-rhel6/local-driver.sh