<div dir="auto"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, May 5, 2020 at 5:17 PM <<a href="mailto:discuss-request@mpich.org" target="_blank" rel="noreferrer">discuss-request@mpich.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Send discuss mailing list submissions to<br>
        <a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a><br>
<br>
To subscribe or unsubscribe via the World Wide Web, visit<br>
        <a href="https://lists.mpich.org/mailman/listinfo/discuss" rel="noreferrer noreferrer" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
or, via email, send a message with subject or body 'help' to<br>
        <a href="mailto:discuss-request@mpich.org" target="_blank" rel="noreferrer">discuss-request@mpich.org</a><br>
<br>
You can reach the person managing the list at<br>
        <a href="mailto:discuss-owner@mpich.org" target="_blank" rel="noreferrer">discuss-owner@mpich.org</a><br>
<br>
When replying, please edit your Subject line so it is more specific<br>
than "Re: Contents of discuss digest..."<br>
<br>
<br>
Today's Topics:<br>
<br>
   1.  Better alternatives of MPI_Allreduce() (Benson Muite)<br>
   2. Re:  Better alternatives of MPI_Allreduce() (Benson Muite)<br>
   3. Re:  Better alternatives of MPI_Allreduce() (hritikesh semwal)<br>
<br>
<br>
----------------------------------------------------------------------<br>
<br>
Message: 1<br>
Date: Tue, 05 May 2020 14:20:57 +0300<br>
From: "Benson Muite" <<a href="mailto:benson_muite@emailplus.org" target="_blank" rel="noreferrer">benson_muite@emailplus.org</a>><br>
To: "Benson Muite via discuss" <<a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a>><br>
Cc: <a href="mailto:hritikesh.semwal@gmail.com" target="_blank" rel="noreferrer">hritikesh.semwal@gmail.com</a><br>
Subject: [mpich-discuss] Better alternatives of MPI_Allreduce()<br>
Message-ID: <<a href="mailto:a38d489f-25a6-40a1-9640-42bd2f52a80f@www.fastmail.com" target="_blank" rel="noreferrer">a38d489f-25a6-40a1-9640-42bd2f52a80f@www.fastmail.com</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
<br>
>>  > <br>
>>  > Hi Hitesh,<br>
>>  > <br>
>>  > What hardware are you running on and what is the interconnect?<br>
> <br>
> Right now I am using a cluster.<br>
<br>
What is the interconnect?<br>
> <br>
>> > Have you tried changing any of the MPI settings?<br>
> <br>
> What do you mean by MPI settings?<br>
Given your comment on the barrier, this is probably not so useful at the moment.<br>
> <br>
>> > Can the reduction be done asynchronously?<br>
> <br>
> I did not get your question.<br>
<br>
For example using a non blocking all reduce:<br>
<a href="https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report/node135.htm" rel="noreferrer noreferrer" target="_blank">https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report/node135.htm</a><br>
<br>
> <br>
>> > <br>
>>  > Regards,<br>
>>  > Benson<br>
>> <br>
>>  Also, is your work load balanced? One way to check this might be to place a barrier just before the all-reduce call. If the barrier ends up taking most of your time, then it is likely you will need to determine a better way to distribute the computational work.<br>
> <br>
>  Thanks for your response.<br>
> <br>
> Yes, you are right. I have put barrier just before Allreduce and out of the total time consumed by Allreduce, 79% time is consumed by the barrier. But my computational work is balanced. Right now, I have distributed 97336 cells among 24 processors and maximum and minimum cell distribution among all processors is 4057 and 4055 respectively which is not too bad. Is there any solution to get rid of this. <br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mpich.org/pipermail/discuss/attachments/20200505/b2c627af/attachment-0001.html" rel="noreferrer noreferrer" target="_blank">http://lists.mpich.org/pipermail/discuss/attachments/20200505/b2c627af/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Message: 2<br>
Date: Tue, 05 May 2020 14:36:38 +0300<br>
From: "Benson Muite" <<a href="mailto:benson_muite@emailplus.org" target="_blank" rel="noreferrer">benson_muite@emailplus.org</a>><br>
To: "Benson Muite via discuss" <<a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a>><br>
Subject: Re: [mpich-discuss] Better alternatives of MPI_Allreduce()<br>
Message-ID: <<a href="mailto:2e8915e2-3c42-450c-921c-f282e46f1049@www.fastmail.com" target="_blank" rel="noreferrer">2e8915e2-3c42-450c-921c-f282e46f1049@www.fastmail.com</a>><br>
Content-Type: text/plain; charset="us-ascii"<br>
<br>
<br>
<br>
On Tue, May 5, 2020, at 2:16 PM, hritikesh semwal via discuss wrote:<br>
> I want to add two more questions about my solver,<br>
> 1. I am using MPI_Neighbor_alltoallw() for exchanging the data by generating a distributed graph topology communicator. My concern is that most of the time my code is working fine but sometimes I guess it is going into deadlock (as it is not showing any output). But MPI_Neighbor_alltoallw uses MPI_Waitall inside it so I am not getting why exactly this is happening.<br>
<br>
May want to check sending and receiving correct data. Perhaps also try MPI_Neighbor_alltoallw<br>
<br>
> 2. Is it possible that every time I run the code the processors times for completion of the task may vary? For example, for one run it all processors takes around 100 seconds and for another run, all processors take 110 seconds. <br>
<br>
There is usually some variability. Do you solve the same system each time? What is the method of solution? If your code is available it can sometimes be easier to give suggestions.<br>
<br></blockquote><div>Yes, the system of equations are the same. I am using the finite volume method for solving Navier stokes equations. By first sentence you mean to say it is possible.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> <br>
> Please help in above two matters.<br>
> <br>
> On Tue, May 5, 2020 at 4:28 PM hritikesh semwal <<a href="mailto:hritikesh.semwal@gmail.com" target="_blank" rel="noreferrer">hritikesh.semwal@gmail.com</a>> wrote:<br>
>> Thanks for your response.<br>
>> <br>
>> Yes, you are right. I have put barrier just before Allreduce and out of the total time consumed by Allreduce, 79% time is consumed by the barrier. But my computational work is balanced. Right now, I have distributed 97336 cells among 24 processors and maximum and minimum cell distribution among all processors is 4057 and 4055 respectively which is not too bad. Is there any solution to get rid of this.<br>
<br>
Try profiling your code not just looking at cell distribution. Are any profling tools already installed on your cluster?<br></blockquote><div><br></div><div>gprof and valgrind are there.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
>> On Tue, May 5, 2020 at 12:30 PM Joachim Protze <<a href="mailto:protze@itc.rwth-aachen.de" target="_blank" rel="noreferrer">protze@itc.rwth-aachen.de</a>> wrote:<br>
>>> Hello,<br>
>>> <br>
>>>  it is important to understand, that most of the time you see is not the <br>
>>>  cost of the allreduce, but the cost of synchronization (caused by load <br>
>>>  imbalance).<br>
>>> <br>
>>>  You can do an easy experiment and add a barrier before the allreduce. <br>
>>>  Then you will see the actual cost of the allreduce, while the cost of <br>
>>>  synchronization will go into the barrier.<br>
>>> <br>
>>>  Now, think about dependencies in your algorithm: do you need the output <br>
>>>  value immediately? Is this the same time, where you have the input value <br>
>>>  ready?<br>
>>>  -> otherwise use non-blocking communication and perform independent work <br>
>>>  in between<br>
>>> <br>
>>>  In any case: fix your load imbalance (the root cause of synchronization <br>
>>>  cost).<br>
>>> <br>
>>>  Best<br>
>>>  Joachim<br>
>>> <br>
>>>  Am 05.05.20 um 07:38 schrieb hritikesh semwal via discuss:<br>
>>>  > Hello all,<br>
>>>  > <br>
>>>  > I am working on the development of a parallel CFD solver and I am using <br>
>>>  > MPI_Allreduce for the global summation of the local errors calculated on <br>
>>>  > all processes of a group and the summation is to be used by all the <br>
>>>  > processes. My concern is that MPI_Allreduce is taking almost 27-30% of <br>
>>>  > the total time used, which is a significant amount. So, I want to ask if <br>
>>>  > anyone can suggest me better alternative/s to replace MPI_Allreduce <br>
>>>  > which can reduce the time consumption.<br>
>>>  > <br>
>>>  > Thank you.<br>
>>>  > <br>
>>>  > _______________________________________________<br>
>>>  > discuss mailing list <a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a><br>
>>>  > To manage subscription options or unsubscribe:<br>
>>>  > <a href="https://lists.mpich.org/mailman/listinfo/discuss" rel="noreferrer noreferrer" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
>>>  > <br>
>>> <br>
>>> <br>
>>>  -- <br>
>>>  Dipl.-Inf. Joachim Protze<br>
>>> <br>
>>>  IT Center<br>
>>>  Group: High Performance Computing<br>
>>>  Division: Computational Science and Engineering<br>
>>>  RWTH Aachen University<br>
>>>  Seffenter Weg 23<br>
>>>  D 52074 Aachen (Germany)<br>
>>>  Tel: +49 241 80- 24765<br>
>>>  Fax: +49 241 80-624765<br>
>>> <a href="mailto:protze@itc.rwth-aachen.de" target="_blank" rel="noreferrer">protze@itc.rwth-aachen.de</a><br>
>>> <a href="http://www.itc.rwth-aachen.de" rel="noreferrer noreferrer" target="_blank">www.itc.rwth-aachen.de</a><br>
>>> <br>
> _______________________________________________<br>
> discuss mailing list <a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a><br>
> To manage subscription options or unsubscribe:<br>
> <a href="https://lists.mpich.org/mailman/listinfo/discuss" rel="noreferrer noreferrer" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
> <br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mpich.org/pipermail/discuss/attachments/20200505/37d6d961/attachment-0001.html" rel="noreferrer noreferrer" target="_blank">http://lists.mpich.org/pipermail/discuss/attachments/20200505/37d6d961/attachment-0001.html</a>><br>
<br>
------------------------------<br>
<br>
Message: 3<br>
Date: Tue, 5 May 2020 17:16:22 +0530<br>
From: hritikesh semwal <<a href="mailto:hritikesh.semwal@gmail.com" target="_blank" rel="noreferrer">hritikesh.semwal@gmail.com</a>><br>
To: Benson Muite <<a href="mailto:benson_muite@emailplus.org" target="_blank" rel="noreferrer">benson_muite@emailplus.org</a>><br>
Cc: Benson Muite via discuss <<a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a>><br>
Subject: Re: [mpich-discuss] Better alternatives of MPI_Allreduce()<br>
Message-ID:<br>
        <<a href="mailto:CAA%2B35d3ZTpmksQR3FOyxJZny4og9gTynzk2zcesAmmYB2OBZhw@mail.gmail.com" target="_blank" rel="noreferrer">CAA+35d3ZTpmksQR3FOyxJZny4og9gTynzk2zcesAmmYB2OBZhw@mail.gmail.com</a>><br>
