YAXT: Issueshttps://swprojects.dkrz.de/redmine/https://swprojects.dkrz.de/redmine/redmine/favicon.ico?17095821032017-08-25T14:23:05ZDKRZ projects
Redmine Feature #341 (New): Call MPI_Testany from time to time to improve performancehttps://swprojects.dkrz.de/redmine/issues/3412017-08-25T14:23:05ZMoritz Hanke
<p>While doing some tests with YAC, I noticed that: when setting up a list of MPI_Isends, the performance improved, if from time to time MPI_Testany is called (MPI_Testsome did produce better results).</p>
<p>We should check whether YAXT could also benefit from this.</p>
<p>The following is a pseudo code showing the idea, which is based an the Routine psmile_bsend written by Hubert Ritzdorf for OASIS4.</p>
<pre>
int num_open_requests = 0
MPI_Requests requests[total_num_send_recv_msgs]
for all send/recv msgs
MPI_Request * request = &requests[num_open_requests++]
set up MPI_Isend/MPI_Irecv
int flag = 1, idx
while (flag && (num_open_requests >= 64))
MPI_Testany(num_open_requests, requests, &idx, &flag, MPI_STATUS_IGNORE)
if (flag && (idx != MPI_UNDEFINED))
requests[idx] = requests[--num_open_requests]
MPI_Waitall(num_open_requests, requests, MPI_STATUSES_IGNORE)
</pre> Feature #340 (New): Improve message send order in Xt_exchangerhttps://swprojects.dkrz.de/redmine/issues/3402017-08-25T08:03:24ZMoritz Hanke
<p>Under certain circumstances the message order produced by the routine xt_exchanger_internal_optimize might not be optimal.<br />Example:<br />Program with a total of 20 proces. Each of the first 10 procs sends a message to the last 10 proces.</p>
<p>We might have to think about another way of improving the message order.<br />An Evolutionary algorithm could be a solution.</p> Bug #335 (New): passing pointers of zero-size arrays to redistshttps://swprojects.dkrz.de/redmine/issues/3352015-04-23T09:45:59ZMoritz Hanke
<p>The addresses of arrays passed to xt_redist_s_exchange can be NULL, when the size of the array is zero. This can cause problems especially when redist collections are used.<br />For zero-sized arrays a redist should not contain any message. When this happens we might have to consider applying some kind of special handling.<br />When the Fortran interface is used, no appropriate C_LOC-pointer can be generated.</p>
Tasks:
<ul>
<li>reproduce problem with test (only occurs with certain MPIs)</li>
<li>fix problem of define that NULL pointers are not allowed</li>
</ul> Feature #319 (New): support for two-phase-redistributionhttps://swprojects.dkrz.de/redmine/issues/3192013-04-16T12:27:30ZMoritz Hanke
<p>Redistributions could also support a two-phase-redistribution scheme, that has has two communication steps. This potentially allows for a reduction in the number of messages.</p>
Some thoughts on this:
<ul>
<li>probably only reasonable for in-place redistributions (see <a class="issue tracker-2 status-1 priority-4 priority-default" title="Feature: support for in-place redistributions (New)" href="https://swprojects.dkrz.de/redmine/issues/317">#317</a>)</li>
<li>the two phase could be detected in xmap-generation or redist-generation step</li>
</ul>