Trilinos issueshttps://gitlab.osti.gov/jmwille/Trilinos/-/issues2016-11-11T17:33:59Zhttps://gitlab.osti.gov/jmwille/Trilinos/-/issues/818a few issues from static code analyzer PVS2016-11-11T17:33:59ZJames Willenbringa few issues from static code analyzer PVS*Created by: davydden*
```
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/Epetra_FECrsGraph.h 65 warn V690 The '=' operator is declared as private in the 'Epetra_...*Created by: davydden*
```
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/Epetra_FECrsGraph.h 65 warn V690 The '=' operator is declared as private in the 'Epetra_FECrsGraph' class, but the default copy constructor will still be generated by compiler. It is dangerous to use such a class.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AztecOO.h 84 warn V690 The 'AztecOO' class implements a copy constructor, but lacks the '=' operator. It is dangerous to use such a class.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/Teuchos_CompObject.hpp 65 warn V690 The 'CompObject' class implements a copy constructor, but lacks the '=' operator. It is dangerous to use such a class.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/Teuchos_SerialDenseMatrix.hpp 464 warn V560 A part of conditional expression is always false: ScalarTraits < ScalarType >::isComplex.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziSolverUtils.hpp 655 err V621 Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziSolverUtils.hpp 671 err V621 Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziMatOrthoManager.hpp 425 err V547 Expression is always false. Unsigned type value is never < 0.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziMatOrthoManager.hpp 457 err V621 Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziSVQBOrthoManager.hpp 310 err V621 Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziSVQBOrthoManager.hpp 454 warn V560 A part of conditional expression is always false: qr != xr.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziBasicOrthoManager.hpp 335 err V621 Consider inspecting the 'for' operator. It's possible that the loop will be executed incorrectly or won't be executed at all.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/AnasaziLOBPCGSolMgr.hpp 664 warn V747 An odd expression inside parenthesis. It is possible that a function name is missing.
/home/davydden/spack/opt/spack/linux-ubuntu16-x86_64/gcc-5.4.0/trilinos-12.8.1-fwmxwfpiqrrolya5mboyv6jvbz6imq4s/include/Teuchos_CommandLineProcessor.hpp 464 warn V730 Not all members of a class are initialized inside the constructor. Consider inspecting: opt_name, opt_name_false, documentation.
```
to do a proper analysis, you can get a one week trial license for Linux from PVS, see http://www.viva64.com/en/b/0441/ .
A quick usage example for deal.II is [in this issue](https://github.com/dealii/dealii/issues/3342#issuecomment-258896333). In that thread there is also a script to create Github issue for each analysis, if you would like to cover them and track progress.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/3235Belos: BLAS error in GMRES - matrix with no entries on a rank2018-08-10T18:33:17ZJames WillenbringBelos: BLAS error in GMRES - matrix with no entries on a rank*Created by: chochmuth*
Hello,
I'm encountering a problem using Belos GMRES (Flexible GMRES too) with a matrix, that has an empty row, or several.
cblas_dgemm BLAS routine throws the following error:
`lda must be >= MAX(K,1): lda=0...*Created by: chochmuth*
Hello,
I'm encountering a problem using Belos GMRES (Flexible GMRES too) with a matrix, that has an empty row, or several.
cblas_dgemm BLAS routine throws the following error:
`lda must be >= MAX(K,1): lda=0 K=0ldb must be >= MAX(K,1): ldb=0 K=0BLAS error: Parameter number 9 passed to cblas_dgemm had an invalid value`
With parameter number 9(lda) standing for the number of rows.
Is this a desired/necessary behaviour?
You can find an example for a matrix with entries on the first mpi-rank only below.
It runs fine if executed on one mpi-rank but with more than one mpi-rank i get the above error.
```
#include <mpi.h>
#include <Teuchos_XMLParameterListCoreHelpers.hpp>
#include <Xpetra_Operator.hpp>
#include <Xpetra_Matrix_fwd.hpp>
#include <Xpetra_MatrixMatrix.hpp>
#include "Xpetra_MapFactory.hpp"
#include "Xpetra_MultiVectorFactory.hpp"
#include "Xpetra_MatrixFactory.hpp"
#include <BelosOperatorT.hpp>
#include <BelosXpetraAdapter.hpp>
#include <BelosSolverFactory.hpp>
#include <Xpetra_Export.hpp>
typedef unsigned UN;
typedef double SC;
typedef int LO;
typedef int GO;
typedef KokkosClassic::DefaultNode::DefaultNodeType EpetraNode;
typedef EpetraNode NO;
using namespace std;
using namespace Teuchos;
using namespace Xpetra;
using namespace Belos;
int main(int argc, char *argv[]) {
MPI_Init(&argc,&argv);
{
RCP<const Teuchos::Comm<int> > TeuchosComm = rcp(new MpiComm<int> (MPI_COMM_WORLD));
RCP<Map<LO,GO,NO> > UniqueMap;
RCP<Matrix<SC,LO,GO,NO> > K;
int NumMyElements = 0;
if (TeuchosComm->getRank()==0) {
NumMyElements = 10;
}
Array<GO> uniqueMapArray(NumMyElements);
for (LO i=0; i<uniqueMapArray.size(); i++) {
uniqueMapArray[i] = i;
}
UniqueMap = MapFactory<LO,GO,NO>::Build(UseTpetra,-1,uniqueMapArray(),0,TeuchosComm);
K = MatrixFactory<SC,LO,GO,NO>::Build(UniqueMap,1);
for (LO i=0; i<UniqueMap->getNodeNumElements(); i++) {
LO numEntries = 10-i;
Array<GO> indicesArray(numEntries);
Array<SC> valuesArray(numEntries);
for (LO k=0; k<numEntries; k++) {
indicesArray[k] = k+i;
valuesArray[k] = 1;
}
K->insertGlobalValues(UniqueMap->getGlobalElement(i),indicesArray(),valuesArray());
}
K->fillComplete();
//Solve with GMRES
RCP<MultiVector<SC,LO,GO,NO> > xSolution = MultiVectorFactory<SC,LO,GO,NO>::Build(UniqueMap,1);
RCP<MultiVector<SC,LO,GO,NO> > xRightHandSide = MultiVectorFactory<SC,LO,GO,NO>::Build(UniqueMap,1);
xSolution->putScalar(0.0);
xRightHandSide->putScalar(1.0);
RCP<OperatorT<MultiVector<SC,LO,GO,NO> > > OpK = rcp(new XpetraOp<SC, LO, GO, NO>(K));
RCP<LinearProblem<SC,MultiVector<SC,LO,GO,NO>,OperatorT<MultiVector<SC,LO,GO,NO> > > > belosLinearProblem(new LinearProblem<SC,MultiVector<SC,LO,GO,NO>,OperatorT<MultiVector<SC,LO,GO,NO> > >(OpK,xSolution,xRightHandSide));
SolverFactory<SC,MultiVector<SC,LO,GO,NO>,OperatorT<MultiVector<SC,LO,GO,NO> > > belosFactory;
RCP<ParameterList> solverParameterList = rcp(new ParameterList());
solverParameterList->set("Convergence Tolerance",1.e-12);
solverParameterList->set("Verbosity",47);
solverParameterList->set("Output Frequency",1);
solverParameterList->set("Output Style",1);
RCP<SolverManager<SC,MultiVector<SC,LO,GO,NO>,OperatorT<MultiVector<SC,LO,GO,NO> > > > belosSoverManager = belosFactory.create("GMRES",solverParameterList);
belosSoverManager->setProblem(belosLinearProblem);
belosLinearProblem->setProblem(xSolution,xRightHandSide);
belosSoverManager->solve();
}
MPI_Finalize();
return(EXIT_SUCCESS);
}
```
@trilinos/belos Belos
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/2356Blocked Thyra to Epetra Conversion2018-04-06T15:12:59ZJames WillenbringBlocked Thyra to Epetra Conversion*Created by: jmgate*
@trilinos/epetra, @trilinos/thyra
## Scenario
I have a matrix, A, and vector, x. A is a 2x2 `Thyra::BlockedLinearOpBase`, where A00 is a `Thyra::LinearOpBase` and the other blocks are `Thyra::MultiVectorBase`s....*Created by: jmgate*
@trilinos/epetra, @trilinos/thyra
## Scenario
I have a matrix, A, and vector, x. A is a 2x2 `Thyra::BlockedLinearOpBase`, where A00 is a `Thyra::LinearOpBase` and the other blocks are `Thyra::MultiVectorBase`s. Likewise, x is a `Thyra::ProductVectorBase` with two sub-vectors. I'm in a situation where I need to make A an `Epetra_CrsMatrix` and x an `Epetra_Vector`, but I'm at a bit of a loss to do just that. I see Thyra has a `get_Epetra_Vector()` routine, but that requires passing in an `Epetra_Map`. I see there's also a `get_Epetra_Map()` routine, which takes a `Thyra::VectorSpaceBase`, but if you give it a `DefaultProductVectorSpace` instead, it doesn't seem to work (I'm seeing `MPI_Abort` being called).
## Questions
* Is there a way to convert the objects that I have to the ones that I need directly?
* Is there a way to cram a `BlockedLinearOpBase` into a single `MultiVectorBase` and a `ProductVectorBase` into a single `VectorBase`, such that these Epetra/Thyra wrappers work?
* If I'm able to convert the various pieces of my blocked objects into their Epetra counterparts, is there some way to cram four `Epetra_CrsMatrix`es into one, and two `Epetra_Vector`s into one?
## Motivation and Context
In Charon I've got a `ModelEvaluator` decorator that takes the original physics `ModelEvaluator` and augments it with blocks corresponding to constraints/parameters. Solving the blocked system via a Teko blocked preconditioner is proving to be more finicky than we'd like in certain situations, so we're investigating collapsing the blocked system and throwing a standard solver at it to see what happens.
## Additional Information
@mhoemmen, this seems like the kind of thing you'd chime in on.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/2448CEpetra_LAPACK: "no matching function for call to Epetra_LAPACK::GGSVD" with ...2018-03-31T15:59:25ZJames WillenbringCEpetra_LAPACK: "no matching function for call to Epetra_LAPACK::GGSVD" with HAVE_EPETRA_LAPACK_GSSVD3*Created by: edmondac*
I'm trying to build Trilinos but get the following error:
```
<PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp: In function ‘void Epetra_LAPACK_GGSVD_double(CT_Epetra_LAPACK_ID_...*Created by: edmondac*
I'm trying to build Trilinos but get the following error:
```
<PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp: In function ‘void Epetra_LAPACK_GGSVD_double(CT_Epetra_LAPACK_ID_t, char, char, char, i nt, int, int, int*, int*, double*, int, double*, int, double*, double*, double*, int, double*, int, double*, int, double*, int*, int*)’:
<PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp:612:76: error: no matching function for call to ‘Epetra_LAPACK::GGSVD(const char&, const char&, const char&, const int&, const int&, const int&, int*&, int*&, double*&, const int&, double*&, const int&, double*&, double*&, double*&, const int&, double*&, const int&, double*&, const int&, double*&, int*&, int*&) const’
LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO);
^
In file included from <PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK_Cpp.hpp:52:0,
from <PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp:50:
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:279:8: note: candidate: void Epetra_LAPACK::GGSVD(char, char, char, int, int, int, int*, int*, double *, int, double*, int, double*, double*, double*, int, double*, int, double*, int, double*, int, int*, int*) const
void GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L, double* A, const int LDA, double* B, const int LDB,
^~~~~
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:279:8: note: candidate expects 24 arguments, 23 provided
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:286:8: note: candidate: void Epetra_LAPACK::GGSVD(char, char, char, int, int, int, int*, int*, float* , int, float*, int, float*, float*, float*, int, float*, int, float*, int, float*, int, int*, int*) const
void GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L, float* A, const int LDA, float* B, const int LDB,
^~~~~
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:286:8: note: candidate expects 24 arguments, 23 provided
<PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp: In function ‘void Epetra_LAPACK_GGSVD_float(CT_Epetra_LAPACK_ID_t, char, char, char, in t, int, int, int*, int*, float*, int, float*, int, float*, float*, float*, int, float*, int, float*, int, float*, int*, int*)’:
<PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp:624:76: error: no matching function for call to ‘Epetra_LAPACK::GGSVD(const char&, const char&, const char&, const int&, const int&, const int&, int*&, int*&, float*&, const int&, float*&, const int&, float*&, float*&, float*&, const int&, float*&, const int&, float*&, const int&, float*&, int*&, int*&) const’
LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO);
^
In file included from <PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK_Cpp.hpp:52:0,
from <PATH>/trilinos-12.12.1-Source/packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp:50:
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:279:8: note: candidate: void Epetra_LAPACK::GGSVD(char, char, char, int, int, int, int*, int*, double *, int, double*, int, double*, double*, double*, int, double*, int, double*, int, double*, int, int*, int*) const
void GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L, double* A, const int LDA, double* B, const int LDB,
^~~~~
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:279:8: note: candidate expects 24 arguments, 23 provided
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:286:8: note: candidate: void Epetra_LAPACK::GGSVD(char, char, char, int, int, int, int*, int*, float* , int, float*, int, float*, float*, float*, int, float*, int, float*, int, float*, int, int*, int*) const
void GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L, float* A, const int LDA, float* B, const int LDB,
^~~~~
<PATH>/trilinos-12.12.1-Source/packages/epetra/src/Epetra_LAPACK.h:286:8: note: candidate expects 24 arguments, 23 provided
```
The problem seems to stem from packages/epetra/src/Epetra_LAPACK.cpp having been changed to add an extra argument for GSSVD3 but packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp not so:
packages/CTrilinos/src/epetra/CEpetra_LAPACK.cpp:
```
603 void Epetra_LAPACK_GGSVD_double (
604 CT_Epetra_LAPACK_ID_t selfID, const char JOBU, const char JOBV,
605 const char JOBQ, const int M, const int N, const int P, int * K,
606 int * L, double * A, const int LDA, double * B, const int LDB,
607 double * ALPHA, double * BETA, double * U, const int LDU,
608 double * V, const int LDV, double * Q, const int LDQ,
609 double * WORK, int * IWORK, int * INFO )
610 {
611 CEpetra::getConstLAPACK(selfID)->GGSVD(JOBU, JOBV, JOBQ, M, N, P, K, L, A,
612 LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO);
613 }
614
615 void Epetra_LAPACK_GGSVD_float (
616 CT_Epetra_LAPACK_ID_t selfID, const char JOBU, const char JOBV,
617 const char JOBQ, const int M, const int N, const int P, int * K,
618 int * L, float * A, const int LDA, float * B, const int LDB,
619 float * ALPHA, float * BETA, float * U, const int LDU, float * V,
620 const int LDV, float * Q, const int LDQ, float * WORK,
621 int * IWORK, int * INFO )
622 {
623 CEpetra::getConstLAPACK(selfID)->GGSVD(JOBU, JOBV, JOBQ, M, N, P, K, L, A,
624 LDA, B, LDB, ALPHA, BETA, U, LDU, V, LDV, Q, LDQ, WORK, IWORK, INFO);
625 }
```
packages/epetra/src/Epetra_LAPACK.cpp
```
363 //=============================================================================
364 void Epetra_LAPACK::GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L,
365 double* A, const int LDA, double* B, const int LDB,
366 double* ALPHA, double* BETA, double* U, const int LDU, double* V, const int LDV, double* Q, const int LDQ, double* WORK,
367 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
368 const int LWORK,
369 #endif
370 int* IWORK, int* INFO) const {
371 DGGSVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBV), CHAR_MACRO(JOBQ), &M, &N, &P, K, L, A, &LDA, B, &LDB,
372 ALPHA, BETA, U, &LDU, V, &LDV, Q, &LDQ, WORK,
373 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
374 &LWORK,
375 #endif
376 IWORK, INFO);
377 }
378
379 //=============================================================================
380 void Epetra_LAPACK::GGSVD(const char JOBU, const char JOBV, const char JOBQ, const int M, const int N, const int P, int * K, int * L,
381 float* A, const int LDA, float* B, const int LDB,
382 float* ALPHA, float* BETA, float* U, const int LDU, float* V, const int LDV, float* Q, const int LDQ, float* WORK,
383 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
384 const int LWORK,
385 #endif
386 int* IWORK, int* INFO) const {
387 SGGSVD_F77(CHAR_MACRO(JOBU), CHAR_MACRO(JOBV), CHAR_MACRO(JOBQ), &M, &N, &P, K, L, A, &LDA, B, &LDB,
388 ALPHA, BETA, U, &LDU, V, &LDV, Q, &LDQ, WORK,
389 #ifdef HAVE_EPETRA_LAPACK_GSSVD3
390 &LWORK,
391 #endif
392 IWORK, INFO);
393 }
```
I've got a patch that builds on my system, but it wouldn't work in the opposite situation as the header doesn't use an ifdef.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/4105Closing old PR #1019 "Misleading indentation (whitespace only)" 2018-12-20T18:57:01ZJames WillenbringClosing old PR #1019 "Misleading indentation (whitespace only)" *Created by: william76*
Pull Request #1019 "Misleading indentation (whitespace only)" is really old and appears to be stale and/or abandoned. I'm closing that PR and creating this issue to link to it.
I'm doing this because we need...*Created by: william76*
Pull Request #1019 "Misleading indentation (whitespace only)" is really old and appears to be stale and/or abandoned. I'm closing that PR and creating this issue to link to it.
I'm doing this because we need to close out some of the old PR's due to some GitHub limitations on the number of checks/hour that are allowed. The pull request autotester uses a polling model to check existing pull requests' status flags, etc. and we have occasionally hit that limit, which causes GitHub to reject the queries and can cause the Autotester to fail on a PR. If this PR needs to be brought back to life it can easily be reopened on the pull request page.
If this PR is truly dead, please close out this issue ticket.
FYI: @nschloe @egboman
PR #1019 touches files in these packages:
@trilinos/epetra
@trilinos/aztecoo
@trilinos/epetraext
@trilinos/isorropia
@trilinos/ml
@trilinos/pamgen https://gitlab.osti.gov/jmwille/Trilinos/-/issues/1431./doc/build_docs for Epetra2017-06-16T21:37:10ZJames Willenbring./doc/build_docs for Epetra*Created by: nschloe*
The most common way for a Trilinos package to build its docs is to call `./doc/build_docs`. Unfortunately, Epetra doesn't have that, meaning that the Debian package, for example, doesn't contain Epetra docs. [We've...*Created by: nschloe*
The most common way for a Trilinos package to build its docs is to call `./doc/build_docs`. Unfortunately, Epetra doesn't have that, meaning that the Debian package, for example, doesn't contain Epetra docs. [We've recently had a user point that out](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864779), so I thought I mention it here, hoping for someone to put a `./doc/build_docs` in Epetra.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/1040doxygen 1.8.13 incompatibility2017-10-05T22:43:50ZJames Willenbringdoxygen 1.8.13 incompatibility*Created by: ilovezfs*
I'm having to set `-DPyTrilinos_DOCSTRINGS:BOOL=OFF` due to an incompatibility with doxygen 1.8.13, which ultimately leads to
```
[ 91%] Built target PanzerDiscFE_SacadoExample
[ 92%] Built target pytrilinos
[...*Created by: ilovezfs*
I'm having to set `-DPyTrilinos_DOCSTRINGS:BOOL=OFF` due to an incompatibility with doxygen 1.8.13, which ultimately leads to
```
[ 91%] Built target PanzerDiscFE_SacadoExample
[ 92%] Built target pytrilinos
[ 92%] Swig source /tmp/trilinos-20170129-37787-ninfii/Trilinos-trilinos-release-12-10-1/packages/PyTrilinos/src/LOCA.Epetra.Interface.i
/tmp/trilinos-20170129-37787-ninfii/Trilinos-trilinos-release-12-10-1/packages/PyTrilinos/src/LOCA.Epetra.Interface.i:147: Error: Unable to find 'LOCA_dox.i'
/tmp/trilinos-20170129-37787-ninfii/Trilinos-trilinos-release-12-10-1/packages/PyTrilinos/src/Epetra.i:260: Error: Unable to find 'Epetra_dox.i'
make[2]: *** [packages/PyTrilinos/src/LOCA.Epetra.InterfacePYTHON_wrap.cpp] Error 1
make[1]: *** [packages/PyTrilinos/src/CMakeFiles/PyTrilinos_LOCA_Epetra_Interface.dir/all] Error 2
make: *** [all] Error 2
```
Looking back in the log, there are errors in the initial cmake configuration: https://gist.github.com/ilovezfs/a5f72851bbeecded8d4b87a996b1b3ad
This does not occur if I use doxygen 1.8.12 or 1.8.11.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/1420enum Epetra_DataAccess pollutes global namespace2017-06-14T18:29:17ZJames Willenbringenum Epetra_DataAccess pollutes global namespace*Created by: jwuttke*
a library shouldn't define global constants like "Copy" or "View".*Created by: jwuttke*
a library shouldn't define global constants like "Copy" or "View".https://gitlab.osti.gov/jmwille/Trilinos/-/issues/3192Epetra64: Epetra_CrsMatrix throws if given a Map with a 64-bit (long long) nu...2018-07-28T18:22:29ZJames WillenbringEpetra64: Epetra_CrsMatrix throws if given a Map with a 64-bit (long long) number of rows; 32-bit (int) number of rows is OK*Created by: mhoemmen*
I was working on #3139, in particular on an Ifpack2 BlockRelaxation test that @brian-kelley wrote, that compares Ifpack2 and ML performance. My first pass of changes used a 64-bit (`long long`) value for the glob...*Created by: mhoemmen*
I was working on #3139, in particular on an Ifpack2 BlockRelaxation test that @brian-kelley wrote, that compares Ifpack2 and ML performance. My first pass of changes used a 64-bit (`long long`) value for the global number of rows, when building both an Epetra and a Tpetra Map. The test threw in that case. However, when I gave `Epetra_Map`'s constructor the global number of rows as a 32-bit (`int`) value, the test passed.
@trilinos/epetra @trilinos/tpetra @trilinos/ifpack2 @kddevin
## Expectations
`Epetra_CrsMatrix` should behave the same, whether its row Map was created with a 64-bit or 32-bit global number of indices.
## Current Behavior
```c++
using GO = long long;
const GO localRows = 5000;
#ifdef EPETRA_MPI
Epetra_MpiComm ecomm(MPI_COMM_WORLD);
#else
Epetra_SerialComm ecomm;
#endif
// If I cast localRows to int, this code doesn't throw.
// Otherwise, something after the Epetra_Map constructor will throw.
Epetra_Map rowmap(localRows, 0, ecomm);
Teuchos::RCP<Epetra_CrsMatrix> crsmatrix =
Teuchos::rcp(new Epetra_CrsMatrix(Epetra_DataAccess::Copy, rowmap, 3));
int numRows = rowmap.NumGlobalElements();
double tile[3] = {-2, 4, -2};
int firstCols[] = {0, 1};
crsmatrix->InsertGlobalValues(0, 2, tile + 1, firstCols);
for(int row = 1; row < numRows - 1; row++)
{
int cols[] = {row - 1, row, row + 1};
crsmatrix->InsertGlobalValues(row, 3, tile, cols);
}
int lastCols[] = {numRows - 2, numRows - 1};
crsmatrix->InsertGlobalValues(numRows - 1, 2, tile, lastCols);
crsmatrix->FillComplete();
```
I see now that the code passes 32-bit global column indices into `InsertGlobalValues`. Is it wrong to do that after creating a row Map with a 64-bit global number of rows? That's very easy to do when writing Epetra vs. Tpetra comparisons.
## Motivation and Context
This hindered #3139. Also, we're generally interested in Epetra vs. Tpetra performance comparisons.
## Related Issues
* Related to #3139
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/248Epetra: Add equivalent of Tpetra::Distributor::createFromSendsAndRecvs to Epe...2016-11-02T20:56:23ZJames WillenbringEpetra: Add equivalent of Tpetra::Distributor::createFromSendsAndRecvs to Epetra's Distributor*Created by: mhoemmen*
@trilinos/tpetra
@csiefer2
This corresponds to the MPI 3 sparse all-to-all constructor as well.
*Created by: mhoemmen*
@trilinos/tpetra
@csiefer2
This corresponds to the MPI 3 sparse all-to-all constructor as well.
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/2590Epetra: adding IntMultiVector to mirror the IntVector object2018-05-15T16:30:29ZJames WillenbringEpetra: adding IntMultiVector to mirror the IntVector object*Created by: lucbv*
@trilinos/epetra
@csiefer2 @mhoemmen
## Expectations
Implementation of a `IntMultiVector` class that allows for the storage of multiple indices in the same object instead of using arrays of `IntVector` which i...*Created by: lucbv*
@trilinos/epetra
@csiefer2 @mhoemmen
## Expectations
Implementation of a `IntMultiVector` class that allows for the storage of multiple indices in the same object instead of using arrays of `IntVector` which is a more sketchy...
## Current Behavior
Currently such object does not exist and that leads to funny code with multiple `IntVectors` stored in Arrays or `std::vector`. Also this would use significantly less storage than the equivalent `MultiVector` in the case of `int` data
## Motivation and Context
The implementation of overlapping aggregates in MueLu requires to store multiple indices per node and it was done in the case of non-overlapping aggregates done with IntVector.
## Definition of Done
The implementation of an `IntMultiVector` class that mirrors the capabilities of the `IntVector` class.
## Possible Solution
see above
## Related Issues
* Blocks #2577
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/4103Epetra: Closing old PR #503 "Updated minimal example Epetra_CrsMatrix.h ..." 2018-12-23T19:01:27ZJames WillenbringEpetra: Closing old PR #503 "Updated minimal example Epetra_CrsMatrix.h ..." *Created by: william76*
@trilinos/epetra
Pull Request #503 "WIP: Updated minimal example Epetra_CrsMatrix.h and Epetra_CrsMatrix.cpp…" is really old and appears to be stale and/or abandoned. I'm closing that PR and creating this is...*Created by: william76*
@trilinos/epetra
Pull Request #503 "WIP: Updated minimal example Epetra_CrsMatrix.h and Epetra_CrsMatrix.cpp…" is really old and appears to be stale and/or abandoned. I'm closing that PR and creating this issue to link to it.
I'm doing this because we need to close out some of the old PR's due to some GitHub limitations on the number of checks/hour that are allowed. The pull request autotester uses a polling model to check existing pull requests' status flags, etc. and we have occasionally hit that limit, which causes GitHub to reject the queries and can cause the Autotester to fail on a PR. If this PR needs to be brought back to life it can easily be reopened on the pull request page.
FYI: @michelemartone @mhoemmen https://gitlab.osti.gov/jmwille/Trilinos/-/issues/3322Epetra_CrsMatrix: InsertMyValues() is not working correctly2018-08-20T04:47:15ZJames WillenbringEpetra_CrsMatrix: InsertMyValues() is not working correctly*Created by: freaklovesmango*
I am using the InsertMyValues() method of Epetra_CrsMatrix. However, it does not set the Col Index' correctly and I do not know why. If I change the visibility of the method InsertValues() which is called b...*Created by: freaklovesmango*
I am using the InsertMyValues() method of Epetra_CrsMatrix. However, it does not set the Col Index' correctly and I do not know why. If I change the visibility of the method InsertValues() which is called by InsertMyValues() from protected/private to public and use this instead of the other, the column IDs are set correctly.
Basically, what my code does is similar to this short version:
```
double c = 0.9;
for (int r = 0; r < 6; ++r ){
crsMatrix.InsertMyValues(r, 1, &c, &r);
}
std::cout << "The Matrix with InsertMyValues(): \n " << crsMatrix << std::endl;
```
where crsMatrix is a Epetra_CrsMatrix with a serial communicator.
The output is this:
```
The Matrix with InsertMyValues():
Epetra::CrsMatrix
Number of Global Rows = 6
Number of Global Cols = 6
Number of Global Diagonals = 0
Number of Global Nonzeros = 0
Global Maximum Num Entries = 0
** Matrix is Lower Triangular **
** Matrix is Upper Triangular **
** Matrix has no diagonal **
Number of My Rows = 6
Number of My Cols = 6
Number of My Diagonals = 0
Number of My Nonzeros = 0
My Maximum Num Entries = 1
Processor Row Index Col Index Value
0 0 -1 0.9
0 1 -1 0.9
0 2 -1 0.9
0 3 -1 0.9
0 4 -1 0.9
0 5 -1 0.9
```
wheras with InsertValues() the output is correct like this:
```
The Matrix with InsertValues():
Epetra::CrsMatrix
Number of Global Rows = 6
Number of Global Cols = 6
Number of Global Diagonals = 0
Number of Global Nonzeros = 0
Global Maximum Num Entries = 0
** Matrix is Lower Triangular **
** Matrix is Upper Triangular **
** Matrix has no diagonal **
Number of My Rows = 6
Number of My Cols = 6
Number of My Diagonals = 0
Number of My Nonzeros = 0
My Maximum Num Entries = 1
Processor Row Index Col Index Value
0 0 0 0.9
0 1 1 0.9
0 2 2 0.9
0 3 3 0.9
0 4 4 0.9
0 5 5 0.9
```
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/4663Epetra_CrsMatrix::Multiply with locally replicated range map question2019-03-20T17:46:08ZJames WillenbringEpetra_CrsMatrix::Multiply with locally replicated range map question*Created by: bartgol*
<!---
Provide a general summary of the issue in the Title above. If this issue
pertains to a particular package in Trilinos, it's worthwhile to start the
title with "PackageName: ".
-->
<!---
Note that an...*Created by: bartgol*
<!---
Provide a general summary of the issue in the Title above. If this issue
pertains to a particular package in Trilinos, it's worthwhile to start the
title with "PackageName: ".
-->
<!---
Note that anything between these delimiters is a comment that will not appear
in the issue description once created. Click on the Preview tab to see what
everything will look like when you submit.
-->
<!---
Feel free to delete anything from this template that is not applicable to the
issue you are submitting.
-->
<!---
Replace <teamName> below with the appropriate Trilinos package/team name.
-->
@trilinos/epetra
<!---
Assignees: If you know anyone who should likely tackle this issue, select them
from the Assignees drop-down on the right.
-->
<!---
Lables: Choose any applicable package names from the Labels drop-down on the
right. Additionally, choose a label to indicate the type of issue, for
instance, bug, build, documentation, enhancement, etc.
-->
## Current Behavior
<!---
Tell us how the current behavior fails to meet your expectations in some way.
-->
Currently, if the range map is locally replicated, the result of `A.Apply(X,Y)` is not what I expected. In particular, Epetra does a final call `Y.Reduce()`, which ends up giving a Y vector that is numProc times larger than what I expected. Why is Epetra doing this? I.e., why are we reducing the output vector, in case of a locally replicated range map? Isn't the result (before the Reduce() call) already what one most likely wants? The user can always call `Y.Reduce()` if he is interested in that.
## Possible Solution
<!---
Not obligatory, but suggest a fix for the bug or documentation, or suggest
ideas on how to implement the addition or change.
-->
Assuming my concern is correct, simply remove line 3212 (and the likes in other branches of if statements) in Epetra_CrsMatrix.cpphttps://gitlab.osti.gov/jmwille/Trilinos/-/issues/614Epetra_DistObject: Get rid of DistributedGlobal_ field2016-09-16T17:22:02ZJames WillenbringEpetra_DistObject: Get rid of DistributedGlobal_ field*Created by: mhoemmen*
@trilinos/xpetra @trilinos/tpetra @tawiesn @csiefer2
Get rid of Epetra_DistObject::DistributedGlobal_. That field is redundant with its Map's field. This causes confusion when implementing ReplaceMap, e.g., in...*Created by: mhoemmen*
@trilinos/xpetra @trilinos/tpetra @tawiesn @csiefer2
Get rid of Epetra_DistObject::DistributedGlobal_. That field is redundant with its Map's field. This causes confusion when implementing ReplaceMap, e.g., in Epetra_MultiVector.
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/2743Epetra: Epetra_IntMultiVectorDistributed_test failing in nightly clean build2018-05-15T14:40:20ZJames WillenbringEpetra: Epetra_IntMultiVectorDistributed_test failing in nightly clean build*Created by: william76*
<!---
Provide a general summary of the issue in the Title above. If this issue
pertains to a particular package in Trilinos, it's worthwhile to start the
title with "PackageName: ".
-->
@trilinos/epetra
...*Created by: william76*
<!---
Provide a general summary of the issue in the Title above. If this issue
pertains to a particular package in Trilinos, it's worthwhile to start the
title with "PackageName: ".
-->
@trilinos/epetra
The test [Epetra_IntMultiVectorDistributed](https://testing-vm.sandia.gov/cdash/testDetails.php?test=46495883&build=3509186) is failing on nightly Clean testing.
### Test output
```
Epetra in Trilinos 12.13 (Dev)
Processor 0 of 1 is alive.
Non zero error code 1, file: /scratch/trilinos/workspace/trilinos-folder/Trilinos_generic_nightly@2/SERIAL_Release_gcc_4.9.3__DEV/Trilinos/packages/epetra/test/IntMultiVectorDistributed/cxx_main.cpp, line: 168
Non zero error code 1, file: /scratch/trilinos/workspace/trilinos-folder/Trilinos_generic_nightly@2/SERIAL_Release_gcc_4.9.3__DEV/Trilinos/packages/epetra/test/IntMultiVectorDistributed/cxx_main.cpp, line: 170
Non zero error code 1, file: /scratch/trilinos/workspace/trilinos-folder/Trilinos_generic_nightly@2/SERIAL_Release_gcc_4.9.3__DEV/Trilinos/packages/epetra/test/IntMultiVectorDistributed/cxx_main.cpp, line: 172
```
@lucbv had the most recent commit to [epetra/test/IntMultiVectorDistributed/cxx_main.cpp](https://github.com/trilinos/Trilinos/blob/develop/packages/epetra/test/IntMultiVectorDistributed/cxx_main.cpp). https://gitlab.osti.gov/jmwille/Trilinos/-/issues/1261EpetraExt::RowMatrix_Transpose returns non-filled matrix2017-05-18T14:04:20ZJames WillenbringEpetraExt::RowMatrix_Transpose returns non-filled matrix*Created by: xamhn*
When computing the explicit transpose of an Epetra_RowMatrix with EpetraExt::RowMatrix_Transpose the returned matrix is *not filled*, i.e. filled()=false, in case that 2 or more MPI processes are used. In my particul...*Created by: xamhn*
When computing the explicit transpose of an Epetra_RowMatrix with EpetraExt::RowMatrix_Transpose the returned matrix is *not filled*, i.e. filled()=false, in case that 2 or more MPI processes are used. In my particular case the matrix is rectangular.
Problem occurred with Release 12.10. In release 12.8 the returned matrix is filled.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/1210Epetra: Fortran string ABI binding needs new option for OpenBLAS on POWER2017-04-05T15:16:34ZJames WillenbringEpetra: Fortran string ABI binding needs new option for OpenBLAS on POWER*Created by: mhoemmen*
See #1208 for analogous discussion. `Epetra_fcd` and `CHAR_MACRO` also exist in Epetra.*Created by: mhoemmen*
See #1208 for analogous discussion. `Epetra_fcd` and `CHAR_MACRO` also exist in Epetra.https://gitlab.osti.gov/jmwille/Trilinos/-/issues/459Epetra has no debug-mode macro2016-06-27T20:59:39ZJames WillenbringEpetra has no debug-mode macro*Created by: mhoemmen*
@tawiesn
Epetra lacks a debug-mode macro comparable to HAVE_TPETRA_DEBUG or KOKKOS_HAVE_DEBUG.
*Created by: mhoemmen*
@tawiesn
Epetra lacks a debug-mode macro comparable to HAVE_TPETRA_DEBUG or KOKKOS_HAVE_DEBUG.
https://gitlab.osti.gov/jmwille/Trilinos/-/issues/943Epetra installs test files into bin/2016-12-20T18:13:04ZJames WillenbringEpetra installs test files into bin/*Created by: nschloe*
With
```
cmake \
-DCMAKE_SHARED_LINKER_FLAGS="$CMAKE_SHARED_LINKER_FLAGS -Wl,--no-undefined" \
-DCMAKE_INSTALL_PREFIX:PATH=/opt/trilinos/launchpad/ \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mp...*Created by: nschloe*
With
```
cmake \
-DCMAKE_SHARED_LINKER_FLAGS="$CMAKE_SHARED_LINKER_FLAGS -Wl,--no-undefined" \
-DCMAKE_INSTALL_PREFIX:PATH=/opt/trilinos/launchpad/ \
-DCMAKE_C_COMPILER=mpicc \
-DCMAKE_CXX_COMPILER=mpicxx \
-DCMAKE_Fortran_COMPILER=mpif90 \
-DBUILD_SHARED_LIBS:BOOL=ON \
-DCMAKE_SKIP_INSTALL_RPATH:BOOL=ON \
-DTrilinos_INSTALL_INCLUDE_DIR:PATH=include/trilinos/ \
-DTrilinos_INSTALL_TriBITS:BOOL=OFF \
-DTrilinos_LIBRARY_NAME_PREFIX:STRING="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_FEI:BOOL=OFF \
-DTrilinos_ENABLE_Gtest:BOOL=OFF \
-DTrilinos_ENABLE_Intrepid2:BOOL=OFF \
-DTrilinos_ENABLE_Panzer:BOOL=OFF \
-DTrilinos_ENABLE_PyTrilinos:BOOL=OFF \
-DTrilinos_ENABLE_SEACAS:BOOL=OFF \
-DTrilinos_ENABLE_STK: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=ON \
-DZoltan_ENABLE_TESTS:BOOL=ON \
-DTPL_ENABLE_BinUtils:BOOL=OFF \
-DTPL_ENABLE_Boost:BOOL=ON \
-DTPL_ENABLE_HDF5:BOOL=OFF \
-DHDF5_INCLUDE_DIRS:PATH=/usr/include/hdf5/openmpi/ \
-DHDF5_LIBRARY_DIRS:PATH=/usr/lib/$(DEB_HOST_MULTIARCH)/hdf5/openmpi/ \
-DTPL_ENABLE_Matio:BOOL=OFF \
-DTPL_ENABLE_MATLAB:BOOL=OFF \
-DTPL_ENABLE_MPI:BOOL=ON \
-DTPL_ENABLE_MUMPS:BOOL=ON \
-DTPL_ENABLE_Netcdf:BOOL=OFF \
-DTPL_ENABLE_ParMETIS:BOOL=OFF \
-DTPL_ENABLE_Scotch:BOOL=OFF \
-DTPL_ENABLE_SuperLU:BOOL=OFF \
-DTPL_ENABLE_TBB:BOOL=ON \
-DTPL_ENABLE_X11:BOOL=OFF \
-DTPL_ENABLE_Zlib:BOOL=ON \
../../source-upstream/
```
(perhaps some of the lines can be dropped), `make install` will install test files into `$PREFIX/bin/`, namely
```
Epetra_BasicPerfTest_test.exe
Epetra_BasicPerfTest_test_LL.exe
```