<html dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" id="owaParaStyle"></style>
</head>
<body fpstyle="1" ocsi="0">
<div style="direction: ltr;font-family: Tahoma;color: #000000;font-size: 10pt;">
<div>Hello,</div>
<div><br>
</div>
<div>I am trying to use Generic Hyperslabbing to change an initial array from the normal Cactus MPI distribution to one where all the GF points can exist in one loop on one processor. &nbsp;For example if phi_temp is an N^3 array and phi_in is an (N-2)^3 array,</div>
<div><br>
</div>
<div>&nbsp; &nbsp; sizex &nbsp;= cctk_gsh[0];&nbsp;</div>
<div>&nbsp; &nbsp; sizey &nbsp;= cctk_gsh[1];</div>
<div>&nbsp; &nbsp; sizez &nbsp;= cctk_gsh[2];</div>
<div>&nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; fsizex &nbsp;= cctk_gsh[0]-2;&nbsp;</div>
<div>&nbsp; &nbsp; fsizey &nbsp;= cctk_gsh[1]-2;</div>
<div>&nbsp; &nbsp; fsizez &nbsp;= cctk_gsh[2]-2;</div>
<div><br>
</div>
<div>&nbsp; &nbsp; struct xferinfo info1[3];</div>
<div>&nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; for (d=0; d&lt;3; &#43;&#43;d) {</div>
<div>&nbsp; &nbsp; &nbsp; /* Source array: Cactus layout */</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.gsh &nbsp; &nbsp; &nbsp; &nbsp; = cctk_gsh[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.lbnd &nbsp; &nbsp; &nbsp; &nbsp;= cctk_lbnd[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.lsh &nbsp; &nbsp; &nbsp; &nbsp; = cctk_lsh[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.lbbox &nbsp; &nbsp; &nbsp; = cctk_bbox[2*d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.ubbox &nbsp; &nbsp; &nbsp; = cctk_bbox[2*d&#43;1];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.nghostzones = cctk_nghostzones[d];</div>
<div>&nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp; /* Destination array: New layout */</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.gsh &nbsp; &nbsp; &nbsp; &nbsp; = cctk_gsh[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.lbnd &nbsp; &nbsp; &nbsp; &nbsp;= 0;</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.lsh &nbsp; &nbsp; &nbsp; &nbsp; = cctk_gsh[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.lbbox &nbsp; &nbsp; &nbsp; = cctk_bbox[2*d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.ubbox &nbsp; &nbsp; &nbsp; = cctk_bbox[2*d&#43;1];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.nghostzones = cctk_nghostzones[d];&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp; /* Source slab: whole array */</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.off = 0;</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.len = cctk_gsh[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].src.str = 1;</div>
<div>&nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp; /* Destination slab: whole array */</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.off = 0;</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.len = cctk_gsh[d];</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].dst.str = 1;</div>
<div>&nbsp; &nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp; /* No transformation */</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].xpose = d;</div>
<div>&nbsp; &nbsp; &nbsp; info1[d].flip = 0;</div>
<div>&nbsp; &nbsp; }</div>
<div>&nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; ierr = Slab_Transfer</div>
<div>&nbsp; &nbsp; &nbsp; (cctkGH, cctk_dim, info1, -1,</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;CCTK_VARIABLE_REAL, phi_temp,</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp;CCTK_VARIABLE_REAL, phi_temp);</div>
<div>&nbsp; &nbsp; assert (! ierr);</div>
<div>&nbsp; &nbsp;&nbsp;</div>
<div>&nbsp; &nbsp; phi_in = malloc(sizeof(CCTK_REAL)*fsizex*fsizey*fsizez);</div>
<div><br>
</div>
<div>&nbsp; &nbsp; for(k = 1; k &lt;= fsizez; k&#43;&#43;)&nbsp;</div>
<div>&nbsp; &nbsp; {</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; for(j = 1; j &lt;= fsizey; j&#43;&#43;)&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; {</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(i = 1; i &lt;= fsizex; i&#43;&#43;)&nbsp;</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; phi_in[(i-1) &#43; (j-1)*fsizex &#43; (k-1)*fsizex*fsizey] = phi_temp[i &#43; j*sizex &#43; k*sizex*sizey];</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div>&nbsp; &nbsp; &nbsp; &nbsp; }</div>
<div>&nbsp; &nbsp; }</div>
<div><br>
</div>
<div>Running the code as is causes segmentation fault and some of the output GFs are distorted. &nbsp;If I comment out the Slab_Transfer I don't get a Segmentation fault. &nbsp;If I run the code with a single processor, there is no segmentation fault and no distortion
 in the GFs. &nbsp;Can you see what I'm doing wrong with the hyperslabbing? &nbsp;There must be a better way to get the transfer to work while avoiding the errors.</div>
<div><br>
</div>
<div>-DG</div>
<div><br>
</div>
<div><br>
<div style="font-family:Tahoma; font-size:13px"><span class="Apple-style-span" style="font-family:'Segoe UI',Helvetica,Arial,sans-serif">--&nbsp;<br>
David Garrison, Ph.D.<br>
Associate Professor and Chair of Physics<br>
University of Houston-Clear Lake<br>
Bayou 3531<br>
Houston, TX 77058&nbsp;<br>
<br>
Tel: 281-283-3796&nbsp;<br>
Fax: 281-283-3709&nbsp;<br>
<a href="http://sce.uhcl.edu/garrison" target="_blank">http://sce.uhcl.edu/garrison</a><br>
<br>
For more information about the UHCL Physics Program go to<br>
<a href="http://www.uhcl.edu/physics" target="_blank">http://www.uhcl.edu/physics</a>&nbsp;or sign up for UHCL newsletters at<br>
<a href="https://ecommunications.houston.edu/uhcl/join.html" target="_blank">https://ecommunications.houston.edu/uhcl/join.html</a><br>
<br>
&quot;If we knew what it was we were doing, it would not be called research,<br>
would it?&quot; ‹ Albert Einstein.</span></div>
</div>
<div style="font-family: Times New Roman; color: #000000; font-size: 16px">
<div>
<div style="direction:ltr; font-family:Tahoma; color:#000000; font-size:10pt">
<div></div>
</div>
</div>
</div>
</div>
</body>
</html>