Giter Site home page Giter Site logo

trilinos / trilinos Goto Github PK

View Code? Open in Web Editor NEW
1.2K 116.0 564.0 812.22 MB

Primary repository for the Trilinos Project

Home Page: https://trilinos.org/

License: Other

CMake 1.75% C 11.43% C++ 65.92% Shell 0.72% Batchfile 0.01% Python 2.54% HTML 0.49% Perl 0.13% Fortran 3.01% Makefile 1.02% TeX 0.90% MATLAB 10.13% CSS 0.03% Harbour 1.31% Objective-C++ 0.59% OCaml 0.01% PHP 0.01% JavaScript 0.01% XSLT 0.01% Awk 0.01%
snl-science-libs sandia-national-laboratories hpsf scientific-computing high-performance-computing c-plus-plus hpc trilinos

trilinos's Introduction

Trilinos

Trilinos Logo

Website | Documentation | Mailing List | Packages

OpenSSF Scorecard

The Trilinos Project is an effort to develop algorithms and enabling technologies within an object-oriented software framework for the solution of large-scale, complex multi-physics engineering and scientific problems. A unique design feature of Trilinos is its focus on packages.

Documentation

License

Trilinos is licensed on a per-package basis. Most packages are now under a BSD license, some are published under the (L)GPL. Details can be taken from the documentation of each package. See COPYRIGHT, LICENSE, https://trilinos.github.io/license.html and individual package, directory and/or file headers for additional information.

Contributing

We appreciate your willingness to contribute to the Trilinos project. Please familiarize yourself with our contributing guidelines.

trilinos's People

Contributors

alanw0 avatar aprokop avatar bartlettroscoe avatar brian-kelley avatar cgcgcg avatar crtrott avatar csiefer2 avatar dpkouri avatar egboman avatar eric-c-cyr avatar etphipp avatar gdsjaar avatar gregvw avatar hcedwar avatar hkthorn avatar jhux2 avatar jwillenbring avatar kddevin avatar klnusbaum avatar kyungjoo-kim avatar maherou avatar ndellingwood avatar rppawlo avatar rstumin avatar skennon10 avatar tawiesn avatar trilinos-autotester avatar tscoffe avatar vjleung avatar wfspotz avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

trilinos's Issues

TrilinosCouplings/STKClassic: ‘FieldBase’ does not name a type

Next Action Status:

STKClassic support in TrilinosCouplings is now always disabled by default (even if TrilinosCouplings and STKClassic are both enabled). Next: Fix or remove code dependent on STKClassic?

Description:

When configuring Trilinos with

cmake \
  -DCMAKE_INSTALL_PREFIX:PATH=/opt/trilinos/ \
  -DCMAKE_BUILD_TYPE:STRING=Debug \
  -DCMAKE_C_COMPILER=mpicc \
  -DCMAKE_CXX_COMPILER=mpicxx \
  -DCMAKE_Fortran_COMPILER=mpif90 \
  -DBUILD_SHARED_LIBS:BOOL=ON \
  -DCMAKE_SKIP_RPATH:BOOL=ON \
  -DTrilinos_INSTALL_INCLUDE_DIR:PATH=include/trilinos/ \
  -DTrilinos_ENABLE_DEVELOPMENT_MODE:BOOL=OFF \
  -DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DTrilinos_ENABLE_SECONDARY_STABLE_CODE:BOOL=ON \
  -DTrilinos_ASSERT_MISSING_PACKAGES:BOOL=OFF \
  -DTrilinos_ENABLE_MeshingGenie:BOOL=ON \
  -DTrilinos_ENABLE_ForTrilinos:BOOL=OFF \
  -DTrilinos_ENABLE_Optika:BOOL=OFF \
  -DTrilinos_ENABLE_Phdmesh:BOOL=ON \
  -DTrilinos_ENABLE_PyTrilinos:BOOL=OFF \
  -DTrilinos_ENABLE_STKSearch:BOOL=OFF \
  -DTrilinos_ENABLE_STKTransfer:BOOL=OFF \
  -DTrilinos_ENABLE_ShyLU:BOOL=ON \
  -DTrilinos_ENABLE_Trios:BOOL=ON \
  -DPanzer_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \
  -DSEACASExodus_ENABLE_MPI:BOOL=OFF \
  -DTrilinos_ENABLE_EXAMPLES:BOOL=ON \
  -DTrilinos_ENABLE_TESTS:BOOL=ON \
  -DPiro_ENABLE_TESTS:BOOL=OFF \
  -DShyLU_ENABLE_TESTS:BOOL=OFF \
  -DTPL_ENABLE_BinUtils:BOOL=ON \
  -DTPL_ENABLE_Boost:BOOL=ON \
  -DTPL_ENABLE_MATLAB:BOOL=OFF \
  -DTPL_ENABLE_Matio:BOOL=OFF \
  -DTPL_ENABLE_MPI:BOOL=ON \
  -DTPL_ENABLE_MUMPS:BOOL=ON \
  -DTPL_ENABLE_Netcdf:BOOL=ON \
  -DTPL_ENABLE_ParMETIS:BOOL=OFF \
  -DTPL_ENABLE_Scotch:BOOL=ON \
  -DTPL_Scotch_INCLUDE_DIRS:PATH=/usr/include/scotch/ \
  -DTPL_ENABLE_Eigen:BOOL=ON \
  -DTPL_Eigen_INCLUDE_DIRS:PATH=/usr/include/eigen3/ \
  -DTPL_ENABLE_TBB:BOOL=ON \
  -DTPL_ENABLE_X11:BOOL=OFF \
  -DTPL_ENABLE_Zlib:BOOL=ON \
  ../../source-upstream/

(perhaps there is this can be trimmed down), one gets the compilation error

[...]
[100%] Building CXX object packages/trilinoscouplings/examples/scaling/CMakeFiles/TrilinosCouplings_Example_Poisson_STKclassic.dir/example_Poisson_stkclassic.cpp.o
In file included from /home/nschloe/software/trilinos/source-upstream/packages/trilinoscouplings/examples/scaling/example_Poisson_stkclassic.cpp:135:0:
/home/nschloe/software/trilinos/source-upstream/packages/stk/stk_classic/stk_mesh/stk_mesh/fem/../../stk_mesh/base/FieldData.hpp:79:30: error: ‘FieldBase’ does not name a type
 bool field_data_valid( const FieldBase & f ,
[...]

Tpetra: Consolidate reduceAll in noncontiguous Map constructor

@trilinos/tpetra

The noncontiguous Tpetra::Map constructor has a reduceAll at line 465 of Tpetra_Map_def.hpp:

 if (numGlobalElements != GSTI) {
      numGlobalElements_ = numGlobalElements; // Use the user's value.
    } else { // The user wants us to compute the sum.
      reduceAll<int, GST> (*comm, REDUCE_SUM, as<GST> (numLocalElements),
                           outArg (numGlobalElements_));
    }

And one at line 616:

  GO minMaxOutput[3];
      minMaxOutput[0] = 0;
      minMaxOutput[1] = 0;
      minMaxOutput[2] = 0;
      reduceAll<int, GO> (*comm, REDUCE_MAX, 3, minMaxInput, minMaxOutput);
      minAllGID_ = -minMaxOutput[0];
      maxAllGID_ = minMaxOutput[1];
      const GO globalDist = minMaxOutput[2];

Mark thinks that these could be fused into a single call. Since this Map constructor is one of the most expensive and frequent calls in the R4-5 scaling, any reduction in all-reduce calls will help.

FEI: no match for 'operator<< (GCC 5.2.1)

When configuring Trilinos with

cmake \
  .. \
  -DCMAKE_INSTALL_PREFIX=/usr \
  -DCMAKE_VERBOSE_MAKEFILE=ON \
  -DCMAKE_BUILD_TYPE=None \
  -DCMAKE_C_COMPILER=mpicc \
  -DCMAKE_CXX_COMPILER=mpicxx \
  -DCMAKE_Fortran_COMPILER=mpif90 \
  -DBUILD_SHARED_LIBS:BOOL=ON \
  -DCMAKE_SKIP_RPATH:BOOL=ON \
  -DTrilinos_LIBRARY_NAME_PREFIX:STRING=trilinos_ \
  -DTrilinos_INSTALL_INCLUDE_DIR:PATH=include/trilinos/ \
  -DTrilinos_USE_GNUINSTALLDIRS:BOOL=ON \
  -DTrilinos_ENABLE_DEVELOPMENT_MODE:BOOL=OFF \
  -DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DTrilinos_ENABLE_SECONDARY_TESTED_CODE:BOOL=ON \
  -DTrilinos_ASSERT_MISSING_PACKAGES:BOOL=OFF \
  -DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=ON \
  -DTrilinos_ENABLE_Didasko:BOOL=OFF \
  -DTrilinos_ENABLE_Gtest:BOOL=OFF \
  -DTrilinos_ENABLE_CTrilinos:BOOL=OFF \
  -DTrilinos_ENABLE_ForTrilinos:BOOL=OFF \
  -DTrilinos_ENABLE_Mesquite:BOOL=OFF \
  -DTrilinos_ENABLE_MOOCHO:BOOL=OFF \
  -DTrilinos_ENABLE_Optika:BOOL=OFF \
  -DTrilinos_ENABLE_Phdmesh:BOOL=OFF \
  -DTrilinos_ENABLE_PyTrilinos:BOOL=OFF \
  -DTrilinos_ENABLE_Sundance:BOOL=OFF \
  -DTrilinos_ENABLE_STKClassic:BOOL=OFF \
  -DTrilinos_ENABLE_STKDoc_tests:BOOL=OFF \
  -DTrilinos_ENABLE_STKSearch:BOOL=OFF \
  -DTrilinos_ENABLE_STKUnit_tests:BOOL=OFF \
  -DTrilinos_ENABLE_ThreadPool:BOOL=OFF \
  -DTrilinos_ENABLE_EXAMPLES:BOOL=OFF \
  -DTrilinos_ENABLE_TESTS:BOOL=OFF \
  -DSEACAS_ENABLE_NETCDF4_SUPPORT:BOOL=ON \
  -DSEACASExodus_ENABLE_MPI:BOOL=OFF \
  -DTPL_ENABLE_BinUtils:BOOL=ON \
  -DTPL_ENABLE_Boost:BOOL=ON \
  -DTPL_ENABLE_HDF5:BOOL=OFF \
  -DTPL_ENABLE_Matio:BOOL=OFF \
  -DTPL_ENABLE_MATLAB:BOOL=OFF \
  -DTPL_ENABLE_MPI:BOOL=ON \
  -DTPL_ENABLE_MUMPS:BOOL=ON \
  -DTPL_ENABLE_ParMETIS:BOOL=OFF \
  -DTPL_ENABLE_Scotch:BOOL=ON \
  -DTPL_Scotch_INCLUDE_DIRS:PATH=/usr/include/scotch/ \
  -DTPL_ENABLE_SuperLU:BOOL=ON \
  -DSuperLU_INCLUDE_DIRS:PATH=/usr/include/superlu/ \
  -DTPL_ENABLE_TBB:BOOL=ON \
  -DTPL_ENABLE_X11:BOOL=OFF \
  -DTPL_ENABLE_Zlib:BOOL=ON

(can perhaps be stripped down) and when using GCC 5.2.1, one gets the compile error

[...]
/«PKGBUILDDIR»/packages/fei/test_utils/snl_fei_tester.cpp:526:65: error: no match for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'std::ostringstream {aka std::__cxx11::basic_ostringstream<char>}')
     fei::console_out() << "ERROR opening solution output file " << fileName << FEI_ENDL;
                                                                 ^
