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
diehlpk_work has quit [Remote host closed the connection]
Yorlik_ has joined #ste||ar
Yorlik__ has quit [Ping timeout: 250 seconds]
hkaiser has quit [*.net *.split]
hkaiser has joined #ste||ar
<Aarya[m]> When using the build command in this(https://github.com/rtohid/scripts/blob/master/build/manjaro/hpxMP/build-hpxmp.sh) script , i keep getting this (https://pastebin.com/mnhf4MY8) error. Can anyone help.
<Aarya[m]> * (https://pastebin.com/mnhf4MY8) error when building openMP in LLVM. Can
<hkaiser> Aarya[m]: looks like na issue with the CUDA target architecture (complaing about sm_90)
<Aarya[m]> Also something with hashGnu
<hkaiser> no idea :/
<hkaiser> perhaps rtohid[m] can help?
<rtohid[m]> <Aarya[m]> "When using the build command..." <- Did you check if it's possible to turn off cuda offloading?
<Aarya[m]> It should be, let me check
<Aarya[m]> But why would cuda come in OpenMP
<rtohid[m]> OpenMP does support gpu offloading
<hkaiser> I think we can disable gpu support in openmp for now
<Aarya[m]> Works thanks
tufei has joined #ste||ar
hkaiser has quit [Read error: Connection reset by peer]
HHN93 has joined #ste||ar
HHN93 has quit [Client Quit]
K-ballo has quit [Ping timeout: 240 seconds]
K-ballo has joined #ste||ar
HHN93 has joined #ste||ar
HHN93 has quit [Quit: Client closed]
<gonidelis[m]> quiz:
<gonidelis[m]> Why? :)
<gnikunj[m]> std::max<int> doesn't declare which overload it is. I've had this conversation in another context with K-ballo before. Basically std::max<int> is not the function pointer unless you specify which overload to use. E.g.: `int const & (*max) (int const &, int const &) = std::max<int>;`. Now the function pointer `max` has the desired information and can be plugged to accumulate.
<gonidelis[m]> why is that?
<gnikunj[m]> Because the compiler canโ€™t know which function to point to.
<gnikunj[m]> It needs explicit knowledge.
<gonidelis[m]> question remains.
<gonidelis[m]> std::max<int> **does** know which overload to use here after all
<gonidelis[m]> problem is not `std::max<int>`, it's `std::max<int>` within an accumulate call (or any call that handles it as a function pointer)
<gonidelis[m]> so question is: Why?
<gnikunj[m]> std::accumulate gets a function pointer. It is not the same as calling `std::max<int>` directly. Compiler can't deduce the function pointer type by just seeing `std::max<int>`.
<gnikunj[m]> That's why I shared that basic example where the compiler can't deduce `foo` from `auto* func = &foo`
tufei has quit [Remote host closed the connection]
tufei has joined #ste||ar
<gonidelis[m]> that's what I said and the inference that we begin with. The question is why "Compiler can't deduce a function pointer type by just std::max<int>"
<gonidelis[m]> I can see that it happens from your example code. I don't see why tho
hkaiser has joined #ste||ar
<gonidelis[m]> hkaiser: help
<hkaiser> wazzup?
<gnikunj[m]> gonidelis: overload sets are not values in C++
<gonidelis[m]> see last messages plz
<hkaiser> gonidelis[m]: what's the question?
<hkaiser> gnikunj[m]: said it all, I think
<gonidelis[m]> gnikunj: ok .... ?
<gnikunj[m]> Found this for more verbose explanation: https://en.cppreference.com/w/cpp/language/overloaded_address
<gnikunj[m]> Can't really explain any further ๐Ÿ˜…
<gonidelis[m]> coo
<hkaiser> gonidelis[m]: that's where you use function objects instead: struct mymin { template <typename T> T operator(T t1, Tt2) { return std::min(t1, t2); } }; std::accumulate(..., ..., 0, mymin());
<gonidelis[m]> ah
<gonidelis[m]> dang
<gonidelis[m]> skimming through kunj's link rn to understand what's the deal with func pointer
<gonidelis[m]> func pointers*