<html>#2101: Add Lean_public and Proca thorns to the ET
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td>Miguel Zilhão</td></tr>
<tr><td style='text-align:right'> Status:</td><td>open</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td>ET_2018_08</td></tr>
<tr><td style='text-align:right'> Version:</td><td>Array</td></tr>
<tr><td style='text-align:right'> Type:</td><td>enhancement</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>minor</td></tr>
<tr><td style='text-align:right'>Component:</td><td>EinsteinToolkit thorn</td></tr>
</table>
<p>@helvi witek I took a look at the simd issue starting with your modified version of evolve_utils.F90. I was able to make the tests pass by changing your openmp simd directive to:</p>
<p>!$OMP SIMD PRIVATE(i, hh, aa, hu, tra, dethh)</p>
<p>It appears that the SIMD directive does not inherit the PRIVATE information from the enclosing PARALLEL DO directive, so the compiler was not generating vector versions of these temporary variables but was instead using shared scalar versions.</p>
<p>After this I went back to to original version with the short loops over tensor indices inside, but was not able to get a simd version of those to work correctly. I thought it might be possible to use the COLLAPSE clause to handle the inner loops, but that does not allow any code between the outer and the 2 inner loops.</p>
<p>To fix all the simd issues, it therefore appears that what you need to do is to get rid of all
the inner loops and then declare all the temporary variables PRIVATE.</p>
--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2101/add-lean_public-and-proca-thorns-to-the-et'>https://bitbucket.org/einsteintoolkit/tickets/issues/2101/add-lean_public-and-proca-thorns-to-the-et</a>
</html>