[Trilinos-Users] [EXTERNAL] Amesos2/SuperLUdist Build Errors on OSX

Kris Beckwith beckwith at txcorp.com
Fri Mar 13 10:46:54 MDT 2015


Hi,

Thanks for the response. Unfortunately, from what we have been able to find out, SuperLU_dist v4.0 suffers from the same issue.
In addition, SuperLU_dist v4.0 has API changes from 2.5 which don’t appear to be compatible with Amesos (rather than Amesos2)
in Trilinos 11.14.1 (specifically calls to LUstructInit in Amesos_Superludist.cpp)

We have also found that this problem not only affects clang 6.0.0 on OSX Yosemite, but also gcc 4.9 and clang 3.5.0 on Linux. My colleague,
Dominic Meiser (cc’d on this email) has come up with a (very) simple test program that demonstrates the issue:

#include <superlu_defs.h>
namespace D {
#include <superlu_ddefs.h>
}
namespace Z {
#include <superlu_zdefs.h>
}

int main() {
}

Compiling this with clang (or gcc4.9):

clang++ -I ${SuperLU_DIST_4.0_PATH}/SRC/ -I ${MPI_PATH}/openmpi/include/ -c test_slu.cpp

Yields the errors given at the end of this email. This problem stems, as you say, from SuperLU_dist having definitions that don’t
depend on scalar types in both the *zdef and the *ddef header files. A possibility that we were considering was refactoring SuperLU_dist
so that the duplicate definitions are removed; however, because some struct’s with the same names have different definitions inside the zdef
and ddef files, this turns out to be much more difficult.

A further problem is that we need complex support in other parts of Trilinos. As complex support in Amesos2 is keyed of the HAVE_TEUCHOS_COMPLEX
compiler directive, there doesn’t seem to be an easy to just turn that part of Amesos2 off. The solution for now then seems to be to disable SuperLU_dist
support in Amesos2 completely.

Since this issue comes up under new versions of gcc on Linux as well, has the Trilinos team determined a strategy to resolve this problem (which
seems to be a pretty fundamental software engineering issue)?

Thanks,

Kris

-- 
Kris Beckwith             beckwith at txcorp.com
Tech-X Corporation
5621 Arapahoe Ave, Suite A
Boulder, CO 80303 
Phone: 303-996-2027
Fax:   (303) 448-7756
--

SuperLU_DIST_4.0/SRC/superlu_zdefs.h:260:14: error: conflicting types for 'pxgstrs_init'
extern int_t pxgstrs_init(int_t, int_t, int_t, int_t,
            ^
SuperLU_DIST_4.0/SRC/superlu_ddefs.h:260:14: note: previous declaration is here
extern int_t pxgstrs_init(int_t, int_t, int_t, int_t,
            ^
In file included from test_slu.cpp:6:
SuperLU_DIST_4.0/SRC/superlu_zdefs.h:263:13: error: conflicting types for 'pxgstrs_finalize'
extern void pxgstrs_finalize(pxgstrs_comm_t *);
           ^
SuperLU_DIST_4.0/SRC/superlu_ddefs.h:263:13: note: previous declaration is here
extern void pxgstrs_finalize(pxgstrs_comm_t *);
           ^
In file included from test_slu.cpp:6:
SuperLU_DIST_4.0/SRC/superlu_zdefs.h:267:13: error: conflicting types for 'static_schedule'
extern int  static_schedule(superlu_options_t *, int, int,
           ^
SuperLU_DIST_4.0/SRC/superlu_ddefs.h:267:13: note: previous declaration is here
extern int  static_schedule(superlu_options_t *, int, int,
           ^
In file included from test_slu.cpp:6:
SuperLU_DIST_4.0/SRC/superlu_zdefs.h:318:16: error: conflicting types for 'Destroy_LU'
extern void    Destroy_LU(int_t, gridinfo_t *, LUstruct_t *);
              ^
SuperLU_DIST_4.0/SRC/superlu_ddefs.h:316:16: note: previous declaration is here
extern void    Destroy_LU(int_t, gridinfo_t *, LUstruct_t *);
              ^
In file included from test_slu.cpp:6:
SuperLU_DIST_4.0/SRC/superlu_zdefs.h:319:16: error: conflicting types for 'LUstructInit'
extern void    LUstructInit(const int_t, LUstruct_t *);
              ^
SuperLU_DIST_4.0/SRC/superlu_ddefs.h:317:16: note: previous declaration is here
extern void    LUstructInit(const int_t, LUstruct_t *);
              ^
In file included from test_slu.cpp:6:
SuperLU_DIST_4.0/SRC/superlu_zdefs.h:320:16: error: conflicting types for 'LUstructFree'
extern void    LUstructFree(LUstruct_t *);
              ^
SuperLU_DIST_4.0/SRC/superlu_ddefs.h:318:16: note: previous declaration is here
extern void    LUstructFree(LUstruct_t *);
              ^
6 errors generated.

> On Mar 13, 2015, at 9:55 AM, Siva Rajamanickam <srajama at sandia.gov> wrote:
> 
> 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



More information about the Trilinos-Users mailing list