-
Notifications
You must be signed in to change notification settings - Fork 32
(Closes #3157) Initial implementation of maximal parallel region trans. #3205
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #3205 +/- ##
==========================================
- Coverage 99.91% 99.90% -0.01%
==========================================
Files 375 377 +2
Lines 53439 53518 +79
==========================================
+ Hits 53394 53468 +74
- Misses 45 50 +5 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
@MetBenjaminWent Chris said you had some cases worth trying this with as functionality tests? |
|
The examples I've been give by to look at are: |
|
Made a bit more progress with this now - there was definitely some missing logic for bdy_impl3 to work. One thing that is apparent that applying things in this way means we result in barriers that live outside parallel regions, which should be purged by @sergisiso @arporter Am I ok to make that change as part of this PR? |
…y on applying inside if/loop nodes
|
I fixed the previous issue, and this has raised some other challenges with the cases I receieved from MO.
I assume we just need to use |
|
Yeah, I'd just been looking at the PR earlier today after I looked at this - I guess its still a while until we'd have it ready, but if it could handle cases like this it would definitely help (assuming the rest is otherwise ok). |
|
I copied this chunk of code into a minimally compiling module: module example_module
implicit none
type :: Dims
integer :: j_start, j_end, i_start, i_end
end type
contains
subroutine sub(tdims, r_rho_levels, dtrdz_charney_grid, fqw, dqw, dqw_nt, gamma2, blm1, omp_block)
type(Dims), intent(inout) :: tdims
integer, intent(inout) :: r_rho_levels(:,:,:)
integer, intent(inout) :: dtrdz_charney_grid(:,:,:)
integer, intent(inout) :: fqw(:,:,:)
integer, intent(inout) :: dqw(:,:,:)
integer, intent(inout) :: dqw_nt(:,:,:)
integer, intent(inout) :: gamma2(:,:)
integer, intent(inout) :: blm1, omp_block
integer :: jj, k, r_sq, rr_sq, l, i, j
do jj = tdims%j_start, tdims%j_end, omp_block
do k = blm1, 2, -1
l = 0
do j = jj, min(jj+omp_block-1, tdims%j_end)
do i = tdims%i_start, tdims%i_end
r_sq = r_rho_levels(i,j,k)*r_rho_levels(i,j,k)
rr_sq = r_rho_levels(i,j,k+1)*r_rho_levels(i,j,k+1)
dqw(i,j,k) = (-dtrdz_charney_grid(i,j,k) * (rr_sq * fqw(i,j,k + 1) - r_sq * fqw(i,j,k)) + dqw_nt(i,j,k)) * gamma2(i,j)
end do
end do
end do
end do
end subroutine
end moduleThe analysis gives the following output: Interestingly, it does take a few seconds to prove that the |
|
I used There are 2 things left to potentially look at.
|
No description provided.