real.exe run problem when setting values for decomposition

Any issues with the actual running of the WRF.

real.exe run problem when setting values for decomposition

Postby jimch » Sat May 26, 2018 4:26 pm

Dear WRF Users,
I'd like to tell you about a problem I face when I try to run real.exe.
I run WRF-3.9.1.1 version on Centos 6.9 OS, using mpich-3.2.1 which I have compiled on it.
The compilation of mpich has done with gcc compilers setting 64bit flags, the same compilers and flags I have already used for compilation of WRF, WPS, NETCDF as well.
There is a problem I get when I try to set nproc_x and nproc_y values in order to set a specific decomposition.
Setting values (different than -1) on namelist.input file in the &domains section, I get the following message after running real.exe
taskid: 0 hostname: 142.190.50.105
module_io_quilt_old.F 2931 T
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE: <stdin> LINE: 5522
check comm_start, nest_pes_x, nest_pes_y settings in namelist for comm
1
-------------------------------------------
application called MPI_Abort(MPI_COMM_WORLD, 1) - process 0
[unset]: write_line error; fd=-1 buf=:cmd=abort exitcode=1
:
system msg for write_line failure : Bad file descriptor


Do you have any idea about this problem?
Any help would be welcome.
Thank you very much in advance.

PS. I have also tried an older version of mpich (mpich2-1.5) without success
jimch
 
Posts: 1
Joined: Tue Jan 15, 2013 4:17 am

Re: real.exe run problem when setting values for decompositi

Postby sudheer717 » Mon Jun 11, 2018 11:09 am

Hi,

Without looking at your namelist values it is hard to narrow down the problem. But, this is where your namelist settings are not allowing it to decompose. Check the values you have given. You are getting the error at the first IF statement in the below code.

Code: Select all
! construct list of local communicators my task is in
        comms_i_am_in = MPI_UNDEFINED
        DO i = 1, max_dom
          inthisone = .FALSE.
          icolor = 0
          DO j = comm_start(i), comm_start(i)+nest_pes_x(i)*nest_pes_y(i)-1
            IF ( j+1 .GT. ntasks_local ) THEN
              WRITE(wrf_err_message,*)"check comm_start, nest_pes_x, nest_pes_y settings in namelist for comm ",i
              CALL wrf_error_fatal(wrf_err_message)
            END IF
            icolor(j+1) = 1
          END DO
          IF ( icolor(mytask_local+1) .EQ. 1 ) inthisone = .TRUE.
          CALL MPI_Comm_dup(mpi_comm_here,comdup,ierr)
          CALL MPI_Comm_split(comdup,icolor(mytask_local+1),mytask_local,mpi_comm_local,ierr)
          IF ( inthisone ) THEN
            dims(1) = nest_pes_y(i) ! rows
            dims(2) = nest_pes_x(i)  ! columns
            isperiodic(1) = .false.
            isperiodic(2) = .false.
            CALL mpi_cart_create( mpi_comm_local, 2, dims, isperiodic, .false., comms_i_am_in(i), ierr )
          END IF
        END DO


If you want to know more, try having some print statements inside the loop that gives you more information and recompile WRF to try again.

HTH

-Sudheer
--
Sudheer
Ph.D. Candidate
Univ of Texas
San Antonio, USA
sudheer717
 
Posts: 8
Joined: Mon Jan 18, 2016 8:46 pm


Return to Runtime Problems

Who is online

Users browsing this forum: No registered users and 9 guests