[Trilinos-Users] [EXTERNAL] instantiation with long and long?
Cihan Altinay
c.altinay at uq.edu.au
Thu Apr 7 21:53:09 EDT 2016
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
>>
>
More information about the Trilinos-Users
mailing list