hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar.cct.lsu.edu | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | Buildbot: http://rostam.cct.lsu.edu/ | Log: http://irclog.cct.lsu.edu/ | GSoD: https://developers.google.com/season-of-docs/
nikunj97 has joined #ste||ar
nikunj97 has quit [Remote host closed the connection]
K-ballo has quit [Quit: K-ballo]
weilewei has quit [Remote host closed the connection]
weilewei has joined #ste||ar
weilewei has quit [Remote host closed the connection]
hkaiser has quit [Ping timeout: 276 seconds]
nikunj has joined #ste||ar
nikunj has quit [Remote host closed the connection]
nikunj has joined #ste||ar
nikunj has quit [Remote host closed the connection]
nikunj has joined #ste||ar
nikunj has quit [Remote host closed the connection]
nikunj has joined #ste||ar
K-ballo has joined #ste||ar
nikunj has quit [Remote host closed the connection]
rori has joined #ste||ar
rori has quit [Read error: Connection reset by peer]
hkaiser has joined #ste||ar
Coldblackice has quit [Ping timeout: 276 seconds]
Coldblackice has joined #ste||ar
Coldblackice has quit []
bibek has quit [Quit: Konversation terminated!]
bibek has joined #ste||ar
<heller> pretty interesting: https://www.youtube.com/watch?v=TyiiNVA1syk
nikunj has joined #ste||ar
aserio has joined #ste||ar
<hkaiser> heller: not sure if you have seen this:
<hkaiser> heller: I have separated out the formatting from the real changes for the serialization work: https://github.com/hkaiser/hpx/tree/module_serialization_2
<hkaiser> looks better now, much easier to grasp
<heller> cool!
<heller> hkaiser: should we rather go with tag types for the extra data than with indices?
<heller> hkaiser: pointer tracking is also kind of a core feature of the archive, I think. any particular reason you put that as part of the extra data stuff?
hkaiser has quit [Ping timeout: 276 seconds]
<heller> disregard my second statement...
weilewei has joined #ste||ar
<diehlpk_work> jbjnr_, Which branch should I use to compile HPX with libfabric?
<diehlpk_work> Are there any special things, I have to do for power9?
aserio1 has joined #ste||ar
hkaiser has joined #ste||ar
aserio has quit [Ping timeout: 240 seconds]
aserio1 is now known as aserio
<hkaiser> heller: see #4114
nikunj has quit [Quit: Bye]
<heller> hkaiser: did you run the performance test yet?
aserio has quit [Ping timeout: 245 seconds]
weilewei has quit [Remote host closed the connection]
aserio has joined #ste||ar
weilewei has joined #ste||ar
<hkaiser> heller: I have not
<heller> ok
<heller> hkaiser: Why did you go for index based lookup instead of type tag?
<heller> hkaiser: index based might not be a good option for being externally extensible
<hkaiser> heller: because the archive does not know anything about the types
<heller> sure, only the user of the the extension
<heller> but what if I add an extension with index 1?
<hkaiser> heller: lthen you're screwed
<heller> right
<hkaiser> it will throw
<heller> that's what I am saying, can't I do an any_cast<T> instead?
<heller> or something like that?
<hkaiser> the archive holds an array of types
<heller> yes
<hkaiser> so which one of its elements you want to do the any_cast with
<heller> the right one :P
<hkaiser> hah!
<heller> I was thinking along the lines of extension info though
<hkaiser> well, I didn't know how to solve this efficiently
<heller> where you could do a static_cast to the right super class and get the righ thing (tm)
<hkaiser> I think the current solution is fine as you will not change the data stored in the archive too often
<hkaiser> in which case it requires a bit of corrdination
<heller> yes, potentially making two different libraries incompatible because both choose the natural index 2 for their data
<heller> since 0 and 1 are already taken
<heller> or make it 3 ...
<heller> and we can't easily add more
<hkaiser> heller: no
<heller> no?
<hkaiser> your library will use your data
<hkaiser> so you know what you're serializing
<hkaiser> if you wan to also support HPX types you will need to ad your archive extension types to the end
<heller> yes, but in order to extend the archive, like what you have done for 1) size calculation 2) future awaiting and 3) gid splitting
<hkaiser> 1) is pointer tracking, not size calculation
<hkaiser> heller: well, if you have an idea how to do this, pls let me know
<K-ballo> hkaiser: do you still use ramdisk?
aserio has quit [Ping timeout: 264 seconds]
<hkaiser> K-ballo: yah
<K-ballo> I'm limited to 3gb, which is proving insufficient
<K-ballo> presumably the new paid version can go above it
<heller> hkaiser: https://godbolt.org/z/UMOg4S <--- something along those lines?
<hkaiser> K-ballo: I'm using an older version (last free version)
<K-ballo> yeah me too, 3.4.8
<hkaiser> heller: can you try_get with this scheme?
<heller> hkaiser: yes, dynamic_cast will return nullptr if the type's not in
<hkaiser> mine has no restrictions K-ballo
<heller> hkaiser: no idea if it is efficient though
<hkaiser> hmmm
<K-ballo> it's a win10-1803 limitation
<hkaiser> ahh
<K-ballo> 4gb disks will fail to mount
<heller> hkaiser: it is certainly extensible by not relying on magic indices ;)
<hkaiser> right
<heller> hkaiser: the dynamic alloc can go away, probably, and we can perform a potential empty base optimization
<hkaiser> let me get all test passing etc, then I'll look into this
<heller> thanks
<heller> the only remaining issue would be the dynamic_cast ... a static_cast should be possible, somehow...
<hkaiser> if you know the type is in the base-list static_cast will do
<heller> right, but we can't know that
<hkaiser> heller: you could enable_if get()
<hkaiser> no, I take that back
<heller> any isn't free either...
<hkaiser> sure
aserio has joined #ste||ar
<heller> hkaiser: i know how to do it without dynamic casting...
<heller> Give me 30 minutes...
<hkaiser> heller: nice
<heller> Could even be constexpr...
weilewei has quit [Remote host closed the connection]
hkaiser has quit [Ping timeout: 245 seconds]
weilewei has joined #ste||ar
weilewei has quit [Remote host closed the connection]
<heller> et voila: https://godbolt.org/z/_BHSDP
<heller> if hkaiser pops up...
<heller> now K-ballo can take it apart ;)
<K-ballo> what's the end goal?
<heller> to allow the serialization archive to be extended from the outside, to for example handle hpx::future or hpx::id_type correctly without the archive needing to depend on either of them
<heller> to be able to say something like ar.get<future_handler>()->attach_future(f);
<heller> or ar.get<split_id_handler>->add_split_gid(gid);
<heller> inside the serialization functions of future, or id_type that is
<heller> (with appropriate checks if those have been indeed been added to the archive at construction
<heller> so get might return nullptr
<K-ballo> I assume you've considered how shared_ptr is integrated with boost.serialization already
<heller> no
<K-ballo> boost.serialization has some sort of extension mechanism, which allows external types to customize serialization, in particular shared_ptr wants to preserve references
<K-ballo> I've only heard of it, I've never actually seen it in code
<heller> ok
<heller> I looked at the pointer tracking once
<heller> which is similar
<heller> and we have that as well
<heller> hkaiser wants to have that as part of the mechanism as well
<heller> last time I looked at it (before we wrote our own serialization) there was no such extension mechanism
<heller> ahh, that's cool
<K-ballo> it's like user defined attributes for the archive model
<heller> and looks indeed like what we want ;)
<K-ballo> your description sounded just like it
<heller> thanks
aserio has quit [Ping timeout: 264 seconds]
nikunj has joined #ste||ar
nikunj has quit [Remote host closed the connection]
nikunj has joined #ste||ar
hkaiser has joined #ste||ar
aserio has joined #ste||ar
aserio has quit [Client Quit]
<hkaiser> heller: nice!
nikunj has quit [Ping timeout: 276 seconds]
weilewei has joined #ste||ar