hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar-group.org | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | This channel is logged: irclog.cct.lsu.edu
<gnikunj[m]> hkaiser : is there a way I can have something similar to this:
<gnikunj[m]> `template <typename... Args, some_type<Args...> value_type>`
<hkaiser> gnikunj[m]: why doesn't that work?
<gnikunj[m]> because variadic templates needs to be the last argument?
<gnikunj[m]> ohh wait lol. That actually works lmao
<gnikunj[m]> hkaiser: error: parameter pack 'Args' must be at the end of the template parameter list
<hkaiser> not if it's a specialization: https://godbolt.org/z/8WvnWePE9
<gnikunj[m]> hkaiser: You are amazing. I totally forgot that!
<hkaiser> well, this is just a sketch, you need to play with it
<hkaiser> we do that with our actions, btw
<hkaiser> gnikunj[m]: ^^
<gnikunj[m]> hkaiser: got it. I was literally trying to the same thing but for charmlite lol. Btw we can also do actions if we send functions as template values. They will be resolved at the other locality based on it correctly.
<gnikunj[m]> (that's what we're doing in charmlite)
<hkaiser> well, that's what we do
<hkaiser> in the link above, 'F" is a function pointer
<gnikunj[m]> Yeah, now that I see it.
<srinivasyadav227> diehlpk_work: I can definitely help :)
jehelset has quit [Ping timeout: 250 seconds]
<gnikunj[m]> hkaiser: where are the unpacking routines of the serialized messages? I'm trying to think of a way that doesn't copy more than once and I'm failing at that :/
<hkaiser> the trivial types are handled in the output_archive and input_archive types
<hkaiser> user defined types are handled separately using the fundamental type support
<gnikunj[m]> ok, this part is understood. What I meant to say is - Once I have a buffer of Args, do I need to create a tuple of that args and initialize it with the values from buffers and then call the function with unwrapped tuple args?
<gnikunj[m]> hkaiser: ^^
<hkaiser> uhh, not sure I understand
<gnikunj[m]> I'm not sure how to explain better. Let me try this and see if it works. Else I'll try to explain it to you better.
<hkaiser> ok
<hkaiser> gnikunj[m]: do you want to serialize a list of arguments?
<gnikunj[m]> no, I want to de-serialize it from a buffer
<hkaiser> same thing
<hkaiser> we wrap them into a tuple, but with modern C++ you could serialize them using fold expressions
<hkaiser> ar & args...;
<gnikunj[m]> aah
<gnikunj[m]> that's what I meant. Wrap it into a tuple and then serialize and unfold the tuple and send it as args
<hkaiser> i.e. poor mans fold expressions
<hkaiser> the hpx tuple serialization supports non-default constructible types, so it's more involved
<gnikunj[m]> wow
hkaiser has quit [Quit: Bye!]
jehelset has joined #ste||ar
jehelset has quit [Ping timeout: 252 seconds]
<mdiers[m]> <hkaiser> "we wrap them into a tuple, but..." <- Thank you for the tip. Simplifies many things for me. 😀
<mdiers[m]> Do I see it so far correctly, that classes with several members are then compressed once as a whole and not the individual members separately?
jehelset has joined #ste||ar
hkaiser has joined #ste||ar
jiayuehua has joined #ste||ar
hkaiser has quit [Quit: Bye!]
jehelset has quit [Ping timeout: 250 seconds]
hkaiser has joined #ste||ar
<diehlpk_work> srinivasyadav227, Can you please archive this wiki page
<diehlpk_work> and add a new one with 22 and check if the projects are still ok or remove finished ones
<diehlpk_work> After that email to our mailinglists and ask people to add or edit the projects.
<srinivasyadav227> diehlpk_work: sure, I will do it soon :)
<gonidelis[m]> hkaiser: are we meeting today?
jiayuehua has quit [Quit: Connection closed for inactivity]
jehelset has joined #ste||ar
hkaiser has quit [Ping timeout: 240 seconds]
jehelset has quit [Ping timeout: 250 seconds]
hkaiser has joined #ste||ar
jehelset has joined #ste||ar
jehelset has quit [Ping timeout: 250 seconds]
hkaiser has quit [Quit: Bye!]