<br><font size=2 face="sans-serif">On Nov 30th, 2009 <ashley@pittman.co.uk> wrote:</font>
<br>
<br><font size=2 face="Courier New">> I've been giving some thought to how to padb can handle threaded<br>
> applications better as the current scheme isn't ideal.</font>
<br><font size=2 face="Courier New">> </font>
<br><font size=2 face="Courier New">> </font>
<br><font size=2 face="Courier New">> First would be to report extra threads in the same tree as the primary<br>
> thread, some magic would have to be applied to cover the fact that the<br>
> first thread in a process starts with main and subsequent ones start<br>
> with pthread_create() but this wouldn't be a insurmountable problem.<br>
> The big problem with this approach would be how to report thread<br>
> identifiers in the same rank-spec as rank rank identifiers, I could<br>
> revert to just using a list here but that doesn't work so well on big<br>
> systems.<br>
<br>
> The second option would be to treat each thread as a different entity<br>
> within the rank/process and have a number of trees displayed per job,<br>
> each dealing with a different thread, e.g. there would be a tree per<br>
> main thread and another tree for each extra thread encountered. From a<br>
> technical perspective implementing this would require adding a namespace<br>
> to the {target_output} as it's passed back up the comms tree so is the<br>
> hardest to add but would probably lead to the best solution.<br>
<br>
> Finally there is the option of not showing all threads but allowing<br>
> users to select a single thread per invocation of padb. This is the<br>
> simple but functional option although might be best viewed as a step<br>
> along the way to fully supporting multiple threads in future. Here the<br>
> options are to be able to select threads by id (1,2,...) or perhaps by<br>
> having a white/black list of function names that should appear in the<br>
> stack for a thread before a thread is shown.<br>
<br>
> I'd welcome ideas on which people would prefer or if anybody has any<br>
> other thoughts on how to handle threads properly.</font>
<br>
<br>
<br><font size=2 face="Courier New">I have a support request from Bull customer that would like to have</font>
<br><font size=2 face="Courier New">padb report sorted by threads as below:</font>
<br><font size=3 face="Courier New"> Thread: 1<br>
--------------------------<br>
[0-1999] (2000 processes)<br>
---------<br>
main()<br>
PMPI_Finalyse()<br>
ompi_mpi_finalyze()<br>
barrier()<br>
----------------<br>
......(249 processes)<br>
---------------<br>
orte_grpcomm_base_allgather()<br>
opal_progress()<br>
opal_event_loop()<br>
epoll_dispatch()<br>
epoll_wait()<br>
---------------<br>
..... (1751 processes)<br>
----------------<br>
opal_progress()<br>
opal_event_loop()<br>
epoll_dispatch()<br>
epoll_wait()<br>
Thread: 2<br>
--------------------------<br>
[0-1999] (2000 processes)<br>
--------- <br>
....<br>
Thread: 3<br>
--------------------------<br>
[0-1999] (2000 processes)<br>
--------- <br>
....<br>
</font>
<br><font size=2 face="Courier New">This report should be by job. Would you accept it ?</font>
<br>
<br><font size=2 face="Courier New">Thipadin.</font>
<br>
<br>
<br>