[Trilinos-Users] [EXTERNAL] slow anasazi in NOX::Epetra

Veltz Romain romain.veltz at inria.fr
Tue Dec 3 03:34:45 MST 2013


David,

I tried but the speed is not that great. 

I also tried to use a shift-transform but I get an error with this 

aList.set("Method", "Anasazi");
	aList.set("Sorting Order", "LM");  // Utiliser LM pour avoir les points de bifurcation
	aList.set("Block Size", 4);//1        // Size of blocks, ie Krylov subspace
	aList.set("Num Blocks", 30);       // Size of Arnoldi factorization: = 3 nev
	aList.set("Num Eigenvalues", 6);   // Number of eigenvalues
	aList.set("Convergence Tolerance", 1.0e-12);          // Tolerance
	aList.set("Step Size", 20);         // How often to check convergence
	aList.set("Maximum Restarts",5);  // Maximum number of restarts
	aList.set("Maximum Iterations",500);   // Maximum number of restarts
	aList.set("Operator","Shift-Invert");
	aList.set("Shift",0.5);

The error is the following:

================================================================
Anasazi Eigensolver starting with block size 4

************************
ERROR: LOCA::AnasaziOperator::ShiftInvert::apply()

Return Type = BadDependency
************************
[peguy:48825] *** Process received signal ***
[peguy:48825] Signal: Segmentation fault: 11 (11)
[peguy:48825] Signal code: Address not mapped (1)
[peguy:48825] Failing at address: 0x15
[peguy:48825] [ 0] 2   libsystem_c.dylib                   0x00007fff916f390a _sigtramp + 26
[peguy:48825] [ 1] 3   ???                                 0x00007ff680cfc080 0x0 + 140696699781248
[peguy:48825] [ 2] 4   NContDoG.exe                        0x0000000104c60b72 _ZN7Anasazi22BlockKrylovSchurSolMgrIdN3NOX8Abstract11MultiVectorEN4LOCA15AnasaziOperator16AbstractStrategyEE5solveEv + 22696
[peguy:48825] [ 3] 5   NContDoG.exe                        0x0000000104c3d6c6 _ZN4LOCA11Eigensolver15AnasaziStrategy18computeEigenvaluesERN3NOX8Abstract5GroupERN7Teuchos3RCPISt6vectorIdSaIdEEEESC_RNS7_INS3_11MultiVectorEEESF_ + 1936
[peguy:48825] [ 4] 6   NContDoG.exe                        0x0000000104c1e343 _ZN4LOCA7Stepper5startEv + 1391
[peguy:48825] [ 5] 7   NContDoG.exe                        0x0000000104b2293b _ZN4LOCA8Abstract8Iterator3runEv + 21
[peguy:48825] [ 6] 8   NContDoG.exe                        0x00000001048f5c8a main + 22426
[peguy:48825] [ 7] 9   libdyld.dylib                       0x00007fff9113e7e1 start + 0
[peguy:48825] *** End of error message ***

Does this mean that I need to create a class with a specific Mass matrix?


Thank you for your help,

Romain




On Nov 29, 2013, at 9:13 PM, "Day, David" <dmday at sandia.gov> wrote:

