[Trilinos-Users] [EXTERNAL] instantiation with long and long?

Booth, Joshua Dennis jdbooth at sandia.gov
Fri Apr 15 03:57:48 EDT 2016


Hi Chihan.  I take care of the Mumps interface in Amesos2.   The problem is that you cannot build with long int eti for local type with mumps. There is a warning about this in the cmake configure at the beging. also i pushed a bigger more complete warning on this a few weeks ago. So I wonder if you are using a new pull. If you ttill needed this configure we can talk about it more and you can email me directly.

Joshua Booth
________________________________________
From: Trilinos-Users <trilinos-users-bounces at trilinos.org> on behalf of Cihan Altinay <c.altinay at uq.edu.au>
Sent: Thursday, April 7, 2016 7:53 PM
To: Prokopenko, Andrey (-EXP)
Cc: trilinos-users at trilinos.org
Subject: Re: [Trilinos-Users] [EXTERNAL]  instantiation with long and long?

Hi Andrey,

Thanks for the info. I disabled ETI as suggested but now I am getting
compile errors using Amesos2:

/opt/trilinos/include/Amesos2_MUMPS_def.hpp:420:19: error: cannot
convert ‘Amesos2::MUMPS<Tpetra::CrsMatrix<double, long int, long int,
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP> >,
Tpetra::MultiVector<double, long int, long int,
Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP> >
 >::local_ordinal_type* {aka long int*}’ to ‘int*’ in assignment
      mumps_par.irn = (local_ordinal_type*)malloc(mumps_par.nz
*sizeof(local_ordi
                    ^

I know MUMPS only supports ordinal type int and I did build Trilinos
with MUMPS support, however I do NOT instantiate a solver for MUMPS in
this example. In fact as soon as I put any Amesos2::create<...>() call
in my code the compilation aborts with the above.
 From this my conclusion was that I need explicit instantiation but
again that does not work either.

Just to clarify my aim was to build a fairly full-featured trilinos once
and use it with different "versions" of our project (i.e. using
different ordinal types and maybe enable/disable OpenMP etc). I was
hoping I could conditionally compile in certain features, for example
remove any reference to MUMPS and other TPLs in my project that don't
support the ordinal type in use. But if I can't use Amesos2 at all that
will obviously not work.

Hints?

Thanks again,
Cihan

On 08/04/16 06:27, Andrey Prokopenko wrote:
> Hi Cihan,
>
> I don't think it will easily work with explicit instantiation turned on.
> This is not our typical use case, and we don't test for local ordinals =
> long. If you are not too concerned with build times, it may be easier to
> simply disable Trilinos ETI to get what you want. If you have reasons
> why you have to use ETI, we can discuss the next steps that may be
> necessary.
>
> -Andrey
>
> On 04/05/2016 01:12 AM, Cihan Altinay wrote:
>> Howdy,
>>
>> We would like to use Tpetra, Belos, Amesos2 and MueLu with both local
>> index type = long and global index type = long. Unfortunately, this
>> does not appear to be supported out of the box, at least I couldn't
>> find the right CMake settings.
>> I suppose I have to manually instantiate all the required classes with
>> the appropriate types or is there another way?
>> At the moment I am getting undefined symbol errors at runtime in our
>> project such as (demangled):
>>
>> MueLu::TpetraOperator<double, long, long,
>> Kokkos::Compat::KokkosDeviceWrapperNode<Kokkos::OpenMP,
>> Kokkos::HostSpace> >::getDomainMap() const
>>
>>
>> Thanks for any hints!
>> Cihan
>>
>

_______________________________________________
Trilinos-Users mailing list
Trilinos-Users at trilinos.org
https://trilinos.org/mailman/listinfo/trilinos-users


More information about the Trilinos-Users mailing list