<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">The MPI vector type requires that the memory be a single contiguous section - your code, while using a natural C++ style, allocates IE*JE separate arrays of size KE doubles, which may not be placed in successive locations. &nbsp;To use the MPI_Type_vector, you need to allocate the entire memory as a single IE*JE*KE*sizeof(double) memory block; you can then create and set the various a[] and a{][] fields to point into this.<div><br></div><div>Bill</div><div><br><div><div>On Mar 17, 2012, at 2:53 AM, Lion Lion wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite">
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi all<div>I have a problem with mpi_type_vector, I want to divide a cubic matrix between for example two processes for solving my problem I have to send boundary plane's information from one process to other I did it before by point_point_communication but I know it's not good because of my huge matrix so I want to use derived data type.</div><div>I want to create a vector I know that in c++ matrix is row major but I have problem with&nbsp;&nbsp;mpi_type_vector().I write arguments with respect to tutorial&nbsp;<a href="http://www.mcs.anl.gov/research/projects/mpi/www/www3/MPI_Type_vector.html">http://www.mcs.anl.gov/research/projects/mpi/www/www3/MPI_Type_vector.html</a></div><div>but I get segmentation fault error .my code is :</div><div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(120, 72, 47); ">#include <span style="color: #d12c26">&lt;mpi.h&gt;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(209, 44, 38); "><span style="color: #78482f">#include </span>&lt;iostream&gt;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); ">using<span style="color: #000000"> </span>namespace<span style="color: #000000"> std;</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; min-height: 13px; "><br></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">int</span> main(<span style="color: #bb2d9d">int</span> argc,<span style="color: #bb2d9d">char</span> ** argv)</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">{</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">int</span> <span style="color: #bb2d9d">const</span> IE=<font class="Apple-style-span" color="#2c2ecf">100</font>,JE=<font class="Apple-style-span" color="#2c2ecf">25</font>,KE=<font class="Apple-style-span" color="#2c2ecf">100;</font></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">int</span> size,rank;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Status status;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Init(&amp;argc,&amp;argv);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Comm_size(MPI_COMM_WORLD,&amp;size);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Comm_rank(MPI_COMM_WORLD,&amp;rank);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Datatype sub;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(0, 132, 37); ">MPI_Type_vector(KE,IE,IE+(JE-1)*IE,MPI_DOUBLE,&amp;sub);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Type_commit(&amp;sub);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">if</span> (rank==<span style="color: #2c2ecf">0</span>){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); ">double<span style="color: #000000">*** a=</span>new<span style="color: #000000"> </span>double<span style="color: #000000">**[IE];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> i=<span style="color: #2c2ecf">0</span>;i&lt;IE;i++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">a[i]=<span style="color: #bb2d9d">new</span> <span style="color: #bb2d9d">double</span> *[JE];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> j=<span style="color: #2c2ecf">0</span>;j&lt;JE;j++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">a[i][j]=<span style="color: #bb2d9d">new</span> <span style="color: #bb2d9d">double</span> [KE];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> i=<span style="color: #2c2ecf">0</span>;i&lt;IE;i++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> j=<span style="color: #2c2ecf">0</span>;j&lt;JE;j++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> k=<span style="color: #2c2ecf">0</span>;k&lt;KE;k++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">a[i][j][k]=<span style="color: #2c2ecf">2</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}}}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> i=<span style="color: #2c2ecf">0</span>;i&lt;IE;i++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> j=<span style="color: #2c2ecf">0</span>;j&lt;JE;j++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">a[i][j][<span style="color: #2c2ecf">0</span>]=<span style="color: #2c2ecf">2</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Send(&amp;a[<span style="color: #2c2ecf">0</span>][0][0],<span style="color: #2c2ecf">1</span>,sub,<span style="color: #2c2ecf">1</span>,<span style="color: #2c2ecf">52</span>,MPI_COMM_WORLD);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">if</span> (rank==<span style="color: #2c2ecf">1</span>){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; color: rgb(187, 45, 157); ">double<span style="color: #000000">*** b=</span>new<span style="color: #000000"> </span>double<span style="color: #000000">**[IE];</span></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> i=<span style="color: #2c2ecf">0</span>;i&lt;IE;i++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">b[i]=<span style="color: #bb2d9d">new</span> <span style="color: #bb2d9d">double</span> *[JE];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> j=<span style="color: #2c2ecf">0</span>;j&lt;JE;j++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">b[i][j]=<span style="color: #bb2d9d">new</span> <span style="color: #bb2d9d">double</span> [KE];</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> i=<span style="color: #2c2ecf">0</span>;i&lt;IE;i++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> j=<span style="color: #2c2ecf">0</span>;j&lt;JE;j++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> k=<span style="color: #2c2ecf">0</span>;k&lt;KE;k++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">b[i][j][k]=<span style="color: #2c2ecf">0</span>;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}}}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Recv(&amp;b[<span style="color: #2c2ecf">0</span>][0][0][0],<span style="color: #2c2ecf">1</span>,sub,<span style="color: #2c2ecf">0</span>,<span style="color: #2c2ecf">52</span>,MPI_COMM_WORLD,&amp;status);</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> i=<span style="color: #2c2ecf">0</span>;i&lt;IE;i++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> j=<span style="color: #2c2ecf">0</span>;j&lt;JE;j++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">for</span>(<span style="color: #bb2d9d">int</span> k=<span style="color: #2c2ecf">0</span>;k&lt;KE;k++){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; "><span style="color: #bb2d9d">if</span>(b[i][j][k]&gt;<span style="color: #2c2ecf">0</span>){</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">cout&lt;&lt;<span style="color: #d12c26">"b["</span>&lt;&lt;i&lt;&lt;<span style="color: #d12c26">"]["</span>&lt;&lt;j&lt;&lt;<span style="color: #d12c26">"]["</span>&lt;&lt;k&lt;&lt;<span style="color: #d12c26">"]="</span>&lt;&lt;b[i][j][k]&lt;&lt;endl;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}}}}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">MPI_Finalize();</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">}</div></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 11px/normal Menlo; ">I just want to send plane y=0 from process 0 to process 1.can everybody help me?</div></div>_______________________________________________<br>mpich-discuss mailing list &nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:mpich-discuss@mcs.anl.gov">mpich-discuss@mcs.anl.gov</a><br>To manage subscription options or unsubscribe:<br><a href="https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss">https://lists.mcs.anl.gov/mailman/listinfo/mpich-discuss</a><br></blockquote></div><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><div><div style="font-size: 12px; ">William&nbsp;Gropp</div><div style="font-size: 12px; ">Director, Parallel Computing Institute</div><div style="font-size: 12px; ">Deputy Director for Research</div><div style="font-size: 12px; ">Institute for Advanced Computing Applications and Technologies</div><div style="font-size: 12px; ">Paul and Cynthia Saylor Professor of Computer Science</div><div style="font-size: 12px; ">University of Illinois Urbana-Champaign</div></div><div><br></div></span><br class="Apple-interchange-newline">
</div>
<br></div></body></html>