Inconsistent x2y redistribute when nx=1

Issue #250 new
David Dickinson created an issue

For a simple nonlinear test case run on 32 cores with the default layout (lxyes) the following box setup seems to lead to an incorrect redistribute object. In particular, the nn_to and nn_from values for the local communication (i.e. ip == iproc) do not match on proc0, proc1 and proc31. This then leads to out of bounds access. This probably points to an error in setup_y_redist_local of gs2_transforms. It’s not impossible that this is also a problem for other configurations.

&kt_grids_box_parameters
  jtwist                                   =  1
  nx                                       =  1                                                                                                                                             
  ny                                       =  4
  y0                                       =  -0.25
/

Comments (1)

  1. David Dickinson reporter

    This appears to be due to gs2_layouts where we set yxf_lo%nx = nnx with nnx set by

        if (nx > ntheta0) then
           nnx = nx
        else
           nnx = (3*ntheta0+1)/2
        end if
    

    Clearly for nx=1 we end up in the second branch resulting in nnx = 2

    If we simply force yxf_lo%nx = nx then the redistribute is only in disagreement on proc31 and this disagreement goes away if we do the same for xxf_lo%nx.

    Obviously nonlinear runs with nx=1 are not of large practical interest, but they might be useful for testing etc. so it would be nice if we could handle this case.

    I suspect we should always just respect the nx and ny passed to the setup of these layouts rather than trying to override them. This then puts the responsibility on the calling code to have setup the grids consistently.

  2. Log in to comment