<?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 Re: IFX 2025.0.0 -data object with a coarray component can now be an array- only partially implement in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1646712#M174442</link>
    <description>&lt;P&gt;&lt;SPAN&gt;&lt;U&gt;Rationale for the Fortran 2023 feature -data object with a coarray component can now be an array-&lt;/U&gt;&lt;BR /&gt;&lt;BR /&gt;These days we must be future-oriented: Ultra Accelerator Link (&lt;A href="https://www.ualinkconsortium.org/members" target="_self"&gt;UALink&lt;/A&gt;), Ultra Ethernet Consortium (&lt;A href="https://ultraethernet.org/ultra-ethernet-specification-update/" target="_self"&gt;UEC&lt;/A&gt;), FPGAs, and anything else that will directly support PGAS (e.g. Fortran coarray remote assignments) and also massively increase the hardware parallelism available in the foreseeable future. The demands for new forms of parallel algorithms to address these new types of hardware will come, and we must tackle that today already; So, how should parallel programming look like in the impending future? I am trying to give an early answer to this question with my repo here: &lt;A href="https://github.com/MichaelSiehl/Spatial_Fortran_1" target="_self"&gt;https://github.com/MichaelSiehl/Spatial_Fortran_1&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;With Fortran we can use standard OOP semantics to implement distributed objects using derived types with coarray components (since Fortran 2008). So in practice we can already use distributed objects to implement parallelism. &lt;STRONG&gt;The Fortran 2023 standard brings this to the next level by allowing us to implement a collection class comprising a number of distributed objects, which is the topic of this request.&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;My practical application for this is the implementation of a channel class. I am already using techniques for single image asynchronous programming with Fortran (still experimental), i.e. running multiple “threads” on a single coarray image. This requires multiple channel objects on each coarray image. A Fortran 2023 collection class for these multiple distributed objects (e.g. channels) will allow to implement additional codes for managing the collection of distributed objects and will bring these codes away from the parallel loop (that’s where they are currently in my coarray programming projects).&lt;BR /&gt;&lt;BR /&gt;Hope this helps you to value this new Fortran 2023 feature.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Sun, 01 Dec 2024 21:25:26 GMT</pubDate>
    <dc:creator>Michael_S_17</dc:creator>
    <dc:date>2024-12-01T21:25:26Z</dc:date>
    <item>
      <title>IFX 2025.0.0 -data object with a coarray component can now be an array- only partially implemented</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1643225#M174232</link>
      <description>&lt;P data-unlink="true"&gt;From the &lt;EM&gt;New Features&lt;/EM&gt; list at &lt;A href="https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2025-0/new-features.html" target="_blank" rel="noopener"&gt;https://www.intel.com/content/www/us/en/docs/fortran-compiler/developer-guide-reference/2025-0/new-features.html&lt;/A&gt; we can find this new Fortran 2023 feature:&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;A data object with a coarray component can now be an array, and it can be allocatable (arrays of coarrays).&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;This new Fortran 2023 feature is only partially implemented with ifx 2025.0.0 yet: It does work well for data objects that are variables, but not if the data object is a component. See this quote from &lt;I&gt;Modern Fortran explained, Fortran 2023 edition, chapter 23.6.1, p.455&lt;/I&gt;:&lt;/P&gt;&lt;P&gt;“…&lt;I&gt;, Fortran 2018 requires that a variable &lt;STRONG&gt;or component&lt;/STRONG&gt;&lt;SPAN&gt; that is of a type with a coarray ultimate component be a non-pointer non-allocatable non-coarray scalar. Fortran 2023 permits such a variable &lt;/SPAN&gt;&lt;STRONG&gt;or component&lt;/STRONG&gt;&lt;SPAN&gt; to be an array and/or allocatable, ...”&lt;/SPAN&gt;&lt;/I&gt;&lt;/P&gt;&lt;P&gt;See also the simple test case below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="fortran"&gt;program main
end program main


module test
implicit none
private

type, public :: a
  private
  integer, public, allocatable, dimension(:), codimension[:] :: coarray
end type a

type, public :: b
  private
  type(a), public, allocatable, dimension(:) :: channels_1 ! compile time error 
  ! with ifx 2025.0.0:
  ! error #8474: A data component whose type has a coarray potential subobject 
  ! component must be a nonpointer nonallocatable scalar.
end type b

type(a), public, allocatable, dimension(:) :: channels_2 ! compiles and runs 
  ! perfectly with ifx 2025.0.0

