<?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 I'll try to find someone to in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030700#M110512</link>
    <description>&lt;P&gt;I'll try to find someone to help. A few questions:&lt;/P&gt;

&lt;P&gt;- Which compiler are you using?&lt;BR /&gt;
	- I don't know if its needed, but I'll ask in advance in case someone asks me, is it possible to isolate this into at least a compile-able reproducer?&lt;BR /&gt;
	- Could you provide us wit the optimization report file you mentioned so we can see those details?&lt;/P&gt;</description>
    <pubDate>Fri, 18 Sep 2015 15:09:40 GMT</pubDate>
    <dc:creator>Kevin_D_Intel</dc:creator>
    <dc:date>2015-09-18T15:09:40Z</dc:date>
    <item>
      <title>problem with inlining type bound procedures</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030698#M110510</link>
      <description>&lt;P&gt;&lt;STRONG&gt;I'm trying to vectorize this loop using !$OMP SIMD instruction:&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;!$OMP SIMD private(drx, dry, drz, dist, delta_i_sum_Wab) reduction(+:i_sum_Wab)&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; loop_j2_count: do kk=1,npart_cell&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call add_particle%distance(particle_in_cell(kk), container_size,2.*block%global%h, dist, drx, dry, drz)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; call particle_interaction(add_particle, particle_in_cell(kk),visc_dt,dist, drx,dry,drz,&amp;amp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; block%global%cs0,block%global%p_backGround,block%global%rho0,block%global%const_ker,block%global%viscos_val, block%global%csi,.false., &amp;amp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; delta_i_ax, delta_i_ay, delta_i_az, delta_i_ar, delta_i_deltax, delta_i_deltay, delta_i_deltaz, delta_i_div_pos, delta_i_sum_Wab, delta_i_n_neibou, shifting_enabled)&lt;BR /&gt;
	#ifdef SUMWAB&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i_sum_Wab=i_sum_Wab+delta_i_sum_Wab&lt;BR /&gt;
	#endif&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; enddo loop_j2_count&lt;BR /&gt;
	!$OMP END SIMD&lt;/P&gt;

&lt;P&gt;&lt;STRONG&gt;the problem seems to be the type-bound procedure distance which is defined as follows:&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;&amp;nbsp; pure subroutine distance(vec1,vec2,container_size, cell_size, dist, drx, dry, drz)&lt;/P&gt;

&lt;P&gt;&amp;nbsp; implicit none&lt;/P&gt;

&lt;P&gt;&amp;nbsp; class(Type_particle_or), intent(in):: vec1&lt;BR /&gt;
	&amp;nbsp; class(Type_particle_or), intent(in):: vec2&lt;BR /&gt;
	&amp;nbsp; real(R8P), intent(in) :: container_size(3)&lt;BR /&gt;
	&amp;nbsp; real(R_P), intent(in) :: cell_size&lt;BR /&gt;
	&amp;nbsp; real(R8P), intent(out) :: dist&lt;BR /&gt;
	&amp;nbsp; real(R8P), intent(out) :: drx, dry, drz&lt;BR /&gt;
	&amp;nbsp; logical :: plot&lt;/P&gt;

&lt;P&gt;&amp;nbsp; drx=vec1%xp-vec2%xp&lt;BR /&gt;
	&amp;nbsp; dry=vec1%yp-vec2%yp&lt;BR /&gt;
	&amp;nbsp; drz=vec1%zp-vec2%zp&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; plot=.false.&lt;BR /&gt;
	&amp;nbsp; call periodicityCorrection(drx,container_size(1),cell_size, plot)&lt;BR /&gt;
	&amp;nbsp; call periodicityCorrection(dry,container_size(2),cell_size, plot)&lt;BR /&gt;
	&amp;nbsp; call periodicityCorrection(drz,container_size(3),cell_size, plot)&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; dist=sqrt(drx*drx+dry*dry+drz*drz)&lt;/P&gt;

&lt;P&gt;&amp;nbsp; end subroutine distance&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&lt;STRONG&gt;&amp;nbsp; this distance subroutine is bound to the following type:&lt;/STRONG&gt;&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; type, public:: Type_particle_or&lt;/P&gt;

