Opened 17 months ago

Last modified 17 months ago

#182 new defect

XIOS3: xios_server.exe tries to call MPI routine before MPI initialisation

Reported by: acc Owned by: jderouillat
Priority: major Component: XIOS
Version: trunk Keywords:
Cc:

Description

Just trying a few tests with XIOS3. Struggled to get a simple test_client.exe set-up going in detached mode.
Seems that the CTimer call at line 63 of server.cpp is calling a MPI routine (MPI_Wtime?) before MPI_Init has been called. Commenting out the Ctimer call gets things going.

Change History (5)

comment:1 in reply to: ↑ description Changed 17 months ago by ymipsl

Replying to acc:

Just trying a few tests with XIOS3. Struggled to get a simple test_client.exe set-up going in detached mode.
Seems that the CTimer call at line 63 of server.cpp is calling a MPI routine (MPI_Wtime?) before MPI_Init has been called. Commenting out the Ctimer call gets things going.

Thanks for this, we have probably a more permissive MPI library in which one we can use MPI_WTIME without MPI_Init. We will correct this quickly.
Note that test_client.exe is obsolete and we encourage userto use the "generic_testcase" instead.
Yann

comment:2 Changed 17 months ago by ymipsl

  • Owner changed from ymipsl to jderouillat

comment:3 Changed 17 months ago by acc

Note that test_client.exe is obsolete and we encourage userto use the "generic_testcase" instead.

Fair enough but, from outside, it is always useful to start with something simple and familiar. Are there instructions for the generic test case anywhere?

This page is still "encouraging" the use of test_client

Last edited 17 months ago by acc (previous) (diff)

comment:4 Changed 17 months ago by jderouillat

We manifestly have to update this page ! Waiting for this update :

The idea of the generic_testcase is to be more versatile at runtime.
Many parameters are set in the iodef.xml : global quantities such as ni, nj, nlev, the way to distribute data on MPI process clients (the domain which can be "lmdz", "nemo"), the mask management on domains/axis.
The code is available in src/test/generic_testcase.f90, the input files in generic_testcase.

$ ls generic_testcase/
context_atm.xml  context_grid_dynamico.xml  context_oce.xml  dynamico_grid.nc  iodef.xml  param.def
$ ls bin/generic_testcase.exe 
bin/generic_testcase.exe

Some others parameters such as the number of clients used must be set in param.def (nb_proc_atm). To launch with servers, you need to specify more process than specified for clients in param.def, the difference will be used as servers.

In the configuration below, 1 client and 1 server will be executed :

$ cat param.def 
&params_run
duration='4ts'
nb_proc_atm=1
nb_proc_oce=0
/
$ mpirun -np 2 ../bin/generic_testcase.exe 

Fields and files to write are specified in context_atm.xml, by default a single file is written with fields which exists on a domain x an axis, a domain, many axis, axis x axis (x axis, for field_XYZ):

    <file id="atm_output" output_freq="1ts" type="one_file" enabled="true">
      <field field_ref="field3D"    enabled="true"/>
      <field field_ref="field2D"    enabled="true"/>
      <field field_ref="field_X"    enabled="true"/>
      <field field_ref="field_Y"    enabled="true"/>
      <field field_ref="field_XY"  enabled="true"/>
      <field field_ref="field_Z"    enabled="true"/>
      <field field_ref="field_XYZ"  enabled="true"/>
      <field field_ref="field_XZ"   enabled="true"/>
      <field field_ref="field_YZ"   enabled="true"/>
    </file>

You can find other examples of context_atm.xml, especially with transformations, in xios_test_suite/TEST_SUITE/test_*/context_atm.xml (used for non regression test).

comment:5 Changed 17 months ago by jderouillat

The first call to MPI_Wtime has been moved after the MPI_Init on servers.

Last edited 17 months ago by jderouillat (previous) (diff)
Note: See TracTickets for help on using tickets.