Thanks a lot!

On Tue, May 17, 2016 at 11:49 AM, Nathan Hjelm <hje...@lanl.gov> wrote:

>
> I don't know of any documentation on the connection manager other than
> what is in the code and in my head. I rewrote a lot of the code in 2.x
> so you might want to try out the latest 2.x tarball from
> https://www.open-mpi.org/software/ompi/v2.x/
>
> I know the per-peer queue pair will prevent totally asynchronous
> connections even in 2.x but SRQ/XRC only should work.
>
> -Nathan
>
> On Tue, May 17, 2016 at 11:31:01AM -0400, Xiaolong Cui wrote:
> >    I think it is the connection manager that blocks the first message.
> If I
> >    add a pair of send/recv at the very beginning, the problem is gone.
> But
> >    removing the per-peer queue pair does not help.
> >    Do you know any document that discusses the open mpi internals,
> especially
> >    related to this problem?
> >    On Tue, May 17, 2016 at 11:00 AM, Nathan Hjelm <hje...@lanl.gov>
> wrote:
> >
> >      If it is blocking on the first message then it might be blocked by
> the
> >      connection manager. Removing the per-peer queue pair might help in
> that
> >      case.
> >
> >      -Nathan
> >      On Mon, May 16, 2016 at 10:11:29PM -0400, Xiaolong Cui wrote:
> >      >    Hi Nathan,
> >      >    Thanks for your answer.
> >      >    The "credits" make sense for the purpose of flow control.
> However,
> >      the
> >      >    sender in my case will be blocked even for the first message.
> This
> >      doesn't
> >      >    seem to be the symptom of running out of credits. Is there any
> >      reason for
> >      >    this? Also, is there a mac parameter for the number of credits?
> >      >    Best,
> >      >    Michael
> >      >    On Mon, May 16, 2016 at 6:35 PM, Nathan Hjelm <hje...@lanl.gov
> >
> >      wrote:
> >      >
> >      >      When using eager_rdma the sender will block once it runs out
> of
> >      >      "credits". If the receiver enters MPI for any reason the
> incoming
> >      >      messages will be placed in the ob1 unexpected queue and the
> >      credits will
> >      >      be returned to the sender. If you turn off eager_rdma you
> will
> >      probably
> >      >      get different results. That said, the unexpected message
> path is
> >      >      non-optimal and it would be best to ensure a matching
> receive is
> >      posted
> >      >      before the send.
> >      >
> >      >      Additionally, if you are using infiniband I recommend against
> >      adding a
> >      >      per-peer queue pair to btl_openib_receive_queues. We have not
> >      seen any
> >      >      performance benefit to using per-peer queue pairs and they
> do not
> >      >      scale.
> >      >
> >      >      -Nathan Hjelm
> >      >      HPC-ENV, LANL
> >      >      On Mon, May 16, 2016 at 12:21:41PM -0400, Xiaolong Cui wrote:
> >      >      >    Hi,
> >      >      >    I am using Open MPI 1.8.6. I guess my question is
> related to
> >      the
> >      >      flow
> >      >      >    control algorithm for small messages. The question is
> how to
> >      avoid
> >      >      the
> >      >      >    sender being blocked by the receiver when using openib
> >      module for
> >      >      small
> >      >      >    messages and using blocking send. I have looked through
> this
> >      >      >
> >      >
> >      FAQ(
> https://www.open-mpi.org/faq/?category=openfabrics#ofa-troubleshoot)
> >      >      >    but didn't find the answer. My understanding of "eager
> >      sending
> >      >      protocol"
> >      >      >    is that if a message is "small", it will be transported
> to
> >      the
> >      >      receiver
> >      >      >    immediately, even if the receiver is not ready. As a
> result,
> >      the
> >      >      sender
> >      >      >    won't be blocked until the receiver posts the receive
> >      operation.
> >      >      >    I am trying to observe such behavior with a simple
> program
> >      of two
> >      >      MPI
> >      >      >    ranks (attached). My confusion is that while I can see
> the
> >      behavior
> >      >      with
> >      >      >    "vader" module (shared memory) when running the two
> ranks on
> >      the
> >      >      same
> >      >      >    node,
> >      >      >    [output]
> >      >      >
> >      >      >    [0] size = 16, loop = 78, time = 0.00007
> >      >      >
> >      >      >    [1] size = 16, loop = 78, time = 3.42426
> >      >      >
> >      >      >    [/output]
> >      >      >    but I cannot see it when running them on two nodes
> using the
> >      >      "openib"
> >      >      >    module.
> >      >      >    [output]
> >      >      >
> >      >      >    [0] size = 16, loop = 78, time = 3.42627
> >      >      >
> >      >      >    [1] size = 16, loop = 78, time = 3.42426
> >      >      >
> >      >      >    [/output]
> >      >      >    So anyone knows the reason? My runtime configuration is
> also
> >      >      attached.
> >      >      >    Thanks!
> >      >      >    Sincerely,
> >      >      >    Michael
> >      >      >    --
> >      >      >    Xiaolong Cui (Michael)
> >      >      >    Department of Computer Science
> >      >      >    Dietrich School of Arts & Science
> >      >      >    University of Pittsburgh
> >      >      >    Pittsburgh, PA 15260
> >      >
> >      >      > btl = openib,vader,self
> >      >      > #btl_base_verbose = 100
> >      >      > btl_openib_use_eager_rdma = 1
> >      >      > btl_openib_eager_limit = 160000
> >      >      > btl_openib_rndv_eager_limit = 160000
> >      >      > btl_openib_max_send_size = 160000
> >      >      > btl_openib_receive_queues =
> >      >
> >
> P,128,256,192,64:S,2048,1024,1008,80:S,12288,1024,1008,80:S,160000,1024,512,512
> >      >
> >      >      > #include "mpi.h"
> >      >      > #include <mpi-ext.h>
> >      >      > #include <stdio.h>
> >      >      > #include <stdlib.h>
> >      >      >
> >      >      > int main(int argc, char *argv[])
> >      >      > {
> >      >      >    int size, rank, psize;
> >      >      >    int loops = 78;
> >      >      >    int length = 4;
> >      >      >    MPI_Init(&argc, &argv);
> >      >      >    MPI_Comm_size(MPI_COMM_WORLD, &size);
> >      >      >    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
> >      >      >    int *code = (int *)malloc(length * sizeof(int));
> >      >      >    MPI_Status status;
> >      >      >    long long i = 0;
> >      >      >    double time_s = MPI_Wtime();
> >      >      >
> >      >      >    if(rank % 2 == 1)
> >      >      >    {
> >      >      >        int i ;
> >      >      >        int j ;
> >      >      >        double a = 0.3, b = 0.5;
> >      >      >        for(i = 0; i < 30000; i++)
> >      >      >            for(j = 0; j < 30000; j++){
> >      >      >                a = a * 2;
> >      >      >                b = b + a;
> >      >      >            }
> >      >      >    }
> >      >      >
> >      >      >    for(i = 0; i < loops; i++){
> >      >      >        if(rank % 2 == 0){
> >      >      >            MPI_Send(code, length, MPI_INT, rank + 1, 0,
> >      >      MPI_COMM_WORLD);
> >      >      >        }
> >      >      >        else if(rank % 2 == 1){
> >      >      >            MPI_Recv(code, length, MPI_INT, rank - 1, 0,
> >      >      MPI_COMM_WORLD, MPI_STATUS_IGNORE);
> >      >      >        }
> >      >      >    }
> >      >      >    double time_e = MPI_Wtime();
> >      >      >    printf("[%d] size = %d, loop = %d, time = %.5f\n", rank,
> >      length *
> >      >      sizeof(int), loops, time_e - time_s);
> >      >      >
> >      >      >    MPI_Finalize();
> >      >      >    return 0;
> >      >      > }
> >      >      >
> >      >
> >      >      > _______________________________________________
> >      >      > users mailing list
> >      >      > us...@open-mpi.org
> >      >      > Subscription:
> >      https://www.open-mpi.org/mailman/listinfo.cgi/users
> >      >      > Link to this post:
> >      >
> http://www.open-mpi.org/community/lists/users/2016/05/29224.php
> >      >
> >      >      _______________________________________________
> >      >      users mailing list
> >      >      us...@open-mpi.org
> >      >      Subscription:
> https://www.open-mpi.org/mailman/listinfo.cgi/users
> >      >      Link to this post:
> >      >
> http://www.open-mpi.org/community/lists/users/2016/05/29227.php
> >      >
> >      >    --
> >      >    Xiaolong Cui (Michael)
> >      >    Department of Computer Science
> >      >    Dietrich School of Arts & Science
> >      >    University of Pittsburgh
> >      >    Pittsburgh, PA 15260
> >
> >      > _______________________________________________
> >      > users mailing list
> >      > us...@open-mpi.org
> >      > Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/users
> >      > Link to this post:
> >      http://www.open-mpi.org/community/lists/users/2016/05/29228.php
> >
> >      _______________________________________________
> >      users mailing list
> >      us...@open-mpi.org
> >      Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/users
> >      Link to this post:
> >      http://www.open-mpi.org/community/lists/users/2016/05/29229.php
> >
> >    --
> >    Xiaolong Cui (Michael)
> >    Department of Computer Science
> >    Dietrich School of Arts & Science
> >    University of Pittsburgh
> >    Pittsburgh, PA 15260
>
> > _______________________________________________
> > users mailing list
> > us...@open-mpi.org
> > Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/users
> > Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/05/29230.php
>
>
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> Subscription: https://www.open-mpi.org/mailman/listinfo.cgi/users
> Link to this post:
> http://www.open-mpi.org/community/lists/users/2016/05/29231.php
>



-- 
Xiaolong Cui (Michael)
Department of Computer Science
Dietrich School of Arts & Science
University of Pittsburgh
Pittsburgh, PA 15260

Reply via email to