/«PKGBUILDDIR»/packages/fei/test_utils/snl_fei_tester.cpp:526:65: note: candidate: operator<<(int, int) <built-in>
/«PKGBUILDDIR»/packages/fei/test_utils/snl_fei_tester.c

The full log is here.

build docs out-of-source

Currently, the invocation of

doc/build_docs.pl

builds the entire documentation in-source, where it's hard to get rid of once built. This presents a difficulty, for example, when compiling for Debian. The docs, like the compiled object files, should be built outside of the source tree. (Perhaps even during the make process?)

Ifpack: set_parameters is deprecated

In commit 1f62d14 (Sep 2011), several Ifpack functions where marked deprecated. One of them are still in use today – in Ifpack itself!

/«PKGBUILDDIR»/packages/ifpack/src/Ifpack_IlukGraph.cpp:123:11: warning: 'void Ifpack::set_parameters(const Teuchos::ParameterList&, Ifpack::param_struct&, bool)' is deprecated [-Wdeprecated-declarations]
   Ifpack::set_parameters(parameterlist, params, cerr_warning_if_unused);
           ^
In file included from /«PKGBUILDDIR»/packages/ifpack/src/Ifpack_IlukGraph.cpp:49:0:
/«PKGBUILDDIR»/packages/ifpack/src/ifp_parameters.h:95:24: note: declared here
 IFPACK_DEPRECATED void set_parameters(const Teuchos::ParameterList& parameterlist,
                        ^
/«PKGBUILDDIR»/packages/ifpack/src/Ifpack_IlukGraph.cpp:123:11: warning: 'void Ifpack::set_parameters(const Teuchos::ParameterList&, Ifpack::param_struct&, bool)' is deprecated [-Wdeprecated-declarations]
   Ifpack::set_parameters(parameterlist, params, cerr_warning_if_unused);
           ^
In file included from /«PKGBUILDDIR»/packages/ifpack/src/Ifpack_IlukGraph.cpp:49:0:
/«PKGBUILDDIR»/packages/ifpack/src/ifp_parameters.h:95:24: note: declared here
 IFPACK_DEPRECATED void set_parameters(const Teuchos::ParameterList& parameterlist,
                        ^
/«PKGBUILDDIR»/packages/ifpack/src/Ifpack_IlukGraph.cpp:123:71: warning: 'void Ifpack::set_parameters(const Teuchos::ParameterList&, Ifpack::param_struct&, bool)' is deprecated [-Wdeprecated-declarations]
   Ifpack::set_parameters(parameterlist, params, cerr_warning_if_unused);
                                                                       ^
In file included from /«PKGBUILDDIR»/packages/ifpack/src/Ifpack_IlukGraph.cpp:49:0:
/«PKGBUILDDIR»/packages/ifpack/src/ifp_parameters.h:95:24: note: declared here
 IFPACK_DEPRECATED void set_parameters(const Teuchos::ParameterList& parameterlist,

It's either time to remove those calls or to remove the deprecation attribute.

Kokkos, Panzer, STK, Teuchos, Thyra, Tpetra: Some files overridden on install

On a "full" Trilinos configuration

cmake \
  -DTrilinos_LIBRARY_NAME_PREFIX:STRING="trilinos_" \
  -DCMAKE_INSTALL_PREFIX:PATH=/opt/trilinos/full/ \
  -DCMAKE_BUILD_TYPE:STRING=Debug \
  -DCMAKE_SKIP_RPATH:BOOL=ON \
  -DBUILD_SHARED_LIBS:BOOL=ON \
  -DTrilinos_INSTALL_INCLUDE_DIR:PATH=include/trilinos/ \
  -DTrilinos_USE_GNUINSTALLDIRS:BOOL=ON \
  -DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DTrilinos_ENABLE_SECONDARY_STABLE_CODE:BOOL=ON \
  -DTrilinos_ENABLE_PyTrilinos:BOOL=OFF \
  -DSEACASExodus_ENABLE_MPI:BOOL=OFF \
  -DTPL_ENABLE_BinUtils:BOOL=ON \
  -DTPL_ENABLE_Boost:BOOL=ON \
  -DTPL_ENABLE_HDF5:BOOL=OFF \
  -DTPL_ENABLE_Matio:BOOL=OFF \
  -DTPL_ENABLE_MATLAB:BOOL=OFF \
  -DTPL_ENABLE_MPI:BOOL=ON \
  -DTPL_ENABLE_MUMPS:BOOL=ON \
  -DTPL_ENABLE_ParMETIS:BOOL=OFF \
  -DTPL_ENABLE_Scotch:BOOL=ON \
    -DTPL_Scotch_INCLUDE_DIRS:PATH=/usr/include/scotch/ \
  -DTPL_ENABLE_TBB:BOOL=ON \
  -DTPL_ENABLE_X11:BOOL=OFF \
  -DTPL_ENABLE_Zlib:BOOL=ON \
  ../../source-upstream/

there a many files which are installed "twice", i.e., make install creates more than one file with the same name in the same location, effectively overriding everything that wasn't installed last. This may lead to serious bugs. For the above configuration, one gets

$ sort install_manifest.txt | uniq --count --repeated
      2 /opt/trilinos/full/include/trilinos/KokkosCompat_ClassicNodeAPI_Wrapper.hpp
      2 /opt/trilinos/full/include/trilinos/KokkosCompat_TMM.hpp
      2 /opt/trilinos/full/include/trilinos/KokkosCompat_View_def.hpp
      2 /opt/trilinos/full/include/trilinos/KokkosCompat_View.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_AdaptiveSaMLParameterListInterpreter.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_config.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_FactoryFactory.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_MLParameterListInterpreter.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_ParameterListInterpreter.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_RefMaxwell.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_ShiftedLaplacian.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_ShiftedLaplacianOperator.hpp
      2 /opt/trilinos/full/include/trilinos/MueLu_TpetraOperator.hpp
      2 /opt/trilinos/full/include/trilinos/Panzer_config.hpp
      3 /opt/trilinos/full/include/trilinos/STKClassic_config.h
      2 /opt/trilinos/full/include/trilinos/stk_io/IossBridge.hpp
      2 /opt/trilinos/full/include/trilinos/stk_io/util/Gears.hpp
      2 /opt/trilinos/full/include/trilinos/stk_io/util/Gmesh_STKmesh_Fixture.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Bucket.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/BulkData.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/BulkModification.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Comm.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/DataTraitsClass.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/DataTraitsEnum.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/DataTraits.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Entity.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/EntityKey.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FieldBase.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Field.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FieldParallel.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FieldRelation.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FieldRestriction.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FieldState.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FieldTraits.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/FindRestriction.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/GetBuckets.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/GetEntities.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Ghosting.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/baseImpl/BucketRepository.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/baseImpl/EntityRepository.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/baseImpl/FieldBaseImpl.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/baseImpl/FieldRepository.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/baseImpl/PartImpl.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/baseImpl/PartRepository.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Iterators.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/MemoryUsage.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/MetaData.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Part.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/PropertyBase.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Property.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Relation.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Selector.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/SetOwners.hpp
      2 /opt/trilinos/full/include/trilinos/stk_mesh/base/Types.hpp
      2 /opt/trilinos/full/include/trilinos/stk_search/BoundingBox.hpp
      2 /opt/trilinos/full/include/trilinos/stk_search/CoarseSearch.hpp
      2 /opt/trilinos/full/include/trilinos/stk_search/IdentProc.hpp
      2 /opt/trilinos/full/include/trilinos/stk_search/OctTree.hpp
      2 /opt/trilinos/full/include/trilinos/stk_search/OctTreeOps.hpp
      2 /opt/trilinos/full/include/trilinos/stk_search/SearchTypes.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/Mapv.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/Option.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/Platform.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/PrintTable.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/PrintTimer.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/SlibDiagWriter.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/String.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/StringUtil.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/Timer.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/TimerMetricTraits.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/WriterExt.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/WriterOStream.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/WriterParser.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/diag/WriterRegistry.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/CPUTime.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/FormatMemorySize.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/FormatTime.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/LogControl.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/OutputLog.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/ProgramOptions.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/ReportHandler.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/RuntimeDoomed.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/RuntimeMessage.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/RuntimeWarning.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/environment/WallTime.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/BroadcastArg.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/DistributedIndex.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/MPI.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/ParallelComm.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/Parallel.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/ParallelIndex.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/ParallelInputStream.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/parallel/ParallelReduce.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/stk_config.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Array.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Bootstrap.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Callback.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/ci_string.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/ci_traits.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/config_google.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/CSet.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/densehashtable.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/FeatureTest.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Foreach.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Fortran.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/hashtable-common.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/IndentStreambuf.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/IndexList.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/libc_allocator_with_realloc.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/MallocUsed.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Marshal.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/NamedPair.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/nested_iterator.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/nested_range.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Null_Streambuf.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/PairIter.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Pool.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/RadixSort.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/random_access_iterator_wrapper.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/Range.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/SameType.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/SimpleArrayOps.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/sparseconfig.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/sparsehashtable.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/StaticAssert.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/string_case_compare.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/TeeStreambuf.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/tokenize.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/TypeList.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/TypeListMap.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/type_traits_google.h
      2 /opt/trilinos/full/include/trilinos/stk_util/util/TypeUtil.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/VecMap.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/VecSet.hpp
      2 /opt/trilinos/full/include/trilinos/stk_util/util/vectorization.hpp
      2 /opt/trilinos/full/include/trilinos/TeuchosKokkosCompat_config.h
      2 /opt/trilinos/full/include/trilinos/Thyra_MueLuPreconditionerFactory.hpp
      2 /opt/trilinos/full/include/trilinos/Thyra_XpetraLinearOp.hpp
      2 /opt/trilinos/full/include/trilinos/Tpetra_CrsMatrixSolveOp.hpp

Trilinos/README.md way out of date

The file Trilinos/README.md that is displayed as the first thing people see on GitHub is way out of date (and has been for many months or more). Most of the links are broken and the file names are way out of date. This does not make for a good first impression for new people coming to look at Trilinos on GitHub. At the very least, this should be gutted and just point to trilinos.org. Then, if someone has time, this can be filled out.

Tpetra::BlockCrsMatrix: Add LU factorization, solve, & inverse for small dense blocks

@trilinos/tpetra
Add GETRF (LU factorization), GETRS (solve linear system(s) using results of GETRF), and GETRI (compute explicit matrix inverse, using results of GETRF) for LittleBlock in BlockCrsMatrix.

GETRI will help accelerate block Jacobi (a.k.a. point implicit), by pushing solve costs to setup and making computation during the actual apply step just little dense matrix-vector multiplies. This should be easier to vectorize.

Teko: SIMPLEPreconditionerFactory_tpetra, Allocation pool destroyed with the following memory leak(s):

With

cmake \
  -DTrilinos_ENABLE_Teko:BOOL=ON \
  -DTPL_ENABLE_MPI:BOOL=OFF \
  -DTrilinos_ENABLE_TESTS:BOOL=ON \
  -DTrilinos_ENABLE_EXAMPLES:BOOL=ON \
  ../../source-nschloe/

I'm getting a test failure for SIMPLEPreconditionerFactory_tpetra:

2: Test command: /home/nschloe/software/trilinos/build/teko/packages/teko/tests/Teko_testdriver_tpetra.exe
2: Test timeout computed to be: 1500
2: Teuchos::GlobalMPISession::GlobalMPISession(): started serial run
2: Running test "SIMPLEPreconditionerFactory_tpetra"
2:    "createPrec" ... PASSED
2:    Teko: Begin debug MSG
2:       SIMPLE Parameters: 
2:          inv type    = ""
2:          inv v type  = "Ifpack2"
2:          inv p type  = "Ifpack2"
2:          alpha       = 1
2:          use mass    = 0
2:          vel scaling = Lumped
2:       SIMPLE Parameter list: 
2:       Explicit Velocity Inverse Type = Lumped
2:       Inverse Pressure Type = Ifpack2
2:       Inverse Velocity Type = Ifpack2
2:    Teko: End debug MSG
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "initializePrec(lumped)" ... PASSED
2:    Teko: Begin debug MSG
2:       SIMPLE Parameters: 
2:          inv type    = ""
2:          inv v type  = "Ifpack2"
2:          inv p type  = "Ifpack2"
2:          alpha       = 1
2:          use mass    = 0
2:          vel scaling = Diagonal
2:       SIMPLE Parameter list: 
2:       Explicit Velocity Inverse Type = Diagonal
2:       Inverse Pressure Type = Ifpack2
2:       Inverse Velocity Type = Ifpack2
2:    Teko: End debug MSG
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "initializePrec(diag)" ... PASSED
2:    Teko: Begin debug MSG
2:       SIMPLE Parameters: 
2:          inv type    = ""
2:          inv v type  = "Ifpack2"
2:          inv p type  = "Ifpack2"
2:          alpha       = 1
2:          use mass    = 0
2:          vel scaling = AbsRowSum
2:       SIMPLE Parameter list: 
2:       Explicit Velocity Inverse Type = AbsRowSum
2:       Inverse Pressure Type = Ifpack2
2:       Inverse Velocity Type = Ifpack2
2:    Teko: End debug MSG
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "initializePrec(absrowsum)" ... PASSED
2:    "uninitializePrec" ... PASSED
2:    "isCompatable" ... PASSED
2:    "diagonal(diag)" ... PASSED
2:    "diagonal(block-1)" ... PASSED
2:    "diagonal(block-2)" ... PASSED
2:    "result(diag)" ... PASSED
2:    "result(block-1)" ... PASSED
2:    "result(block-2)" ... PASSED
2: Test "SIMPLEPreconditionerFactory_tpetra" completed ... PASSED (12)
2: Running test "DiagonalPreconditionerFactory_tpetra"
2:    "createPrec" ... PASSED
2:    "initializePrec" ... PASSED
2: ||Z-Y||/||Z|| = 0
2:    "canApply" ... PASSED
2: Test "DiagonalPreconditionerFactory_tpetra" completed ... PASSED (3)
2: Running test "LU2x2PreconditionerFactory_tpetra"
2:    "createPrec" ... PASSED
2:    "initializePrec" ... PASSED
2:    "uninitializePrec" ... PASSED
2:    "isCompatable" ... PASSED
2:    "identity" ... PASSED
2:    "diagonal" ... PASSED
2:    "result" ... PASSED
2:    "alphabeta" ... PASSED
2: Test "LU2x2PreconditionerFactory_tpetra" completed ... PASSED (8)
2: Running test "LSCStablePreconditionerFactory_tpetra"
2:    "createPrec" ... PASSED
2: Teko: LSCPrecFact::buildPO BuildStateTime = 1e-06
2: Teko: LSCPrecFact::buildPO GetInvTime = 2e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 5.5e-05
2:    "initializePrec" ... PASSED
2:    "uninitializePrec" ... PASSED
2:    "isCompatable" ... PASSED
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0
2: Teko: LSCPrecFact::buildPO GetInvTime = 0
2: Teko: LSCPrecFact::buildPO TotalTime = 2.7e-05
2:    "identity" ... PASSED
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0
2: Teko: LSCPrecFact::buildPO GetInvTime = 1e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 3.4e-05
2:    "diagonal" ... PASSED
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0
2: Teko: LSCPrecFact::buildPO GetInvTime = 0
2: Teko: LSCPrecFact::buildPO TotalTime = 3.3e-05
2:    "result" ... PASSED
2: Test "LSCStablePreconditionerFactory_tpetra" completed ... PASSED (7)
2: Running test "LSCStabilized_tpetra"
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0
2: Teko: LSCPrecFact::buildPO GetInvTime = 2e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 4.9e-05
2:    "diagonal" ... PASSED
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: LSC::initializeState Build Scaling <mass> type "Diagonal"
2:    Teko: Begin debug MSG
2:       LSC Gamma Parameter = 0.238035
2:       LSC Alpha Parameter = 0.646628
2:    Teko: End debug MSG
2: Teko: LSC::buildState BuildOpsTime = 0.005435
2: Teko: LSC::computeInverses Building inv(F)
2: Teko: LSC::computeInverses GetInvF = 0.000186
2: Teko: LSC::computeInverses Building inv(BQBtmC)
2: Teko: LSC::computeInverses GetInvBQBt = 8.2e-05
2: Teko: LSC::buildState BuildInvTime = 0.000284
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0.005727
2: Teko: LSCPrecFact::buildPO GetInvTime = 4e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 0.005789
2:    "strategy" ... PASSED
2: Test "LSCStabilized_tpetra" completed ... PASSED (2)
2: Running test "Jacobi2x2PreconditionerFactory_tpetra"
2:    "createPrec" ... PASSED
2:    "initializePrec" ... PASSED
2:    "uninitializePrec" ... PASSED
2:    "isCompatable" ... PASSED
2:    "identity" ... PASSED
2:    "diagonal" ... PASSED
2:    "result" ... PASSED
2:    Teko: Begin debug MSG
2:       Looked up "Block Jacobi"
2:       Built Teuchos::RCP<Teko::PreconditionerFactory>{ptr=0x46ab208,node=0x46db850,strong_count=1,weak_count=0}
2:    Teko: End debug MSG
2: Teko: JacobiPrecFact: Building default inverse "Ifpack2"
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    Teko: Begin debug MSG
2:       Looked up "Block Jacobi"
2:       Built Teuchos::RCP<Teko::PreconditionerFactory>{ptr=0x46ab208,node=0x46d8380,strong_count=1,weak_count=0}
2:    Teko: End debug MSG
2: Teko: JacobiPrecFact: Building default inverse "ML"
2: Teko: Inverse "ML" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: JacobiPrecFact: Building inverse 1 "Amesos"
2: Teko: Inverse "Amesos" is of type strat prec = 0, strat solv = 1, block prec = 0
2: Teko: JacobiPrecFact: Building inverse 3 "Ifpack"
2: Teko: Inverse "Ifpack" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "initializeFromParameterList" ... PASSED
2: Test "Jacobi2x2PreconditionerFactory_tpetra" completed ... PASSED (8)
2: Running test "BlockJacobiPreconditionerFactory_tpetra"
2:    "createPrec" ... PASSED
2:    "initializePrec" ... PASSED
2:    "uninitializePrec" ... PASSED
2:    "isCompatible" ... PASSED
2: Test "BlockJacobiPreconditionerFactory_tpetra" completed ... PASSED (4)
2: Running test "BlockUpperTriInverseOp_tpetra"
2:    "apply" ... PASSED
2:    "alphabeta" ... PASSED
2: Test "BlockUpperTriInverseOp_tpetra" completed ... PASSED (2)
2: Running test "BlockLowerTriInverseOp_tpetra"
2:    "apply" ... PASSED
2:    "alphabeta" ... PASSED
2: Test "BlockLowerTriInverseOp_tpetra" completed ... PASSED (2)
2: Running test "tTpetraOperatorWrapper"
2:    "functionality" ... PASSED
2: Test "tTpetraOperatorWrapper" completed ... PASSED (1)
2: Running test "InterlacedTpetra"
2:    "buildSubMaps_num" ... PASSED
2:    "buildSubMaps_vec" ... PASSED
2:    "buildMaps" ... PASSED
2:    "one2many" ... PASSED
2:    "many2one" ... PASSED
2: Test "InterlacedTpetra" completed ... PASSED (5)
2: Running test "BlockingTpetra"
2:    "buildMaps" ... PASSED
2:    "one2many" ... PASSED
2:    "many2one" ... PASSED
2:    "buildSubBlock" ... PASSED
2: Test "BlockingTpetra" completed ... PASSED (4)
2: Running test "TpetraThyraConverter"
2:    "blockThyraToTpetra" ... PASSED
2:    "single_blockThyraToTpetra" ... PASSED
2:    "blockTpetraToThyra" ... PASSED
2:    "single_blockTpetraToThyra" ... PASSED
2: Test "TpetraThyraConverter" completed ... PASSED (4)
2: Running test "tGraphLaplacian_tpetra"
2:    "single_array" ... PASSED
2:    "multi_array" ... PASSED
2: Test "tGraphLaplacian_tpetra" completed ... PASSED (2)
2: Running test "tParallelInverse_tpetra"
2: Teko: Inverse "Belos" is of type strat prec = 0, strat solv = 1, block prec = 0
2:    "inverse" ... PASSED
2: Teko: Inverse "Belos" is of type strat prec = 0, strat solv = 1, block prec = 0
2:    "stridedInverse" ... PASSED
2: Test "tParallelInverse_tpetra" completed ... PASSED (2)
2: Running test "tExplicitOps_tpetra"
2:    "mult_diagScaleMatProd" ... PASSED
2:    "mult_diagScaling" ... PASSED
2:    "add" ... PASSED
2:    "mult_modScaleMatProd" ... PASSED
2:    "add_mod" ... PASSED
2: Test "tExplicitOps_tpetra" completed ... PASSED (5)
2: Running test "LSCHIntegrationTest_tpetra"
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: LSC::initializeState Build Scaling <mass> type "Diagonal"
2: Teko: LSC::buildState BuildOpsTime = 0.000374
2: Teko: LSC::computeInverses Building inv(F)
2: Teko: LSC::computeInverses GetInvF = 0.000207
2: Teko: LSC::computeInverses Building inv(BQBtmC)
2: Teko: LSC::computeInverses GetInvBQBt = 8.8e-05
2: Teko: LSC::computeInverses Building inv(BHBtmC)
2: Teko: LSC::computeInverses GetInvBHBt = 7.5e-05
2: Teko: LSC::buildState BuildInvTime = 0.000387
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0.000774
2: Teko: LSCPrecFact::buildPO GetInvTime = 3e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 0.000818
2:    "hScaling" ... PASSED
2: Test "LSCHIntegrationTest_tpetra" completed ... PASSED (1)
2: Running test "Lumping_tpetra"
2:    "lumping" ... PASSED
2:    "invLumping" ... PASSED
2: Test "Lumping_tpetra" completed ... PASSED (2)
2: Running test "AbsRowSum_tpetra"
2:    "absRowSum" ... PASSED
2:    "invAbsRowSum" ... PASSED
2: Test "AbsRowSum_tpetra" completed ... PASSED (2)
2: Running test "NeumannSeries_tpetra"
2: Teko: Inverse "Neumann" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: Inverse "Neumann" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "test_simpleOp" ... PASSED
2: Teko: Inverse "Neumann" is of type strat prec = 1, strat solv = 0, block prec = 0
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "test_scaledOp" ... PASSED
2: Test "NeumannSeries_tpetra" completed ... PASSED (2)
2: Running test "PCDStrategy_tpetra"
2: Teko: Inverse "Ifpack2" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    "PCDStrategy" ... PASSED
2: Test "PCDStrategy_tpetra" completed ... PASSED (1)
2: Running test "LSCIntegrationTest_tpetra"
2: Teko: LSC::initializeState Build Scaling <mass> type "Diagonal"
2: Teko: LSC::buildState BuildOpsTime = 0.009541
2: Teko: LSC::computeInverses Building inv(F)
2: Teko: LSC::computeInverses GetInvF = 0.022672
2: Teko: LSC::computeInverses Building inv(BQBtmC)
2: Teko: LSC::computeInverses GetInvBQBt = 0.003661
2: Teko: LSC::buildState BuildInvTime = 0.026382
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0.035986
2: Teko: LSCPrecFact::buildPO GetInvTime = 4e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 0.036054
2:    "withmassStable" ... PASSED
2: Teko: LSC::initializeState Build Scaling <F> type "Diagonal"
2: Teko: LSC::buildState BuildOpsTime = 0.009327
2: Teko: LSC::computeInverses Building inv(F)
2: Teko: LSC::computeInverses GetInvF = 0.023873
2: Teko: LSC::computeInverses Building inv(BQBtmC)
2: Teko: LSC::computeInverses GetInvBQBt = 0.003909
2: Teko: LSC::buildState BuildInvTime = 0.029108
2: Teko: LSCPrecFact::buildPO BuildStateTime = 0.038479
2: Teko: LSCPrecFact::buildPO GetInvTime = 4e-06
2: Teko: LSCPrecFact::buildPO TotalTime = 0.038548
2:    "nomassStable" ... PASSED
2:    Teko: Begin debug MSG
2:       Looked up "NS LSC"
2:       Built Teuchos::RCP<Teko::PreconditionerFactory>{ptr=0x4790b68,node=0x5118a20,strong_count=1,weak_count=0}
2:    Teko: End debug MSG
2: Teko: Building LSC strategy "Basic Inverse"
2:    Teko: Begin debug MSG
2:       LSC Inverse Strategy Parameters: 
2:          inv type   = "Amesos"
2:          inv v type = "Ifpack"
2:          inv p type = "Ifpack"
2:          bndry rows = 1
2:          use ldu    = 1
2:          use mass    = 0
2:          use w-scaling    = 0
2:          assume stable    = 0
2:          scale type    = Diagonal
2:       LSC  Inverse Strategy Parameter list: 
2:       Inverse Type = Amesos
2:       Inverse Velocity Type = Ifpack
2:       Inverse Pressure Type = Ifpack
2:       Ignore Boundary Rows = 1
2:       Use LDU = 1
2:    Teko: End debug MSG
2: Teko: Inverse "Ifpack" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    Teko: Begin debug MSG
2:       Looked up "NS LSC"
2:       Built Teuchos::RCP<Teko::PreconditionerFactory>{ptr=0x46c67a8,node=0x46524a0,strong_count=1,weak_count=0}
2:    Teko: End debug MSG
2: Teko: Building LSC strategy "Basic Inverse"
2:    Teko: Begin debug MSG
2:       LSC Inverse Strategy Parameters: 
2:          inv type   = "Amesos"
2:          inv v type = "Ifpack"
2:          inv p type = "Ifpack"
2:          bndry rows = 1
2:          use ldu    = 1
2:          use mass    = 0
2:          use w-scaling    = 0
2:          assume stable    = 0
2:          scale type    = Diagonal
2:       LSC  Inverse Strategy Parameter list: 
2:       Inverse Type = Amesos
2:       Inverse Velocity Type = Ifpack
2:       Inverse Pressure Type = Ifpack
2:       Ignore Boundary Rows = 1
2:       Use LDU = 1
2:    Teko: End debug MSG
2: Teko: Inverse "Ifpack" is of type strat prec = 1, strat solv = 0, block prec = 0
2:    Teko: Begin debug MSG
2:       Looked up "NS LSC"
2:       Built Teuchos::RCP<Teko::PreconditionerFactory>{ptr=0x46be938,node=0x5118a20,strong_count=1,weak_count=0}
2:    Teko: End debug MSG
2: Teko: Building LSC strategy "The Cat"
2: LSC Construction failed: Strategy "The Cat" could not be constructed
2:    Teko: Begin debug MSG
2:       Looked up "NS LSC"
2:       Built Teuchos::RCP<Teko::PreconditionerFactory>{ptr=0x478de38,node=0x46c2c60,strong_count=1,weak_count=0}
2:    Teko: End debug MSG
2: LSC Construction failed: Strategy "The Cat" requires a "Strategy Settings" sublist
2:    "plConstruction" ... PASSED
2: Test "LSCIntegrationTest_tpetra" completed ... PASSED (3)
2: Running test "tStridedTpetraOperator"
2:    "numvars_constr" ... PASSED
2:    "vector_constr" ... PASSED
2:    "reorder(flat reorder)" ... PASSED
2:    "reorder(composite reorder = 1)" ... PASSED
2:    "reorder(composite reorder = 2)" ... PASSED
2: Test "tStridedTpetraOperator" completed ... PASSED (5)
2: Running test "tBlockedTpetraOperator"
2:    "vector_constr" ... PASSED
2:    "reorder(flat reorder)" ... PASSED
2:    "reorder(composite reorder = 1)" ... PASSED
2:    "reorder(composite reorder = 2)" ... PASSED
2: Test "tBlockedTpetraOperator" completed ... PASSED (4)
2: 
2: Tests Passed: 91, Tests Failed: 0
2: (Incidently, you want no failures)
2: Error: Allocation pool destroyed with the following memory leak(s):
2:    { Aligned Allocator } : "" ref_count(2) memory[ 0x46fde80 + 81208 ]
2:    { Aligned Allocator } : "" ref_count(2) memory[ 0x4754780 + 81208 ]
[...]
2: 
 2/17 Test  #2: Teko_testdriver_tpetra .....................***Exception: SegFault 16.57 sec

STK: mpi.h: No such file or directory

With the simple configuration

cmake \
  -DTrilinos_ENABLE_ALL_PACKAGES:BOOL=ON \
  -DTrilinos_ASSERT_MISSING_PACKAGES:BOOL=OFF \
  -DTrilinos_ENABLE_TESTS:BOON=ON \
  ../../source-upstream/

Trilinos fails to compile:

[...]
[ 88%] Building CXX object packages/stk/stk_util/stk_util/parallel/CMakeFiles/stk_util_parallel.dir/ParallelIndexGapFinder.cpp.o
In file included from /home/nschloe/software/trilinos/source-upstream/packages/stk/stk_util/stk_util/parallel/ParallelIndexGapFinder.cpp:34:0:
/home/nschloe/software/trilinos/source-upstream/packages/stk/stk_util/stk_util/parallel/ParallelIndexGapFinder.hpp:41:19: fatal error: mpi.h: No such file or directory
 #include "mpi.h"

This should be intercepted at configure stage.

Download with mandatory sign-up

There are many straightforward ways to get Trilinos nowadays:

Oh, and of course the official download page which requires you to sign up before download. Rather than helping the distribution of Trilinos, the sign-up hinders it. The gain that one supposedly gets from that is a user statistics, but in the light of the alternative download methods listed above, this statistic is practically worthless.

I suggest to remove the sign-up requirement from the download page.

STK without MPI: fatal error: mpi.h: No such file or directory

When compiled with TPL_ENABLE_MPI=OFF, stk fails to compile with

[...]
[ 70%] Building CXX object packages/stk/stk_util/stk_util/parallel/CMakeFiles/trilinos_stk_util_parallel.dir/ParallelIndexGapFinder.cpp.o
In file included from /home/nschloe/software/trilinos/privateTrilinos/packages/stk/stk_util/stk_util/parallel/ParallelIndexGapFinder.cpp:34:0:
/home/nschloe/software/trilinos/privateTrilinos/packages/stk/stk_util/stk_util/parallel/ParallelIndexGapFinder.hpp:41:19: fatal error: mpi.h: No such file or directory
 #include "mpi.h"
[...]

Panzer: undefined reference to `boost::system::system_category()'

With

cmake \
  -DTrilinos_ENABLE_Panzer:BOOL=ON \
  -DTPL_ENABLE_MPI:BOOL=ON \
  -DTrilinos_ENABLE_TESTS:BOOL=ON \
  -DTrilinos_ENABLE_EXPLICIT_INSTANTIATION:BOOL=OFF \
  -DSEACASExodus_ENABLE_MPI:BOOL=OFF \
  ../../source-upstream/

I'm getting the linking error

../../src/libpanzer_stk.a(Panzer_STKConnManager.cpp.o): In function `_GLOBAL__sub_I_Panzer_STKConnManager.cpp':
Panzer_STKConnManager.cpp:(.text.startup+0x4b): undefined reference to `boost::system::generic_category()'
Panzer_STKConnManager.cpp:(.text.startup+0x57): undefined reference to `boost::system::generic_category()'
Panzer_STKConnManager.cpp:(.text.startup+0x63): undefined reference to `boost::system::system_category()'

building docs in correct order

When building the documentation of only a few Trilinos packages, one can descend into package/<name>/doc/ and call ./build_docs there. Unfortunately, this may lead to errors of the kind

error: Tag file `/«PKGBUILDDIR»/packages/amesos/doc/../../../packages/common/tag_files/teuchosBrowser.tag' does not exist or is not a file. Skipping it...

if the documentation of the dependent package hasn't been built yet.

duplicate TPL adapters

In Trilinos, TriBits takes care of some of the TPL integration via the files in

cmake/tribits/common_tpls/FindTPL*.cmake

Their counterparts in

cmake/TPLs/FindTPL*.cmake

are redundant and should probably be removed.

Zoltan: outdated-autotools-helper-file

Zoltan still ships autotools helper files with the sources, and they are quite old. Debian marks them as outdated:

trilinos source: outdated-autotools-helper-file packages/zoltan/config/config.guess 2012-01-01
trilinos source: outdated-autotools-helper-file packages/zoltan/config/config.sub 2012-01-01

Thyra -Werror build broken

@mhoemmen, I believe your commit:

89a3771 "Thyra::TpetraVectorSpace: Get rid of unnecessary private fields."
Author: Mark Hoemmen <[email protected]>
Date:   Sat Dec 5 22:43:22 2015 -0700 (5 days ago)

M       packages/thyra/adapters/tpetra/src/Thyra_TpetraVectorSpace_decl.hpp
M       packages/thyra/adapters/tpetra/src/Thyra_TpetraVectorSpace_def.hpp

caused these -Werror build errors shown in the below email. Can you please fix this?

Are you on the thyra-regression mail list?

-Ross

-----Original Message-----
From: [email protected] [mailto:thyra-
[email protected]] On Behalf Of CDash
Sent: Friday, December 11, 2015 12:11 AM
To: [email protected]
Subject: [Thyra-Regression] FAILED (b=4): Trilinos/Thyra - Linux-GCC-4.7.2-
MPI_DEBUG_Werror_DEV - Nightly

A submission to CDash for the project Trilinos has build errors.
You have been identified as one of the authors who have checked in changes
that are part of this submission or you are listed in the default contact list.

Details on the submission can be found at
http://testing.sandia.gov/cdash/buildSummary.php?buildid=2264582

Project: Trilinos
SubProject: Thyra
Site: muir.sandia.gov
Build Name: Linux-GCC-4.7.2-MPI_DEBUG_Werror_DEV
Build Time: 2015-12-10T22:05:57 MST
Type: Nightly
Errors: 4

Error
packages/thyra/adapters/tpetra/test/TpetraThyraWrappers_UnitTests.cpp
(http://testing.sandia.gov/cdash/viewBuildError.php?type=0&buildid=22645
82)
In file included from /nightly/hudson/slave/workspace/trilinos-nightly-
muir/MPI_DEBUG_Werror_DEV/Trilinos/pacg++: error:
CMakeFiles/ThyraTpetraAdapters_Simple2DTpetraModelEvaluatorUnitTests.
dir/Simple2DTpetraModelEvaluator_UnitTests.cpp.o: No such file or
directory
packages/thyra/adapters/tpetra/test/Simple2DTpetraModelEvaluator_UnitT
ests.cpp
(http://testing.sandia.gov/cdash/viewBuildError.php?type=0&buildid=22645
82)
In file included from /nightly/hudson/slave/workspace/trilinos-nightly-
muir/MPI_DEBUG_Werror_DEV/Trig++: error:
CMakeFiles/ThyraTpetraAdapters_TpetraThyraWrappersUnitTests.dir/Tpetr
aThyraWrappers_UnitTests.cpp.o: No such file or directory

-CDash on testing.sandia.gov

Thyra-Regression mailing list
[email protected]
https://software.sandia.gov/mailman/listinfo/thyra-regression

Tpetra: (numProcs == 1 && nonlocals_.size() > 0) with incorrect base

The following code

#include <Teuchos_DefaultComm.hpp>
#include <Tpetra_CrsMatrix.hpp>

int main ( int argc, char *argv[] )
{
  Teuchos::GlobalMPISession session(&argc, &argv, NULL);

  auto comm = Teuchos::DefaultComm<int>::getComm();

  const int numGlobal = 8;

  auto map = Teuchos::rcp(new Tpetra::Map<int>(numGlobal, 0, comm));

  std::vector<Teuchos::Tuple<int,4>> tuples =
  {
    Teuchos::tuple(2, 3, 4, 5),
    Teuchos::tuple(4, 5, 6, 7),
    Teuchos::tuple(2, 3, 6, 7),
    Teuchos::tuple(2, 3, 8, 9),
    Teuchos::tuple(4, 5, 8, 9)
  };

  // build graph
  auto graph = Teuchos::rcp(new Tpetra::CrsGraph<int, int>(map, map, 0));
  for (size_t k = 0; k < tuples.size(); k++) {
    for (int i = 0; i < 4; i++) {
      graph->insertGlobalIndices(tuples[k][i], tuples[k]);
    }
  }
  graph->fillComplete();

  // fill matrix
  auto A = Teuchos::rcp(new Tpetra::CrsMatrix<double,int,int>(graph));
  A->setAllToScalar(0.0);
  auto vals = Teuchos::tuple(1.0, 1.1, 1.2, 1.3);
  for (size_t k = 0; k < tuples.size(); k++) {
    for (int i = 0; i < 4; i++) {
      A->sumIntoGlobalValues(tuples[k][i], tuples[k], vals);
    }
  }
  A->fillComplete();

  return EXIT_SUCCESS;
}

errors out at the very last fillComplete with

terminate called after throwing an instance of 'std::runtime_error'
  what():  /build/trilinos-xMfrMq/trilinos-12.5~20151207030212/packages/tpetra/core/src/Tpetra_CrsMatrix_def.hpp:3596:

Throw number = 2

Throw test that evaluated to true: (numProcs == 1 && nonlocals_.size() > 0)

Tpetra::CrsMatrix<double, int, int, Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::Serial, Kokkos::HostSpace>, false>::fillComplete: cannot have nonlocal entries on a serial run.  An invalid entry (i.e., with row index not in the row Map) must have been submitted to the CrsMatrix.

A fix is to manually go through the tuples list, find out the lowest entry, and put that into Tpetra::Map instead of 0. Perhaps this value is something that Tpetra can fill in for me.

upgrade doxygen description

When generating documentation with Doxygen 1.8.*, almost all packages issue warnings like

Warning: Tag `DETAILS_AT_TOP' at line 33 of file `../../common/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `SHOW_DIRECTORIES' at line 69 of file `../../common/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `HTML_ALIGN_MEMBERS' at line 123 of file `../../common/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `XML_SCHEMA' at line 170 of file `../../common/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"
Warning: Tag `XML_DTD' at line 171 of file `../../common/Doxyfile' has become obsolete.
         To avoid this warning please remove this line from your configuration file or upgrade it using "doxygen -u"

The tag DETAILS_AT_TOP, for example, has been deprecated with Doxygen 1.5.7 more than 7 years ago. Upgrading the description via

doxygen -u

is recommended.

Tpetra,Ifpack2: Add GEMM for small dense blocks

@trilinos/tpetra @amklinv @jhux2 @csiefer2

Ifpack2's incomplete LU factorization wants a matrix-matrix multiply (GEMM, in BLAS terms) for small dense matrices (the "blocks" in Tpetra's BlockCrsMatrix). The existing implementation (at the top of Ifpack2_Experimental_RBILUK_decl.hpp) assumes a particular layout of blocks.

This is like Issue #50, in that the eventual goal is to make all of these computational kernels available in KokkosKernels. We're starting by putting the kernels in the Tpetra::Experimental namespace.

Pamgen: tests 1, 20, 21 failing

On a clean Pamgen build,

cmake \
  -DTrilinos_ENABLE_Pamgen:BOOL=ON \
  -DTrilinos_ENABLE_TESTS:BOOL=ON \
  -DBUILD_SHARED_LIBS:BOOL=ON \
  ../../source-upstream/

tests 1, 20, and 21 are failing, the first with a timeout:

ctest
Test project /home/nschloe/software/trilinos/build/pamgen
      Start  1: Pamgen_run_test_script_l_01

 1/69 Test  #1: Pamgen_run_test_script_l_01 ......***Timeout 1500.02 sec
      Start  2: Pamgen_run_test_script_01
 2/69 Test  #2: Pamgen_run_test_script_01 ........   Passed    0.21 sec
[...]
19/69 Test #19: Pamgen_run_test_script_19 ........   Passed    0.24 sec
      Start 20: Pamgen_run_test_script_20
*** buffer overflow detected ***: /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x7f82de13e38f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f82de1d5c9c]
/lib/x86_64-linux-gnu/libc.so.6(+0x109b60)[0x7f82de1d4b60]
/lib/x86_64-linux-gnu/libc.so.6(+0x109069)[0x7f82de1d4069]
/lib/x86_64-linux-gnu/libc.so.6(_IO_default_xsputn+0xbc)[0x7f82de14670c]
/lib/x86_64-linux-gnu/libc.so.6(_IO_vfprintf+0x7fa)[0x7f82de1154ea]
/lib/x86_64-linux-gnu/libc.so.6(__vsprintf_chk+0x84)[0x7f82de1d40f4]
/lib/x86_64-linux-gnu/libc.so.6(__sprintf_chk+0x7d)[0x7f82de1d404d]
/home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe(main+0x317)[0x41d7e7]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f82de0ecec5]
/home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe[0x41e04f]
======= Memory map: ========
00400000-004b6000 r-xp 00000000 08:04 17721233                           /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe
006b5000-006b6000 r--p 000b5000 08:04 17721233                           /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe
006b6000-006b7000 rw-p 000b6000 08:04 17721233                           /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe
006b7000-006b9000 rw-p 00000000 00:00 0 
01911000-01932000 rw-p 00000000 00:00 0                                  [heap]
7f82de0cb000-7f82de286000 r-xp 00000000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f82de286000-7f82de485000 ---p 001bb000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f82de485000-7f82de489000 r--p 001ba000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f82de489000-7f82de48b000 rw-p 001be000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f82de48b000-7f82de490000 rw-p 00000000 00:00 0 
7f82de490000-7f82de4a6000 r-xp 00000000 08:02 1852617                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f82de4a6000-7f82de6a5000 ---p 00016000 08:02 1852617                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f82de6a5000-7f82de6a6000 rw-p 00015000 08:02 1852617                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f82de6a6000-7f82de7ab000 r-xp 00000000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f82de7ab000-7f82de9aa000 ---p 00105000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f82de9aa000-7f82de9ab000 r--p 00104000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f82de9ab000-7f82de9ac000 rw-p 00105000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f82de9ac000-7f82dea92000 r-xp 00000000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f82dea92000-7f82dec91000 ---p 000e6000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f82dec91000-7f82dec99000 r--p 000e5000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f82dec99000-7f82dec9b000 rw-p 000ed000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f82dec9b000-7f82decb0000 rw-p 00000000 00:00 0 
7f82decb0000-7f82decd3000 r-xp 00000000 08:02 1835129                    /lib/x86_64-linux-gnu/ld-2.19.so
7f82dee96000-7f82dee9b000 rw-p 00000000 00:00 0 
7f82deecf000-7f82deed2000 rw-p 00000000 00:00 0 
7f82deed2000-7f82deed3000 r--p 00022000 08:02 1835129                    /lib/x86_64-linux-gnu/ld-2.19.so
7f82deed3000-7f82deed4000 rw-p 00023000 08:02 1835129                    /lib/x86_64-linux-gnu/ld-2.19.so
7f82deed4000-7f82deed5000 rw-p 00000000 00:00 0 
7ffcdb242000-7ffcdb263000 rw-p 00000000 00:00 0                          [stack]
7ffcdb358000-7ffcdb35a000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
20/69 Test #20: Pamgen_run_test_script_20 ........***Failed  Required regular expression not found.Regex=[OVERALL FINAL RESULT: TEST PASSED .Pamgen_run_test_script_20.
]  0.69 sec
      Start 21: Pamgen_run_test_script_21
