PGI User Forum
 SearchSearch   MemberlistMemberlist     RegisterRegister   ProfileProfile    Log inLog in 

Free OpenACC Webinar

CUDA Fortran Internal Compiler Error
Goto page 1, 2  Next
 
Post new topic   Reply to topic    PGI User Forum Forum Index -> Accelerator Programming
View previous topic :: View next topic  
Author Message
Robert Link



Joined: 14 Jun 2010
Posts: 9
Location: Goddard Space Flight Center

PostPosted: Mon Jun 14, 2010 1:55 pm    Post subject: CUDA Fortran Internal Compiler Error Reply with quote

When compiling my current project I get the message "Internal compiler error. unsupported operation 285". Unfortunately, the line number given doesn't correspond to any program statement (it's just past the end of the subroutine), and I haven't been able to find any mention in the compiler manual of what "unsupported operation 285" actually is. Is there a index somewhere of these error codes, so that I can figure out what the offending operation is in my program and fix it?
Back to top
View user's profile
mkcolg



Joined: 30 Jun 2004
Posts: 6208
Location: The Portland Group Inc.

PostPosted: Mon Jun 14, 2010 4:02 pm    Post subject: Reply with quote

Hi Robert,

Internal compiler errors (aka ICE) are problems with the compiler. Granted most of the ICEs that I've seen recently are due to some type of coding error, but the compiler should be giving you a syntax or semantic error, not an ICE.

Please send a report to PGI Customer Service (trs@pgroup.com) and include a reproducing example.

Thanks!
Mat
Back to top
View user's profile
Robert Link



Joined: 14 Jun 2010
Posts: 9
Location: Goddard Space Flight Center

PostPosted: Tue Jun 15, 2010 7:28 am    Post subject: Reply with quote

Mat,

The full code is rather lengthy, and there are a lot of module dependences, so I can't just extract the offending subroutine. Is there any information available about what differentiates "unsupported operation 285" from, say, "unsupported operation 311" (the latter being most common variant that turned up in my search for the term)? That might help me narrow down the source of the problem more quickly, so that I can produce a self-contained example of the bug.

-robert.
Back to top
View user's profile
mkcolg



Joined: 30 Jun 2004
Posts: 6208
Location: The Portland Group Inc.

PostPosted: Tue Jun 15, 2010 8:12 am    Post subject: Reply with quote

Hi Robert,

While I'll need to ask a compiler engineer what "285" is, I do see a bug report for "311". In this case, the user was using automatic arrays within a device kernel. Since allocation from device code is not allowed and automatic arrays are implicitly allocated, automatics are not allowed as well. In 10.4, we added a syntax error for this case.

Which version of the compiler are you using? If it's 10.4 or 10.5, then your "311" is something different. If you're using an earlier version, please try 10.5.

Thanks,
Mat
Back to top
View user's profile
Robert Link



Joined: 14 Jun 2010
Posts: 9
Location: Goddard Space Flight Center

PostPosted: Tue Jun 15, 2010 9:29 am    Post subject: Reply with quote

Mat,

Sorry for the confusion. I am not getting a 311; that was just what I found discussed in the archive. I'm only getting the 285.

Here is a reduced version of the code that reproduces the failure:

Code:

module fail
  use cudafor

  implicit none

  integer, parameter :: ICS=1
  integer, parameter :: NMTRATE=402
  integer, parameter :: NCELL=10240
  INTEGER, PARAMETER :: SP = SELECTED_REAL_KIND(6,37)
  INTEGER, PARAMETER :: RKIND = SP

  integer, constant :: irma(NMTRATE,ICS), irmb(NMTRATE, ICS), &
       &               irmc(NMTRATE, ICS)
  real(KIND=rkind), device :: rrate(NCELL,NMTRATE)
  real(KIND=rkind), device :: trate(NCELL,2*NMTRATE)
 
contains
 
  attributes(device) subroutine subfun(indx, ncs, nfdh3, nallr, sfconc, nc1, mxg1)
    integer, value :: indx
    integer, shared :: ncs,nfdh3, nallr
    integer, value :: nc1,mxg1
    real(KIND=rkind), device :: sfconc(nc1,mxg1)   ! concentration values
   
    integer :: ja,jb,jc, jspc
    integer :: nkn, nh,nc
    real(KIND=rkind) :: fracn, tr


    !! First derivatives for rates with three active loss terms
    do nkn = 1,nfdh3(ncs)      ! loop over reactions
       !! indices of reactants
       ja = irma(nkn,ncs)
       jb = irmb(nkn,ncs)
       jc = irmc(nkn,ncs)

       nh = nkn + nallr
       tr = rrate(indx,nkn) * sfconc(indx,ja) * sfconc(indx,jb) * sfconc(indx,jc)
       trate(indx,nkn) = tr
       trate(indx,nh) = -tr
    end do

  end subroutine subfun

end module fail


The output is as follows:


Quote:

~/wrk/test% pgf90 -g -O -c fail.cuf
PGF90-F-0000-Internal compiler error. unsupported operation 285 (fail.cuf: 43)
PGF90/x86-64 Linux 10.3-0: compilation aborted


I've sent a copy to the customer service address you provided.

-robert.
Back to top
View user's profile
Display posts from previous:   
Post new topic   Reply to topic    PGI User Forum Forum Index -> Accelerator Programming All times are GMT - 7 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group