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]
<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)
<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
<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
<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?