> Vomain,
> I too am sorry for my ignorance.  I am not sure how to diagnose solver issues through a parameter list either. Today is a US holiday.  We night need to wait a little for help.
> --David Day
> 
> From: Veltz Romain <romain.veltz at inria.fr>
> Date: Thursday, November 28, 2013 5:24 AM
> To: David Day <dmday at sandia.gov>
> Cc: "Thornquist, Heidi K" <hkthorn at sandia.gov>
> Subject: Re: [EXTERNAL] [Trilinos-Users] slow anasazi in NOX::Epetra
> 
> David,
> 
> I am sorry for my ignorance but I don't know how to look at the number of times that GMRES restart.
> 
> Teuchos::ParameterList& nlPrintParams = nlParams.sublist("Printing");
> nlPrintParams.set("Output Precision",3);
> nlPrintParams.set("Output Processor",0);
> nlPrintParams.set("Output Information",0 +
> //NOX::Utils::OuterIteration +
> //NOX::Utils::OuterIterationStatusTest +
> //NOX::Utils::InnerIteration +
> //NOX::Utils::Details +
> //NOX::Utils::Warning+
> NOX::Utils::StepperIteration +
> //NOX::Utils::StepperDetails +
> //NOX::Utils::StepperParameters +
> NOX::Utils::LinearSolverDetails +
> 0
> );
> 
> Is it the way?
> 
> Thank you again for your help to you and Heidi
> 
> Romain
> 
> 
> 
> On Nov 27, 2013, at 5:27 PM, "Day, David" <dmday at sandia.gov> wrote:
> 
>> Romain,
>> There is no simple answer.   One issue that is mostly independent is simply the efficiency of the linear solve.   Here look for the number of times that GMRES must restart.   The other issues relate more directly to Anasazi.   There is a natural conflict between continuation methods and iterative linear solvers.   The continuation method drives the Jacobian matrix to be singular,  in many cases.   Loca is carefully designed to mitigate this issue, but I guess that this is why you are solving an eigenvalue problem.  
>> 
>> You might send this to the Anasazi mailing list for more discussion.  Block Size one is a good guess, unless for some reason your problem has multiple eigenvalues.  You might try a much larger value of Num Blocks.   You might also try to experiment with the Convergence Tolerance.   There is also a trade off between the linear solver and Anasazi;  a more accurate linear solves (smaller "Tolerance") increases the cost per linear solve and can decrease the number of Anasazi iterations.
>> 
>> -David Day
>> From: Veltz Romain <romain.veltz at inria.fr>
>> Date: Wednesday, November 27, 2013 9:02 AM
>> To: "trilinos-users at software.sandia.gov" <trilinos-users at software.sandia.gov>
>> Subject: [EXTERNAL] [Trilinos-Users] slow anasazi in NOX::Epetra
>> 
>> Hello All,
>> 
>> I am doing a continuation in the NOX:Epetra interface with a Epetra_OPerator for the Jacobian. As a bi-product, I am computing the eigenvalues of the Jacobian at each step using the following piece of code. 
>> 
>> 
>> Teuchos::ParameterList& aList = locaStepperList.sublist("Eigensolver");
>> aList.set("Method", "Anasazi");
>> aList.set("Sorting Order", "LM");  // 
>> aList.set("Block Size", 1);//1        // Size of blocks, ie Krylov subspace
>> aList.set("Num Blocks", 20);//15       // Size of Arnoldi factorization: = 3 nev
>> aList.set("Num Eigenvalues", 5);   // Number of eigenvalues
>> aList.set("Convergence Tolerance", 1.0e-7);          // Tolerance
>> aList.set("Step Size", 1);         // How often to check convergence
>> aList.set("Maximum Restarts",20);  // Maximum number of restarts
>> 
>> Fore the linear solver, the options are here:
>> 
>> Teuchos::ParameterList& lsParams = newParams.sublist("Linear Solver");
>> lsParams.set("Aztec Solver", "GMRES");
>> lsParams.set("Size of Krylov Subspace",100);//default = 300
>> lsParams.set("Max Iterations", 100);// etait 200
>> lsParams.set("Tolerance", 1e-8);
>> lsParams.set("Output Frequency", 1);//etait 1
>> lsParams.set("Scaling", "None");
>> lsParams.set("Preconditioner Operator", "Use Jacobian");// default
>> 
>> I would like to point that the problem I am trying to solve is 
>> 
>> F(V,lambda) = -V + convolution2d(J, N(lambda*V))
>> 
>> where N is a nonlinearity.
>> 
>> I have two questions:
>> 
>> - how do the parameters Block size and Num blocks affect the computation of the eigenvalues? 
>> 
>> I have done the same computation in matlab with the function eigs and it is at least twice as fast.
>> 
>> - how can I improve the speed of the computation of my eigenvalues in Anasazi. I think this is linked to the first question.
>> 
>> Thank you for your help,
>> 
>> Best,
>> 
>> Romain
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20131203/17dd68d0/attachment.html 


More information about the Trilinos-Users mailing list