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!
signature.asc
Description: Digital signature
_______________________________________________ hpx-users mailing list [email protected] https://mail.cct.lsu.edu/mailman/listinfo/hpx-users