Content-Type: text/plain; charset="utf-8"<br>
<br>
On Tue, May 5, 2020 at 4:51 PM Benson Muite <<a href="mailto:benson_muite@emailplus.org" target="_blank" rel="noreferrer">benson_muite@emailplus.org</a>><br>
wrote:<br>
<br>
><br>
> ><br>
> > Hi Hitesh,<br>
> ><br>
> > What hardware are you running on and what is the interconnect?<br>
><br>
><br>
> Right now I am using a cluster.<br>
><br>
><br>
> What is the interconnect?<br>
><br>
<br>
I don't know about this. Is it relevant?<br>
<br>
<br>
><br>
><br>
> > Have you tried changing any of the MPI settings?<br>
><br>
><br>
> What do you mean by MPI settings?<br>
><br>
> Given your comment on the barrier, this is probably not so useful at the<br>
> moment.<br>
><br>
><br>
><br>
> > Can the reduction be done asynchronously?<br>
><br>
><br>
> I did not get your question.<br>
><br>
><br>
> For example using a non blocking all reduce:<br>
> <a href="https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report/node135.htm" rel="noreferrer noreferrer" target="_blank">https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report/node135.htm</a><br>
><br>
><br>
I tried using a non-blocking call but after this code is not working<br>
correctly.<br>
<br>
><br>
><br>
> ><br>
> > Regards,<br>
> > Benson<br>
><br>
> Also, is your work load balanced? One way to check this might be to place<br>
> a barrier just before the all-reduce call. If the barrier ends up taking<br>
> most of your time, then it is likely you will need to determine a better<br>
> way to distribute the computational work.<br>
><br>
><br>
>  Thanks for your response.<br>
><br>
> Yes, you are right. I have put barrier just before Allreduce and out of<br>
> the total time consumed by Allreduce, 79% time is consumed by the barrier.<br>
> But my computational work is balanced. Right now, I have distributed 97336<br>
> cells among 24 processors and maximum and minimum cell distribution among<br>
> all processors is 4057 and 4055 respectively which is not too bad. Is there<br>
> any solution to get rid of this?<br>
><br>
> Please help me in this regard.<br>
<br>
><br>
><br>
><br>
><br>
-------------- next part --------------<br>
An HTML attachment was scrubbed...<br>
URL: <<a href="http://lists.mpich.org/pipermail/discuss/attachments/20200505/5b386583/attachment.html" rel="noreferrer noreferrer" target="_blank">http://lists.mpich.org/pipermail/discuss/attachments/20200505/5b386583/attachment.html</a>><br>
<br>
------------------------------<br>
<br>
Subject: Digest Footer<br>
<br>
_______________________________________________<br>
discuss mailing list<br>
<a href="mailto:discuss@mpich.org" target="_blank" rel="noreferrer">discuss@mpich.org</a><br>
<a href="https://lists.mpich.org/mailman/listinfo/discuss" rel="noreferrer noreferrer" target="_blank">https://lists.mpich.org/mailman/listinfo/discuss</a><br>
<br>
<br>
------------------------------<br>
<br>
End of discuss Digest, Vol 91, Issue 5<br>
**************************************<br>
</blockquote></div></div></div>