Bare copyin(this) removed (stack-descriptor map → AMD cross-slot
overlap; see ocean_surfstress_enter_data). The face buffers attach
below; ct-descriptor presence (so DCs touching ct%h_face_left_x%data
don’t per-launch memcpy) comes from the root copyin(state) in
ocean_state_enter_data. A V100 A/B with copyin(this) gone is
bit-identical and faster overall, so the root copy fully covers it.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(continuity_t), | intent(inout) | :: | this |
subroutine continuity_enter_data(this) !! Bare `copyin(this)` removed (stack-descriptor map → AMD cross-slot !! overlap; see ocean_surfstress_enter_data). The face buffers attach !! below; ct-descriptor presence (so DCs touching ct%h_face_left_x%data !! don't per-launch memcpy) comes from the root copyin(state) in !! ocean_state_enter_data. A V100 A/B with copyin(this) gone is !! bit-identical and faster overall, so the root copy fully covers it. class(continuity_t), intent(inout) :: this select type (this) type is (continuity_t) call continuity_enter_data_impl(this) end select end subroutine continuity_enter_data