What's the meaning of the follow error ,how to deal with it?

error F0000 : Internal compiler error. readin_func:can’t scan 1st line
I use PVF,windows 13.10

Hi bigwbxu,

The compiler can’t read a temp file for some reason. Does this occur for all compiles or only when compiling a particular file? Have compiles worked in the past?

I’m wondering if your TMP directory (typically C://temp) has filled up or you don’t have read/write permissions. Can you check?

  • Mat

Hi Mat,
I have checked my TMP directory,it’s ok.

And ,my compiler worked properly in this file except when I used openacc to accelerate the code.


-bigwbxu

Ok, we’ll need to try and recreate the error here to understand the problem.

Can you please a reproducing example to PGI Customer Service (trs@pgroup.com)?

Thanks,
MAt

hi MAT,
The following is part of my code

subroutine mapped_into_list_yz()
   implicit none
   integer :: nb_dem, eid
   integer :: ny, nz, nx

   nb_dem = get_total_number_dem()

   head_yz = 0

  !$acc kernels
  !$acc do independent,private(eid)
   do eid = 1, nb_dem
     call in_bin( eid, nx=nx,ny = ny, nz = nz)         ! into which cell the element is mapped
     call push_down( eid, ny, nz)                      ! push down EID to the list (ny, nz)
   end do
  !$acc end kernels 
   return
  end subroutine mapped_into_list_yz

And the error point to [ call in_bin( eid, ny = nyi ) ] in the following code

subroutine update_layer( nz )
   implicit none
   integer, intent(in) :: nz
   integer :: next_eid, eid, ny, nyi
   real(kind = RK) :: boundz, radius, posi(3)

   if(nz == boundary % nz) return
   boundz = nz * boundary % DcellZ + boundary % zmin

   do ny=1, boundary % ny

     eid = head_yz( ny, nz )
     if( eid == 0 ) cycle ! switch to next row if meet an empty row.

     radius = get_dem_radius(eid)
     call obtain_DEM_kinematic(eid, Pos = posi )
     next_eid = list_yz(eid)

     if( posi(3) + radius >= boundz ) then
       call in_bin( eid, ny = nyi ) ! determine the index in y-direction.
       call push_down( eid, nyi, nz + 1 )
       mask(eid) = 100              ! refresh the mask
     end if
     eid = next_eid

     do
       if( eid == 0 ) exit ! encounter the end of row.
       radius = get_dem_radius(eid)
       call obtain_DEM_kinematic(eid, Pos = posi )
       next_eid = list_yz(eid)

       if( posi(3) + radius >= boundz ) then
         call in_bin( eid, ny = nyi )
         call push_down( eid, nyi, nz + 1 )
         mask(eid) = 100
       end if
       eid = next_eid
     end do

   end do

   return
  end subroutine update_layer

Hi bigwbxu,

Can you please post or send to PGI Customer Service (trs@pgroup.com) a reproducing example?

I’m unable to reproduce the problem with the first code fragment and the second doesn’t compile since “RK” and “boundary” aren’t defined.

Thanks,
Mat

Hi Mat,
I am sorry I cannot send you the reproducing example.But I find the same problem in the Programming and Compiling forum.

http://www.pgroup.com/userforum/viewtopic.php?t=1072&postdays=0&postorder=asc&start=0

This is the link .

Thanks
bigwbxu

Hi bigwbxu,

Yes, I saw this error in our issue tracker. However, that error was caused during the inline extraction stage and was fixed many years ago. I also checked that the reproducing example for this error is still run in our regression tests and is working as expected. Your issue could be a variation on the same problem or entirely new issue, but without a reproducing example it’s impossible to tell.

  • Mat