[Trilinos-Users] [EXTERNAL] Amesos Superlu/Superludist Question

Siva Rajamanickam srajama at sandia.gov
Tue Sep 4 12:18:34 MDT 2012


I will take care of this. Thanks for testing it.

regards
Siva

Travis Austin wrote:
> HI Siva,
>
> I have confirmed that changing
>
> 118    //! Always returns true.
> 119    bool UseTranspose() const {return(true);};
> 120    //@}
>
> to
>
> 118    //! Always returns false.
> 119    bool UseTranspose() const {return(false);};
> 120    //@}
>
> in Amesos_Superludist.h now yields a residual that is O(1e-17)
> and essentially equivalent to Amesos_Superlu.h
>
> I'd suggest making this change in Amesos_Superludist.
>
> Travis
>
>>> 1 //! Always returns true.
>>> 119   bool UseTranspose() const {return(true);};
>>> 120   //@}
>
>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> Travis Austin, Ph.D.
> VP of Computational Mathematics
> Tech-X Corporation
> 5621 Arapahoe Ave, Suite A
> Boulder, CO 80303
> austin at txcorp.com <mailto:austin at txcorp.com>
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>
>
>
> On Sep 4, 2012, at 10:57 AM, Siva Rajamanickam wrote:
>
>> Hi Travis,
>> The useTranspose is used in lot of Amesos solvers as a shortcut to go 
>> between row storage and column storage (without copying), when the 
>> TPL requires a column storage and it can support a transpose solve. 
>> This appears to be a bug while computing the residuals though (as we 
>> don't use the trick for Superlu_dist). Do you get the correct answer 
>> when useTranspose() is false ?
>>
>> Siva
>>
>> Travis Austin wrote:
>>> Hi,
>>>
>>> I am using Amesos Superlu and Superludist to solve a very simple 
>>> nonsymmetric problem.  There is agreement in the
>>> solution between the two problems but the residual ||Ax - b|| is not 
>>> in agreement.  (See below.)
>>>
>>> Amesos_Superlu:
>>> ===================
>>> Amesos_Superlu : vector 0, ||Ax - b|| = 0
>>> Amesos_Superlu : vector 0, ||x|| = 0.25, ||b|| = 1
>>>
>>> Amesos_Superludist:
>>> ===================
>>> Amesos_Superludist : vector 0, ||Ax - b|| = 0.5
>>> Amesos_Superludist : vector 0, ||x|| = 0.25, ||b|| = 1
>>>
>>> The residual is being printed out because I am setting the 
>>> ComputeTrueResidual parameter to true.  
>>> In Amesos_Superludist.cpp I see the method 
>>> Amesos_Superludist::Solve() actually compute the residual and issues the
>>> following call:
>>>
>>>  if (ComputeTrueResidual_)
>>>    ComputeTrueResidual(*RowMatrixA_, *vecX, *vecB, UseTranspose(),
>>>                        "Amesos_Superludist");
>>>
>>> Furthermore, for Superludist UseTranspose() always returns true 
>>> implying that I am computing ||A^t x - b||.  This is exactly
>>> what I have found for my small example matrix and explains the 
>>> nonzero residual above in Amesos_Superludist.
>>>
>>> Can someone explain why UseTranspose() is hard coded to return true 
>>> in Amesos_Superludist.h:118-120
>>>
>>> 118   //! Always returns true.
>>> 119   bool UseTranspose() const {return(true);};
>>> 120   //@}
>>>
>>> I'd think it should return false since it says that Superludist does 
>>> not support transpose solves.
>>>
>>> Thanks,
>>> Travis
>>>
>>>
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>> Travis Austin, Ph.D.
>>> VP of Computational Mathematics
>>> Tech-X Corporation
>>> 5621 Arapahoe Ave, Suite A
>>> Boulder, CO 80303
>>> austin at txcorp.com <mailto:austin at txcorp.com>
>>> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> Trilinos-Users mailing list
>>> Trilinos-Users at software.sandia.gov 
>>> <mailto:Trilinos-Users at software.sandia.gov>
>>> http://software.sandia.gov/mailman/listinfo/trilinos-users
>>>  
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: https://software.sandia.gov/pipermail/trilinos-users/attachments/20120904/8fbc91f1/attachment.html 


More information about the Trilinos-Users mailing list