<?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 Do concurrent in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765349#M19834</link>
    <description>Thanks for reporting the bug.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Coming back to "do concurrent", It works fine if the pure function is in the same file. But if it is moved to a module, I have the following problem:&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;ffayard@fayard-mac-sdr:Desktop$ifort -O3 -parallel -vec-report3 -c sub.f90&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;ffayard@fayard-mac-sdr:Desktop$ ifort -O3 -parallel -vec-report3 -c main.f90&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(12): (col. 20) remark: loop was not vectorized: existence of vector dependence.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(13): (col. 5) remark: vector dependence: assumed OUTPUT dependence between k line 13 and k line 12.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(12): (col. 20) remark: vector dependence: assumed OUTPUT dependence between k line 12 and k line 13.&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;[fortran]program main
    use sub_module
    implicit none

    integer :: size
    integer, allocatable, dimension(:) :: array
    integer :: k

    size = 10000
    allocate(array(1:size))
    do concurrent (k = 1:size)
        array(k) = f(k)
    end do
    write (*,*) array(1)
end program main[/fortran] [fortran]module sub_module
    implicit none
    private

    public :: f
contains
    pure function f(i)
        integer, intent(in) :: i
        integer :: f

        f = i**2
    end function f
end module sub_module[/fortran] &lt;/DIV&gt;</description>
    <pubDate>Fri, 09 Mar 2012 21:29:09 GMT</pubDate>
    <dc:creator>velvia</dc:creator>
    <dc:date>2012-03-09T21:29:09Z</dc:date>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765340#M19825</link>
      <description>Hi,&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I want to parallelize a part of my code with a do concurrent. But when I compile the code with -par-report3, I get this:&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;ifort -O3 -openmp -assume realloc_lhs -parallel -par-report3 -fpp -DIFORT -module ../program/fire.ifort/mod \\	-c strategy/implicitPwPn.f90 -o ../program/fire.ifort/objects/strategy/implicitPwPn.o&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::IMPLICITPWPN_MODULE&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::savetofile&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::descriptiontounit&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::integrate&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::computeforcedconnection&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::computeflow&lt;/DIV&gt;&lt;DIV&gt; procedure: IMPLICITPWPN_MODULE::computeflowequation&lt;/DIV&gt;&lt;DIV&gt;strategy/implicitPwPn.f90(634): (col. 9) remark: loop was not parallelized: existence of parallel dependence.&lt;/DIV&gt;&lt;DIV&gt;strategy/implicitPwPn.f90(634): (col. 9) remark: parallel dependence: assumed FLOW dependence between this line 634 and this line 634.&lt;/DIV&gt;&lt;DIV&gt;strategy/implicitPwPn.f90(634): (col. 9) remark: parallel dependence: assumed ANTI dependence between this line 634 and this line 634.&lt;/DIV&gt;&lt;DIV&gt;strategy/implicitPwPn.f90(634): (col. 9) remark: parallel dependence: assumed ANTI dependence between this line 634 and this line 634.&lt;/DIV&gt;&lt;DIV&gt;....&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;My do concurrent is in the computeflow subroutine, and I don't get anything from the compiler. The runtime of the program is the same and it suggests that the loop is not parallelized.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;If I write a small test program with a do concurrent, everything works OK. What can I do to fix that?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Best regards,&lt;/DIV&gt;&lt;DIV&gt;Franois&lt;/DIV&gt;</description>
      <pubDate>Fri, 09 Mar 2012 14:18:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765340#M19825</guid>
      <dc:creator>velvia</dc:creator>
      <dc:date>2012-03-09T14:18:12Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765341#M19826</link>
      <description>I suggest adding -guide to the compile and see if it makes any suggestions. I'm not sure what DO CONCURRENT will do if you are also using OpenMP. Also, note that DO CONCURRENT requests parallelization - it does not force it.</description>
      <pubDate>Fri, 09 Mar 2012 15:47:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765341#M19826</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2012-03-09T15:47:06Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765342#M19827</link>
      <description>Adding the -guide option does not add any suggestion here.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;For the -openmp option, it was useless here (I am considering switching from openmp to do concurrent so -openmp was here for other part of the code). I undestand that do concurrent does not force parallelization like openmp does, but I am really surprised it does not do it as I call only pure functions in the loop, and openmp makes this part much faster, so it's worth the parallelization.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Franois&lt;/DIV&gt;</description>
      <pubDate>Fri, 09 Mar 2012 18:38:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765342#M19827</guid>
      <dc:creator>velvia</dc:creator>
      <dc:date>2012-03-09T18:38:40Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765343#M19828</link>
      <description>If you are able to, please attach the source containing the DO CONCURRENT, along with any include or module files it needs to compile. I'll be glad to take a look.</description>
      <pubDate>Fri, 09 Mar 2012 19:22:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765343#M19828</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2012-03-09T19:22:47Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765344#M19829</link>
      <description>Steve,&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Unfortunatly, I am not allowed to do that. I will try to build a test code that shows the same behaviour, but I am sure it is going to be very difficult. All I can tell, is that there are a lot of pure function calls inside the loop that are getters for an object. There are also loops inside the loop.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I have another question for you Steve. I am thinking of using domain decomposition for my solver, using coarrays. For each domain, I would like to use a parallelized version of MKL (Pardiso) and some parallelization to speed up some loops (using OpenMP or do concurrent). I hear that it is not possible to use both coarrays and OpenMP. Does it mean we can't use coarrays and parallel version of MKL ? Does Intel consider making coarrays compatble with OpenMP one day ?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Franois&lt;/DIV&gt;</description>
      <pubDate>Fri, 09 Mar 2012 19:25:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765344#M19829</guid>
      <dc:creator>velvia</dc:creator>
      <dc:date>2012-03-09T19:25:31Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765345#M19830</link>
      <description>We say that such combinations are not supported - it doesn't mean that they don't work. Mainly it's a lack of testing.&lt;BR /&gt;&lt;BR /&gt;I don't see any problem combining MKL calls with coarrays. OpenMP is probably ok too though you may run into oversubscription issues if you are doing this with shared memory coarrays, as both OpenMP and Intel MPI will each create threads/processes for as many execution units as you have.</description>
      <pubDate>Fri, 09 Mar 2012 20:30:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765345#M19830</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2012-03-09T20:30:45Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765346#M19831</link>
      <description>Thanks Steve.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I've tried to build a small program, and here is one that does not compile and I don't get why:&lt;/DIV&gt;&lt;DIV&gt;&lt;A onclick="ndownload('http://software.intel.com/file/42209')"&gt;main.f90&lt;/A&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;When I compile it, I get&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;ffayard@fayard-mac-sdr:Desktop$ ifort -O3 -parallel -vec-report3 main.f90 -o main&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(10): error #6780: A dummy argument with the INTENT(IN) attribute shall not be defined nor become undefined.  &lt;K&gt;&lt;/K&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;  do concurrent (k = 1:size)&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;-------------------^&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;compilation aborted for main.f90 (code 1)&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;Franois&lt;/DIV&gt;</description>
      <pubDate>Fri, 09 Mar 2012 20:59:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765346#M19831</guid>
      <dc:creator>velvia</dc:creator>
      <dc:date>2012-03-09T20:59:48Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765347#M19832</link>
      <description>OK. I found the problem which is a problem of scope of k. It is unrelated to do concurrent but I think it is a bug of the compiler.</description>
      <pubDate>Fri, 09 Mar 2012 21:19:13 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765347#M19832</guid>
      <dc:creator>velvia</dc:creator>
      <dc:date>2012-03-09T21:19:13Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765348#M19833</link>
      <description>That looks like a compiler bug to me - I will report it. If you change function f to have a different name for k it will compile. Issue ID is DPD200179908.</description>
      <pubDate>Fri, 09 Mar 2012 21:21:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765348#M19833</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2012-03-09T21:21:27Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765349#M19834</link>
      <description>Thanks for reporting the bug.&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Coming back to "do concurrent", It works fine if the pure function is in the same file. But if it is moved to a module, I have the following problem:&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;ffayard@fayard-mac-sdr:Desktop$ifort -O3 -parallel -vec-report3 -c sub.f90&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;ffayard@fayard-mac-sdr:Desktop$ ifort -O3 -parallel -vec-report3 -c main.f90&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(12): (col. 20) remark: loop was not vectorized: existence of vector dependence.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(13): (col. 5) remark: vector dependence: assumed OUTPUT dependence between k line 13 and k line 12.&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;main.f90(12): (col. 20) remark: vector dependence: assumed OUTPUT dependence between k line 12 and k line 13.&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;[fortran]program main
    use sub_module
    implicit none

    integer :: size
    integer, allocatable, dimension(:) :: array
    integer :: k

    size = 10000
    allocate(array(1:size))
    do concurrent (k = 1:size)
        array(k) = f(k)
    end do
    write (*,*) array(1)
end program main[/fortran] [fortran]module sub_module
    implicit none
    private

    public :: f
contains
    pure function f(i)
        integer, intent(in) :: i
        integer :: f

        f = i**2
    end function f
end module sub_module[/fortran] &lt;/DIV&gt;</description>
      <pubDate>Fri, 09 Mar 2012 21:29:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765349#M19834</guid>
      <dc:creator>velvia</dc:creator>
      <dc:date>2012-03-09T21:29:09Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765350#M19835</link>
      <description>Interesting - I'll check that out. Thanks.</description>
      <pubDate>Fri, 09 Mar 2012 22:16:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765350#M19835</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2012-03-09T22:16:51Z</dc:date>
    </item>
    <item>
      <title>Do concurrent</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765351#M19836</link>
      <description>The bug has been fixed for a release later this year.</description>
      <pubDate>Mon, 04 Jun 2012 13:20:01 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Do-concurrent/m-p/765351#M19836</guid>
      <dc:creator>Steven_L_Intel1</dc:creator>
      <dc:date>2012-06-04T13:20:01Z</dc:date>
    </item>
  </channel>
</rss>

