Cannot read namelist when using MPI (Intel OneAPI + Windows 10)

Dear all,

I just wanted rank 0 cpu core read from the input namelist, and output the content of this namelist on the screen. However it seems Intel OneAPI on windows just cannot make it work.

The minimal working example is extremely simple as below,

program test
use mympi
implicit none
integer :: irn
real :: hbar
namelist /mylist/ irn, hbar
call init0                 ! mpi initialization
if (myrank() .eq. 0) then          ! only rank 0 cpu core do the read and write.
  read(5, nml=mylist)
  write(6, nml=mylist)
  write(6,*) 'irn = ', irn 
  write(6,*) 'hbar = ', hbar 
endif   
call done
end program 

I place the test.exe file and the test.nml file in one folder.
If I run the program like below,

mpiexec -n 6 test.exe < test.nml

the program just hangs.

Now, if I just do,

test.exe < test.nml

then it works and the correct output is,

 &MYLIST
 IRN     =    88888888,
 HBAR    =   20.73500
 /
 irn =     88888888
 hbar =    20.73500

Does anyone know why?
Thanks much in advance!


PS.

The namelist file test.nml is,

&mylist
irn = 88888888 ! random number seed 
hbar = 20.735  ! h bar
/

The mpi module is,

  module mympi
  use mpi
  implicit none
  integer, private, parameter :: i4=selected_int_kind(9)
  integer, private, parameter :: i8=selected_int_kind(15)
  integer, private, parameter :: r8=selected_real_kind(15,9)
  integer, private, save :: mpii4,mpii8,mpir8
  integer(kind=i4), private, save :: irank,iproc
contains
   subroutine init0 ! call this before anything else
   integer :: ierror,isize,ir,ip
   integer(kind=i4) :: itest4
   integer(kind=i8) :: itest8
   real(kind=r8) :: rtest8
   call mpi_init(ierror)
   call mpi_comm_rank(mpi_comm_world,ir,ierror)
   irank=ir
   call mpi_comm_size(mpi_comm_world,ip,ierror)
   iproc=ip
   call mpi_sizeof(itest4,isize,ierror)
   call mpi_type_match_size(mpi_typeclass_integer,isize,mpii4,ierror)
   call mpi_sizeof(itest8,isize,ierror)
   call mpi_type_match_size(mpi_typeclass_integer,isize,mpii8,ierror)
   call mpi_sizeof(rtest8,isize,ierror)
   call mpi_type_match_size(mpi_typeclass_real,isize,mpir8,ierror)
   return
   end subroutine init0
   subroutine done ! wrapper for finalize routine
   integer :: ierror
   call mpi_finalize(ierror)
   return
   end subroutine done

   function myrank() ! which process am I?
   integer(kind=i4) :: myrank
   myrank=irank
   return
   end function myrank

end module mympi

For convenience, I uploaded the all the VS solution file and all the f90 files in the gitlab,

Another relavant link is below, similar problem. With MPI the read just does not work correct.