*** buffer overflow detected ***: /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe terminated
======= Backtrace: =========
/lib/x86_64-linux-gnu/libc.so.6(+0x7338f)[0x7f12a88de38f]
/lib/x86_64-linux-gnu/libc.so.6(__fortify_fail+0x5c)[0x7f12a8975c9c]
/lib/x86_64-linux-gnu/libc.so.6(+0x109b60)[0x7f12a8974b60]
/lib/x86_64-linux-gnu/libc.so.6(+0x109069)[0x7f12a8974069]
/lib/x86_64-linux-gnu/libc.so.6(_IO_default_xsputn+0xbc)[0x7f12a88e670c]
/lib/x86_64-linux-gnu/libc.so.6(_IO_vfprintf+0x7fa)[0x7f12a88b54ea]
/lib/x86_64-linux-gnu/libc.so.6(__vsprintf_chk+0x84)[0x7f12a89740f4]
/lib/x86_64-linux-gnu/libc.so.6(__sprintf_chk+0x7d)[0x7f12a897404d]
/home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe(main+0x317)[0x41d7e7]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5)[0x7f12a888cec5]
/home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe[0x41e04f]
======= Memory map: ========
00400000-004b6000 r-xp 00000000 08:04 17721233                           /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe
006b5000-006b6000 r--p 000b5000 08:04 17721233                           /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe
006b6000-006b7000 rw-p 000b6000 08:04 17721233                           /home/nschloe/software/trilinos/build/pamgen/packages/pamgen/test/pamgen_test_driver.exe
006b7000-006b9000 rw-p 00000000 00:00 0 
00862000-00883000 rw-p 00000000 00:00 0                                  [heap]
7f12a886b000-7f12a8a26000 r-xp 00000000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f12a8a26000-7f12a8c25000 ---p 001bb000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f12a8c25000-7f12a8c29000 r--p 001ba000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f12a8c29000-7f12a8c2b000 rw-p 001be000 08:02 1835132                    /lib/x86_64-linux-gnu/libc-2.19.so
7f12a8c2b000-7f12a8c30000 rw-p 00000000 00:00 0 
7f12a8c30000-7f12a8c46000 r-xp 00000000 08:02 1852617                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f12a8c46000-7f12a8e45000 ---p 00016000 08:02 1852617                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f12a8e45000-7f12a8e46000 rw-p 00015000 08:02 1852617                    /lib/x86_64-linux-gnu/libgcc_s.so.1
7f12a8e46000-7f12a8f4b000 r-xp 00000000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f12a8f4b000-7f12a914a000 ---p 00105000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f12a914a000-7f12a914b000 r--p 00104000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f12a914b000-7f12a914c000 rw-p 00105000 08:02 1835112                    /lib/x86_64-linux-gnu/libm-2.19.so
7f12a914c000-7f12a9232000 r-xp 00000000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f12a9232000-7f12a9431000 ---p 000e6000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f12a9431000-7f12a9439000 r--p 000e5000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f12a9439000-7f12a943b000 rw-p 000ed000 08:02 2251778                    /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.19
7f12a943b000-7f12a9450000 rw-p 00000000 00:00 0 
7f12a9450000-7f12a9473000 r-xp 00000000 08:02 1835129                    /lib/x86_64-linux-gnu/ld-2.19.so
7f12a9636000-7f12a963b000 rw-p 00000000 00:00 0 
7f12a966f000-7f12a9672000 rw-p 00000000 00:00 0 
7f12a9672000-7f12a9673000 r--p 00022000 08:02 1835129                    /lib/x86_64-linux-gnu/ld-2.19.so
7f12a9673000-7f12a9674000 rw-p 00023000 08:02 1835129                    /lib/x86_64-linux-gnu/ld-2.19.so
7f12a9674000-7f12a9675000 rw-p 00000000 00:00 0 
7fff4de72000-7fff4de93000 rw-p 00000000 00:00 0                          [stack]
7fff4dfad000-7fff4dfaf000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
21/69 Test #21: Pamgen_run_test_script_21 ........***Failed  Required regular expression not found.Regex=[OVERALL FINAL RESULT: TEST PASSED .Pamgen_run_test_script_21.
]  0.21 sec
      Start 22: Pamgen_run_test_script_22
