[Trilinos-Users] [EXTERNAL] Re: Workaround for Amesos2/SuperLU_Dist Build Errors

Siva Rajamanickam srajama at sandia.gov
Mon Apr 6 11:14:56 MDT 2015


Thanks, Nate. I have pushed a broader fix that addresses this (the addition of 
"this")
and other changes to support different versions of SuperLU_dist.

If you use the public repo, you don't need to make the changes starting next
update or next release of Trilinos.

-Siva


On 04/06/2015 11:05 AM, Nate Roberts wrote:
> Dear Trilinos-Users,
>
> A small correction to my second fix to packages/amesos2/src/Amesos2_Superludist_def.hpp: I should have replaced matrixA_ with this->matrixA_, instead of A.
>
> Regards,
> Nate
>
> On Mar 31, 2015, at 11:55 AM, "Roberts, Nathan V." <nvroberts at alcf.anl.gov> wrote:
>
>> Dear Trilinos-Users,
>>
>> We are looking to swap Amesos for Amesos2 in our framework (Camellia), which optionally supports SuperLU_Dist for global solves.  We have been running into precisely the same issue as Kris Beckwith in the thread from a few weeks ago quoted below.  I've come up with a workaround that I think will work for us, and I'm sharing in the hope that others might benefit.  (All of the below are using the public Git repository, updated today.)
>>
>>  From that thread, it sounds like even SuperLU_Dist 4.0 is subject to this issue.  Our move to Amesos2 is motivated by a user who wants support for complex variables; this is part of a move from using Epetra to Tpetra.  However, he doesn't necessarily need the SuperLU_Dist support, at least for immediate purposes, so my thought is to use build options to support two combinations:
>>
>> 1. Amesos2 + SuperLU_Dist without complex support.
>> 2. Amesos2 without SuperLU_Dist
>>
>> I see in Amesos2_Superludist.hpp the relevant instantiations appear to be governed by the flag
>>
>> HAVE_TPETRA_INST_COMPLEX_DOUBLE
>>
>> which in turn is governed (in tpetra/core/CMakeLists.txt) by the flag
>>
>> HAVE_COMPLEX_BLAS
>>
>> which in turn is governed (in Teuchos/CMakeLists.txt) by the flag
>>
>> Teuchos_ENABLE_COMPLEX
>>
>> So, my approach in our Trilinos do-configure is simply to set
>>
>> -D Teuchos_ENABLE_COMPLEX:BOOL=OFF
>>
>> whenever SuperLU_Dist support is desired.
>>
>> Now, we are also enabling support for KLU2, and there is an additional issue there: both SuperLU_Dist and KLU2 define a "CEILING" macro.  So, I renamed the one in packages/amesos2/src/SuiteSparse/KLU2/Include/klu2_version.h KLU_CEILING.
>>
>> There were two more compile issues in /Users/nroberts/publicTrilinos/packages/amesos2/src/Amesos2_Superludist_def.hpp:
>>
>> a) There were a couple calls to a non-existent method, getRawPtrComm(); I took the compiler's advice to replace with getRawMpiComm(), which seemed to make semantic sense in the context.
>> b) Line 216 involved an undeclared identifier matrixA_; I replaced with A, which seemed likely to be what was intended.
>>
>> With those changes, I was able to get everything building.
>>
>> Regards,
>> Nate
>>
>> On Mar 13, 2015, at 11:26 AM, Eric Bavier <bavier at cray.com> wrote:
>>
>>> No, this is the case in more recent SuperLU_DIST versions as well.  The complex and real headers both declare structures that are incompatible.  The Cray C++ compiler also throws errors when the real and complex versions are used together.
>>>
>>> Kris, you may try to disable the complex support in Amesos2 if you do not need it.
>>>
>>> `~Eric
>>> ________________________________________
>>> From: trilinos-users-bounces at software.sandia.gov [trilinos-users-bounces at software.sandia.gov] on behalf of Siva Rajamanickam [srajama at sandia.gov]
>>> Sent: Friday, March 13, 2015 10:55
>>> To: trilinos-users at software.sandia.gov
>>> Subject: Re: [Trilinos-Users] [EXTERNAL] Amesos2/SuperLUdist Build Errors on OSX
>>>
>>> Kris
>>>   This looks like SuperLU_dist 2.5 has definitions that don't depend on scalar
>>> types (double or complex) in both *zdef and *ddef header files. I believe this
>>> is fixed in newer versions.
>>>
>>> Thanks
>>> Siva
>>>
>>> On 03/13/2015 07:59 AM, Kris Beckwith wrote:
>>>> xtern int_t pxgstrs_init(int_t, int_t, int_t, int_t,
>>> _______________________________________________
>>> Trilinos-Users mailing list
>>> Trilinos-Users at software.sandia.gov
>>> https://software.sandia.gov/mailman/listinfo/trilinos-users
>>> _______________________________________________
>>> Trilinos-Users mailing list
>>> Trilinos-Users at software.sandia.gov
>>> https://software.sandia.gov/mailman/listinfo/trilinos-users
>> _______________________________________________
>> Trilinos-Users mailing list
>> Trilinos-Users at software.sandia.gov
>> https://software.sandia.gov/mailman/listinfo/trilinos-users
> _______________________________________________
> Trilinos-Users mailing list
> Trilinos-Users at software.sandia.gov
> https://software.sandia.gov/mailman/listinfo/trilinos-users



More information about the Trilinos-Users mailing list