Hey,

On 20:36 Tue 01 Nov     , Hartmut Kaiser wrote:
> {what}: Unknown typename:
> N12LibGeoDecomp11HPXReceiverIdN3hpx4lcos5local14receive_bufferIdNS3_8spinloc
> kEEEE13receiveActionE: HPX(serialization
> 
> Did that ever work on your notebook? Looks like a compiler specific issue to
> me.

Yeah, it did work consistently in the past, but I don't think I've
ever used GCC 5 for that build constellation before. Actually, when I
switch to GCC 4.9.4 the error goes away. It's repeatable for GCC
5.1.0, 5.3.0, and 5.4.0. My CI tests are using GCC 4.9.3 for the
LibGeoDecomp + HPX tests, so maybe that's the reason why I haven't
seen this issue pop up before.

Inside LibGeoDecomp we have the HPXReceiver[1], which is basically a
wrapper for hpx::lcos::local::receive_buffer. Users need to register
all types which they plan to use with the HPXReceiver via the macro
LIBGEODECOMP_REGISTER_HPX_COMM_TYPE[2], which internally instantiates
a couple of HPX macros to register actions and components. For some
basic types (e.g. char and double) this macro instantiation is already
done inside libgeodecomp.so[3].

Now, if I add "LIBGEODECOMP_REGISTER_HPX_COMM_TYPE(double)" to source
of the currently failing test, then this test will work correctly.
However, I have another test in the same directory[4], both of which are
compiled separately, but linked into the same executable. And my tests
will only work if I add that macro instantiation to the source file
whose tests are being run first. I can't know the order for any
machine and I can't add the macro instantiation to all tests as in
that case the linker will complain about duplicate symbols.

Could if be that with GCC 5 the way static members in different
objects are being initialized has changed? Could it be that the
compiler is applying some clever optimization that causes the type to
be sent (std::vector<double> and std::vector<char>) to not be
registered with HPX' serialization framework in time?

Cheers
-Andreas

[1] 
https://github.com/gentryx/libgeodecomp/blob/master/src/communication/hpxreceiver.h
[2] 
https://github.com/gentryx/libgeodecomp/blob/master/src/communication/hpxreceiver.h#L17
[3] 
https://github.com/gentryx/libgeodecomp/blob/master/src/communication/hpxreceiver.cpp#L11
[4] 
https://github.com/gentryx/libgeodecomp/tree/master/src/communication/test/parallel_hpx_4


-- 
==========================================================
Andreas Schäfer
HPC and Supercomputing
Institute for Multiscale Simulation
Friedrich-Alexander-Universität Erlangen-Nürnberg, Germany
+49 9131 85-20866
PGP/GPG key via keyserver
http://www.libgeodecomp.org
==========================================================

(\___/)
(+'.'+)
(")_(")
This is Bunny. Copy and paste Bunny into your
signature to help him gain world domination!

Attachment: signature.asc
Description: Digital signature

_______________________________________________
hpx-users mailing list
[email protected]
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users

Reply via email to