K-ballo 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/
bita has joined #ste||ar
<hkaiser> gnikunj[m]: I always said that the book was old and probably a bit outdated, but it's still the best resource to understand the inner workings of meta programming
<gnikunj[m]> hkaiser: and you are totally right. It's just that I slacked off and didn't know mp11 existed :D
<gnikunj[m]> the more I'm learning about boost libraries, the more interesting it's getting. Historically, I only knew of boost functions that hpx relied on. But there's a lot more to boost than that.
<hkaiser> gnikunj[m]: btw, the main problem I have with spirit v2 is that it doesn't support move semantics for the attributes (as it predates C++11)
<gnikunj[m]> does it create any issues?
<hkaiser> well, all attributes are copied when being propagated up through a parser hierarchy
akheir has quit [Quit: Leaving]
<zao> Spirit X3 is fun, especially when the parser compiles but doesn't do what it should to your data.
<zao> (std::ref is always good, btw :D )
<gnikunj[m]> lol I wouldn't want that to happen with my code
<zao> Reminds me of trying to use Parsec in Haskell with those weirdo Applicative operators that silently just skipped some of the parse.
<K-ballo> a very limited subset of Qi/X3 is actually mostly fine, the non magical stuff at least
bita has quit [Ping timeout: 256 seconds]
hkaiser has quit [Quit: bye]
bita has joined #ste||ar
bita has quit [Ping timeout: 246 seconds]
LiliumAtratum has joined #ste||ar
<LiliumAtratum> ms[m], to answer your question from yesterday - I have worker threads + an OS thread (for rendering) accessing the same registry to fetch data, but these need to be performed under a RW-lock. I use `hpx::this_thread::get_id()` for debugging purposes to understand who holds the current locks.
<ms[m]> LiliumAtratum: all right
<LiliumAtratum> Today I have a slightly different question - do I have a guarantee that each `hpx::async` (invoked without main pool executor) will spawn a new task with a unique `hpx::this_thread::get_id()`? Or should I use a different function for a task, and the `hpx::this_thread::get_id()` just gives me a worker thread id?
<LiliumAtratum> (I mean "... different function for a task ID")
<ms[m]> the id will be unique among the tasks that are currently "active" (i.e. created, suspended, running, etc.) but the id's are reused for future tasks once a task is done
<LiliumAtratum> ah, ok, that should be fine. Task that has ended should never keep any RW locks.
<ms[m]> just an idea for the previous problem, would `std::this_thread::get_id` be enough for you? typically locks (hpx or any other locks) shouldn't be held across task suspension so those ids would tell you something about different tasks taking a lock (but of course you won't be able to distinguish different tasks taking taking a lock on the same worker thread... which you're not guaranteed to be able to do with
<ms[m]> `hpx::this_thread::get_id` either because of the reuse of ids)
<LiliumAtratum> Taking the same lock twice on the same worker or taking no lock on the worker that tries to access the registry - that is something that should not happen. However, in debug mode I want to detect those scenarios and throw an appropriate std::logic_error exception. That is what I use the get_id for.
<LiliumAtratum> However, at the moment sometimes I get the said exception on a newly spawned hpx::async thread and trying to figure out the possible cause.
LiliumAtratum has quit [Remote host closed the connection]
<mdiers[m]> I have a small problem during the termination of my program. I'm loading a shared lib with hpx dependencies at runtime, but I don't perform any hpx functionality. after unload i get a crash when exiting the program. the problem is because i didn't link my main executable against hpx, because i don't use it in that case. maybe someone recognizes the object and can tell me how to get it initialized? the stack is here:
hkaiser has joined #ste||ar
akheir has joined #ste||ar
weilewei has joined #ste||ar
weilewei has quit [Remote host closed the connection]
shahrzad has joined #ste||ar
weilewei has joined #ste||ar
<gnikunj[m]> hkaiser: yt?
<hkaiser> gnikunj[m]: here (for 3 seconds)
<gnikunj[m]> Is there a documentation for parsing the utree?
<hkaiser> only (one of) the talks
<gnikunj[m]> utree seems like the way to go for generating AST, but I need to parse it to generate the code
<gnikunj[m]> what should I search?
<hkaiser> there is a cppnow/bostcon talk just about this
<gnikunj[m]> ohh cool
<gnikunj[m]> lemme look it up
<hkaiser> let me see if I can find the slides
bita has joined #ste||ar
<bita> hkaiser, would you please add me to the NAIRI mailing list? thanks
<bita> would you please also forward the email you sent to this mailing list earlier today to me?
<hkaiser> bita: the text is also in the meetin gnotes
<hkaiser> gnikunj[m]: it's the talk from BoostCon 2010: A Framework for RAD Spirit
<hkaiser> I think it's the talk you already looked at
weilewei has quit [Remote host closed the connection]
<gnikunj[m]> Yes
<gnikunj[m]> hkaiser lemme look
<gnikunj[m]> hkaiser: curious question: why does Phylanx not use utree?
<hkaiser> gnikunj[m]: what we use is very similar to utree, just specific to handling array of various dimensionalities
<gnikunj[m]> I didn't get you, could you elaborate?
<bita> thank you
<hkaiser> gnikunj[m]: utree was not directly usable
<gnikunj[m]> how so?
<hkaiser> we switched to a variant-based data structure to support all the data types we wanted to support
<gnikunj[m]> ohh so utree's variant didn't have all the data types. is that what you mean?
<hkaiser> was easier than to extend utree which is very much focussed on numbers
<hkaiser> yes
<gnikunj[m]> got it. From what I can see. Utree isn't hard to implement.
<hkaiser> sorry for bein gobtuse
<hkaiser> it is not - you're right
<hkaiser> gnikunj[m]: and frankly, I can't recall what made me not to go with utree ;-)
<gnikunj[m]> lol, that looks like a more appropriate response :D
<gnikunj[m]> this compiler stuff is actually very interesting. I'm wondering why I never looked into Phylanx :/
<hkaiser> we kept you busy with other things
wash[m] has quit [*.net *.split]
tarzeau has quit [*.net *.split]
tarzeau has joined #ste||ar
wash[m] has joined #ste||ar
akheir has quit [Quit: Leaving]
hkaiser has quit [Quit: bye]