hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar-group.org | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | This channel is logged: irclog.cct.lsu.edu
<gonidelis[m]> i was thinking that other `sys/` headers are fine with clangcl, it's only `<sys/mman.h>` that causes the problem
<gonidelis[m]> i found this that could may map the facilities for windows but how do i include it after downloading? not that familiar with windows yet
<hkaiser> it's just one *.h and one *.c after all, just add it to your project and cmake
<hkaiser> gonidelis[m]: nice find, btw
<gonidelis[m]> add it to my project means?
<hkaiser> gonidelis[m]: cmake?
<gonidelis[m]> problem is that this header (mman.h) then includes `cdefs.h`
<hkaiser> what for?
<hkaiser> edit it as needed
<gonidelis[m]> let me see what i can do
hkaiser has quit [Quit: Bye!]
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 268 seconds]
K-ballo1 is now known as K-ballo
Yorlik has joined #ste||ar
sivoais has quit [Ping timeout: 246 seconds]
K-ballo has quit [Read error: Connection reset by peer]
K-ballo has joined #ste||ar
<zao> Not sure what you folks use `mman.h` for but I'm fairly happy with the header-only "mio" for my moderate portable memory mapping needs. <https://github.com/mandreyel/mio>
sivoais has joined #ste||ar
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 268 seconds]
K-ballo1 is now known as K-ballo
gonidelis[m] has quit [Remote host closed the connection]
mdiers[m] has quit [Remote host closed the connection]
ms[m] has quit [Remote host closed the connection]
pansysk75[m] has quit [Remote host closed the connection]
gdaiss[m] has quit [Remote host closed the connection]
rtohid[m] has quit [Remote host closed the connection]
satacker[m] has quit [Remote host closed the connection]
karamemp[m] has quit [Remote host closed the connection]
dkaratza[m] has quit [Remote host closed the connection]
AryanSharma[m] has quit [Remote host closed the connection]
rori[m]1 has quit [Remote host closed the connection]
bhumit[m] has quit [Remote host closed the connection]
gdaiss[m] has joined #ste||ar
satacker[m] has joined #ste||ar
rori[m]1 has joined #ste||ar
rtohid[m] has joined #ste||ar
mdiers[m] has joined #ste||ar
bhumit[m] has joined #ste||ar
dkaratza[m] has joined #ste||ar
karamemp[m] has joined #ste||ar
pansysk75[m] has joined #ste||ar
gonidelis[m] has joined #ste||ar
AryanSharma[m] has joined #ste||ar
ms[m] has joined #ste||ar
hkaiser has joined #ste||ar
<pansysk75[m]> fork_join_executor implements bulk_async_execute but not async_execute?
<hkaiser> pansysk75[m]: yes
<hkaiser> do you need async_execute?
<hkaiser> pansysk75[m]: generally, executors don't need to implement all functions, the missing ones are emulated on top of what's available
<pansysk75[m]> yep, I see that in execution.hpp!
<pansysk75[m]> but is async_execute implied if we only have implemented bulk_async_execute?
<pansysk75[m]> many algorithms call
<pansysk75[m]> execution::async_execute(policy.executor(), )
<pansysk75[m]> so i'm guessing, if I want an executor to work, it needs to directly or indirectly have a async_execute
<pansysk75[m]> s/async_execute/async\_execute/, s/a/an/, s/async_execute/async\_execute/
<hkaiser> pansysk75[m]: what do you need async_execute for?
<hkaiser> does the scan partitioner use async_execute?
<hkaiser> (i've never tried using those algorithms with the fork_join_executor)
<pansysk75[m]> ah, yes, it calls execution::async_execute(policy.executor(), ..)
<pansysk75[m]> I can of course change it to bulk, no big deal
<pansysk75[m]> (i think)
<hkaiser> if needed, you can always implement async_execute by forwarding to bulk_async_execute with one task
<hkaiser> anyways, gotta run now, sorry
<pansysk75[m]> Ok thanks, just needed to check I wasn't missing anything
hkaiser has quit [Quit: Bye!]
tufei_ has joined #ste||ar
tufei__ has quit [Remote host closed the connection]
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 248 seconds]
K-ballo1 is now known as K-ballo
Yorlik has quit [Ping timeout: 268 seconds]
<gonidelis[m]> hkaiser: is there any (safe) way to change a cmake variable in a build without deleting CmakeCache and the CMakeFiles dir?
<K-ballo> any proper cmake project will detect a cmake cache var change and react appropriately
<K-ballo> even the toolchain ones can be changed these days, though I still don't trust that
<gonidelis[m]> lol true
<gonidelis[m]> thanks
<gonidelis[m]> hkaiser: also since I am poritng to clangcl do I need the `#ifdef _MSVC_VER` directives?
<gonidelis[m]> is that even useful since i am not using msvc directly? https://learn.microsoft.com/en-us/cpp/c-runtime-library/standard-types?view=msvc-170
<gonidelis[m]> turns out, it is? :/
<gonidelis[m]> finally
<gonidelis[m]> is `#if defined(__clang__)` the same as `#if defined(__CLANG__)`
<gonidelis[m]> ?
<gonidelis[m]> are posix functions supposed to work with clangcl
<gonidelis[m]> (ugly spam)
<K-ballo> macro names are case sensitive, __clang__ and __CLANG__ are two different things
<K-ballo> and I do not think the later actually exists
<gonidelis[m]> thanks
hkaiser has joined #ste||ar
<hkaiser> pansysk75[m]: I thought mre about this
<hkaiser> pansysk75[m]: it doesn't really make sense to implement async_execute for the fork_join_executor
<hkaiser> this executor is designed mainly for (a)synchronous fork-join parallelism
<pansysk75[m]> meaning that the overhead is too large to just launch a single task?
<hkaiser> no launching single tasks is not what this executor was built for
<hkaiser> the executor creates N-1 HPX threads (N is the number of cores) when it is constructed and these HPX threads will be running until is is destructed
<hkaiser> whenever bulk_(a)sync_execute is called, it splits the work amongst N workers, submits to the N-1 HPX threads and runs the remaining work on the calling thread
<hkaiser> so async_execute would execute things inline on the calling thread in the end
<pansysk75[m]> ah ok got it
<pansysk75[m]> hkaiser: also, i've been looking in the source code for something like std::thread
<hkaiser> ok
<pansysk75[m]> is it hidden behind tons of abstraction, or do we use another mechanism altogether?
<pansysk75[m]> I'm trying to look behind the curtain a little bit
<hkaiser> you mean hpx::thread?
<pansysk75[m]> or system threads? i have no idea honestly
<pansysk75[m]> been learning about pthreads in class
<hkaiser> the executors use low level hpx facilities to launch new hpx threads: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/executors/include/hpx/executors/fork_join_executor.hpp#L374
<pansysk75[m]> at the bottom of this, do we get a handle to a system thread or sth similar?
<pansysk75[m]> looking for the bare, most basic mechanism
<hkaiser> you get a handle to an HPX thread
<hkaiser> the easiest way to create an HPX thread would be to use the hpx::thread type
<hkaiser> works the same as std::thread
<pansysk75[m]> great, I'll dive in that stuff
<pansysk75[m]> we'll talk more about these on Tuesday, I'm starting to "get it" i think
<pansysk75[m]> hpx + classes is a great combination
hkaiser has quit [Quit: Bye!]
hkaiser has joined #ste||ar