What is the use of status of MPI_Isend obtained using MPI_Wait?












0















Case: 1. What is the use of status obtained using MPI_Wait()



if(rank==0)
MPI_Isend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD, &request0);
if(rank==1)
MPI_Recv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD);

if(rank==0)
MPI_Wait(&request0, &status);
// Can i use status here to do something?
MPI_Finalize();


Case:2. Use of status is clear here (Just added for comparison)



if(rank==0)
MPI_Ssend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD);
if(rank==1)
MPI_Irecv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD, &request1);

if(rank==1)
MPI_Wait(&request1, &status);
printf("The source is %d", status.MPI_SOURCE);
MPI_Finalize();









share|improve this question





























    0















    Case: 1. What is the use of status obtained using MPI_Wait()



    if(rank==0)
    MPI_Isend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD, &request0);
    if(rank==1)
    MPI_Recv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD);

    if(rank==0)
    MPI_Wait(&request0, &status);
    // Can i use status here to do something?
    MPI_Finalize();


    Case:2. Use of status is clear here (Just added for comparison)



    if(rank==0)
    MPI_Ssend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD);
    if(rank==1)
    MPI_Irecv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD, &request1);

    if(rank==1)
    MPI_Wait(&request1, &status);
    printf("The source is %d", status.MPI_SOURCE);
    MPI_Finalize();









    share|improve this question



























      0












      0








      0








      Case: 1. What is the use of status obtained using MPI_Wait()



      if(rank==0)
      MPI_Isend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD, &request0);
      if(rank==1)
      MPI_Recv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD);

      if(rank==0)
      MPI_Wait(&request0, &status);
      // Can i use status here to do something?
      MPI_Finalize();


      Case:2. Use of status is clear here (Just added for comparison)



      if(rank==0)
      MPI_Ssend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD);
      if(rank==1)
      MPI_Irecv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD, &request1);

      if(rank==1)
      MPI_Wait(&request1, &status);
      printf("The source is %d", status.MPI_SOURCE);
      MPI_Finalize();









      share|improve this question
















      Case: 1. What is the use of status obtained using MPI_Wait()



      if(rank==0)
      MPI_Isend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD, &request0);
      if(rank==1)
      MPI_Recv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD);

      if(rank==0)
      MPI_Wait(&request0, &status);
      // Can i use status here to do something?
      MPI_Finalize();


      Case:2. Use of status is clear here (Just added for comparison)



      if(rank==0)
      MPI_Ssend(&buffer0, count, MPI_INT, 1, 0, MPI_COMM_WORLD);
      if(rank==1)
      MPI_Irecv(&buffer1, count, MPI_INT, 0, 0, MPI_COMM_WORLD, &request1);

      if(rank==1)
      MPI_Wait(&request1, &status);
      printf("The source is %d", status.MPI_SOURCE);
      MPI_Finalize();






      c mpi intel-mpi






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Jan 19 at 10:28







      Black Heart

















      asked Jan 19 at 9:24









      Black HeartBlack Heart

      124119




      124119
























          1 Answer
          1






          active

          oldest

          votes


















          2














          Generally MPI_Status is used to get the the following properties for received messages.




          1. rank of the sender, (status.MPI_SOURCE) particularly relevant when MPI_ANY_SOURCE was used.

          2. tag of the message, (status.MPI_TAG) particularly relevant when MPI_ANY_TAG was used

          3. element-count that was sent, which may differ from posted receive buffer, using MPI_Get_count.


          For send messages, you can use the status to test for MPI_Test_cancelled. Further, for functions that return multiple status, such as MPI_Waitall, in the case of errors, you can use status[i].MPI_ERROR. The main wait function will return MPI_ERR_IN_STATUS in this case.



          If you do not need any of those, you may pass MPI_STATUS_IGNORE instead of a MPI_Status*.






          share|improve this answer


























          • Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

            – Black Heart
            Jan 19 at 10:43






          • 1





            Sorry I wasn't clear. I updated the answer.

            – Zulan
            Jan 19 at 11:02











          Your Answer






          StackExchange.ifUsing("editor", function () {
          StackExchange.using("externalEditor", function () {
          StackExchange.using("snippets", function () {
          StackExchange.snippets.init();
          });
          });
          }, "code-snippets");

          StackExchange.ready(function() {
          var channelOptions = {
          tags: "".split(" "),
          id: "1"
          };
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function() {
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled) {
          StackExchange.using("snippets", function() {
          createEditor();
          });
          }
          else {
          createEditor();
          }
          });

          function createEditor() {
          StackExchange.prepareEditor({
          heartbeatType: 'answer',
          autoActivateHeartbeat: false,
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader: {
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          },
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          });


          }
          });














          draft saved

          draft discarded


















          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54265687%2fwhat-is-the-use-of-status-of-mpi-isend-obtained-using-mpi-wait%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes









          2














          Generally MPI_Status is used to get the the following properties for received messages.




          1. rank of the sender, (status.MPI_SOURCE) particularly relevant when MPI_ANY_SOURCE was used.

          2. tag of the message, (status.MPI_TAG) particularly relevant when MPI_ANY_TAG was used

          3. element-count that was sent, which may differ from posted receive buffer, using MPI_Get_count.


          For send messages, you can use the status to test for MPI_Test_cancelled. Further, for functions that return multiple status, such as MPI_Waitall, in the case of errors, you can use status[i].MPI_ERROR. The main wait function will return MPI_ERR_IN_STATUS in this case.



          If you do not need any of those, you may pass MPI_STATUS_IGNORE instead of a MPI_Status*.






          share|improve this answer


























          • Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

            – Black Heart
            Jan 19 at 10:43






          • 1





            Sorry I wasn't clear. I updated the answer.

            – Zulan
            Jan 19 at 11:02
















          2














          Generally MPI_Status is used to get the the following properties for received messages.




          1. rank of the sender, (status.MPI_SOURCE) particularly relevant when MPI_ANY_SOURCE was used.

          2. tag of the message, (status.MPI_TAG) particularly relevant when MPI_ANY_TAG was used

          3. element-count that was sent, which may differ from posted receive buffer, using MPI_Get_count.


          For send messages, you can use the status to test for MPI_Test_cancelled. Further, for functions that return multiple status, such as MPI_Waitall, in the case of errors, you can use status[i].MPI_ERROR. The main wait function will return MPI_ERR_IN_STATUS in this case.



          If you do not need any of those, you may pass MPI_STATUS_IGNORE instead of a MPI_Status*.






          share|improve this answer


























          • Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

            – Black Heart
            Jan 19 at 10:43






          • 1





            Sorry I wasn't clear. I updated the answer.

            – Zulan
            Jan 19 at 11:02














          2












          2








          2







          Generally MPI_Status is used to get the the following properties for received messages.




          1. rank of the sender, (status.MPI_SOURCE) particularly relevant when MPI_ANY_SOURCE was used.

          2. tag of the message, (status.MPI_TAG) particularly relevant when MPI_ANY_TAG was used

          3. element-count that was sent, which may differ from posted receive buffer, using MPI_Get_count.


          For send messages, you can use the status to test for MPI_Test_cancelled. Further, for functions that return multiple status, such as MPI_Waitall, in the case of errors, you can use status[i].MPI_ERROR. The main wait function will return MPI_ERR_IN_STATUS in this case.



          If you do not need any of those, you may pass MPI_STATUS_IGNORE instead of a MPI_Status*.






          share|improve this answer















          Generally MPI_Status is used to get the the following properties for received messages.




          1. rank of the sender, (status.MPI_SOURCE) particularly relevant when MPI_ANY_SOURCE was used.

          2. tag of the message, (status.MPI_TAG) particularly relevant when MPI_ANY_TAG was used

          3. element-count that was sent, which may differ from posted receive buffer, using MPI_Get_count.


          For send messages, you can use the status to test for MPI_Test_cancelled. Further, for functions that return multiple status, such as MPI_Waitall, in the case of errors, you can use status[i].MPI_ERROR. The main wait function will return MPI_ERR_IN_STATUS in this case.



          If you do not need any of those, you may pass MPI_STATUS_IGNORE instead of a MPI_Status*.







          share|improve this answer














          share|improve this answer



          share|improve this answer








          edited Jan 19 at 11:02

























          answered Jan 19 at 10:36









          ZulanZulan

          15.5k63070




          15.5k63070













          • Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

            – Black Heart
            Jan 19 at 10:43






          • 1





            Sorry I wasn't clear. I updated the answer.

            – Zulan
            Jan 19 at 11:02



















          • Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

            – Black Heart
            Jan 19 at 10:43






          • 1





            Sorry I wasn't clear. I updated the answer.

            – Zulan
            Jan 19 at 11:02

















          Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

          – Black Heart
          Jan 19 at 10:43





          Can you please check Case:1 once more? I'm talking about the status in MPI_Wait(&request0, &status); This MPI_Wait was used to check out MPI_Isend.

          – Black Heart
          Jan 19 at 10:43




          1




          1





          Sorry I wasn't clear. I updated the answer.

          – Zulan
          Jan 19 at 11:02





          Sorry I wasn't clear. I updated the answer.

          – Zulan
          Jan 19 at 11:02


















          draft saved

          draft discarded




















































          Thanks for contributing an answer to Stack Overflow!


          • Please be sure to answer the question. Provide details and share your research!

          But avoid



          • Asking for help, clarification, or responding to other answers.

          • Making statements based on opinion; back them up with references or personal experience.


          To learn more, see our tips on writing great answers.




          draft saved


          draft discarded














          StackExchange.ready(
          function () {
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f54265687%2fwhat-is-the-use-of-status-of-mpi-isend-obtained-using-mpi-wait%23new-answer', 'question_page');
          }
          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Liquibase includeAll doesn't find base path

          How to use setInterval in EJS file?

          Petrus Granier-Deferre