22/69 Test #22: Pamgen_run_test_script_22 ........   Passed    0.23 sec
[...]
      Start 69: Pamgen_run_test_script_69
69/69 Test #69: Pamgen_run_test_script_69 ........   Passed    0.04 sec

96% tests passed, 3 tests failed out of 69

Label Time Summary:
Pamgen    = 1510.36 sec

Total Test time (real) = 1510.91 sec

The following tests FAILED:
      1 - Pamgen_run_test_script_l_01 (Timeout)
     20 - Pamgen_run_test_script_20 (Failed)
     21 - Pamgen_run_test_script_21 (Failed)
Errors while running CTest

Epetra, MOOCHO: ../thyra/doc/Doxyfile not found

Both Epetra and MOOCHO documentations refer to a nonexisting ../thyra/doc/Doxyfile:

$ grep "../thyra/doc/Doxyfile" * -r
packages/epetra/doc/build_docs:doxygen ../thyra/doc/Doxyfile
packages/moocho/doc/build_docs_guts:doxygen ../thyra/doc/Doxyfile

Perhaps some ../ missing?

Xpetra: many tests fail when Epetra, Tpetra, and OpenMP enabled

@trilinos/xpetra

When Epetra is enabled, Xpetra uses Kokkos::Compat::KokkosSerialWrapperNode as its Node type. (This corresponds to the Kokkos::Serial execution space.) There would be nothing particularly wrong with that, except that if Tpetra is also enabled, Xpetra then tries to instantiate Tpetra for that Node type. This is a problem because Tpetra does not necessarily enable that Node type. For example, if OpenMP is enabled (Trilinos_ENABLE_OpenMP=ON), Tpetra only enables the OpenMP Node type (Kokkos::Compat::KokkosOpenMPWrapperNode) by default.