end module test&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 14 Nov 2024 13:35:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1643225#M174232</guid>
      <dc:creator>Michael_S_17</dc:creator>
      <dc:date>2024-11-14T13:35:00Z</dc:date>
    </item>
    <item>
      <title>Re: IFX 2025.0.0 -data object with a coarray component can now be an array- only partially implement</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1645629#M174354</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;BR /&gt;Thanks very much for inquiring into this and your feedback on this. Indeed, the issue was that C753 constraint in the Fortran 2023 standards text. Fortunately, that mistake is already corrected with this edit ( &lt;A href="https://j3-fortran.org/doc/year/25/25-100.txt" target="_blank"&gt;https://j3-fortran.org/doc/year/25/25-100.txt&lt;/A&gt; ), number F23/009 :&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;“... ANSWER:&lt;BR /&gt;No, this constraint was accidentally overlooked when extending types&lt;BR /&gt;with coarray components to be subobjects of arrays and allocatables.&lt;BR /&gt;An edit is provided to correct this mistake.&lt;BR /&gt;EDIT to N2218 (Fortran 2023 FDIS):&lt;BR /&gt;[79:constraint C753] In subclause&lt;BR /&gt;Delete this constraint, which begins&lt;BR /&gt;“C753 A data component whose type has a coarray”&lt;BR /&gt;[80:After NOTE 1] Insert new NOTE&lt;BR /&gt;“NOTE 1.5&lt;BR /&gt;A data component whose type has a coarray potential subobject&lt;BR /&gt;component cannot be a coarray or a pointer, see constraint C825.”&lt;BR /&gt;{C825 says “An entity whose type has a coarray potential subobject…”&lt;BR /&gt;and components are certainly entities. We specifically wrote “entity”&lt;BR /&gt;instead of “named variable” to cover the component case.&lt;BR /&gt;I prefer to say it once and refer to it.}&lt;BR /&gt;&lt;BR /&gt;SUBMITTED BY: John Reid &amp;amp; Reinhold Bader&lt;BR /&gt;&lt;BR /&gt;HISTORY: 23-210 m231 Submitted&lt;BR /&gt;23-210r1 m231 Revised&lt;BR /&gt;23-210r2 m231 Passed as amended by J3 meeting 231.&lt;BR /&gt;”&lt;BR /&gt;&lt;BR /&gt;See also the recent short discussion here: &lt;A href="https://fortran-lang.discourse.group/t/fortran-2023-an-array-or-allocatable-object-may-have-a-coarray-component/8877/3" target="_blank"&gt;https://fortran-lang.discourse.group/t/fortran-2023-an-array-or-allocatable-object-may-have-a-coarray-component/8877/3&lt;/A&gt;.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;BR /&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 25 Nov 2024 19:23:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1645629#M174354</guid>
      <dc:creator>Michael_S_17</dc:creator>
      <dc:date>2024-11-25T19:23:06Z</dc:date>
    </item>
    <item>
      <title>Re: IFX 2025.0.0 -data object with a coarray component can now be an array- only partially implement</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1645645#M174360</link>
      <description>&lt;P&gt;I'll note that interpretation 23/009 has not yet been approved into a corrigendum, though I have long noted that Intel is very slow at implementing changes from corrigenda.&lt;/P&gt;</description>
      <pubDate>Mon, 25 Nov 2024 21:08:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1645645#M174360</guid>
      <dc:creator>Steve_Lionel</dc:creator>
      <dc:date>2024-11-25T21:08:23Z</dc:date>
    </item>
    <item>
      <title>Re: IFX 2025.0.0 -data object with a coarray component can now be an array- only partially implement</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1646712#M174442</link>
      <description>&lt;P&gt;&lt;SPAN&gt;&lt;U&gt;Rationale for the Fortran 2023 feature -data object with a coarray component can now be an array-&lt;/U&gt;&lt;BR /&gt;&lt;BR /&gt;These days we must be future-oriented: Ultra Accelerator Link (&lt;A href="https://www.ualinkconsortium.org/members" target="_self"&gt;UALink&lt;/A&gt;), Ultra Ethernet Consortium (&lt;A href="https://ultraethernet.org/ultra-ethernet-specification-update/" target="_self"&gt;UEC&lt;/A&gt;), FPGAs, and anything else that will directly support PGAS (e.g. Fortran coarray remote assignments) and also massively increase the hardware parallelism available in the foreseeable future. The demands for new forms of parallel algorithms to address these new types of hardware will come, and we must tackle that today already; So, how should parallel programming look like in the impending future? I am trying to give an early answer to this question with my repo here: &lt;A href="https://github.com/MichaelSiehl/Spatial_Fortran_1" target="_self"&gt;https://github.com/MichaelSiehl/Spatial_Fortran_1&lt;/A&gt;&lt;BR /&gt;&lt;BR /&gt;With Fortran we can use standard OOP semantics to implement distributed objects using derived types with coarray components (since Fortran 2008). So in practice we can already use distributed objects to implement parallelism. &lt;STRONG&gt;The Fortran 2023 standard brings this to the next level by allowing us to implement a collection class comprising a number of distributed objects, which is the topic of this request.&lt;/STRONG&gt;&lt;BR /&gt;&lt;BR /&gt;My practical application for this is the implementation of a channel class. I am already using techniques for single image asynchronous programming with Fortran (still experimental), i.e. running multiple “threads” on a single coarray image. This requires multiple channel objects on each coarray image. A Fortran 2023 collection class for these multiple distributed objects (e.g. channels) will allow to implement additional codes for managing the collection of distributed objects and will bring these codes away from the parallel loop (that’s where they are currently in my coarray programming projects).&lt;BR /&gt;&lt;BR /&gt;Hope this helps you to value this new Fortran 2023 feature.&lt;BR /&gt;&lt;BR /&gt;Regards&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Sun, 01 Dec 2024 21:25:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/IFX-2025-0-0-data-object-with-a-coarray-component-can-now-be-an/m-p/1646712#M174442</guid>
      <dc:creator>Michael_S_17</dc:creator>
      <dc:date>2024-12-01T21:25:26Z</dc:date>
    </item>
  </channel>
</rss>

