Changeset 261 for codes/icosagcm/branches/SATURN_DYNAMICO
- Timestamp:
- 07/29/14 18:27:41 (10 years ago)
- Location:
- codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/mpi_mod.F90
r221 r261 7 7 INTEGER :: MPI_REAL8 8 8 INTEGER :: MPI_INTEGER 9 INTEGER :: MPI_CHARACTER 10 INTEGER :: MPI_LOGICAL 9 11 INTEGER :: MPI_ANY_SOURCE 10 12 INTEGER :: MPI_MAX -
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/mpipara.F90
r221 r261 9 9 LOGICAL,SAVE :: using_mpi 10 10 LOGICAL,SAVE :: is_mpi_root 11 LOGICAL,SAVE :: is_mpi_master 12 LOGICAL,SAVE :: mpi_master 13 11 14 12 15 INTERFACE allocate_mpi_buffer … … 92 95 ENDIF 93 96 97 mpi_master=0 94 98 IF (mpi_rank==0) THEN 95 99 is_mpi_root=.TRUE. 100 is_mpi_master=.TRUE. 96 101 ELSE 97 102 is_mpi_root=.FALSE. 103 is_mpi_master=.FALSE. 98 104 ENDIF 99 105 … … 102 108 SUBROUTINE finalize_mpipara 103 109 USE mpi_mod 104 IMPLICIT NONE 105 110 #ifdef CPP_USING_XIOS 111 USE xios 112 #endif 113 IMPLICIT NONE 114 115 #ifdef CPP_USING_XIOS 116 CALL xios_finalize 117 #endif 106 118 IF (using_mpi) CALL MPI_FINALIZE(ierr) 107 119 -
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/transfert.F90
r260 r261 5 5 req_e1_scal, req_i0, req_e0_vect, req_e0_scal, request_add_point, create_request, gather_field, scatter_field, & 6 6 t_message,init_message=>init_message_mpi,transfert_message=>transfert_message_mpi, & 7 send_message=>send_message_mpi,test_message=>test_message_mpi,wait_message=>wait_message_mpi,barrier 7 send_message=>send_message_mpi,test_message=>test_message_mpi,wait_message=>wait_message_mpi,barrier, & 8 bcast_mpi 8 9 #else 9 10 USE transfert_mpi_mod, ONLY : init_transfert, transfert_request=>transfert_request_seq, req_i1,req_e1_vect, & 10 11 req_e1_scal,req_i0, req_e0_vect, req_e0_scal, request_add_point, create_request, gather_field, scatter_field,& 11 12 t_message,init_message=>init_message_seq,transfert_message=>transfert_message_seq, & 12 send_message=>send_message_seq,test_message=>test_message_seq,wait_message=>wait_message_seq,barrier 13 send_message=>send_message_seq,test_message=>test_message_seq,wait_message=>wait_message_seq,barrier, & 14 bcast_mpi 13 15 #endif 16 17 USE transfert_omp_mod 18 19 INTERFACE bcast 20 MODULE PROCEDURE bcast_c, & 21 bcast_i,bcast_i1,bcast_i2,bcast_i3,bcast_i4, & 22 bcast_r,bcast_r1,bcast_r2,bcast_r3,bcast_r4, & 23 bcast_l,bcast_l1,bcast_l2,bcast_l3,bcast_l4 24 25 END INTERFACE 26 27 28 CONTAINS 29 30 31 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 32 !! Definition des Broadcast --> 4D !! 33 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 34 35 !! -- Les chaine de charactère -- !! 36 37 SUBROUTINE bcast_c(var) 38 IMPLICIT NONE 39 CHARACTER(LEN=*),INTENT(INOUT) :: Var 40 41 !$OMP MASTER 42 CALL bcast_mpi(Var) 43 !$OMP END MASTER 44 CALL bcast_omp(Var) 45 46 END SUBROUTINE bcast_c 47 48 !! -- Les entiers -- !! 49 50 SUBROUTINE bcast_i(var) 51 IMPLICIT NONE 52 INTEGER,INTENT(INOUT) :: Var 53 !$OMP MASTER 54 CALL bcast_mpi(Var) 55 !$OMP END MASTER 56 CALL bcast_omp(Var) 57 58 END SUBROUTINE bcast_i 59 60 SUBROUTINE bcast_i1(var) 61 IMPLICIT NONE 62 INTEGER,INTENT(INOUT) :: Var(:) 63 64 !$OMP MASTER 65 CALL bcast_mpi(Var) 66 !$OMP END MASTER 67 CALL bcast_omp(Var) 68 69 END SUBROUTINE bcast_i1 70 71 72 SUBROUTINE bcast_i2(var) 73 IMPLICIT NONE 74 INTEGER,INTENT(INOUT) :: Var(:,:) 75 76 !$OMP MASTER 77 CALL bcast_mpi(Var) 78 !$OMP END MASTER 79 CALL bcast_omp(Var) 80 81 END SUBROUTINE bcast_i2 82 83 84 SUBROUTINE bcast_i3(var) 85 IMPLICIT NONE 86 INTEGER,INTENT(INOUT) :: Var(:,:,:) 87 88 !$OMP MASTER 89 CALL bcast_mpi(Var) 90 !$OMP END MASTER 91 CALL bcast_omp(Var) 92 93 END SUBROUTINE bcast_i3 94 95 96 SUBROUTINE bcast_i4(var) 97 IMPLICIT NONE 98 INTEGER,INTENT(INOUT) :: Var(:,:,:,:) 99 100 !$OMP MASTER 101 CALL bcast_mpi(Var) 102 !$OMP END MASTER 103 CALL bcast_omp(Var) 104 105 END SUBROUTINE bcast_i4 106 107 108 !! -- Les reels -- !! 109 110 SUBROUTINE bcast_r(var) 111 IMPLICIT NONE 112 REAL,INTENT(INOUT) :: Var 113 114 !$OMP MASTER 115 CALL bcast_mpi(Var) 116 !$OMP END MASTER 117 CALL bcast_omp(Var) 118 119 END SUBROUTINE bcast_r 120 121 SUBROUTINE bcast_r1(var) 122 IMPLICIT NONE 123 REAL,INTENT(INOUT) :: Var(:) 124 125 !$OMP MASTER 126 CALL bcast_mpi(Var) 127 !$OMP END MASTER 128 CALL bcast_omp(Var) 129 130 END SUBROUTINE bcast_r1 131 132 133 SUBROUTINE bcast_r2(var) 134 IMPLICIT NONE 135 REAL,INTENT(INOUT) :: Var(:,:) 136 137 !$OMP MASTER 138 CALL bcast_mpi(Var) 139 !$OMP END MASTER 140 CALL bcast_omp(Var) 141 142 END SUBROUTINE bcast_r2 143 144 145 SUBROUTINE bcast_r3(var) 146 IMPLICIT NONE 147 REAL,INTENT(INOUT) :: Var(:,:,:) 148 149 !$OMP MASTER 150 CALL bcast_mpi(Var) 151 !$OMP END MASTER 152 CALL bcast_omp(Var) 153 154 END SUBROUTINE bcast_r3 155 156 157 SUBROUTINE bcast_r4(var) 158 IMPLICIT NONE 159 REAL,INTENT(INOUT) :: Var(:,:,:,:) 160 161 !$OMP MASTER 162 CALL bcast_mpi(Var) 163 !$OMP END MASTER 164 CALL bcast_omp(Var) 165 166 END SUBROUTINE bcast_r4 167 168 169 !! -- Les booleens -- !! 170 171 SUBROUTINE bcast_l(var) 172 IMPLICIT NONE 173 LOGICAL,INTENT(INOUT) :: Var 174 !$OMP MASTER 175 CALL bcast_mpi(Var) 176 !$OMP END MASTER 177 CALL bcast_omp(Var) 178 179 END SUBROUTINE bcast_l 180 181 SUBROUTINE bcast_l1(var) 182 IMPLICIT NONE 183 LOGICAL,INTENT(INOUT) :: Var(:) 184 185 !$OMP MASTER 186 CALL bcast_mpi(Var) 187 !$OMP END MASTER 188 CALL bcast_omp(Var) 189 190 END SUBROUTINE bcast_l1 191 192 193 SUBROUTINE bcast_l2(var) 194 IMPLICIT NONE 195 LOGICAL,INTENT(INOUT) :: Var(:,:) 196 197 !$OMP MASTER 198 CALL bcast_mpi(Var) 199 !$OMP END MASTER 200 CALL bcast_omp(Var) 201 202 END SUBROUTINE bcast_l2 203 204 205 SUBROUTINE bcast_l3(var) 206 IMPLICIT NONE 207 LOGICAL,INTENT(INOUT) :: Var(:,:,:) 208 209 !$OMP MASTER 210 CALL bcast_mpi(Var) 211 !$OMP END MASTER 212 CALL bcast_omp(Var) 213 214 END SUBROUTINE bcast_l3 215 216 217 SUBROUTINE bcast_l4(var) 218 IMPLICIT NONE 219 LOGICAL,INTENT(INOUT) :: Var(:,:,:,:) 220 221 !$OMP MASTER 222 CALL bcast_mpi(Var) 223 !$OMP END MASTER 224 CALL bcast_omp(Var) 225 226 END SUBROUTINE bcast_l4 227 14 228 15 229 END MODULE transfert_mod -
codes/icosagcm/branches/SATURN_DYNAMICO/ICOSAGCM/src/transfert_mpi.f90
r260 r261 74 74 INTEGER :: number 75 75 END TYPE t_message 76 77 78 INTERFACE bcast_mpi 79 MODULE PROCEDURE bcast_mpi_c, & 80 bcast_mpi_i,bcast_mpi_i1,bcast_mpi_i2,bcast_mpi_i3,bcast_mpi_i4, & 81 bcast_mpi_r,bcast_mpi_r1,bcast_mpi_r2,bcast_mpi_r3,bcast_mpi_r4, & 82 bcast_mpi_l,bcast_mpi_l1,bcast_mpi_l2,bcast_mpi_l3,bcast_mpi_l4 83 END INTERFACE 84 85 76 86 77 87 CONTAINS … … 1735 1745 END SUBROUTINE trace_out 1736 1746 1747 1748 1749 1750 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1751 !! Definition des Broadcast --> 4D !! 1752 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1753 1754 !! -- Les chaine de charactère -- !! 1755 1756 SUBROUTINE bcast_mpi_c(var1) 1757 IMPLICIT NONE 1758 CHARACTER(LEN=*),INTENT(INOUT) :: Var1 1759 1760 CALL bcast_mpi_cgen(Var1,len(Var1)) 1761 1762 END SUBROUTINE bcast_mpi_c 1763 1764 !! -- Les entiers -- !! 1765 1766 SUBROUTINE bcast_mpi_i(var) 1767 USE mpipara 1768 IMPLICIT NONE 1769 INTEGER,INTENT(INOUT) :: Var 1770 1771 INTEGER :: var_tmp(1) 1772 1773 IF (is_mpi_master) var_tmp(1)=var 1774 CALL bcast_mpi_igen(Var_tmp,1) 1775 var=var_tmp(1) 1776 1777 END SUBROUTINE bcast_mpi_i 1778 1779 SUBROUTINE bcast_mpi_i1(var) 1780 IMPLICIT NONE 1781 INTEGER,INTENT(INOUT) :: Var(:) 1782 1783 CALL bcast_mpi_igen(Var,size(Var)) 1784 1785 END SUBROUTINE bcast_mpi_i1 1786 1787 SUBROUTINE bcast_mpi_i2(var) 1788 IMPLICIT NONE 1789 INTEGER,INTENT(INOUT) :: Var(:,:) 1790 1791 CALL bcast_mpi_igen(Var,size(Var)) 1792 1793 END SUBROUTINE bcast_mpi_i2 1794 1795 SUBROUTINE bcast_mpi_i3(var) 1796 IMPLICIT NONE 1797 INTEGER,INTENT(INOUT) :: Var(:,:,:) 1798 1799 CALL bcast_mpi_igen(Var,size(Var)) 1800 1801 END SUBROUTINE bcast_mpi_i3 1802 1803 SUBROUTINE bcast_mpi_i4(var) 1804 IMPLICIT NONE 1805 INTEGER,INTENT(INOUT) :: Var(:,:,:,:) 1806 1807 CALL bcast_mpi_igen(Var,size(Var)) 1808 1809 END SUBROUTINE bcast_mpi_i4 1810 1811 1812 !! -- Les reels -- !! 1813 1814 SUBROUTINE bcast_mpi_r(var) 1815 USE mpipara 1816 IMPLICIT NONE 1817 REAL,INTENT(INOUT) :: Var 1818 REAL :: var_tmp(1) 1819 1820 IF (is_mpi_master) var_tmp(1)=var 1821 CALL bcast_mpi_rgen(Var_tmp,1) 1822 var=var_tmp(1) 1823 1824 END SUBROUTINE bcast_mpi_r 1825 1826 SUBROUTINE bcast_mpi_r1(var) 1827 IMPLICIT NONE 1828 REAL,INTENT(INOUT) :: Var(:) 1829 1830 CALL bcast_mpi_rgen(Var,size(Var)) 1831 1832 END SUBROUTINE bcast_mpi_r1 1833 1834 SUBROUTINE bcast_mpi_r2(var) 1835 IMPLICIT NONE 1836 REAL,INTENT(INOUT) :: Var(:,:) 1837 1838 CALL bcast_mpi_rgen(Var,size(Var)) 1839 1840 END SUBROUTINE bcast_mpi_r2 1841 1842 SUBROUTINE bcast_mpi_r3(var) 1843 IMPLICIT NONE 1844 REAL,INTENT(INOUT) :: Var(:,:,:) 1845 1846 CALL bcast_mpi_rgen(Var,size(Var)) 1847 1848 END SUBROUTINE bcast_mpi_r3 1849 1850 SUBROUTINE bcast_mpi_r4(var) 1851 IMPLICIT NONE 1852 REAL,INTENT(INOUT) :: Var(:,:,:,:) 1853 1854 CALL bcast_mpi_rgen(Var,size(Var)) 1855 1856 END SUBROUTINE bcast_mpi_r4 1857 1858 !! -- Les booleans -- !! 1859 1860 SUBROUTINE bcast_mpi_l(var) 1861 USE mpipara 1862 IMPLICIT NONE 1863 LOGICAL,INTENT(INOUT) :: Var 1864 LOGICAL :: var_tmp(1) 1865 1866 IF (is_mpi_master) var_tmp(1)=var 1867 CALL bcast_mpi_lgen(Var_tmp,1) 1868 var=var_tmp(1) 1869 1870 END SUBROUTINE bcast_mpi_l 1871 1872 SUBROUTINE bcast_mpi_l1(var) 1873 IMPLICIT NONE 1874 LOGICAL,INTENT(INOUT) :: Var(:) 1875 1876 CALL bcast_mpi_lgen(Var,size(Var)) 1877 1878 END SUBROUTINE bcast_mpi_l1 1879 1880 SUBROUTINE bcast_mpi_l2(var) 1881 IMPLICIT NONE 1882 LOGICAL,INTENT(INOUT) :: Var(:,:) 1883 1884 CALL bcast_mpi_lgen(Var,size(Var)) 1885 1886 END SUBROUTINE bcast_mpi_l2 1887 1888 SUBROUTINE bcast_mpi_l3(var) 1889 IMPLICIT NONE 1890 LOGICAL,INTENT(INOUT) :: Var(:,:,:) 1891 1892 CALL bcast_mpi_lgen(Var,size(Var)) 1893 1894 END SUBROUTINE bcast_mpi_l3 1895 1896 SUBROUTINE bcast_mpi_l4(var) 1897 IMPLICIT NONE 1898 LOGICAL,INTENT(INOUT) :: Var(:,:,:,:) 1899 1900 CALL bcast_mpi_lgen(Var,size(Var)) 1901 1902 END SUBROUTINE bcast_mpi_l4 1903 1904 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1905 !! DEFINITION DES FONCTIONS DE TRANSFERT GENERIQUES ! 1906 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1907 1908 SUBROUTINE bcast_mpi_cgen(var,nb) 1909 USE mpi_mod 1910 USE mpipara 1911 IMPLICIT NONE 1912 1913 CHARACTER(LEN=*),INTENT(INOUT) :: Var 1914 INTEGER,INTENT(IN) :: nb 1915 1916 IF (.NOT. using_mpi) RETURN 1917 1918 CALL MPI_BCAST(Var,nb,MPI_CHARACTER,mpi_master,comm_icosa,ierr) 1919 1920 END SUBROUTINE bcast_mpi_cgen 1921 1922 1923 1924 SUBROUTINE bcast_mpi_igen(var,nb) 1925 USE mpi_mod 1926 USE mpipara 1927 IMPLICIT NONE 1928 1929 INTEGER,DIMENSION(nb),INTENT(INOUT) :: Var 1930 INTEGER,INTENT(IN) :: nb 1931 1932 IF (.NOT. using_mpi) RETURN 1933 1934 CALL MPI_BCAST(Var,nb,MPI_INTEGER,mpi_master,comm_icosa,ierr) 1935 1936 END SUBROUTINE bcast_mpi_igen 1937 1938 1939 1940 1941 SUBROUTINE bcast_mpi_rgen(var,nb) 1942 USE mpi_mod 1943 USE mpipara 1944 IMPLICIT NONE 1945 1946 REAL,DIMENSION(nb),INTENT(INOUT) :: Var 1947 INTEGER,INTENT(IN) :: nb 1948 1949 IF (.NOT. using_mpi) RETURN 1950 1951 CALL MPI_BCAST(Var,nb,MPI_REAL,mpi_master,comm_icosa,ierr) 1952 1953 END SUBROUTINE bcast_mpi_rgen 1954 1955 1956 1957 1958 SUBROUTINE bcast_mpi_lgen(var,nb) 1959 USE mpi_mod 1960 USE mpipara 1961 IMPLICIT NONE 1962 1963 LOGICAL,DIMENSION(nb),INTENT(INOUT) :: Var 1964 INTEGER,INTENT(IN) :: nb 1965 1966 IF (.NOT. using_mpi) RETURN 1967 1968 CALL MPI_BCAST(Var,nb,MPI_LOGICAL,mpi_master,comm_icosa,ierr) 1969 1970 END SUBROUTINE bcast_mpi_lgen 1971 1972 1737 1973 END MODULE transfert_mpi_mod 1738 1974
Note: See TracChangeset
for help on using the changeset viewer.