My recent commit fixed the MPI_DEBUG build due to the above issue:

64c7185

but it does NOT fix several failing tests. My guess is that the test failures are related.

Anasazi: BlockKrylovSchur reports convergence when it shouldn't

@hkthorn @trilinos/anasazi

The BlockKrylovSchur eigensolver reports convergence when its residual estimate drops below the tolerance. For ill-conditioned problems, this may be a bad estimate. For instance, I was computing the smallest eigenpairs of a graph Laplacian with a tolerance of 1e-8, and the actual residual achieved was roughly 1e-3. Perhaps we should do something like Belos::Gmres, where they test the true residual after the estimate becomes small?

FEI has duplicate files with HYPRE

While working on a Debian/Ubuntu package for Trilinos, I sometimes bump into the funniest issues. This here is the fact that the existing package HYPRE and Trilinos' FEI have header files with the exact same names. Specifically, the following files are already installed by HYPRE:

$ dpkg -L libhypre-dev | grep .h | grep fei
/usr/include/cfei_hypre.h
/usr/include/fei_defs.h
/usr/include/cfei-hypre.h
/usr/include/hypre_cfei.h
$

At least fei_defs.h is also present in FEI. This makes it impossible to co-install both packages on the same system.

Tpetra::CrsMatrix::getLocalDiagCopy: Kokkos-parallelize diagonal extraction

