Changeset 1526


Ignore:
Timestamp:
06/08/18 09:12:00 (2 years ago)
Author:
oabramkina
Message:

Updating user's manual: UGRID and server-two.

Location:
XIOS/dev/XIOS_DEV_CMIP6/doc
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • XIOS/dev/XIOS_DEV_CMIP6/doc/XIOS_user_guide.lyx

    r916 r1526  
    18631863 
    18641864\begin_layout Section 
     1865UGRID 
     1866\end_layout 
     1867 
     1868\begin_layout Standard 
     1869In addition to the CF conventions, it is also possible to output data using 
     1870  
     1871\begin_inset CommandInset href 
     1872LatexCommand href 
     1873name "UGRID" 
     1874target "https://ugrid-conventions.github.io/ugrid-conventions/" 
     1875 
     1876\end_inset 
     1877 
     1878 metadata conventions developed for unstructured meshes. 
     1879 It allows users to store the topology of an underlying unstructured mesh. 
     1880 Currently XIOS supports 2D unstructured meshes of any shape (triangular, 
     1881 quadrilateral, etc) and their mixture. 
     1882  
     1883\end_layout 
     1884 
     1885\begin_layout Standard 
     1886A 2D mesh can be described by a set of nodes, edges and/or faces. 
     1887 XIOS allows one to define data on any of these three types of elements. 
     1888 XIOS will generate a full list of connectivity attributes proposed by the 
     1889 UGRID conventions. 
     1890 For example in case of a mesh comprised of faces the following connectivity 
     1891 parameters will be the calculated: 
     1892\end_layout 
     1893 
     1894\begin_layout Standard 
     1895 
     1896\family typewriter 
     1897edge_node_connectivity 
     1898\end_layout 
     1899 
     1900\begin_layout Standard 
     1901 
     1902\family typewriter 
     1903face_node_connectivity  
     1904\end_layout 
     1905 
     1906\begin_layout Standard 
     1907 
     1908\family typewriter 
     1909edge_nodes_connectivity  
     1910\end_layout 
     1911 
     1912\begin_layout Standard 
     1913 
     1914\family typewriter 
     1915face_nodes_connectivity 
     1916\end_layout 
     1917 
     1918\begin_layout Standard 
     1919 
     1920\family typewriter 
     1921face_edges_connectivity 
     1922\end_layout 
     1923 
     1924\begin_layout Standard 
     1925 
     1926\family typewriter 
     1927edge_face_connectivity 
     1928\end_layout 
     1929 
     1930\begin_layout Standard 
     1931 
     1932\family typewriter 
     1933face_face_connectivity 
     1934\end_layout 
     1935 
     1936\begin_layout Standard 
     1937In order to select UGRID output format, one has to set file attribute  
     1938\series bold 
     1939convention 
     1940\series default 
     1941 to  
     1942\series bold 
     1943\shape italic 
     1944"UGRID" 
     1945\series default 
     1946\shape default 
     1947 (its default value is  
     1948\series bold 
     1949\shape italic 
     1950 
     1951\begin_inset Quotes eld 
     1952\end_inset 
     1953 
     1954CF 
     1955\begin_inset Quotes erd 
     1956\end_inset 
     1957 
     1958 
     1959\series default 
     1960\shape default 
     1961). 
     1962 Domain attribute  
     1963\series bold 
     1964nvertex 
     1965\series default 
     1966 is mandatory for UGRID. 
     1967 It servers for identifying one of three types of mesh elements on which 
     1968 data can be defined: nodes (nvertex=1), edges (nvertex=2), and faces (nvertex 
     1969\begin_inset Formula $\geq$ 
     1970\end_inset 
     1971 
     19723). 
     1973 In order to write fields on the same mesh but on its different elements, 
     1974 one has to assign the same domain name to each of the domains. 
     1975 Example given below illustrates this point for three fields defined on 
     1976 the same mesh but on its different elements: nodes, edges, and faces. 
     1977\end_layout 
     1978 
     1979\begin_layout Standard 
     1980\begin_inset listings 
     1981lstparams "language=XML,breaklines=true,tabsize=2,frame=tb,postbreak={\raisebox{0ex}[0ex][0ex]{\ensuremath{\rcurvearrowse\space}}}" 
     1982inline false 
     1983status open 
     1984 
     1985\begin_layout Plain Layout 
     1986 
     1987<file_definition>  
     1988\end_layout 
     1989 
     1990\begin_layout Plain Layout 
     1991 
     1992        <file id="output_UGRID" convention="UGRID">  
     1993\end_layout 
     1994 
     1995\begin_layout Plain Layout 
     1996 
     1997                <field id="varOnNodes" ... 
     1998 domain_ref="node"/>  
     1999\end_layout 
     2000 
     2001\begin_layout Plain Layout 
     2002 
     2003                <field id="varOnEdges" ... 
     2004 domain_ref="edge"/> 
     2005\end_layout 
     2006 
     2007\begin_layout Plain Layout 
     2008 
     2009                <field id="varOnFaces" ... 
     2010 domain_ref="face"/>  
     2011\end_layout 
     2012 
     2013\begin_layout Plain Layout 
     2014 
     2015        </file> 
     2016\end_layout 
     2017 
     2018\begin_layout Plain Layout 
     2019 
     2020</file_definition>  
     2021\end_layout 
     2022 
     2023\begin_layout Plain Layout 
     2024 
     2025\end_layout 
     2026 
     2027\begin_layout Plain Layout 
     2028 
     2029<domain_definition>  
     2030\end_layout 
     2031 
     2032\begin_layout Plain Layout 
     2033 
     2034        <domain id="node" name="mesh2D" nvertex="1"/> 
     2035\end_layout 
     2036 
     2037\begin_layout Plain Layout 
     2038 
     2039        <domain id="edge" name="mesh2D" nvertex="2"/>  
     2040\end_layout 
     2041 
     2042\begin_layout Plain Layout 
     2043 
     2044        <domain id="face" name="mesh2D" nvertex="4"/>  
     2045\end_layout 
     2046 
     2047\begin_layout Plain Layout 
     2048 
     2049</domain_definition>  
     2050\end_layout 
     2051 
     2052\end_inset 
     2053 
     2054 
     2055\end_layout 
     2056 
     2057\begin_layout Section 
    18652058How to use file splitting 
    18662059\end_layout 
     
    45744767 Since it depends directly on HDF5, this feature works only when the NetCDF-4 
    45754768 format is used. 
    4576  Unfortunately, HDF5 does not support compression (yet) for parallel output 
    4577  so you have to use only one server or to engage the  
     4769 Since HDF5 does not (yet) support compression for parallel output, one 
     4770 has to use two server-level functionality (see Sec. 
     4771  
     4772\begin_inset CommandInset ref 
     4773LatexCommand ref 
     4774reference "sec:Launching-secondary-server" 
     4775 
     4776\end_inset 
     4777 
     4778) or to engage the  
    45784779\series bold 
    45794780\emph on 
     
    48005001 
    48015002\begin_layout Chapter 
    4802 XIOS options 
     5003XIOS parameterization 
    48035004\end_layout 
    48045005 
     
    48855086 
    48865087 
     5088\end_layout 
     5089 
     5090\begin_layout Section 
     5091Launching secondary server 
     5092\begin_inset CommandInset label 
     5093LatexCommand label 
     5094name "sec:Launching-secondary-server" 
     5095 
     5096\end_inset 
     5097 
     5098 
     5099\end_layout 
     5100 
     5101\begin_layout Standard 
     5102To improve I/O performance and to be able to use HDF5 compression with the 
     5103  
     5104\series bold 
     5105\emph on 
     5106 
     5107\begin_inset Quotes eld 
     5108\end_inset 
     5109 
     5110multiple_file 
     5111\begin_inset Quotes erd 
     5112\end_inset 
     5113 
     5114 
     5115\series default 
     5116\emph default 
     5117 mode, it is possible to separate servers into two levels: intermediaries 
     5118 (level one) and writers (level two). 
     5119 A single MPI communicator will be created for the intermediaries, while 
     5120 multiple communicators will be created for the writers according to the 
     5121 number of  
     5122\begin_inset Quotes eld 
     5123\end_inset 
     5124 
     5125pools 
     5126\begin_inset Quotes erd 
     5127\end_inset 
     5128 
     5129 which can be set by a user. 
     5130 Level-one servers will receive data from clients and will redistribute 
     5131 it to be sent to pools of level-two servers whilst level-two servers will 
     5132 do the I/O (important: for now level-two servers only do writing data). 
     5133 Secondary servers can be launched by means of three parameters: 
     5134\end_layout 
     5135 
     5136\begin_layout Itemize 
     5137 
     5138\series bold 
     5139using_server2 
     5140\series default 
     5141 (type:  
     5142\series bold 
     5143bool 
     5144\series default 
     5145) activates the secondary server 
     5146\end_layout 
     5147 
     5148\begin_layout Itemize 
     5149 
     5150\series bold 
     5151ratio_server2 
     5152\series default 
     5153 (type:  
     5154\series bold 
     5155int 
     5156\series default 
     5157) defines the percentage of servers that will be dedicated to level two. 
     5158 The parameter can take value from 0 to 100 with the default value of 50%. 
     5159 In case if the requested number of level-two servers is not valid (for 
     5160 example, zero or equal to the total number of servers), XIOS will run in 
     5161 its classical server mode with one server level. 
     5162\end_layout 
     5163 
     5164\begin_layout Itemize 
     5165 
     5166\series bold 
     5167number_pools_server2  
     5168\series default 
     5169(type:  
     5170\series bold 
     5171int 
     5172\series default 
     5173) sets the number of server-two pools (i.e. 
     5174 MPI communicators on level two). 
     5175 By default the number of pools is equal to the number of level-two servers, 
     5176 thus permitting one process per communicator. 
     5177\end_layout 
     5178 
     5179\begin_layout Standard 
     5180Shown in Fig. 
     5181  
     5182\begin_inset CommandInset ref 
     5183LatexCommand ref 
     5184reference "Fig:server2" 
     5185 
     5186\end_inset 
     5187 
     5188 is the two-level server structure for the following definitions: 
     5189\end_layout 
     5190 
     5191\begin_layout Standard 
     5192\begin_inset listings 
     5193lstparams "breaklines=true,frame=tb,language=XML,postbreak={\raisebox{0ex}[0ex][0ex]{\ensuremath{\rcurvearrowse\space}}},tabsize=2" 
     5194inline false 
     5195status open 
     5196 
     5197\begin_layout Plain Layout 
     5198 
     5199<context id="xios">      
     5200\end_layout 
     5201 
     5202\begin_layout Plain Layout 
     5203 
     5204... 
     5205        
     5206\end_layout 
     5207 
     5208\begin_layout Plain Layout 
     5209 
     5210        <variable id="using_server2" type="bool">true</variable> 
     5211\end_layout 
     5212 
     5213\begin_layout Plain Layout 
     5214 
     5215        <variable id="ratio_server2" type="int">75</variable>          
     5216\end_layout 
     5217 
     5218\begin_layout Plain Layout 
     5219 
     5220        <variable id="number_pools_server2" type="int">3</variable>          
     5221\end_layout 
     5222 
     5223\begin_layout Plain Layout 
     5224 
     5225... 
     5226\end_layout 
     5227 
     5228\begin_layout Plain Layout 
     5229 
     5230</context>  
     5231\end_layout 
     5232 
     5233\end_inset 
     5234 
     5235 
     5236\end_layout 
     5237 
     5238\begin_layout Standard 
     5239\begin_inset Float figure 
     5240placement H 
     5241wide false 
     5242sideways false 
     5243status open 
     5244 
     5245\begin_layout Plain Layout 
     5246\begin_inset Graphics 
     5247        filename inputs/images/Server2.pdf 
     5248 
     5249\end_inset 
     5250 
     5251 
     5252\end_layout 
     5253 
     5254\begin_layout Plain Layout 
     5255\begin_inset Caption Standard 
     5256 
     5257\begin_layout Plain Layout 
     5258Two levels of servers for the total number of servers of 8 and ratio_server2=75%. 
     5259 The number of level-two servers is  
     5260\begin_inset Formula $8\times\text{ratio\_server2}=6$ 
     5261\end_inset 
     5262 
     5263 and, thus, the remaining 2 servers are of level one. 
     5264  
     5265\end_layout 
     5266 
     5267\end_inset 
     5268 
     5269 
     5270\begin_inset CommandInset label 
     5271LatexCommand label 
     5272name "Fig:server2" 
     5273 
     5274\end_inset 
     5275 
     5276 
     5277\end_layout 
     5278 
     5279\end_inset 
     5280 
     5281 
     5282\end_layout 
     5283 
     5284\begin_layout Standard 
     5285Note that with one server per pool, the I/O is actually sequential and thus 
     5286 the use of HDF5 compression is possible. 
     5287  
     5288\end_layout 
     5289 
     5290\begin_layout Standard 
     5291By default file distribution among server-two pools is optimized for bandwidth. 
     5292 An alternative way of distributing files is possible in order to minimize 
     5293 memory consumption by level-two servers. 
     5294 For this, two additional parameters should be specified: 
     5295\end_layout 
     5296 
     5297\begin_layout Itemize 
     5298 
     5299\series bold 
     5300server2_dist_file_memory 
     5301\series default 
     5302 (type:  
     5303\series bold 
     5304bool 
     5305\series default 
     5306) activates memory optimization. 
     5307\end_layout 
     5308 
     5309\begin_layout Itemize 
     5310 
     5311\series bold 
     5312server2_dist_file_memory_ratio 
     5313\series default 
     5314 (type:  
     5315\series bold 
     5316double 
     5317\series default 
     5318) (optional) takes value from 0 (memory optimization) to 1 (bandwidth optimizati 
     5319on). 
     5320 The default value is 0.5. 
    48875321\end_layout 
    48885322 
     
    49815415int 
    49825416\series default 
    4983 ) defines the mimimum buffer size in bytes (8192 by default). 
     5417) defines the minimum buffer size in bytes (8192 by default). 
    49845418 This value will be used by XIOS only for buffers whose detected size is 
    4985  smaller than the user defined mimimum size. 
     5419 smaller than the user defined minimum size. 
    49865420\end_layout 
    49875421 
Note: See TracChangeset for help on using the changeset viewer.