&lt;P&gt;&amp;nbsp; real(R8P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xp = 0._R8P&amp;nbsp; !&amp;lt; x coords.&lt;BR /&gt;
	&amp;nbsp; real(R8P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yp = 0._R8P&amp;nbsp; !&amp;lt; y coords.&lt;BR /&gt;
	&amp;nbsp; real(R8P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; zp = 0._R8P&amp;nbsp; !&amp;lt; z coords.&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; up = 0._R_P&amp;nbsp; !&amp;lt; v_x&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; vp = 0._R_P&amp;nbsp; !&amp;lt; v_y&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; wp = 0._R_P&amp;nbsp; !&amp;lt; v_z&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pm = 0._R_P&amp;nbsp; !&amp;lt; mass&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rhop = 0._R_P&amp;nbsp; !&amp;lt; density&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; p&amp;nbsp; = 0._R_P&amp;nbsp; !&amp;lt; pressure&lt;BR /&gt;
	&amp;nbsp; real(R_P)::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; hp = 0._R_P&amp;nbsp; !&amp;lt; smoothing length&lt;BR /&gt;
	&amp;nbsp; &amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; integer(I_P) ::&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i=0_I_P&lt;/P&gt;

&lt;P&gt;&amp;nbsp; contains&lt;/P&gt;

&lt;P&gt;&amp;nbsp; procedure :: assign_particle =&amp;gt; assign_particle_or&lt;BR /&gt;
	&amp;nbsp; procedure :: modify_size_particle_or&lt;BR /&gt;
	&amp;nbsp; procedure :: plot_particle&lt;BR /&gt;
	&amp;nbsp; procedure, public :: distance&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; end type Type_particle_or&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&lt;STRONG&gt;&amp;nbsp;Looking at the optimization report file produced by the compiler with flags -qopt-report=5 -qopt-report-phase=all it seems that the compiler is not able to inline type bound procedures and this creates problems when I try to vectorize the code.&lt;BR /&gt;
	&amp;nbsp;&lt;BR /&gt;
	&amp;nbsp; thank you very much for your help&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 17 Sep 2015 08:24:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030698#M110510</guid>
      <dc:creator>renato_v_</dc:creator>
      <dc:date>2015-09-17T08:24:41Z</dc:date>
    </item>
    <item>
      <title>Is there anyone who can help</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030699#M110511</link>
      <description>&lt;P&gt;Is there anyone who can help me with this?&lt;/P&gt;

&lt;P&gt;thank you very much&lt;/P&gt;

&lt;P&gt;Renato&lt;/P&gt;</description>
      <pubDate>Fri, 18 Sep 2015 10:18:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030699#M110511</guid>
      <dc:creator>renato_v_</dc:creator>
      <dc:date>2015-09-18T10:18:39Z</dc:date>
    </item>
    <item>
      <title>I'll try to find someone to</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030700#M110512</link>
      <description>&lt;P&gt;I'll try to find someone to help. A few questions:&lt;/P&gt;

&lt;P&gt;- Which compiler are you using?&lt;BR /&gt;
	- I don't know if its needed, but I'll ask in advance in case someone asks me, is it possible to isolate this into at least a compile-able reproducer?&lt;BR /&gt;
	- Could you provide us wit the optimization report file you mentioned so we can see those details?&lt;/P&gt;</description>
      <pubDate>Fri, 18 Sep 2015 15:09:40 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030700#M110512</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2015-09-18T15:09:40Z</dc:date>
    </item>
    <item>
      <title>One initial thought offered,</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030701#M110513</link>
      <description>&lt;P&gt;One initial thought offered, assuming the reason was not the vectorizer refusing to vectorize the loop, was to try &lt;STRONG&gt;!DIR$ FORCEINLINE RECURSIVE&lt;/STRONG&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 18 Sep 2015 16:00:49 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/problem-with-inlining-type-bound-procedures/m-p/1030701#M110513</guid>
      <dc:creator>Kevin_D_Intel</dc:creator>
      <dc:date>2015-09-18T16:00:49Z</dc:date>
    </item>
  </channel>
</rss>

