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/
nanmiao has joined #ste||ar
K-ballo has quit [Remote host closed the connection]
K-ballo has joined #ste||ar
<diehlpk_work> How would I fix this error in 1.6.0?
<nanmiao> add #include <hpx/async_colocated/get_colocation_id.hpp>?
K-ballo has quit [Quit: K-ballo]
nanmiao has quit [Quit: Connection closed]
hkaiser has quit [Quit: bye]
bita has quit [Ping timeout: 258 seconds]
jehelset has joined #ste||ar
parsa has quit [Read error: Connection reset by peer]
parsa has joined #ste||ar
bita has joined #ste||ar
parsa has quit [Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net]
bita has quit [Ping timeout: 258 seconds]
parsa has joined #ste||ar
parsa has quit [Client Quit]
parsa has joined #ste||ar
parsa has quit [Client Quit]
parsa has joined #ste||ar
<gonidelis[m]> k-ballo: yt?
<gonidelis[m]> ms[m]: does `tests.unit.modules.format.format` runs for you?
<gonidelis[m]> Is there any possible way for HPX to installed faster? My `make install` on rostam takes ages....
K-ballo has joined #ste||ar
<gonidelis[m]> K-ballo: heyo
<ms[m]1> gonidelis[m]: the format test does run
<ms[m]1> why?
<ms[m]1> are you doing literally make install, not make -jN install?
<ms[m]1> also, do you have examples enabled? do you need them enabled? do you need to install hpx?
<ms[m]1> do you use ninja?
<gonidelis[m]> ms[m]: it runs but it fails for me. examples enabled, I didn't need them - I guess I deserved since I avoided your cmake flags once again. I do need to install hpx in order to run a couple of example *trivial) scripts for our paper.
<gonidelis[m]> (trivial) ^^
<gonidelis[m]> I do not use ninja...
<ms[m]1> gonidelis[m]: yep, if you don't actually need the examples it can be a good idea to disable them (unless you want to check that they compile of course)
<ms[m]1> note that you can also point a cmake project to use hpx in the build directory, saving you from having to install hpx
<ms[m]1> and I think I recommended ninja before, but I think it can't be recommended enough
<gonidelis[m]> lol
<gonidelis[m]> I regret defying your word. ok I didn't knew about pointing my script directly to the build dir... that's new and useful
<gonidelis[m]> ms[m]: ahh now i recall why i avoided ninja: my terminal does not color theme the compilation error output and that's a bit of a problem... i just didn't have time to configure it
<ms[m]1> gonidelis[m]: also, have a look at ccache and HPX_WITH_UNITY_BUILD=ON
<ms[m]1> add -fcolor-diagnostics=always or something like that to CXXFLAGS (it's a different flag for gcc and clang)
hkaiser has joined #ste||ar
<gonidelis[m]> ms[m]: ahh thanks... that's helpful
hkaiser has quit [Quit: bye]
hkaiser has joined #ste||ar
nanmiao has joined #ste||ar
hkaiser has quit [Ping timeout: 258 seconds]
hkaiser has joined #ste||ar
bita has joined #ste||ar
<srinivasyadav227> hkaiser: hey, i have shared the draft to proposal in GSoC form, please review it. Any feedback would be very much helpful to me to apply changes and improvise it. Thank you ;-) !
hkaiser has quit [Ping timeout: 258 seconds]
nanmiao has quit [Quit: Connection closed]
hkaiser has joined #ste||ar
<hkaiser> srinivasyadav227: where can I find the document?
nanmiao has joined #ste||ar
<srinivasyadav227> hkaiser: i have shared the link to proposal document from my dashbaord in GSoC page, it shows Stellar Group may respond ... as below
<srinivasyadav227> hkaiser: i do not know exactly where you can find, but i am guessing that it would be in Stellar group dashboard or mentors dashboard in GSoC website
<srinivasyadav227> or else i could share the link here directly
<gonidelis[m]> freenode_srinivasyadav227[m]: sharing here is not a good idea
<srinivasyadav227> gonidelis[m]: oh alright!, sure, thanks for informing me soon! :-)
<gonidelis[m]> freenode_srinivasyadav227[m]: don't worry. hkaiser will find your proposal easily ;)
<srinivasyadav227> gonidelis[m]: ok cool!
<gonidelis[m]> K-ballo: could you explain what we needed to banish <iostream> from the headers? I didn't quite catch it
<gonidelis[m]> why^^
<hkaiser> srinivasyadav227: ok, I know where to look, then
<K-ballo> gonidelis[m]: <iostream> is extra expensive because it needs to inject initialization logic into each TU that includes it
hkaiser has quit [Quit: bye]
<gonidelis[m]> K-ballo: expensive for compilation? memory? execution time?
<K-ballo> linking mostly
<gonidelis[m]> does this mean that in a TU that iostream is included, there is this `std::ios_base::Init` object that is constructed on the first `std::cout` call and destructed on the last call
<gonidelis[m]> ?
<K-ballo> there's a small binary size and execution time hit as soon as _any_ TU includes <iostream> too, but that's not what we were after
<gonidelis[m]> so linking affect mainly compilation
<gonidelis[m]> affects^^
<K-ballo> global objects are constructed "before main" (kinda... let's ignore the details)
<K-ballo> linking is what follows compilation
<K-ballo> build = compilation + linking
<gonidelis[m]> huh
<gonidelis[m]> ok
<K-ballo> compilation generates object code, linking puts that object code together to form an executable or shared library
<gonidelis[m]> so... you removed it and we use what instead?
<K-ballo> instead? nothing
<gonidelis[m]> why was it included in the first place then?
<K-ballo> mostly sloppy inclusion, but some use of std::cin/cout/cerr from headers too
<K-ballo> core was emitting a hundred plus Init objects when we only needed about 6
<gonidelis[m]> how did you find them?
<K-ballo> find? them?
<K-ballo> any TU that includes <iostream> emits one
<gonidelis[m]> how did you know it was emitting 100+ objects
<gonidelis[m]> ah ok
<gonidelis[m]> cool
<gonidelis[m]> ok
<gonidelis[m]> K-ballo: could you also give an explanation on #5253 ?
<K-ballo> there are many different ways to detect that kind of bloating
<K-ballo> what's 5253?
<gonidelis[m]> Add utility to format ranges
<gonidelis[m]> your PR
<gonidelis[m]> what is this for?
<K-ballo> to format ranges
<gonidelis[m]> what does even format ranges mean
<K-ballo> https://fmt.dev/latest/api.html look for fmt::join
<K-ballo> you can also get a sense of it from the unit test cases
<gonidelis[m]> i tried running the test but it wouldn't compile, probably my mistake
<K-ballo> fmt is the library in which C++20's std::format is based on
<gonidelis[m]> all this is about formatting when outputting a range?
<K-ballo> what do you mean by "outputting a range"?
nanmiao has quit [Quit: Connection closed]
<gonidelis[m]> what does formatting a range mean?
<gonidelis[m]> like when we want to `std::cout` it?
<gonidelis[m]> K-ballo: ^^
<K-ballo> what does formatting an int mean?
<gonidelis[m]> so it's all about printing ranges
<K-ballo> not necessarily, but sure
<gonidelis[m]> <K-ballo "there are many different ways to"> name one or two
<K-ballo> lol
<K-ballo> is there a prize?
<gonidelis[m]> i am kindly asking :)
<K-ballo> bloaty macbloat face
<K-ballo> msvc's /d2cgsummary
<K-ballo> sizer (pdb)
<K-ballo> clang's -ftime-trace
<K-ballo> windows performance analyzer profile for msvc
<K-ballo> anything that does some sort of build profiling will do
<gonidelis[m]> wow!
<gonidelis[m]> thanks!
<gonidelis[m]> so we are that guys now. we are the guys who profile binaries
<gonidelis[m]> sounds cool
<K-ballo> *McBloatface
<gonidelis[m]> yy i found it
<K-ballo> there was a time in which I would profile clang on vtune while compiling hpx
<gonidelis[m]> of course you did. it's you
nanmiao has joined #ste||ar
<K-ballo> we didn't use to have build profiling alternatives
<gonidelis[m]> oh that's the reason
<gonidelis[m]> K-ballo: did you receive my pm?
hkaiser has joined #ste||ar
<K-ballo> gonidelis[m]: yes
jehelset has quit [Remote host closed the connection]
nanmiao has quit [Quit: Connection closed]
<gonidelis[m]> what's the difference between concurrent forward progress,parallel forward progress and weakly parallel forward progress?
<K-ballo> concurrent forward progress means the execution will always eventually make progress, regardless of the state of the rest of the system
<K-ballo> so you could have a thousand threads blocked forever, and a thousand and one thread would still be able to execute
nanmiao has joined #ste||ar
<K-ballo> parallel forward progress, if I remember correctly, means executions that have already started will always eventually make progress, but an execution might just as well never start
<K-ballo> and then weakly parallel forward progress, that's us, any execution may be prevented from running by other executions at any time
<K-ballo> examples are an agent that spawns a new system thread for each execution (concurrent), a bounded thread pool (parallel, if all the threads in the pool are blocked new threads won't start), cooperative multithreading (weakly parallel)
<gonidelis[m]> wow!!!
<gonidelis[m]> WOW!
<gonidelis[m]> what are these "progresses" exactly? design patterns?
<K-ballo> guarantees
<gonidelis[m]> and how does one impose them to a languge
<K-ballo> one doesn't impose them anywhere, they are properties of execution agents
<gonidelis[m]> what are guarantees?
<K-ballo> a formal assurance that certain conditions will be fulfilled
<gonidelis[m]> sounds extremely theoretical to me, a language is to finite to define those so called guarantees
<K-ballo> it's very practical, it tells you basically what kind of thing will work and what may deadlock badly
<gonidelis[m]> <K-ballo "a formal assurance that certain "> that's concepts
<gonidelis[m]> i am kidding
<gonidelis[m]> <K-ballo "a formal assurance that certain "> where does cpp standard use guarantees? i mean, for sure i don't think programmers use guarantees
<gonidelis[m]> they must be defined for internal use
<K-ballo> mmh?
<K-ballo> we use guarantees all the time, it's the basis of programming society
<gonidelis[m]> you mean you use them as ideas? could one "code"a guarantee?
<K-ballo> you are familiar with parallel algorithm policies, those are expressing guarantees
<gonidelis[m]> hmm ok
<K-ballo> but usually it's the other way around, it's the implementation offering a guarantee to the caller/programmer
<gonidelis[m]> that's a design pattern
<K-ballo> say, when you call a certain function, what can happen, what might happen, what will happen
<gonidelis[m]> "i do it like that, it works like that"
<K-ballo> nah
<gonidelis[m]> hm ok
<K-ballo> when some algorithm specifies it will call a predicate "exactly N times" , or " at most N times" etc, those are complexity guarantees
<gonidelis[m]> hm ok
<K-ballo> when a function says it will throw BadArgument if this or that, that's an exception guarantee
<K-ballo> when a function says `noexcept`, that's codifying an exception guarantee of never throwing
<gonidelis[m]> sounds more theoretical, like science, rather than technical and constraint to a language
<gonidelis[m]> it's like modeling
<gonidelis[m]> anyways, how does an input iterator abstracting over​ std::istream could be a range?
<K-ballo> why not? what do you think a range is?
Chuanqiu has joined #ste||ar
Chuanqiu has quit [Quit: Connection closed]