@trilinos/tpetra Performance tests with Nalu discovered that Ifpack2::Relaxation Jacobi setup had a sequential section in CrsMatrix::getLocalDiagCopy (the two-argument version, though it's easy enough to optimize the one-argument version too). Nalu developers experimented with putting a parallel_for loop around diagonal extraction in getLocalDiagCopy, and it worked great.

Muelu installs various files twice

When checking for files which are overridden during the installation process, one finds that Muelu contains a few of them

$ make install
$ sort install_manifest.txt | uniq --count --repeated
      2 /opt/trilinos/private/include/trilinos/KokkosCompat_ClassicNodeAPI_Wrapper.hpp
      2 /opt/trilinos/private/include/trilinos/KokkosCompat_TMM.hpp
      2 /opt/trilinos/private/include/trilinos/KokkosCompat_View_def.hpp
      2 /opt/trilinos/private/include/trilinos/KokkosCompat_View.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_AdaptiveSaMLParameterListInterpreter.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_config.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_FactoryFactory.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_MLParameterListInterpreter.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_ParameterListInterpreter.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_RefMaxwell.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_ShiftedLaplacian.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_ShiftedLaplacianOperator.hpp
      2 /opt/trilinos/private/include/trilinos/MueLu_TpetraOperator.hpp
      2 /opt/trilinos/private/include/trilinos/TeuchosKokkosCompat_config.h
      2 /opt/trilinos/private/include/trilinos/Thyra_MueLuPreconditionerFactory.hpp
      2 /opt/trilinos/private/include/trilinos/Tpetra_CrsMatrixSolveOp.hpp

The reason for this is that the Muelu configuration installs multiple files with the same name in the same directory. It is not clear if the contents are the same, too, or if this actually presents a serious bug.

(From https://software.sandia.gov/bugzilla/show_bug.cgi?id=6428).

@trilinos/muelu

Tpetra::BlockCrsMatrix: Use Kokkos::View<Scalar***> for the "diagonal graph"

@trilinos/tpetra
It would be a lot more efficient to use Kokkos::View<Scalar***> for the "diagonal graph," than to use BlockCrsMatrix. We don't need any of that generality; we just need to take a subview of each block and apply its inverse. Also, don't store the diagonal graph in BlockCrsMatrix itself; store it in the preconditioner.

Tpetra: Replace sync/modify with 'use'

@trilinos/tpetra @crtrott

Tpetra::MultiVector currently implements "dual view" semantics through the sync / modify methods. Each takes a space as a template parameter. X.sync<Space>() ensures that X's data are up-to-date in space Space, and X.modify<Space>() marks X's data as modified in that space.

We would like to change this syntax as follows:

X.use (Space1, Space2, ..., SpaceN, ReadAndOrWrite);

where Space1, ..., SpaceN are instances of memory spaces (execution space?), and ReadAndOrWrite is an enum that takes one of the following values: ReadOnly, WriteOnly, or ReadWrite. This is a declarative syntax, vs. the imperative syntax that sync and modify implement. It is only a syntax change; the underlying implementation and semantic possibilities would not change.

The typical use case is to "use" a Tpetra object in one space at a time. For example:

X.use (Cuda (), WriteOnly);
fillOnCudaDevice (X); // write-only device code
X.use (Host (), ReadOnly);
hostOnlyLegacyCode (X); // read-only access on host
X.use (Cuda (), ReadWrite);
modifyOnCudaDevice (X);

The above semantics using the sync / modify syntax look like this:

fillOnCudaDevice (X); // don't sync first
X.sync<Host> ();
hostOnlyLegacyCode (X); // read-only; don't call modify first
X.sync<Cuda> ();
X.modify<Cuda> ();
modifyOnCudaDevice (X);

Calling use with multiple memory spaces effectively syncs to all of them. This allows (read-only) access to the data in concurrent kernels running from the different spaces.

Furthermore, we would like Tpetra objects' constructors to take optional (memory?) space arguments, to control where Tpetra initially allocates memory. Allocation in at least certain memory spaces would be lazy -- that is, Tpetra would only allocate if using in those memory spaces. For example (hypothetical), we might not like to allocate in HBM memory initially:

Tpetra::Vector<...> X (map, Capacity ()); // don't allocate in HBM initially

Tpetra::CrsMatrix::globalAssemble: Purge unnecessary barriers

@trilinos/tpetra

There are two unnecessary barriers after waitAll in Tpetra::CrsMatrix::globalAssemble. It should be possible to purge these barriers, for the following reasons:

  1. The reduceAll at the start of the method precludes reëntrant calls that would mix up message tags.
  2. If we want to be cautious about tags, we may take Distributor's approach, and specify distinct tags for each of the two rounds of point-to-point communication.

Belos::MultiVecTraits for Tpetra: Avoid using REDUCE_SUM in MvTransMv

@trilinos/belos
@amklinv

The Tpetra specialization of Belos::MultiVecTraits::MvTransMv uses Teuchos::REDUCE_SUM. This is the only MultiVecTraits method implementation for Tpetra that uses this enum. Either PETSc or Hypre appears to define a REDUCE_SUM macro, which causes build errors when colliding with this enum. While this is really an issue with PETSc or Hypre not namespacing their macros, we should be able to deal with this in Belos, and simplify the code at the same time.

  1. Keep the branch of the code for the single vector case (Tpetra::MultiVector::multiply might not optimize for that case)
  2. Otherwise, call Tpetra::MultiVector::multiply. View the input SerialDenseMatrix as a MultiVector and use a replicated Map.

Here is how you create the MultiVector to view the SerialDenseMatrix.

  1. Create an empty Kokkos::DualView. Get device_type from Tpetra::MultiVector.
  2. Create an HostSpace Kokkos::View (FIXME: Figure out how to specify at run time that the View is unmanaged, comparable to Teuchos::rcpFromRef -- I think you can just invoke the constructor that takes a raw pointer and dimensions, and everything will be ok).
  3. Set the DualView's h_view field to the new View that you created in Step 2.
  4. Mark the DualView as modified on host (actually you don't have to, because of UVM).
  5. Give the DualView to Tpetra::MultiVector's constructor, along with a globally replicated Map.

In the source code of Tpetra::MultiVector::multiply, this is Case 2 (where C is "local," i.e., globally replicated over the same communicator as the input MultiVectors). Belos does something weird: namely, it calls multiply on a MultiVector with a "SerialComm." Thus, the multiply() method doesn't actually get to do the communication that it knows how to do (it calls "reduce()" internally). Just let MultiVector::multiply do what it knows how to do, by letting C have a globally replicated Map with the same communicator as A and B.

Kokkos test

Kokkos testing in Trilinos does not work. It looks like the cmake does not properly include src directory in Kokkos. The configuration that I use is okay with the old Sandia repo.

Kyungjoo

cd                                                                                                            
/nfshome/kyukim/Work/lib/trilinos/build/shylu/compton/intel-test/packages/kokkos/example/query_device         
&& /home/software/intel/ics_install/impi/4.1.1.036/intel64/bin/mpiicpc                                        
-O3 -g -mavx -opt-report=5 -DMPICH_IGNORE_CXX_SEEK -std=c++11 -O3                                             
-DNDEBUG                                                                                                      
-I/nfshome/kyukim/Work/lib/trilinos/build/shylu/compton/intel-test                                            
-I/nfshome/kyukim/Work/lib/trilinos/build/shylu/compton/intel-test/packages/kokkos/example/query_device       
-I/nfshome/kyukim/Work/lib/trilinos/trunk/packages/kokkos/example/query_device                                
-o CMakeFiles/KokkosExample_query_device.dir/query_device.cpp.o -c                                            
/nfshome/kyukim/Work/lib/trilinos/trunk/packages/kokkos/example/query_device/query_device.cpp                 
icpc: remark #10397: optimization reports are generated in *.optrpt                                           
files in the output location                                                                                  
/nfshome/kyukim/Work/lib/trilinos/trunk/packages/kokkos/example/query_device/query_device.cpp(47):            
catastrophic error: cannot open source file "Kokkos_Macros.hpp"                                               
  #include <Kokkos_Macros.hpp>

Tpetra: Add optional 'atomic' argument to sumIntoLocalValue(s)

@trilinos/tpetra

For Tpetra::MultiVector, Tpetra::Vector, and Tpetra::CrsMatrix, add an optional bool atomic argument to sumIntoLocalValue resp. sumIntoLocalValues. If true, use Kokkos::atomic_add to do the +=; else, use +=. The default value of atomic should depend on the class' execution space: it should be false if and only if the execution space is Kokkos::Serial (so that existing MPI-only users don't have to pay for atomic updates).

Kokkos: make compiler checks at configure time

Right now, Kokkos checks for compiler versions at compile time (e.g., in ./packages/kokkos/core/src/Kokkos_Macros.hpp). However, this is something that can (and hence should) be checked earlier, namely at configure time by CMake.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.