aserio 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/
Matombo has quit [Remote host closed the connection]
vamatya_ has quit [Ping timeout: 272 seconds]
Smasher has joined #ste||ar
<hkaiser>
K-ballo: could you create a PR from this, pls?
<hkaiser>
and thanks!
<hkaiser>
thanks zao
<github>
[hpx] K-ballo opened pull request #2636: Add and use HPX_MSVC_WARNING_PRAGMA for #pragma warning (fixing_msvc_win32...fixing_msvc_win32) https://git.io/v9hez
<K-ballo>
should I start working on a PR to drop VS2013?
Smasher has quit [Ping timeout: 246 seconds]
<hkaiser>
K-ballo: I think I got all of those fixed
<hkaiser>
K-ballo: by all means!
<hkaiser>
so we can get rid of boost::begin/end!
<K-ballo>
oh, that too
Smasher has joined #ste||ar
<K-ballo>
mmh.. does it work on vs2015? I forgot
<hkaiser>
I think it does, but I can verify
<hkaiser>
stl has things under control for a while now
<K-ballo>
I've checked for core on vs2015, I don't think I did for examples
<K-ballo>
yeah, I thought I was hitting a lack of two-phase name lookup issue, that's what made me doubt
<hkaiser>
uhh
<K-ballo>
but it's so basic two-phase, maybe vs2015 has enough
<K-ballo>
or maybe I was just wrong about the "diagnostic", I remember moving my adl fun to the global namespace "fixed" vs2013 (and broke the rest)
* K-ballo
does not remember the details anymore
Smasher` has joined #ste||ar
Smasher has quit [Remote host closed the connection]
<K-ballo>
I remember enough.. it worked on vs2015 but not on vs2013, so I decided not to really care and wait
Smasher` is now known as Smasher
Smasher has quit [Changing host]
Smasher has joined #ste||ar
* Smasher
is znc'd now
EverYoung has quit [Ping timeout: 246 seconds]
hkaiser has quit [Quit: bye]
denis_blank has quit [Quit: denis_blank]
K-ballo has quit [Quit: K-ballo]
eschnett has quit [Read error: Connection reset by peer]
eschnett has joined #ste||ar
justwagle has joined #ste||ar
pree has joined #ste||ar
vamatya_ has joined #ste||ar
<pree>
whether output stream operator( hpx::cout <<) is overloaded for hpx::naming::id_type type?
ajaivgeorge has joined #ste||ar
ajaivgeorge has quit [Client Quit]
ajaivgeorge has joined #ste||ar
ajaivgeorge has quit [Read error: Connection reset by peer]
ajaivgeorge has joined #ste||ar
ajaivgeorge has quit [Read error: Connection reset by peer]
ajaivgeorge has joined #ste||ar
pree has quit [Ping timeout: 260 seconds]
vamatya_ has quit [Ping timeout: 240 seconds]
pree has joined #ste||ar
taeguk has joined #ste||ar
bikineev has joined #ste||ar
thundergroudon has joined #ste||ar
thundergroudon has quit [Ping timeout: 246 seconds]
<github>
[hpx] taeguk opened pull request #2637: Fix a tiny typo for consistent outputs. (master...taeguk-patch-typo-1) https://git.io/v9hnp
<jbjnr>
taeguk: that is possibly the smallest PR I've ever seen!
<jbjnr>
s/possibly/definitely/
<taeguk>
jbjnr: ha ha! I'm ashamed :)
<jbjnr>
well, it's part of your community bonding, do not worry
<jbjnr>
taeguk: once the coding period starts at the end of the month, we should start regular (once per week), skype calls. If you want to start before then - or have other queries /etc, then just ask.
<taeguk>
jbjnr: Okay, thank you. But I have a worry about skype calls.
<taeguk>
I have difficulty in hearing and speaking English.
<taeguk>
Maybe I can hear very slow speeches only.
<jbjnr>
= great time to learn then!
<jbjnr>
what would you prefer? emails only?
<taeguk>
jbjnr: I think skype calls are good opportunities for learning english. So I want that. But I worry that you are stuffy.
<jbjnr>
I'm not stuffy!
<taeguk>
At least, I want to have a try once :)
<jbjnr>
no problem. We have foriegn students every year
<jbjnr>
main problem is they complain that I talk too fast.
<taeguk>
jnjnr: yes, right. I want slow talking like them.
<jbjnr>
It's mostly an opportunity for you to ask for help, guidance, advice etc. if you are more comfortable doing that via email, then we'll use that as our primary communication, but we'll schedule a chat anyway and see how it goes.
<jbjnr>
NB. sype does not work on my laptop.
<jbjnr>
so google hangout is preferred by me
<jbjnr>
^skype I meant
<taeguk>
jbjnr: Okay, I got it :)
<pree>
while using async with hpx::launch::deferred whether it is possible to have a continuation using then ().
<jbjnr>
pree: remind me - what does deferred do?
<pree>
deffered executed as lazy but continuation executes after the first future is ready
<pree>
@jbjnr deferred lazy evaluation as in haskell executed when we call future.get()
<pree>
Please explain me I think I'm confusing it.
<jbjnr>
interesting question. I would say that a continuation on a deferred future sounds like an oxymoron
<jbjnr>
since the task is only executed when you call .get() - where is the continuation attached?
<jbjnr>
a shared future?
<pree>
No
<jbjnr>
show me an example
<jbjnr>
ah no. I see
<pree>
wait :)
<jbjnr>
it should eute as son as your .get completes then
<jbjnr>
^execute
<jbjnr>
^^soon <grrr>
<jbjnr>
the problem is that you need a handle to the future my_future=hpx::async(deferred, task)
<jbjnr>
my_future.then(do stuff)
<pree>
int fib(int a){ hpx::cout<<"exec"; return a; } int main(){ hpx::future<int> i = hpx::async(hpx::launch::deferred,&fib,21); hpx::future<double> m = i.then( // hpx::cout<<"me first"; [](hpx::future<int> j) { hpx::cout<<"me first"; return j.get() * 2.0; } );
<pree>
Is it readable?
<jbjnr>
yes. give me a mo to read it ...
<pree>
okay:)
<jbjnr>
hmmm. This is tricky, because you call .get on the continuation - but not on the deferred future itself.
<pree>
output is exec me first
<jbjnr>
and nobody ever calls .get on the deferred future - do either of the tasks ecver execute?
<pree>
but .then() should continue when the future becomes ready
<jbjnr>
it's a strange example. a deferred future s only executed when you call get on it, but by attaching a continuation - you are now calling get on the continuation - which should not run until the deferred future runs, but the continuation calls get on it - however because it's a dependency, it has to run. it's kind of a circular reference example.
<pree>
please don't consider line 11
<jbjnr>
but from what I see the output looks correct when you call m.get(), so are we not happy?
<jbjnr>
before m can execute, i has to be executed, so "exec", followed by "me first" , then the result
<jbjnr>
I suspect you wanted to see "me first", then "exc", then the result
<jbjnr>
but m depends on i, so i will be scheduled first.
* jbjnr
is going to make tea, back in 5 mins
<pree>
Okay @jbjnr. I am clear now
<pree>
circular reference perplexed me
<taeguk>
jbjnr: is there no way to use hpx::future<T>.then() more safely?
<taeguk>
In above example, i.get() will occur strange thing.
<pree>
Can we make it correct ?
Matombo has joined #ste||ar
bikineev has quit [Remote host closed the connection]
Matombo has quit [Remote host closed the connection]
<jbjnr>
taeguk: in the above example, caling i.get() would not be valid, because once you attach a continuation to a future, you are replacing that future with a new one - remember that a future is a 'once only' thing, like a unique_ptr. if we converted the i future into a shared future, attached a continuation to it, and then called .get on the original, then things'd be ok.
pree_ has joined #ste||ar
pree has quit [Ping timeout: 260 seconds]
<taeguk>
jbjnr: you're right. But, I want to know how to use 'then' more safely. There is no explicit move in that codes. I just want to know whether there is a way to use 'then' safely.
<taeguk>
I think that using explicit std::move seems a good practice.
<jbjnr>
eek! no need on line 11
<taeguk>
(Line 11)
<jbjnr>
moving i into a temp - unnecessary
<taeguk>
oh my got. yes you're right.
<taeguk>
my mistake.
<jbjnr>
[](hpx::future<int> &&i) should be fine like that - then you are explicitly requresting a move constructor
<heller__>
even works without the rvalue ref modifier
<jbjnr>
exactly
<taeguk>
I just intend to expose "don't use 'i' after this line!!"
<heller__>
to answer the question: attaching a continuation triggers the future to be executed
<heller__>
that's implicit
<jbjnr>
i.then(...) is enough to know that I is now banned
<heller__>
future<T>::then invalidates the future it is called on
<pree_>
that's what circular reference represents? @ jbjnr
<taeguk>
heller__: yes you're right. Just I'm thinking how to expose that facts more noticeable.
<taeguk>
How you do think? is it not necessary? or meaningful?
<heller__>
it is not necessary
<heller__>
meaningful: no idea ... I am too deep into the rabbit hole to have an oppinion on that
<jbjnr>
pree_: what I meant was only that - a deferred future is only executed when you call .get() on it, but once you have attached a continuation - the future is now invalid - so you can't call .get() on it - but by caling .get() on the continuation - you implicitly call .get() on it (not really circular, but confusing)
<jbjnr>
anywa, I have a meeting in a mo, so I'm off ....
<pree_>
solved!
<pree_>
Thank You all
taeguk has left #ste||ar [#ste||ar]
taeguk has joined #ste||ar
<taeguk>
I met linking errors when building examples.quickstart.fibonacci_futures in Rostam.
<zao>
Bleh, seems like I might've misused git yesterday, the log may be from vanilla master.
<zao>
I can never get to grips with the right way to get onto a branch tracking a remote. I always manage to make a local one tracking master, or make one but not get on it.
<zao>
*sigh*
<aserio>
akheir: yt?
pree has joined #ste||ar
<pree>
Can anyone please explain me hpx::dataflow. I found that I'm missing something.
<pree>
how to access the completed future values inside the dataflow?
<K-ballo>
the target callable receives as arguments the unwrapped (completed) future values
<hkaiser>
K-ballo: not really, it receives the futures as is, but guarantees for them to be ready
<K-ballo>
oh, it does?
<hkaiser>
pree: dataflow is essentially the same as hpx::async except that the function will be invoked only after all futures which where passed to dataflow have become ready
<pree>
Then what's the difference betweeen when_all.then() and dataflow
<K-ballo>
oh right, I do remember the usual "what's the difference with when_all.then" question
<hkaiser>
pree: no semantic difference
<hkaiser>
except that you don't have to create the intermediate future and that dataflow also accepts mixed argument types, non-futures are handed through to the function
<pree>
How to access the values of futures inside the continaution ?
<hkaiser>
future::get() ?
<pree>
wait I will frame the question.
pree has quit [Ping timeout: 260 seconds]
EverYoung has quit [Remote host closed the connection]
pree has joined #ste||ar
EverYoung has joined #ste||ar
EverYoung has quit [Remote host closed the connection]
EverYoung has joined #ste||ar
shoshijak has quit [Ping timeout: 246 seconds]
pree has quit [Ping timeout: 260 seconds]
shoshijak has joined #ste||ar
<github>
[hpx] hkaiser pushed 3 new commits to channel_one_element: https://git.io/v9jw4
<github>
hpx/channel_one_element fe0ffcb Hartmut Kaiser: Applying changes based on review comments
<github>
hpx/channel_one_element 2a7660d Hartmut Kaiser: Merge branch 'fixing_await' into channel_one_element
<github>
hpx/channel_one_element b25cd4e Hartmut Kaiser: Switch back to using packaged_task for one_element_channel
<pree>
MOVE_ONLY_FUTURE (error ).But i have used std::move on return .the same code works for tuples.
<pree>
Any guesses ? Thank you
<K-ballo>
pree: not enough context
<zao>
Heh, 6MB build log from a single compile of HPX.
<zao>
I wonder if I can sort this according to Build Order manually.
<pree>
When I try to execute this program it gives HPX_MOVABLE_ONLY(future) but i have used std::move on return from continuation.
<K-ballo>
pree: where, exactly, there's a lot of places where you could get that error
<K-ballo>
the error means you are trying to copy a future<T>, future is movable only
<K-ballo>
there's also a number of reasons why you could get that error, like using old libstdc++ versions
<K-ballo>
or just plain wrong code
<K-ballo>
or
<pree>
yes sir. But I used std::move on return. if I'm wrong please correct me
<K-ballo>
no idea what you are saying, sorry
<zao>
return std::move(x); is typically an error.
<zao>
s/error/mistake/
<zao>
pree: Do you have a code snippet that illustrates what you're doing?
<zao>
(on a pastesite, github gist, etc.)
<K-ballo>
he has one, above, I tried it locally but boost doesn't quite work with vs2017 anymore
<zao>
Oh/
<K-ballo>
pree: try including the actual error message, which has lots of useful information, like *exactly* what's complaining about, where (which line), etc
pree has quit [Ping timeout: 260 seconds]
akheir has quit [Remote host closed the connection]