153 #if defined( __PGI) || defined (__FLANG)
154 #define rank(X) size(shape(X))
164 use iso_fortran_env,
only : input_unit, output_unit, error_unit
165 use mpp_parameter_mod,
only : mpp_verbose, mpp_debug, all_pes, any_pe, null_pe
166 use mpp_parameter_mod,
only : note, warning, fatal, mpp_clock_detailed,mpp_clock_sync
167 use mpp_parameter_mod,
only : clock_component, clock_subcomponent, clock_module_driver
168 use mpp_parameter_mod,
only : clock_module, clock_routine, clock_loop, clock_infra
169 use mpp_parameter_mod,
only : max_events, max_bins, max_event_types, max_clocks
170 use mpp_parameter_mod,
only : maxpes, event_wait, event_allreduce, event_broadcast
171 use mpp_parameter_mod,
only : event_alltoall
172 use mpp_parameter_mod,
only : event_type_create, event_type_free
173 use mpp_parameter_mod,
only : event_recv, event_send, mpp_ready, mpp_wait
174 use mpp_parameter_mod,
only : mpp_parameter_version=>version
175 use mpp_parameter_mod,
only : default_tag
176 use mpp_parameter_mod,
only : comm_tag_1, comm_tag_2, comm_tag_3, comm_tag_4
177 use mpp_parameter_mod,
only : comm_tag_5, comm_tag_6, comm_tag_7, comm_tag_8
178 use mpp_parameter_mod,
only : comm_tag_9, comm_tag_10, comm_tag_11, comm_tag_12
179 use mpp_parameter_mod,
only : comm_tag_13, comm_tag_14, comm_tag_15, comm_tag_16
180 use mpp_parameter_mod,
only : comm_tag_17, comm_tag_18, comm_tag_19, comm_tag_20
181 use mpp_parameter_mod,
only : mpp_fill_int,mpp_fill_double
182 use mpp_data_mod,
only : stat, mpp_stack, ptr_stack, status, ptr_status, sync, ptr_sync
183 use mpp_data_mod,
only : mpp_from_pe, ptr_from, remote_data_loc, ptr_remote
184 use mpp_data_mod,
only : mpp_data_version=>version
191 public :: mpp_verbose, mpp_debug, all_pes, any_pe, null_pe, note, warning, fatal
192 public :: mpp_clock_sync, mpp_clock_detailed, clock_component, clock_subcomponent
193 public :: clock_module_driver, clock_module, clock_routine, clock_loop, clock_infra
194 public :: maxpes, event_recv, event_send
195 public :: comm_tag_1, comm_tag_2, comm_tag_3, comm_tag_4
196 public :: comm_tag_5, comm_tag_6, comm_tag_7, comm_tag_8
197 public :: comm_tag_9, comm_tag_10, comm_tag_11, comm_tag_12
198 public :: comm_tag_13, comm_tag_14, comm_tag_15, comm_tag_16
199 public :: comm_tag_17, comm_tag_18, comm_tag_19, comm_tag_20
201 public :: mpp_init_test_full_init, mpp_init_test_init_true_only, mpp_init_test_peset_allocated
202 public :: mpp_init_test_clocks_init, mpp_init_test_datatype_list_init, mpp_init_test_logfile_init
203 public :: mpp_init_test_read_namelist, mpp_init_test_etc_unit, mpp_init_test_requests_allocated
213 public :: mpp_record_time_start, mpp_record_time_end
234 character(len=32) :: name
235 integer,
pointer :: list(:) =>null()
237 integer :: start, log2stride
246 character(len=16) :: name
247 integer(i8_kind),
dimension(MAX_EVENTS) :: ticks, bytes
255 character(len=32) :: name
256 integer(i8_kind) :: hits
257 integer(i8_kind) :: tick
258 integer(i8_kind) :: total_ticks
260 logical :: sync_on_begin, detailed
262 type(event),
pointer :: events(:) =>null()
271 character(len=16) :: name
272 real(r8_kind) :: msg_size_sums(MAX_BINS)
273 real(r8_kind) :: msg_time_sums(MAX_BINS)
274 real(r8_kind) :: total_data
275 real(r8_kind) :: total_time
276 integer(i8_kind) :: msg_size_cnts(MAX_BINS)
277 integer(i8_kind) :: total_cnts
284 character(len=16) :: name
285 type (Clock_Data_Summary) :: event(MAX_EVENT_TYPES)
294 integer,
allocatable :: sizes(:)
295 integer,
allocatable :: subsizes(:)
296 integer,
allocatable :: starts(:)
297 type(mpi_datatype) :: etype
298 type(mpi_datatype) :: id
300 type(mpp_type),
pointer :: prev => null()
301 type(mpp_type),
pointer :: next => null()
308 type(mpp_type),
pointer :: head => null()
309 type(mpp_type),
pointer :: tail => null()
388 module procedure mpp_error_noargs
389 module procedure mpp_error_is
390 module procedure mpp_error_rs
391 module procedure mpp_error_ia
392 module procedure mpp_error_ra
393 module procedure mpp_error_ia_ia
394 module procedure mpp_error_ia_ra
395 module procedure mpp_error_ra_ia
396 module procedure mpp_error_ra_ra
397 module procedure mpp_error_ia_is
398 module procedure mpp_error_ia_rs
399 module procedure mpp_error_ra_is
400 module procedure mpp_error_ra_rs
401 module procedure mpp_error_is_ia
402 module procedure mpp_error_is_ra
403 module procedure mpp_error_rs_ia
404 module procedure mpp_error_rs_ra
405 module procedure mpp_error_is_is
406 module procedure mpp_error_is_rs
407 module procedure mpp_error_rs_is
408 module procedure mpp_error_rs_rs
416 module procedure iarray_to_char
417 module procedure rarray_to_char
426 module procedure mpp_declare_pelist_legacy
434 module procedure mpp_get_current_pelist_f08
435 module procedure mpp_get_current_pelist_legacy
541 module procedure mpp_type_create_int4
542 module procedure mpp_type_create_int8
543 module procedure mpp_type_create_real4
544 module procedure mpp_type_create_real8
545 module procedure mpp_type_create_cmplx4
546 module procedure mpp_type_create_cmplx8
547 module procedure mpp_type_create_logical4
548 module procedure mpp_type_create_logical8
569 module procedure mpp_max_real8_0d
570 module procedure mpp_max_real8_1d
571 module procedure mpp_max_int8_0d
572 module procedure mpp_max_int8_1d
573 module procedure mpp_max_real4_0d
574 module procedure mpp_max_real4_1d
575 module procedure mpp_max_int4_0d
576 module procedure mpp_max_int4_1d
591 module procedure mpp_min_real8_0d
592 module procedure mpp_min_real8_1d
593 module procedure mpp_min_int8_0d
594 module procedure mpp_min_int8_1d
595 module procedure mpp_min_real4_0d
596 module procedure mpp_min_real4_1d
597 module procedure mpp_min_int4_0d
598 module procedure mpp_min_int4_1d
628 module procedure mpp_sum_int8
629 module procedure mpp_sum_int8_scalar
630 module procedure mpp_sum_int8_2d
631 module procedure mpp_sum_int8_3d
632 module procedure mpp_sum_int8_4d
633 module procedure mpp_sum_int8_5d
634 module procedure mpp_sum_real8
635 module procedure mpp_sum_real8_scalar
636 module procedure mpp_sum_real8_2d
637 module procedure mpp_sum_real8_3d
638 module procedure mpp_sum_real8_4d
639 module procedure mpp_sum_real8_5d
641 module procedure mpp_sum_cmplx8
642 module procedure mpp_sum_cmplx8_scalar
643 module procedure mpp_sum_cmplx8_2d
644 module procedure mpp_sum_cmplx8_3d
645 module procedure mpp_sum_cmplx8_4d
646 module procedure mpp_sum_cmplx8_5d
648 module procedure mpp_sum_int4
649 module procedure mpp_sum_int4_scalar
650 module procedure mpp_sum_int4_2d
651 module procedure mpp_sum_int4_3d
652 module procedure mpp_sum_int4_4d
653 module procedure mpp_sum_int4_5d
654 module procedure mpp_sum_real4
655 module procedure mpp_sum_real4_scalar
656 module procedure mpp_sum_real4_2d
657 module procedure mpp_sum_real4_3d
658 module procedure mpp_sum_real4_4d
659 module procedure mpp_sum_real4_5d
661 module procedure mpp_sum_cmplx4
662 module procedure mpp_sum_cmplx4_scalar
663 module procedure mpp_sum_cmplx4_2d
664 module procedure mpp_sum_cmplx4_3d
665 module procedure mpp_sum_cmplx4_4d
666 module procedure mpp_sum_cmplx4_5d
673 module procedure mpp_sum_int8_ad
674 module procedure mpp_sum_int8_scalar_ad
675 module procedure mpp_sum_int8_2d_ad
676 module procedure mpp_sum_int8_3d_ad
677 module procedure mpp_sum_int8_4d_ad
678 module procedure mpp_sum_int8_5d_ad
679 module procedure mpp_sum_real8_ad
680 module procedure mpp_sum_real8_scalar_ad
681 module procedure mpp_sum_real8_2d_ad
682 module procedure mpp_sum_real8_3d_ad
683 module procedure mpp_sum_real8_4d_ad
684 module procedure mpp_sum_real8_5d_ad
686 module procedure mpp_sum_cmplx8_ad
687 module procedure mpp_sum_cmplx8_scalar_ad
688 module procedure mpp_sum_cmplx8_2d_ad
689 module procedure mpp_sum_cmplx8_3d_ad
690 module procedure mpp_sum_cmplx8_4d_ad
691 module procedure mpp_sum_cmplx8_5d_ad
693 module procedure mpp_sum_int4_ad
694 module procedure mpp_sum_int4_scalar_ad
695 module procedure mpp_sum_int4_2d_ad
696 module procedure mpp_sum_int4_3d_ad
697 module procedure mpp_sum_int4_4d_ad
698 module procedure mpp_sum_int4_5d_ad
699 module procedure mpp_sum_real4_ad
700 module procedure mpp_sum_real4_scalar_ad
701 module procedure mpp_sum_real4_2d_ad
702 module procedure mpp_sum_real4_3d_ad
703 module procedure mpp_sum_real4_4d_ad
704 module procedure mpp_sum_real4_5d_ad
706 module procedure mpp_sum_cmplx4_ad
707 module procedure mpp_sum_cmplx4_scalar_ad
708 module procedure mpp_sum_cmplx4_2d_ad
709 module procedure mpp_sum_cmplx4_3d_ad
710 module procedure mpp_sum_cmplx4_4d_ad
711 module procedure mpp_sum_cmplx4_5d_ad
729 module procedure mpp_gather_logical4
730 module procedure mpp_gatherv_logical4
731 module procedure mpp_gather_logical_1d
732 module procedure mpp_gather_int4
733 module procedure mpp_gather_int8
734 module procedure mpp_gatherv_int4
735 module procedure mpp_gatherv_int8
736 module procedure mpp_gather_int4_1d
737 module procedure mpp_gather_int8_1d
738 module procedure mpp_gather_real4
739 module procedure mpp_gather_real8
740 module procedure mpp_gatherv_real4
741 module procedure mpp_gatherv_real8
742 module procedure mpp_gather_real4_1d
743 module procedure mpp_gather_real8_1d
744 module procedure mpp_gather_logical_1dv
745 module procedure mpp_gather_int4_1dv
746 module procedure mpp_gather_int8_1dv
747 module procedure mpp_gather_real4_1dv
748 module procedure mpp_gather_real8_1dv
749 module procedure mpp_gather_pelist_logical_2d
750 module procedure mpp_gather_pelist_logical_gen_2d
751 module procedure mpp_gather_pelist_logical_3d
752 module procedure mpp_gather_pelist_logical_gen_3d
753 module procedure mpp_gather_pelist_int4_2d
754 module procedure mpp_gather_pelist_int4_gen_2d
755 module procedure mpp_gather_pelist_int4_3d
756 module procedure mpp_gather_pelist_int4_gen_3d
757 module procedure mpp_gather_pelist_int8_2d
758 module procedure mpp_gather_pelist_int8_gen_2d
759 module procedure mpp_gather_pelist_int8_3d
760 module procedure mpp_gather_pelist_int8_gen_3d
761 module procedure mpp_gather_pelist_real4_2d
762 module procedure mpp_gather_pelist_real4_gen_2d
763 module procedure mpp_gather_pelist_real4_3d
764 module procedure mpp_gather_pelist_real4_gen_3d
765 module procedure mpp_gather_pelist_real8_2d
766 module procedure mpp_gather_pelist_real8_gen_2d
767 module procedure mpp_gather_pelist_real8_3d
768 module procedure mpp_gather_pelist_real8_gen_3d
789 module procedure mpp_scatterv_int4
790 module procedure mpp_scatter_pelist_int4_2d
791 module procedure mpp_scatter_pelist_int4_gen_2d
792 module procedure mpp_scatter_pelist_int4_3d
793 module procedure mpp_scatter_pelist_int4_gen_3d
794 module procedure mpp_scatterv_int8
795 module procedure mpp_scatter_pelist_int8_2d
796 module procedure mpp_scatter_pelist_int8_gen_2d
797 module procedure mpp_scatter_pelist_int8_3d
798 module procedure mpp_scatter_pelist_int8_gen_3d
799 module procedure mpp_scatterv_real4
800 module procedure mpp_scatter_pelist_real4_2d
801 module procedure mpp_scatter_pelist_real4_gen_2d
802 module procedure mpp_scatter_pelist_real4_3d
803 module procedure mpp_scatter_pelist_real4_gen_3d
804 module procedure mpp_scatterv_real8
805 module procedure mpp_scatter_pelist_real8_2d
806 module procedure mpp_scatter_pelist_real8_gen_2d
807 module procedure mpp_scatter_pelist_real8_3d
808 module procedure mpp_scatter_pelist_real8_gen_3d
825 module procedure mpp_alltoall_int4
826 module procedure mpp_alltoall_int8
827 module procedure mpp_alltoall_real4
828 module procedure mpp_alltoall_real8
830 module procedure mpp_alltoall_cmplx4
833 module procedure mpp_alltoall_cmplx8
835 module procedure mpp_alltoall_logical4
836 module procedure mpp_alltoall_logical8
837 module procedure mpp_alltoall_int4_v
838 module procedure mpp_alltoall_int8_v
839 module procedure mpp_alltoall_real4_v
840 module procedure mpp_alltoall_real8_v
842 module procedure mpp_alltoall_cmplx4_v
845 module procedure mpp_alltoall_cmplx8_v
847 module procedure mpp_alltoall_logical4_v
848 module procedure mpp_alltoall_logical8_v
849 module procedure mpp_alltoall_int4_w
850 module procedure mpp_alltoall_int8_w
851 module procedure mpp_alltoall_real4_w
852 module procedure mpp_alltoall_real8_w
854 module procedure mpp_alltoall_cmplx4_w
857 module procedure mpp_alltoall_cmplx8_w
859 module procedure mpp_alltoall_logical4_w
860 module procedure mpp_alltoall_logical8_w
935 module procedure mpp_transmit_real8
936 module procedure mpp_transmit_real8_scalar
937 module procedure mpp_transmit_real8_2d
938 module procedure mpp_transmit_real8_3d
939 module procedure mpp_transmit_real8_4d
940 module procedure mpp_transmit_real8_5d
942 module procedure mpp_transmit_cmplx8
943 module procedure mpp_transmit_cmplx8_scalar
944 module procedure mpp_transmit_cmplx8_2d
945 module procedure mpp_transmit_cmplx8_3d
946 module procedure mpp_transmit_cmplx8_4d
947 module procedure mpp_transmit_cmplx8_5d
949 module procedure mpp_transmit_int8
950 module procedure mpp_transmit_int8_scalar
951 module procedure mpp_transmit_int8_2d
952 module procedure mpp_transmit_int8_3d
953 module procedure mpp_transmit_int8_4d
954 module procedure mpp_transmit_int8_5d
955 module procedure mpp_transmit_logical8
956 module procedure mpp_transmit_logical8_scalar
957 module procedure mpp_transmit_logical8_2d
958 module procedure mpp_transmit_logical8_3d
959 module procedure mpp_transmit_logical8_4d
960 module procedure mpp_transmit_logical8_5d
962 module procedure mpp_transmit_real4
963 module procedure mpp_transmit_real4_scalar
964 module procedure mpp_transmit_real4_2d
965 module procedure mpp_transmit_real4_3d
966 module procedure mpp_transmit_real4_4d
967 module procedure mpp_transmit_real4_5d
970 module procedure mpp_transmit_cmplx4
971 module procedure mpp_transmit_cmplx4_scalar
972 module procedure mpp_transmit_cmplx4_2d
973 module procedure mpp_transmit_cmplx4_3d
974 module procedure mpp_transmit_cmplx4_4d
975 module procedure mpp_transmit_cmplx4_5d
977 module procedure mpp_transmit_int4
978 module procedure mpp_transmit_int4_scalar
979 module procedure mpp_transmit_int4_2d
980 module procedure mpp_transmit_int4_3d
981 module procedure mpp_transmit_int4_4d
982 module procedure mpp_transmit_int4_5d
983 module procedure mpp_transmit_logical4
984 module procedure mpp_transmit_logical4_scalar
985 module procedure mpp_transmit_logical4_2d
986 module procedure mpp_transmit_logical4_3d
987 module procedure mpp_transmit_logical4_4d
988 module procedure mpp_transmit_logical4_5d
1000 module procedure mpp_recv_real8
1001 module procedure mpp_recv_real8_scalar
1002 module procedure mpp_recv_real8_2d
1003 module procedure mpp_recv_real8_3d
1004 module procedure mpp_recv_real8_4d
1005 module procedure mpp_recv_real8_5d
1007 module procedure mpp_recv_cmplx8
1008 module procedure mpp_recv_cmplx8_scalar
1009 module procedure mpp_recv_cmplx8_2d
1010 module procedure mpp_recv_cmplx8_3d
1011 module procedure mpp_recv_cmplx8_4d
1012 module procedure mpp_recv_cmplx8_5d
1014 module procedure mpp_recv_int8
1015 module procedure mpp_recv_int8_scalar
1016 module procedure mpp_recv_int8_2d
1017 module procedure mpp_recv_int8_3d
1018 module procedure mpp_recv_int8_4d
1019 module procedure mpp_recv_int8_5d
1020 module procedure mpp_recv_logical8
1021 module procedure mpp_recv_logical8_scalar
1022 module procedure mpp_recv_logical8_2d
1023 module procedure mpp_recv_logical8_3d
1024 module procedure mpp_recv_logical8_4d
1025 module procedure mpp_recv_logical8_5d
1027 module procedure mpp_recv_real4
1028 module procedure mpp_recv_real4_scalar
1029 module procedure mpp_recv_real4_2d
1030 module procedure mpp_recv_real4_3d
1031 module procedure mpp_recv_real4_4d
1032 module procedure mpp_recv_real4_5d
1035 module procedure mpp_recv_cmplx4
1036 module procedure mpp_recv_cmplx4_scalar
1037 module procedure mpp_recv_cmplx4_2d
1038 module procedure mpp_recv_cmplx4_3d
1039 module procedure mpp_recv_cmplx4_4d
1040 module procedure mpp_recv_cmplx4_5d
1042 module procedure mpp_recv_int4
1043 module procedure mpp_recv_int4_scalar
1044 module procedure mpp_recv_int4_2d
1045 module procedure mpp_recv_int4_3d
1046 module procedure mpp_recv_int4_4d
1047 module procedure mpp_recv_int4_5d
1048 module procedure mpp_recv_logical4
1049 module procedure mpp_recv_logical4_scalar
1050 module procedure mpp_recv_logical4_2d
1051 module procedure mpp_recv_logical4_3d
1052 module procedure mpp_recv_logical4_4d
1053 module procedure mpp_recv_logical4_5d
1067 module procedure mpp_send_real8
1068 module procedure mpp_send_real8_scalar
1069 module procedure mpp_send_real8_2d
1070 module procedure mpp_send_real8_3d
1071 module procedure mpp_send_real8_4d
1072 module procedure mpp_send_real8_5d
1074 module procedure mpp_send_cmplx8
1075 module procedure mpp_send_cmplx8_scalar
1076 module procedure mpp_send_cmplx8_2d
1077 module procedure mpp_send_cmplx8_3d
1078 module procedure mpp_send_cmplx8_4d
1079 module procedure mpp_send_cmplx8_5d
1081 module procedure mpp_send_int8
1082 module procedure mpp_send_int8_scalar
1083 module procedure mpp_send_int8_2d
1084 module procedure mpp_send_int8_3d
1085 module procedure mpp_send_int8_4d
1086 module procedure mpp_send_int8_5d
1087 module procedure mpp_send_logical8
1088 module procedure mpp_send_logical8_scalar
1089 module procedure mpp_send_logical8_2d
1090 module procedure mpp_send_logical8_3d
1091 module procedure mpp_send_logical8_4d
1092 module procedure mpp_send_logical8_5d
1094 module procedure mpp_send_real4
1095 module procedure mpp_send_real4_scalar
1096 module procedure mpp_send_real4_2d
1097 module procedure mpp_send_real4_3d
1098 module procedure mpp_send_real4_4d
1099 module procedure mpp_send_real4_5d
1102 module procedure mpp_send_cmplx4
1103 module procedure mpp_send_cmplx4_scalar
1104 module procedure mpp_send_cmplx4_2d
1105 module procedure mpp_send_cmplx4_3d
1106 module procedure mpp_send_cmplx4_4d
1107 module procedure mpp_send_cmplx4_5d
1109 module procedure mpp_send_int4
1110 module procedure mpp_send_int4_scalar
1111 module procedure mpp_send_int4_2d
1112 module procedure mpp_send_int4_3d
1113 module procedure mpp_send_int4_4d
1114 module procedure mpp_send_int4_5d
1115 module procedure mpp_send_logical4
1116 module procedure mpp_send_logical4_scalar
1117 module procedure mpp_send_logical4_2d
1118 module procedure mpp_send_logical4_3d
1119 module procedure mpp_send_logical4_4d
1120 module procedure mpp_send_logical4_5d
1155 module procedure mpp_broadcast_real8
1156 module procedure mpp_broadcast_real8_scalar
1157 module procedure mpp_broadcast_real8_2d
1158 module procedure mpp_broadcast_real8_3d
1159 module procedure mpp_broadcast_real8_4d
1160 module procedure mpp_broadcast_real8_5d
1162 module procedure mpp_broadcast_cmplx8
1163 module procedure mpp_broadcast_cmplx8_scalar
1164 module procedure mpp_broadcast_cmplx8_2d
1165 module procedure mpp_broadcast_cmplx8_3d
1166 module procedure mpp_broadcast_cmplx8_4d
1167 module procedure mpp_broadcast_cmplx8_5d
1169 module procedure mpp_broadcast_int8
1170 module procedure mpp_broadcast_int8_scalar
1171 module procedure mpp_broadcast_int8_2d
1172 module procedure mpp_broadcast_int8_3d
1173 module procedure mpp_broadcast_int8_4d
1174 module procedure mpp_broadcast_int8_5d
1175 module procedure mpp_broadcast_logical8
1176 module procedure mpp_broadcast_logical8_scalar
1177 module procedure mpp_broadcast_logical8_2d
1178 module procedure mpp_broadcast_logical8_3d
1179 module procedure mpp_broadcast_logical8_4d
1180 module procedure mpp_broadcast_logical8_5d
1182 module procedure mpp_broadcast_real4
1183 module procedure mpp_broadcast_real4_scalar
1184 module procedure mpp_broadcast_real4_2d
1185 module procedure mpp_broadcast_real4_3d
1186 module procedure mpp_broadcast_real4_4d
1187 module procedure mpp_broadcast_real4_5d
1190 module procedure mpp_broadcast_cmplx4
1191 module procedure mpp_broadcast_cmplx4_scalar
1192 module procedure mpp_broadcast_cmplx4_2d
1193 module procedure mpp_broadcast_cmplx4_3d
1194 module procedure mpp_broadcast_cmplx4_4d
1195 module procedure mpp_broadcast_cmplx4_5d
1197 module procedure mpp_broadcast_int4
1198 module procedure mpp_broadcast_int4_scalar
1199 module procedure mpp_broadcast_int4_2d
1200 module procedure mpp_broadcast_int4_3d
1201 module procedure mpp_broadcast_int4_4d
1202 module procedure mpp_broadcast_int4_5d
1203 module procedure mpp_broadcast_logical4
1204 module procedure mpp_broadcast_logical4_scalar
1205 module procedure mpp_broadcast_logical4_2d
1206 module procedure mpp_broadcast_logical4_3d
1207 module procedure mpp_broadcast_logical4_4d
1208 module procedure mpp_broadcast_logical4_5d
1263 module procedure mpp_chksum_i8_1d
1264 module procedure mpp_chksum_i8_2d
1265 module procedure mpp_chksum_i8_3d
1266 module procedure mpp_chksum_i8_4d
1267 module procedure mpp_chksum_i8_5d
1268 module procedure mpp_chksum_i8_1d_rmask
1269 module procedure mpp_chksum_i8_2d_rmask
1270 module procedure mpp_chksum_i8_3d_rmask
1271 module procedure mpp_chksum_i8_4d_rmask
1272 module procedure mpp_chksum_i8_5d_rmask
1274 module procedure mpp_chksum_i4_1d
1275 module procedure mpp_chksum_i4_2d
1276 module procedure mpp_chksum_i4_3d
1277 module procedure mpp_chksum_i4_4d
1278 module procedure mpp_chksum_i4_5d
1279 module procedure mpp_chksum_i4_1d_rmask
1280 module procedure mpp_chksum_i4_2d_rmask
1281 module procedure mpp_chksum_i4_3d_rmask
1282 module procedure mpp_chksum_i4_4d_rmask
1283 module procedure mpp_chksum_i4_5d_rmask
1285 module procedure mpp_chksum_r8_0d
1286 module procedure mpp_chksum_r8_1d
1287 module procedure mpp_chksum_r8_2d
1288 module procedure mpp_chksum_r8_3d
1289 module procedure mpp_chksum_r8_4d
1290 module procedure mpp_chksum_r8_5d
1292 module procedure mpp_chksum_r4_0d
1293 module procedure mpp_chksum_r4_1d
1294 module procedure mpp_chksum_r4_2d
1295 module procedure mpp_chksum_r4_3d
1296 module procedure mpp_chksum_r4_4d
1297 module procedure mpp_chksum_r4_5d
1299 module procedure mpp_chksum_c8_0d
1300 module procedure mpp_chksum_c8_1d
1301 module procedure mpp_chksum_c8_2d
1302 module procedure mpp_chksum_c8_3d
1303 module procedure mpp_chksum_c8_4d
1304 module procedure mpp_chksum_c8_5d
1307 module procedure mpp_chksum_c4_0d
1308 module procedure mpp_chksum_c4_1d
1309 module procedure mpp_chksum_c4_2d
1310 module procedure mpp_chksum_c4_3d
1311 module procedure mpp_chksum_c4_4d
1312 module procedure mpp_chksum_c4_5d
1323 integer,
parameter :: PESET_MAX = 10000
1324 integer :: current_peset_max = 32
1327 logical :: module_is_initialized = .false.
1328 logical :: debug = .false.
1329 integer :: npes=1, root_pe=0, pe=0
1330 integer(i8_kind) :: tick, ticks_per_sec, max_ticks, start_tick, end_tick, tick0=0
1332 logical :: first_call_system_clock_mpi=.true.
1335 logical :: mpp_record_timing_data=.true.
1336 type(
clock),
save :: clocks(max_clocks)
1337 integer :: log_unit, etc_unit
1339 character(len=32),
parameter :: configfile=
'logfile'
1341 integer :: peset_num=0, current_peset_num=0
1344 integer :: clock_num=0, num_clock_ids=0,current_clock=0, previous_clock(max_clocks)=0
1350 integer :: cur_send_request = 0
1351 integer :: cur_recv_request = 0
1355 integer,
allocatable :: size_recv(:)
1359 character(len=32) :: etcfile=
'._mpp.nonrootpe.msgs'
1361 character(len=32) :: etcfile=
'/dev/null'
1365 integer ::
in_unit=input_unit, out_unit=output_unit, err_unit=error_unit
1366 integer :: stdout_unit
1370 logical :: warnings_are_fatal = .false.
1371 integer :: error_state=0
1372 integer :: clock_grain=clock_loop-1
1376 integer :: mpp_stack_size=0, mpp_stack_hwm=0
1377 logical :: verbose=.false.
1382 integer,
parameter :: mpp_init_test_full_init = -1
1383 integer,
parameter :: mpp_init_test_init_true_only = 0
1384 integer,
parameter :: mpp_init_test_peset_allocated = 1
1385 integer,
parameter :: mpp_init_test_clocks_init = 2
1386 integer,
parameter :: mpp_init_test_datatype_list_init = 3
1387 integer,
parameter :: mpp_init_test_logfile_init = 4
1388 integer,
parameter :: mpp_init_test_read_namelist = 5
1389 integer,
parameter :: mpp_init_test_etc_unit = 6
1390 integer,
parameter :: mpp_init_test_requests_allocated = 7
1404 character(len=:),
dimension(:),
allocatable,
target,
public :: input_nml_file
1405 logical :: read_ascii_file_on = .false.
1409 #include<file_version.h>
1412 integer,
parameter :: max_request_min = 10000
1413 integer :: request_multiply = 20
1415 logical :: etc_unit_is_stderr = .false.
1416 integer :: max_request = 0
1417 logical :: sync_all_clocks = .false.
1418 namelist /mpp_nml/ etc_unit_is_stderr, request_multiply, mpp_record_timing_data, sync_all_clocks
1421 #include <system_clock.fh>
1422 #include <mpp_util.inc>
1423 #include <mpp_comm.inc>
subroutine mpp_sync_self(pelist, check, request, msg_size, msg_type)
This is to check if current PE's outstanding puts are complete but we can't use shmem_fence because w...
integer warn_unit
unit number of the warning log
subroutine mpp_error_basic(errortype, errormsg)
A very basic error handler uses ABORT and FLUSH calls, may need to use cpp to rename.
integer function stdout()
This function returns the current standard fortran unit numbers for output.
subroutine read_ascii_file(FILENAME, LENGTH, Content, PELIST)
Reads any ascii file into a character array and broadcasts it to the non-root mpi-tasks....
subroutine mpp_init_legacy(flags, localcomm, test_level, alt_input_nml_path)
subroutine mpp_error_mesg(routine, errormsg, errortype)
overloads to mpp_error_basic, support for error_mesg routine in FMS
subroutine mpp_set_current_pelist(pelist, no_sync)
Set context pelist.
integer, parameter, public mpp_comm_null
MPP_COMM_NULL acts as an analagous mpp-macro for MPI_COMM_NULL to share with fms2_io NetCDF4 mpi-io....
integer get_len_nocomm
needed for mpp_transmit_nocomm.h
integer function stderr()
This function returns the current standard fortran unit numbers for error messages.
subroutine read_input_nml(pelist_name_in, alt_input_nml_path)
Reads an existing input nml file into a character array and broadcasts it to the non-root mpi-tasks....
character(len=32), parameter warnfile
base name for warninglog (appends ".<PE>.out")
subroutine inverse_permutation(x, y)
Produce an inverse permutation. For example, transform [2, 3, 1, 4] to [3, 1, 2, 4].
type(communicator), dimension(:), allocatable peset
Will be allocated starting from 0, 0 is a dummy used to hold single-PE "self" communicator.
subroutine mpp_type_free(dtype)
Deallocates memory for mpp_type objects @TODO This should probably not take a pointer,...
integer, parameter, public mpp_info_null
MPP_INFO_NULL acts as an analagous mpp-macro for MPI_INFO_NULL to share with fms2_io NetCDF4 mpi-io....
integer clock0
measures total runtime from mpp_init to mpp_exit
subroutine mpp_clock_set_grain(grain)
Set the level of granularity of timing measurements.
real(r8_kind) mpi_tick_rate
clock rate for mpi_wtick()
integer world_peset_num
the world communicator
subroutine mpp_exit()
Finalizes process termination. To be called at the end of a run. Certain mpi implementations(openmpi)...
integer function stdlog()
This function returns the current standard fortran unit numbers for log messages. Log messages,...
subroutine mpp_init_f08(flags, localcomm, test_level, alt_input_nml_path)
Initialize the mpp_mod module. Must be called before any usage.
integer in_unit
Use the intrinsics in iso_fortran_env.
integer function mpp_npes()
Returns processor count for current pelist.
subroutine mpp_set_stack_size(n)
Set the mpp_stack variable to be at least n LONG words long.
integer function, dimension(2) get_ascii_file_num_lines_and_length(FILENAME, PELIST)
Function to determine the maximum line length and number of lines from an ascii file.
real(r8_kind) mpi_count0
use to prevent integer overflow
integer function mpp_pe()
Returns processor ID.
subroutine mpp_sync(pelist, do_self)
Synchronize PEs in list.
integer function mpp_clock_id(name, flags, grain)
Return an ID for a new or existing clock.
integer function warnlog()
This function returns unit number for the warning log if on the root pe, otherwise returns the etc_un...
subroutine mpp_broadcast_char(char_data, length, from_pe, pelist)
Broadcasts a character string from the given pe to it's pelist.
integer function stdin()
This function returns the current standard fortran unit numbers for input.
subroutine mpp_declare_pelist_f08(pelist, name, comm)
Declare a pelist.
Takes a given integer or real array and returns it as a string.
Scatter a vector across all PEs.
Perform parallel broadcasts.
Calculate parallel checksums.
Gather data sent from pelist onto the root pe Wrapper for MPI_gather, can be used with and without in...
Reduction operations. Find the max of scalar a from the PEs in pelist result is also automatically br...
Reduction operations. Find the min of scalar a from the PEs in pelist result is also automatically br...
Receive data from another PE.
Scatter (ie - is) * (je - js) contiguous elements of array data from the designated root pe into cont...
Send data to a receiving PE.
Calculates sum of a given numerical array across pe's for adjoint domains.
Basic message-passing call.
Create a mpp_type variable.
a clock contains an array of event profiles for a region
Summary of information from a clock run.
Communication information for message passing libraries.
Communication event profile.
Data types for generalized data transfer (e.g. MPI_Type)
Persisent elements for linked list interaction.
holds name and clock data for use in mpp_util.h
Declare a pelist. The two flavors of this subroutine differ in the type of their comm/commID argument...
Get the current pelist. The two flavors of this subroutine differ in the type of their comm/commID ar...