<?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 For programs running in in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951535#M92309</link>
    <description>&lt;P&gt;For programs running in parallel the&amp;nbsp;order of I/O is determined by the operating system and does not necessarily reflect the order statements were executed.&lt;!--?xml:namespace prefix = "o" ns = "urn:schemas-microsoft-com:office:office" /--&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 07 May 2013 21:11:08 GMT</pubDate>
    <dc:creator>Anonymous66</dc:creator>
    <dc:date>2013-05-07T21:11:08Z</dc:date>
    <item>
      <title>sync all not doing its job</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951533#M92307</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I've attached a co-array program in which the "sync all" statement does not seems to work.&lt;/P&gt;
&lt;P&gt;The output of the program is the following:&lt;/P&gt;
&lt;P&gt;$ make clean; make; ./a.out &lt;BR /&gt;ifort -coarray -coarray-num-images=2 -c mesh_class.f90 -o mesh_class.o&lt;BR /&gt;ifort -coarray -coarray-num-images=2 -c main.f90 -o main.o&lt;BR /&gt;ifort -coarray -coarray-num-images=2 main.o mesh_class.o -o a.out&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Starting&lt;BR /&gt;&amp;nbsp; [Main]:1/2: allocated(Mesh%Block) = F&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Allocating Block&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Allocating Xv&lt;BR /&gt;&amp;nbsp; [Main]:1/2: ==========&amp;gt; sync all &amp;lt;==========&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Ending&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Starting&lt;BR /&gt;&amp;nbsp; [Main]:2/2: allocated(Mesh%Block) = F&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Allocating Block&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Allocating Xv&lt;BR /&gt;&amp;nbsp; [Main]:2/2: ==========&amp;gt; sync all &amp;lt;==========&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Ending&lt;/P&gt;
&lt;P&gt;As you can see, the 1s image ends before the 2nd image starts.&lt;/P&gt;
&lt;P&gt;If I un-comment the call to the Construct_Mesh procedure in main, I get the following output:&lt;/P&gt;
&lt;P&gt;make clean; make; ./a.out &lt;BR /&gt;ifort -coarray -coarray-num-images=2 -c mesh_class.f90 -o mesh_class.o&lt;BR /&gt;ifort -coarray -coarray-num-images=2 -c main.f90 -o main.o&lt;BR /&gt;ifort -coarray -coarray-num-images=2 main.o mesh_class.o -o a.out&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Starting&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Calling Construct_Mesh with NBlock=1 Nx=2 Ny=5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Entering&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: allocated(Mesh%Block) = F&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Allocating Block&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Allocating Xv&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: ==========&amp;gt; sync all &amp;lt;==========&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Local&amp;nbsp; write&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: size(Mesh%Block) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Mesh%Block(1)%Nx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; Mesh%Block(1)%Ny&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: lbound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; lbound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: ubound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; ubound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Remote write&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=1 size(Mesh%Block) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=1 Mesh%Block(1)%Nx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; Mesh%Block(1)%Ny&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=1 lbound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; lbound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=1 ubound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; ubound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=2 size(Mesh%Block) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=2 Mesh%Block(1)%Nx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; Mesh%Block(1)%Ny&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=2 lbound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; lbound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: i=2 ubound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; ubound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:1/2: Exiting&lt;BR /&gt;&amp;nbsp; [Main]:1/2: allocated(Mesh%Block) = T&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Allocating Block&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Allocating Xv&lt;BR /&gt;&amp;nbsp; [Main]:1/2: ==========&amp;gt; sync all &amp;lt;==========&lt;BR /&gt;&amp;nbsp; [Main]:1/2: Ending&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Starting&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Calling Construct_Mesh with NBlock=1 Nx=2 Ny=5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Entering&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: allocated(Mesh%Block) = F&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Allocating Block&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Allocating Xv&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: ==========&amp;gt; sync all &amp;lt;==========&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Local&amp;nbsp; write&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: size(Mesh%Block) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Mesh%Block(1)%Nx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; Mesh%Block(1)%Ny&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: lbound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; lbound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: ubound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; ubound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Remote write&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=1 size(Mesh%Block) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=1 Mesh%Block(1)%Nx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; Mesh%Block(1)%Ny&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=1 lbound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; lbound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=1 ubound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; ubound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=2 size(Mesh%Block) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=2 Mesh%Block(1)%Nx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; Mesh%Block(1)%Ny&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=2 lbound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; lbound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 1&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: i=2 ubound(Mesh%Block(1)%Xv,1) =&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; ubound(Mesh%Block(1)%Xv,2) =&amp;nbsp;&amp;nbsp; 5&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [Construct_Mesh]:2/2: Exiting&lt;BR /&gt;&amp;nbsp; [Main]:2/2: allocated(Mesh%Block) = T&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Allocating Block&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Allocating Xv&lt;BR /&gt;&amp;nbsp; [Main]:2/2: ==========&amp;gt; sync all &amp;lt;==========&lt;BR /&gt;&amp;nbsp; [Main]:2/2: Ending&lt;/P&gt;
&lt;P&gt;Same problem !!!&lt;/P&gt;
&lt;P&gt;Any idea what is going wrong here ?&lt;/P&gt;
&lt;P&gt;My ifort compiler is:&lt;/P&gt;
&lt;P&gt;ifort -V&lt;BR /&gt;Intel(R) Fortran Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 13.1.1.163 Build 20130313&lt;BR /&gt;Copyright (C) 1985-2013 Intel Corporation.&amp;nbsp; All rights reserved.&lt;BR /&gt;FOR NON-COMMERCIAL USE ONLY&lt;/P&gt;
&lt;P&gt;Thanks&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2013 12:11:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951533#M92307</guid>
      <dc:creator>FlyingHermes</dc:creator>
      <dc:date>2013-05-07T12:11:07Z</dc:date>
    </item>
    <item>
      <title>Actually, I was wrong, the</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951534#M92308</link>
      <description>&lt;P&gt;Actually, I was wrong, the "sync all" statement is indeed synchroizing the images.&lt;/P&gt;
&lt;P&gt;But I don't understand why the output is written in this order.&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2013 13:07:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951534#M92308</guid>
      <dc:creator>FlyingHermes</dc:creator>
      <dc:date>2013-05-07T13:07:44Z</dc:date>
    </item>
    <item>
      <title>For programs running in</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951535#M92309</link>
      <description>&lt;P&gt;For programs running in parallel the&amp;nbsp;order of I/O is determined by the operating system and does not necessarily reflect the order statements were executed.&lt;!--?xml:namespace prefix = "o" ns = "urn:schemas-microsoft-com:office:office" /--&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2013 21:11:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/sync-all-not-doing-its-job/m-p/951535#M92309</guid>
      <dc:creator>Anonymous66</dc:creator>
      <dc:date>2013-05-07T21:11:08Z</dc:date>
    </item>
  </channel>
</rss>

