<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic MPI_Comm_connect issue in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/MPI-Comm-connect-issue/m-p/1178223#M8097</link>
    <description>&lt;P&gt;Hi ,&lt;/P&gt;

&lt;P&gt;i am trying to connect processes running as clients and a server .&lt;/P&gt;

&lt;P&gt;I run the server as mpiexec -n 1&amp;nbsp;&amp;nbsp;-genv I_MPI_FABRICS shm:tcp ./ConsoleApplication1.exe&lt;/P&gt;

&lt;P&gt;and the clients as&amp;nbsp;mpiexec -n 2 .\ConsoleApplication2.exe&lt;/P&gt;

&lt;P&gt;The code for server is as shown below&lt;/P&gt;

&lt;DIV&gt;int num_errors = 0;&lt;/DIV&gt;

&lt;DIV&gt;int rank, size,again;&lt;/DIV&gt;

&lt;DIV&gt;char port_name[MPI_MAX_PORT_NAME] , pname2[MPI_MAX_PORT_NAME];&lt;/DIV&gt;

&lt;DIV&gt;MPI_Status status;&lt;/DIV&gt;

&lt;DIV&gt;//MPI_Comm comm1, comm2;&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm client;&lt;/DIV&gt;

&lt;DIV&gt;int data = 0;&lt;/DIV&gt;

&lt;DIV&gt;double buf[MAX_DATA];&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;MPI_Init(NULL, NULL);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;/DIV&gt;

&lt;DIV&gt;if (rank == 0)&lt;/DIV&gt;

