weilewei has quit [Remote host closed the connection]
karame_ has quit [Remote host closed the connection]
bita_ has quit [Quit: Leaving]
diehlpk_work_ has quit [Remote host closed the connection]
sayef_ has quit [Read error: Connection reset by peer]
sayef_ has joined #ste||ar
sayefsakin has joined #ste||ar
sayef_ has quit [Ping timeout: 246 seconds]
sayef_ has joined #ste||ar
sayefsakin has quit [Ping timeout: 256 seconds]
sayefsakin has joined #ste||ar
sayefsakin has quit [Read error: Connection reset by peer]
sayefsakin has joined #ste||ar
sayef_ has quit [Ping timeout: 256 seconds]
sayef_ has joined #ste||ar
sayefsakin has quit [Ping timeout: 256 seconds]
sayefsakin has joined #ste||ar
sayef_ has quit [Ping timeout: 258 seconds]
sayef_ has joined #ste||ar
sayefsakin has quit [Ping timeout: 246 seconds]
sayef_ has quit [Ping timeout: 240 seconds]
hkaiser has joined #ste||ar
akheir has joined #ste||ar
Yorlik has joined #ste||ar
nan11 has joined #ste||ar
diehlpk_work has joined #ste||ar
weilewei has joined #ste||ar
<diehlpk_work>
Stack overflow in coroutine at address ERROR: One or more process (first noticed rank 0) terminated with signal 11`
<diehlpk_work>
Any idea what could case this error?
<diehlpk_work>
Adding --hpx:ini=hpx.stacks.use_guard_pages=0 results that the code hangs
<zao>
Does HPX tasks have small fixed stack sizes, or does it grow on demand?
<diehlpk_work>
I am running Octotiger on Summit
<diehlpk_work>
Interesting fact is that using one GPU everything works and with multiple not
<gonidelis[m]>
When one wants to use an iterator - sentinel pair for their implementation. Do they always have to create their own `struct Sentinel{}` implementation and `struct Iterator` implementation in order to use the pair on the algorithm???
K-ballo has quit [Ping timeout: 246 seconds]
karame_ has joined #ste||ar
K-ballo has joined #ste||ar
rtohid has joined #ste||ar
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 272 seconds]
K-ballo1 is now known as K-ballo
<K-ballo>
gonidelis[m]: if you want an iterator/pair you have to create it... where else would it come from? I'm think I'm missing the underlying question...
<weilewei>
diehlpk_work how do you issue jsrun command lines to use 2 gpus?
<diehlpk_work>
weilewei, I just run with two localities and gave one locality one GPU
<diehlpk_work>
and asked for two GPUs in total
<weilewei>
jsrun -n2 -a1 -c21 -g1 ./myApp?
<diehlpk_work>
Sounds good
<diehlpk_work>
You could increase -c
<diehlpk_work>
So the two localities would use more cores
<weilewei>
Yes, there are 42 cores you can use in one node
<weilewei>
or if you use 2 nodes, then jsrun -n2 -a1 -c42 -g1 -b rs ./myApp
<gonidelis[m]>
K-ballo: No your answer is right on point. I am just new to the topic and I didn't know that the only obvious way is to create the pair. Thanks a lot!
<diehlpk_work>
weilewei, I have multiple issues
<weilewei>
diehlpk_work but I haven't tried if let hpx manage locality/ranks, what should I do...
<weilewei>
diehlpk_work what else
<diehlpk_work>
1) It seems there is some race condition with multiple GPUs in our IO, you can not helpt there
<diehlpk_work>
2) I have issues with --hpx:ini=hpx.stacks.use_guard_pages=0
<diehlpk_work>
weilewei, Can you run your code with this flag and let me know what happens?
<K-ballo>
gonidelis[m]: are you sure..? the question sounds to me like "does one have to create an X if he wants to create an X", makes me think I'm missing the point
<weilewei>
diehlpk_work let me try
<diehlpk_work>
Does not have to be computational expensive. Just add this flag and run your code and check if your code hangs
<diehlpk_work>
For me using this flags HPX hangs and nothing happens
<weilewei>
diehlpk_work ok, I don't have any workable hpx application on Summit yet, give me sometime
<diehlpk_work>
weilewei, Take your time, I still wait for Dominic to address the IO issues
<weilewei>
ms[m] may I ask, what commit starts to hide hpx_wrap? I just want to fall back to hpx_wrap to test one of my program where can try hpx mpi future
<gonidelis[m]>
K-ballo: I was thinking the possibility of using a sentinel straight away as an argument like `for_each(begin_iter, 0)` and 0 being the sentinel while `begin_iter` being the default iterator... but I guess that's not a case
<K-ballo>
but `0` isn't a sentinel.. if it were then sure one could
<K-ballo>
for `0` to be a sentinel, it would have to be comparable against an iterator
<K-ballo>
it there were comparison operators between that particular iterator and an int, it would be rather awkward, but it would make `0` a sentinel for that iterator
<weilewei>
diehlpk_work I did get code hang with your flag by trying hpx hello_world_1
<gonidelis[m]>
K-ballo: is there a built in sentinel data type that is comparable to an iterator?
<K-ballo>
confusing... all sentinels are comparable to iterators
<K-ballo>
by sentinel "data type" you mean the internals of a sentinel?
<K-ballo>
if so, which sentinel...?
<K-ballo>
if a particular iterator would be comparable against say an int to determine if the int was reached, then the int itself would be the sentinel, there would be no "data type"
<gonidelis[m]>
ok great! I think I get it. The reason I was asking is because there are iterators that can be created like `vector<int>::iterator ptr; ` and then there are custom iterators like this one https://github.com/gonidelis/hpx/blob/master/libs/algorithms/tests/regressions/iter_sent.hpp . So how am I supposed to know wether `ptr` is comparable to an int for example...
<K-ballo>
`ptr` (weird name) is a vector iterator, I'd expect it to model the iterator concept and nothing else.. if it did implement extra functionality, like additional comparisons to ints (that would be super awkward) then I would have to go read the specification to find out
<hkaiser>
gonidelis[m]: you could use decltype(std::declval<Iterator>() == std::declval<Sentinel>()) to implement a is_sentinel_for<Sentinel, Iterator> trait
<hkaiser>
see th eis_iterator implementation we have for some inspiration
<gonidelis[m]>
hkaiser: thanks a lot. Just studied and learnt the use of `decltype` `std::declval` . What do we mean with *for* in the `is_sentinel_for` name ?
<K-ballo>
sentinels don't exist in isolation, for x to be a sentinel it has to be comparable with y, and that makes x a sentinel for y (but not necessarily for z)
<gonidelis[m]>
K-ballo: No, I am just trying to create a test for an iterator sentinel pair in `for_each` (late response to your previous question)
<K-ballo>
gonidelis[m]: that sounds very much like "yes" then :)
<gonidelis[m]>
K-ballo: But what if I plug already some comparable types on my test ;p . Then I won't have to check the comparison validity with a trait (programatically)...
<gonidelis[m]>
isn't that right?
<K-ballo>
uh..?
<gonidelis[m]>
K-ballo: What is the use of `is_sentinel_for<Sentinel, Iterator>` trait? Isn't that we use it in order to check the validity of the `Sentinel` for the `Iterator`?
<K-ballo>
yes
<K-ballo>
and how do you determine the validity of a sentinel for an iterator? you programmatically check whether their comparisons are well formed
<K-ballo>
when you said "how am I supposed to know" I figured "I" meant you, not the code
<gonidelis[m]>
...with the use of a trait?
<K-ballo>
how do you implement such trait
<gonidelis[m]>
By imitating the `is_iterator` example that mr.Kaiser sent above ??
<K-ballo>
which programmatically checks (among other things) whether the comparisons are well formed
<gonidelis[m]>
Yes I am not raising any objections to this. I totally agree...
<hkaiser>
gonidelis[m]: btw, you want to check for != (inequality) as well
<gonidelis[m]>
ok I ll check it right away. What's your opinion Josuttis book "The C++ Standard Library" ? I see that there is a "Writing User-Defined Iterators" chapter...