Appearance
fundal_weno5_kernels_r8_b
Source: src/third_party/FUNDAL/src/tests/precision/fundal_weno5_kernels_r8_b.F90
Dependencies
Contents
- dekker_from_r8_b_r8
- dekker_to_r8_b_r8
- ghost_fill_r8_b
- weno5_rhs_r8_b_cpar
- weno5_rhs_r8_b_cseq
- rk1_update_r8_b_cpar
- rk1_update_r8_b_cseq
Subroutines
dekker_from_r8_b_r8
Reshape from canonical shape A (b,i,j,k,c) into shape B (c,i,j,k,b). Both arrays are R8P here (Dekker has nothing to do with it; the name suffix _r8 disambiguates from the FP32 dekker_from_r8_b in the realistic Dekker module).
fortran
subroutine dekker_from_r8_b_r8(U_in, U_out, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U_in | real(kind=R8P) | in | ||
U_out | real(kind=R8P) | out | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |
dekker_to_r8_b_r8
Reshape from shape B (c,i,j,k,b) back to canonical (b,i,j,k,c).
fortran
subroutine dekker_to_r8_b_r8(U_in, U_out, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U_in | real(kind=R8P) | in | ||
U_out | real(kind=R8P) | out | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |
ghost_fill_r8_b
Periodic ghost fill on shape B. Loop order F (b outermost in the parallel set, c innermost in the body — but since c is part of the collapsed parallel surface here, the loop runs c lexically innermost = vector dimension, which is also stride-1 in shape B).
fortran
subroutine ghost_fill_r8_b(U, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U | real(kind=R8P) | inout | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |
weno5_rhs_r8_b_cpar
!$acc parallel loop collapse(5) over (b, k, j, i, c) — c lexically innermost = vector dim = stride-1 in shape B. This is the analogue of V3f' on shape B for FP64.
fortran
subroutine weno5_rhs_r8_b_cpar(U, rhs, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U | real(kind=R8P) | in | ||
rhs | real(kind=R8P) | out | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |
Call graph
weno5_rhs_r8_b_cseq
V1B': shape B, c-sequential. Realistic-CFD constraint applied to FP64 with shape B. !$acc parallel loop collapse(4) over (b, k, j, i), inner do c sequential. i is the lexically innermost dim in the parallel set — order F for shape B (since c is removed from the parallel surface, the next stride-1 candidate in the parallel set is i with stride nc=5).
fortran
subroutine weno5_rhs_r8_b_cseq(U, rhs, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U | real(kind=R8P) | in | ||
rhs | real(kind=R8P) | out | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |
Call graph
rk1_update_r8_b_cpar
V1B: collapse(5) update on shape B, c parallel.
fortran
subroutine rk1_update_r8_b_cpar(U, rhs, dt, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U | real(kind=R8P) | inout | ||
rhs | real(kind=R8P) | in | ||
dt | real(kind=R8P) | in | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |
rk1_update_r8_b_cseq
V1B': collapse(4) over (b,k,j,i) + inner seq c, shape B.
fortran
subroutine rk1_update_r8_b_cseq(U, rhs, dt, nb, ni, ng, nc)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
U | real(kind=R8P) | inout | ||
rhs | real(kind=R8P) | in | ||
dt | real(kind=R8P) | in | ||
nb | integer(kind=I4P) | in | ||
ni | integer(kind=I4P) | in | ||
ng | integer(kind=I4P) | in | ||
nc | integer(kind=I4P) | in |