&lt;DIV&gt;{&lt;/DIV&gt;

&lt;DIV&gt;MPI_Open_port(MPI_INFO_NULL, port_name);&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;while (1) {&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm_accept(port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD,&lt;/DIV&gt;

&lt;DIV&gt;&amp;amp;client);&lt;/DIV&gt;

&lt;DIV&gt;again = 1;&lt;/DIV&gt;

&lt;DIV&gt;while (again) {&lt;/DIV&gt;

&lt;DIV&gt;MPI_Request rq;&lt;/DIV&gt;

&lt;DIV&gt;MPI_Recv(buf, MAX_DATA, MPI_DOUBLE,&lt;/DIV&gt;

&lt;DIV&gt;MPI_ANY_SOURCE, MPI_ANY_TAG, client, &amp;amp;status);&lt;/DIV&gt;

&lt;DIV&gt;//MPI_Wait(&amp;amp;rq, &amp;amp;status);&lt;/DIV&gt;

&lt;DIV&gt;switch (status.MPI_TAG) {&lt;/DIV&gt;

&lt;DIV&gt;case 0: MPI_Comm_free(&amp;amp;client);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Close_port(port_name);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Finalize();&lt;/DIV&gt;

&lt;DIV&gt;return 0;&lt;/DIV&gt;

&lt;DIV&gt;case 1: MPI_Comm_disconnect(&amp;amp;client);&lt;/DIV&gt;

&lt;DIV&gt;again = 0;&lt;/DIV&gt;

&lt;DIV&gt;break;&lt;/DIV&gt;

&lt;DIV&gt;case 2: printf("value received%lf", buf[0]);&lt;/DIV&gt;

&lt;DIV&gt;break;&lt;/DIV&gt;

&lt;DIV&gt;default:&lt;/DIV&gt;

&lt;DIV&gt;/* Unexpected message type */&lt;/DIV&gt;

&lt;DIV&gt;MPI_Abort(MPI_COMM_WORLD, 1);&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;MPI_Finalize();&lt;/DIV&gt;

&lt;DIV&gt;return 0;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;and the code for client ( a test code only ) is as shown below&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;
	&lt;DIV&gt;MPI_Comm server;&lt;/DIV&gt;

	&lt;DIV&gt;double buf[MAX_DATA];&lt;/DIV&gt;

	&lt;DIV&gt;char port_name[MPI_MAX_PORT_NAME];&lt;/DIV&gt;

	&lt;DIV&gt;int tag = 2 , n= MAX_DATA;&lt;/DIV&gt;

	&lt;DIV&gt;int rank, size;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em;"&gt;int prov;&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;//MPI_Init_thread(NULL, NULL, MPI_THREAD_MULTIPLE, &amp;amp;prov);&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;ifstream ifs("E:/mpi_port_name.txt", ios_base::in);&lt;/DIV&gt;

	&lt;DIV&gt;ifs.getline(port_name, MPI_MAX_PORT_NAME + 1);&lt;/DIV&gt;

	&lt;DIV&gt;ifs.close();&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Comm_connect(port_name, MPI_INFO_NULL, 0, MPI_COMM_SELF,&lt;/DIV&gt;

	&lt;DIV&gt;&amp;amp;server);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;////while (!done) {&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;tag = 2; /* Action to perform */&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;buf[0] = 3.1415926;&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;MPI_Send(buf, n, MPI_DOUBLE, 0, tag, server);&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;/* etc */&lt;/DIV&gt;

	&lt;DIV&gt;////}&lt;/DIV&gt;

	&lt;DIV&gt;//MPI_Send(buf, 0, MPI_DOUBLE, 0, 1, server);&lt;/DIV&gt;

	&lt;DIV&gt;//MPI_Comm_disconnect(&amp;amp;server);&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Finalize();&lt;/DIV&gt;

	&lt;DIV&gt;return 0;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;Now the problem i am facing is that the client code hangs in the MPI_Comm_connect call whereas if i run a single client the connection is established properly.&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;My problem is i have to connect more than one process of a job with another process dynamically . I am new to MPI so any help will be much appreciated .&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;Regards&lt;/DIV&gt;

	&lt;DIV&gt;Ujwal&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 03 May 2018 09:47:17 GMT</pubDate>
    <dc:creator>Manhas__Ujwal</dc:creator>
    <dc:date>2018-05-03T09:47:17Z</dc:date>
    <item>
      <title>MPI_Comm_connect issue</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/MPI-Comm-connect-issue/m-p/1178223#M8097</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;

&lt;P&gt;i am trying to connect processes running as clients and a server .&lt;/P&gt;

&lt;P&gt;I run the server as mpiexec -n 1&amp;nbsp;&amp;nbsp;-genv I_MPI_FABRICS shm:tcp ./ConsoleApplication1.exe&lt;/P&gt;

&lt;P&gt;and the clients as&amp;nbsp;mpiexec -n 2 .\ConsoleApplication2.exe&lt;/P&gt;

&lt;P&gt;The code for server is as shown below&lt;/P&gt;

&lt;DIV&gt;int num_errors = 0;&lt;/DIV&gt;

&lt;DIV&gt;int rank, size,again;&lt;/DIV&gt;

&lt;DIV&gt;char port_name[MPI_MAX_PORT_NAME] , pname2[MPI_MAX_PORT_NAME];&lt;/DIV&gt;

&lt;DIV&gt;MPI_Status status;&lt;/DIV&gt;

&lt;DIV&gt;//MPI_Comm comm1, comm2;&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm client;&lt;/DIV&gt;

&lt;DIV&gt;int data = 0;&lt;/DIV&gt;

&lt;DIV&gt;double buf[MAX_DATA];&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;MPI_Init(NULL, NULL);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;/DIV&gt;

&lt;DIV&gt;if (rank == 0)&lt;/DIV&gt;

&lt;DIV&gt;{&lt;/DIV&gt;

&lt;DIV&gt;MPI_Open_port(MPI_INFO_NULL, port_name);&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;while (1) {&lt;/DIV&gt;

&lt;DIV&gt;MPI_Comm_accept(port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD,&lt;/DIV&gt;

&lt;DIV&gt;&amp;amp;client);&lt;/DIV&gt;

&lt;DIV&gt;again = 1;&lt;/DIV&gt;

&lt;DIV&gt;while (again) {&lt;/DIV&gt;

&lt;DIV&gt;MPI_Request rq;&lt;/DIV&gt;

&lt;DIV&gt;MPI_Recv(buf, MAX_DATA, MPI_DOUBLE,&lt;/DIV&gt;

&lt;DIV&gt;MPI_ANY_SOURCE, MPI_ANY_TAG, client, &amp;amp;status);&lt;/DIV&gt;

&lt;DIV&gt;//MPI_Wait(&amp;amp;rq, &amp;amp;status);&lt;/DIV&gt;

&lt;DIV&gt;switch (status.MPI_TAG) {&lt;/DIV&gt;

&lt;DIV&gt;case 0: MPI_Comm_free(&amp;amp;client);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Close_port(port_name);&lt;/DIV&gt;

&lt;DIV&gt;MPI_Finalize();&lt;/DIV&gt;

&lt;DIV&gt;return 0;&lt;/DIV&gt;

&lt;DIV&gt;case 1: MPI_Comm_disconnect(&amp;amp;client);&lt;/DIV&gt;

&lt;DIV&gt;again = 0;&lt;/DIV&gt;

&lt;DIV&gt;break;&lt;/DIV&gt;

&lt;DIV&gt;case 2: printf("value received%lf", buf[0]);&lt;/DIV&gt;

&lt;DIV&gt;break;&lt;/DIV&gt;

&lt;DIV&gt;default:&lt;/DIV&gt;

&lt;DIV&gt;/* Unexpected message type */&lt;/DIV&gt;

&lt;DIV&gt;MPI_Abort(MPI_COMM_WORLD, 1);&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;}&lt;/DIV&gt;

&lt;DIV&gt;MPI_Finalize();&lt;/DIV&gt;

&lt;DIV&gt;return 0;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;and the code for client ( a test code only ) is as shown below&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;DIV&gt;
	&lt;DIV&gt;MPI_Comm server;&lt;/DIV&gt;

	&lt;DIV&gt;double buf[MAX_DATA];&lt;/DIV&gt;

	&lt;DIV&gt;char port_name[MPI_MAX_PORT_NAME];&lt;/DIV&gt;

	&lt;DIV&gt;int tag = 2 , n= MAX_DATA;&lt;/DIV&gt;

	&lt;DIV&gt;int rank, size;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Init(&amp;amp;argc, &amp;amp;argv);&lt;/DIV&gt;

	&lt;DIV&gt;&lt;SPAN style="font-size: 1em;"&gt;int prov;&lt;/SPAN&gt;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;//MPI_Init_thread(NULL, NULL, MPI_THREAD_MULTIPLE, &amp;amp;prov);&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Comm_size(MPI_COMM_WORLD, &amp;amp;size);&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Comm_rank(MPI_COMM_WORLD, &amp;amp;rank);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;ifstream ifs("E:/mpi_port_name.txt", ios_base::in);&lt;/DIV&gt;

	&lt;DIV&gt;ifs.getline(port_name, MPI_MAX_PORT_NAME + 1);&lt;/DIV&gt;

	&lt;DIV&gt;ifs.close();&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Comm_connect(port_name, MPI_INFO_NULL, 0, MPI_COMM_SELF,&lt;/DIV&gt;

	&lt;DIV&gt;&amp;amp;server);&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;////while (!done) {&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;tag = 2; /* Action to perform */&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;buf[0] = 3.1415926;&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;MPI_Send(buf, n, MPI_DOUBLE, 0, tag, server);&lt;/DIV&gt;

	&lt;DIV&gt;//&lt;SPAN style="white-space:pre"&gt; &lt;/SPAN&gt;/* etc */&lt;/DIV&gt;

	&lt;DIV&gt;////}&lt;/DIV&gt;

	&lt;DIV&gt;//MPI_Send(buf, 0, MPI_DOUBLE, 0, 1, server);&lt;/DIV&gt;

	&lt;DIV&gt;//MPI_Comm_disconnect(&amp;amp;server);&lt;/DIV&gt;

	&lt;DIV&gt;MPI_Finalize();&lt;/DIV&gt;

	&lt;DIV&gt;return 0;&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;Now the problem i am facing is that the client code hangs in the MPI_Comm_connect call whereas if i run a single client the connection is established properly.&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;My problem is i have to connect more than one process of a job with another process dynamically . I am new to MPI so any help will be much appreciated .&lt;/DIV&gt;

	&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

	&lt;DIV&gt;Regards&lt;/DIV&gt;

	&lt;DIV&gt;Ujwal&lt;/DIV&gt;
&lt;/DIV&gt;

&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 May 2018 09:47:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/MPI-Comm-connect-issue/m-p/1178223#M8097</guid>
      <dc:creator>Manhas__Ujwal</dc:creator>
      <dc:date>2018-05-03T09:47:17Z</dc:date>
    </item>
    <item>
      <title>This question would be more</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/MPI-Comm-connect-issue/m-p/1178224#M8098</link>
      <description>&lt;P&gt;This question would be more likely to get attention on the companion forum on hpc and cluster computing.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 03 May 2018 15:23:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/MPI-Comm-connect-issue/m-p/1178224#M8098</guid>
      <dc:creator>TimP</dc:creator>
      <dc:date>2018-05-03T15:23:09Z</dc:date>
    </item>
  </channel>
</rss>

