Skip to content
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

Quickbuild mpif08 #562

Merged
merged 25 commits into from
Nov 7, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
73baddf
Create mkmf.template.nvhpc
ann-norcio Oct 5, 2023
fb07add
Adding comment about ftn (Derecho/Cray) and nvfortran (non-Cray machi…
mjs2369 Oct 9, 2023
f318a53
addind IEEE flag
hkershaw-brown Oct 23, 2023
0cbe8b2
add suggested debugging flags
hkershaw-brown Oct 23, 2023
b1ddaf2
removed loop because 1 test is sufficent to find the compiler bug #495
hkershaw-brown Sep 29, 2023
960eed1
comment - for completeness ran_twist is from numerical recipies
hkershaw-brown Sep 29, 2023
ec0a431
option for mpif08
hkershaw-brown Oct 23, 2023
89621bc
mpif08 for quickbuild.sh for models
hkershaw-brown Oct 23, 2023
851978d
add mpi to the list of optional 1st argumements
hkershaw-brown Oct 23, 2023
2ff7237
fix: nompi needs mpif08 modules removed from list of source files
hkershaw-brown Oct 23, 2023
fa3cf2d
doc fix: rename assim_mod_mod docs to match the module
hkershaw-brown Oct 23, 2023
c78fa71
fix: sync filter_mod.dopplerfold with filter_mod
hkershaw-brown Oct 26, 2023
0cd7030
fix: converters need mpif08 removed from list of source files
hkershaw-brown Nov 6, 2023
d5b3779
typo in usage for quickbuild.sh
hkershaw-brown Nov 6, 2023
4fb221f
doc: added quickbuild.sh usage to compiling dart
hkershaw-brown Nov 6, 2023
0e92728
Fixes for remaining documentation warnings in #546
c-merchant Nov 6, 2023
7810c6e
fix: usage for obs converter quickbuild.sh
hkershaw-brown Nov 6, 2023
3af2899
fix: usage message mpi/nompi/mpif08 in script and docs
hkershaw-brown Nov 6, 2023
e39aa8f
doc: add converter quickbuild usage
hkershaw-brown Nov 7, 2023
d64061d
bump version and changelog for release
hkershaw-brown Nov 7, 2023
b324e02
Merge pull request #573 from c-merchant/doc_notes
hkershaw-brown Nov 7, 2023
45013ee
Merge pull request #561 from NCAR/random-test-no-loop
hkershaw-brown Nov 7, 2023
251ffb1
Merge pull request #557 from ann-norcio/add-mkmf.template.nvhpc
hkershaw-brown Nov 7, 2023
dcf9ad0
Merge pull request #564 from NCAR/doc-rename
hkershaw-brown Nov 7, 2023
40ad949
Merge pull request #567 from NCAR/sync-dopplerfold
hkershaw-brown Nov 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,22 @@ individual files.

The changes are now listed with the most recent at the top.

**November 7 2023 :: MPI f08 quickbuild option. Tag v10.9.0**

- quickbuild.sh mpif08 option to build using the mpi_f08 module
- nvhpc mkmf.template for use on Derecho

bug-fixes:

- filter_mod.dopperlerfold in sync with filter_mod
- unnecessary loop removed from Mersenne twister developer test

doc-fixes:

- rename assim_model_mod.rst to match the module
- fix various Sphinx warnings and broken link


**October 5 2023 :: WRF-DART tutorial diagnostic section. Tag v10.8.5**

- Improvements:
Expand Down
54 changes: 52 additions & 2 deletions assimilation_code/modules/assimilation/filter_mod.dopplerfold.f90
Original file line number Diff line number Diff line change
Expand Up @@ -385,7 +385,6 @@ subroutine filter_main()
write(msgstring, '(A,I5)') 'running with an ensemble size of ', ens_size
call error_handler(E_MSG,'filter_main:', msgstring, source)


call set_missing_ok_status(allow_missing_clm)
allow_missing = get_missing_ok_status()

Expand Down Expand Up @@ -982,6 +981,7 @@ subroutine filter_main()
call timestamp_message('After computing posterior observation values')
call trace_message('After computing posterior observation values')


call trace_message('Before posterior obs space diagnostics')

! Write posterior observation space diagnostics
Expand All @@ -995,6 +995,10 @@ subroutine filter_main()

call trace_message('After posterior obs space diagnostics')
else
! call this alternate routine to collect any updated QC values that may
! have been set in the assimilation loop and copy them to the outgoing obs seq
call obs_space_sync_QCs(obs_fwd_op_ens_handle, seq, keys, num_obs_in_set, &
OBS_GLOBAL_QC_COPY, DART_qc_index)
call deallocate_single_copy(obs_fwd_op_ens_handle, prior_qc_copy)
endif

Expand Down Expand Up @@ -1593,7 +1597,7 @@ subroutine obs_space_diagnostics(obs_fwd_op_ens_handle, qc_ens_handle, ens_size,
OBS_MEAN_START, OBS_VAR_START, OBS_GLOBAL_QC_COPY, OBS_VAL_COPY, &
OBS_ERR_VAR_COPY, DART_qc_index, do_post)

! Do prior observation space diagnostics on the set of obs corresponding to keys
! Do observation space diagnostics on the set of obs corresponding to keys

type(ensemble_type), intent(inout) :: obs_fwd_op_ens_handle, qc_ens_handle
integer, intent(in) :: ens_size
Expand Down Expand Up @@ -1701,6 +1705,52 @@ end subroutine obs_space_diagnostics

!-------------------------------------------------------------------------

subroutine obs_space_sync_QCs(obs_fwd_op_ens_handle, &
seq, keys, num_obs_in_set, OBS_GLOBAL_QC_COPY, DART_qc_index)


type(ensemble_type), intent(inout) :: obs_fwd_op_ens_handle
integer, intent(in) :: num_obs_in_set
integer, intent(in) :: keys(num_obs_in_set)
type(obs_sequence_type), intent(inout) :: seq
integer, intent(in) :: OBS_GLOBAL_QC_COPY
integer, intent(in) :: DART_qc_index

integer :: j
integer :: io_task, my_task
real(r8), allocatable :: obs_temp(:)
real(r8) :: rvalue(1)

! this is a query routine to return which task has
! logical processing element 0 in this ensemble.
io_task = map_pe_to_task(obs_fwd_op_ens_handle, 0)
my_task = my_task_id()

! create temp space for QC values
if (my_task == io_task) then
allocate(obs_temp(num_obs_in_set))
else
allocate(obs_temp(1))
endif

! Optimize: Could we use a gather instead of a transpose and get copy?
call all_copies_to_all_vars(obs_fwd_op_ens_handle)

! Update the qc global value
call get_copy(io_task, obs_fwd_op_ens_handle, OBS_GLOBAL_QC_COPY, obs_temp)
if(my_task == io_task) then
do j = 1, obs_fwd_op_ens_handle%num_vars
rvalue(1) = obs_temp(j)
call replace_qc(seq, keys(j), rvalue, DART_qc_index)
end do
endif

deallocate(obs_temp)

end subroutine obs_space_sync_QCs

!-------------------------------------------------------------------------

subroutine filter_sync_keys_time(ens_handle, key_bounds, num_obs_in_set, time1, time2)

integer, intent(inout) :: key_bounds(2), num_obs_in_set
Expand Down
2 changes: 1 addition & 1 deletion assimilation_code/modules/utilities/fixsystem
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@
#

# default file list, and both marker strings must exist in these files
export FLIST="mpi_utilities_mod.f90 null_mpi_utilities_mod.f90"
export FLIST="mpi_utilities_mod.f90 null_mpi_utilities_mod.f90 mpif08_utilities_mod.f90 "
export STRINGS_REQUIRED=1

# compiler name required. additional filenames optional.
Expand Down
Loading