RostamLog_ has joined #ste||ar
<Smasher> here's my class impl
* Smasher pats hkaiser
<hkaiser> Smasher: everything is possible, it's just c++
<Smasher> hkaiser that's your favorite answer, isnt it? :))
<Smasher> hkaiser give me a hint
<github> [hpx] hkaiser force-pushed channel_one_element from e47bef3 to 497d413:
<github> hpx/channel_one_element 497d413 Hartmut Kaiser: Add lcos::local::one_element_channel...
<hkaiser> Smasher: you're missing one of those pesky action macros
<Smasher> ahh the macros :)
<hkaiser> or you're missing to specify the right cmake target dependencies
<Smasher> well i have HPX_DEFINE_COMPONENT_ACTION() in my class declaration, HPX_REGISTER_ACTION_DECLARATION in the same header
<Smasher> and in the cxx file i have HPX_REGISTER_COMPONENT and HPX_REGISTER_ACTION
<hkaiser> Smasher: ok, do you actually link with the component?
<Smasher> i cant link with that component
<Smasher> [19:28:01] <Smasher> i cant provide the implementation of hpx_zfm_fingerprint_provider_server on this machine [19:28:19] <Smasher> it works only on pi
bikineev has quit [Remote host closed the connection]
bikineev has joined #ste||ar
<K-ballo> ?
<hkaiser> so let the function be empty on the pi, the action type must be available, though
<Smasher> hmmm
<Smasher> you mean vise versa i guess
<Smasher> on the pi i can have the real implementation
<hkaiser> nod
<Smasher> should i just put a dummy function for that on windows?
<hkaiser> just #ifdef the function buddy
<Smasher> well i ifdeffed the whole source file
<Smasher> like this
<Smasher> but #ifdef could help there too
<Smasher> lemme try it
bikineev has quit [Remote host closed the connection]
<hkaiser> functin body, that is (don't know what I was thinking...)
<hkaiser> just leave the function empty, conditionally
<Smasher> i tried it like this:
<Smasher> but the linking failed again
<Smasher> ah okay
<Smasher> nvm
<Smasher> i think i understand
<Smasher> macros must be called too
<Smasher> it wörked ^___^
<Smasher> K-ballo it works only on raspberry pi because it uses functions from WiringPi to access GPIO, which is not doable on the normal box
RostamLog_ has joined #ste||ar
<Smasher> hkaiser local_new is almost the same as new_(find_here()) correct?
<Smasher> with that difference that it allows usage of references
<hkaiser> should be the same, yah
<hkaiser> Smasher: I was actually thinking to directly map new_<T>(here()) onto local_new<T>()
<Smasher> im not sure how to couple local_new with an action now...
<hkaiser> not sure what you mean
<Smasher> if i create a component wich calls an action, that component needs an id to pass to that action
<hkaiser> right
<hkaiser> so give it the id it should use
<hkaiser> I though yu had alreay implemented that
<Smasher> that another jobsite :)
<Smasher> so i have a constructor my_caller(hpx::future<hpx::id_type> &&gid);
<Smasher> and i derive from client_base
<Smasher> so i can call this->get_id()
<Smasher> right?
<Smasher> but what if i want to create that caller using local_new
<hkaiser> Smasher: how would you do it without hpx?
<hkaiser> now, replace new with local new and the pointer with id_type - done
<Smasher> fp = hpx::components::local_new<hpx_zfm_fingerprint_provider>(hpx::find_here()); ??
<Smasher> that would be kina done twice then
<hkaiser> why find_here?
<hkaiser> shouldn't that be the id of the component you want to call back into?
<Smasher> hä
<Smasher> i thought that's an id of the target component where the action should be executed
<hkaiser> sure
<Smasher> so i am all local
<hkaiser> but find_here() does not refer to a component
eschnett has quit [Quit: eschnett]
aserio has quit [Ping timeout: 272 seconds]
<Smasher> i am somehow tending to implement it like this if( == null) { function() } else { action(id) }
<Smasher> because i really dont understand how should i implement that
<hkaiser> what?
<hkaiser> again: first implement it without hpx
<hkaiser> as if you were allocating your objects on the heap, use unique_ptr (or shared_ptr) to control the lifetime of those objects
<Smasher> i wouldnt need an id then
<hkaiser> once that works, replace new with new_/local_new and shared_ptr<T> either with id_type of client<T> or with a type which is derived from client_base
<hkaiser> id_type or* client...
<hkaiser> why is that so difficult to understand?
<Smasher> hkaiser
<hkaiser> ok
<Smasher> like this?
<hkaiser> so now apply the changes I suggested
aserio has joined #ste||ar
<Smasher> hkaiser
<hkaiser> right, so was that difficult?
<Smasher> sometimes i cannot think straight because i see only templates and namespaces
eschnett has joined #ste||ar
<aserio> hkaiser: Did you tell Louis about Brant?
<hkaiser> aserio: Steve? yes, I mentioned it to him
<aserio> ok :)
<Smasher> this is actually my first c / c++ project of that size... after years of java experience... sorry that i sometimes need explanations like im 5 :)
eschnett has quit [Read error: Connection reset by peer]
EverYoung has quit [Remote host closed the connection]
eschnett has joined #ste||ar
EverYoung has joined #ste||ar
denis_blank has joined #ste||ar
eschnett has quit [Read error: Connection reset by peer]
eschnett has joined #ste||ar
eschnett has quit [Client Quit]
RostamLog has joined #ste||ar
hkaiser has quit [Quit: bye]
aserio has quit [Ping timeout: 268 seconds]
aserio has joined #ste||ar
eschnett has joined #ste||ar
<heller__> boost.outcome incoming!
<zao> uh-oh
<jbjnr> heller__:
<jbjnr> oops
<heller__> jbjnr: hm?
<jbjnr> hold on
<jbjnr> can't paste from my linux box into here....<grrr>
<jbjnr> if I have a function in hpx::serialization that looks like this
<jbjnr> template <typename T>
<jbjnr> void save_impl(output_archive & ar, const rma::rma_vector<T> & v, std::true_type)
<jbjnr> how can I make it a friend of the output archive, so I can access save_binary_chunk (which is private)
<jbjnr> nothing I've tried works
<jbjnr> (rma_vector is an alias of std::vector<T, rma::allocator<T>>
diehlpk has quit [Quit: Leaving]
<heller__> hmmm
<heller__> jbjnr: give me a second
<heller__> shuold work out of the box though
aserio has quit [Ping timeout: 255 seconds]
bikineev has joined #ste||ar
<Smasher> what does that mean?
<Smasher> {what}: archive data bstream is too short: HPX(serialization_error)
aserio has joined #ste||ar
zbyerly_ has joined #ste||ar
aserio changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | | HPX: A cure for performance impaired parallel applications | | Buildbot: | Log:
aserio changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | | HPX: A cure for performance impaired parallel applications | | Buildbot: | Log:
<aserio> You are now all being watched :p
<Smasher> :)
<jbjnr> Smasher: that error means that when a parcel was decoded, it had incorrect data
<jbjnr> are you doing anything unusual?
<Smasher> nope
<Smasher> i am trying to receive an array
eschnett has quit [Quit: eschnett]
<Smasher> std::array<char, bmp_file_size> buffer = action_type()(this->get_id());
<Smasher> and action is this: std::array<char, bmp_file_size> hpx_zfm_fingerprint_provider_server::get_fingerprint_from_zfm20() {
<Smasher> the one instance is running on pi (callee) and the another on win (caller)
hkaiser has joined #ste||ar
ABresting[m] has quit [Ping timeout: 246 seconds]
<Smasher> am i running this correctly?
<Smasher> nothing happens...
<Smasher> ah,now
<Smasher> the pi throws an error
<hkaiser> timed out?
<Smasher> no
<Smasher> {what}: assertion 'ctor != nullptr' failed: HPX(assertion_failure)
<hkaiser> where?
<Smasher> the backtrace doesnt look verbose :(
<hkaiser> run it with --hpx:attach-debugger=exception
<hkaiser> if it stops printing a pid, use gdb to connect to the process
zbyerly_ has quit [Quit: Leaving]
<Smasher> yes: PID: 4965 on rpi1 ready for attaching debugger. Once attached set i = 1 and continue
<hkaiser> right now use gdb in a separate terminal: gdb -p 4965
<Smasher> ^^
<hkaiser> find the thread sitting in a nanosleep
<Smasher> he doesnt like my dwarfs
<Smasher> maybe just print log?
<hkaiser> shrug
<hkaiser> Smasher: I'd say it's still trying to use an unknown action
<Smasher> let me check if that ifndef of mine works as expected
<Smasher> maybe im defining a member function twice
<hkaiser> let me turn that into a proper exception
<github> [hpx] hkaiser pushed 1 new commit to master:
<github> hpx/master da5d22c Hartmut Kaiser: Turning assert into real exception
<hkaiser> Smasher: ^^
<Smasher> __arm__ seems to be defined with my cross compiler
<Smasher> hkaiser ok rebuilding hpx
<hkaiser> Smasher: since you're using different compilers for the ends of your communication pipe its very important to make sure all your integral types sent over the wire are actually fixed size (i.e. uint16_t or int64_t, and not 'short' or just 'int'
<hkaiser> does arm have a different endianess as well?
<jbjnr> arm isn't different endian - but by default, the arm compile will produce 32bit binarm8 which is a 64 bit processoraries even on
<jbjnr> ^binaries I meant to write
<jbjnr> sorry, my trackpad is squiffy
<Smasher> hkaiser what to use instdead of char?
<jbjnr> char is ok
<hkaiser> char is fine
<Smasher> i am using char and a hm..
<jbjnr> hm?
<Smasher> :)
<jbjnr> or hmmm....
<Smasher> bitfile_size
<Smasher> gotta look how i defined it
<Smasher> const size_t bmp_file_size = 0x12076;
<Smasher> size_t should be portable too
<jbjnr> size_t will be 64/32
<Smasher> oh
<jbjnr> use uint32_t or similar
<jbjnr> (just to play safe)
<Smasher> okay, im rebuilding hpx now and will fix that value then
<Smasher> type^
<Smasher> meanwhile another topic: have anybody already used DTL with HPX ?
<hkaiser> what's DTL?
<Smasher> Database Template Library
<Smasher> or can you recommend another library for database access which works well with hpx?
<hkaiser> I have no experience with that, but I wouldn't expet problems as long as the library does not create its own threads
<jbjnr> omg - I finally got mt serialization specialization to compile without my filthy hacks!
<Smasher> hpx built - transferring to pi
<Smasher> some serious joghurt munching meanwhile
eschnett has joined #ste||ar
akheir has quit [Remote host closed the connection]
<Smasher> hkaiser
<Smasher> notify_worker_action ?
<Smasher> not my cup of tea i guess
<github> [hpx] hkaiser pushed 1 new commit to master:
<github> hpx/master 73d2594 Hartmut Kaiser: Fixed error condition
<hkaiser> Smasher: I'm sorry, I got it wrong, pushed a fix to the fix ;)
<Smasher> woot
<jbjnr> pushing direct to master. tut. tut.
<Smasher> hehehhe
<Smasher> because he CAN
aserio has quit [Quit: aserio]
* jbjnr is falling asleep. goodnight all
<Smasher> gn
<Smasher> yes, the problem is the unknown action
<Smasher> hkaiser can multi-inheritance cause that?
<Smasher> hmm.. i dont think so
bikineev has quit [Remote host closed the connection]
EverYoun_ has joined #ste||ar
EverYoung has quit [Ping timeout: 246 seconds]
bikineev has joined #ste||ar
<Smasher> c++filt cannot unmangle this name N3hpx10components6server23create_component_actionI35hpx_zfm_fingerprint_provider_serverJEEE
<K-ballo> demangle
<Smasher> ^
<K-ballo> I don't know what that J in there is.. you sure that's all?
<K-ballo> even the Es seem unbalanced
EverYoun_ has quit [Remote host closed the connection]
EverYoung has joined #ste||ar
<hkaiser> Smasher: did you see my message that I screwed up the first attempt?
<Smasher> ah yes hkaiser
<hkaiser> Smasher: ok, I think I know what's going on...
<hkaiser> let me investigate
<Smasher> ok im patient ;)
mcopik has joined #ste||ar
<hkaiser> the create component actions are not registered by default, those are auto-registered
<hkaiser> that means that they will be available only in binaries which use it
<hkaiser> mcopik: hey
<hkaiser> did they manage to get you to toronto?
<Smasher> hkaiser well :) that's where we started
<Smasher> "how to decouple components"
<hkaiser> right
<hkaiser> I had that solved somewhere, but don't remember where :/
Matombo has quit [Remote host closed the connection]
<hkaiser> Smasher: as a workaround you could add code to the binary which currently does not create that component to force it to instantiate that action
<Smasher> "the binary which currently does not create that component"
<mcopik> hkaiser: hi
<mcopik> it's a clusterfuck
<hkaiser> just write a function which does a local_new<Component>, you don't have to actually call this function
<hkaiser> mcopik: uhh
<hkaiser> where are you now?
<mcopik> I'm in a hotel in Frankfurt
<hkaiser> :(
<mcopik> I tried to rebook by an agent, no luck
<hkaiser> what does the airline say?
<Smasher> hkaiser i have to understand now who creates that component
<hkaiser> Smasher: who should know if not you
<hkaiser> the side calling new_, I guess
<Smasher> this is the place where i call new_, right?
<hkaiser> yes
<hkaiser> so the other side needs that too
<Smasher> the other side does nothing
<hkaiser> but you don't have to execute the code, just have it compiled in
<Smasher> okay
<Smasher> int hpx_main() {
<Smasher> bz3Server s;
<Smasher> hpx::agas::register_name("phmf_zfm_server", hpx::find_here());
<Smasher> }
<hkaiser> (and pray that the linker doesn't remove it ;)
<Smasher> im instantiating a bz3Sevrer to link against it
<Smasher> that was that dynamic loading issue
<mcopik> hkaiser: I tried to rebook through a helpdesk by calling Air Canada and they told me that there is a possibility for a morning flight tomorrow but I can't take it because I don't have my checked-in luggage
<Smasher> now adding a local new there
<mcopik> and I don't have it because we were not allowed to pick it up
<hkaiser> wouldn't they forward that automatically?
<hkaiser> mcopik: ^^
<mcopik> hkaiser: the guy on the phone told me that he's not able to modify booking because of that reason
<mcopik> we all have a flight for tomorrow but it will arrive at 9 pm in Toronto
<mcopik> so no presentation for me, I'll just participate in IWOCL
shoshijak has quit [Ping timeout: 240 seconds]
<hkaiser> Smasher: it needs the zfm_fingerprint_provider_server
<hkaiser> mcopik: if you tell Michael, he might be able to reoranize the agenda for you
<hkaiser> reorganize
<hkaiser> or is it just one day?
<hkaiser> Smasher: as said, the easiest is to use the same binary (sans recompiled for the different platforms)
<Smasher> hkaiser impossible
<hkaiser> why?, #ifdef the code which is not needed/exected
<Smasher> <Smasher> i cant provide the implementation of hpx_zfm_fingerprint_provider_server on this machine <Smasher> it works only on pi
<hkaiser> you can safely #ifdef that code as it will never be executed, or add a #else assert() just in case
<Smasher> with an #ifdef i already have the same code
<Smasher> well almost
<hkaiser> everuthing else will be a pain in the neck
<hkaiser> well, you showed a 3 liner, that can't be all of your code
<Smasher> hmmhm
<Smasher> i'll upload more wait
<hkaiser> no need
<hkaiser> just make sure all of the code is compiled in, but avoid executing it
<mcopik> hkaiser: yes, it's just one day. tomorrow is DHPCC (or however it's called), my presentation is at noon
<mcopik> Wednesday and Tuesday is all OpenCL day
<hkaiser> :(
<mcopik> hkaiser: I'm terribly disappointed. I don't if the paper is supposed to appear in proceedings or not, the information was not clear there, but even if then I'm afraid they'll change their mind because no speaker has shown up
<hkaiser> mcopik: nah, don't think so, just let Michael know that you got stuck
<mcopik> hkaiser: I sent two emailes already to (also main workshop email) explaining the situation and apologizing
<hkaiser> nod, that should do it
EverYoung has quit [Ping timeout: 272 seconds]
EverYoung has joined #ste||ar
<Smasher> hkaiser back on track now... will try first to call hpx::components::local_new<hpx_zfm_fingerprint_provider_server>(); from my executable
<mcopik> hkaiser: well, I can only hope I'll get to Toronto on tomorrow's evening
<Smasher> and will see if this maybe helps
EverYoung has quit [Remote host closed the connection]
EverYoung has joined #ste||ar
bikineev has quit [Remote host closed the connection]
bikineev has joined #ste||ar