|
| View previous topic :: View next topic |
| Author |
Message |
Tuan
Joined: 11 Jun 2009 Posts: 226
|
Posted: Wed Jan 27, 2010 12:40 am Post subject: internal compiler error with CUDA Fortran |
|
|
I define this kernel subroutine inside a module
| Code: |
attributes(global) SUBROUTINE txt(N, N_R, irow_R, isfu, ryrgate, ca_ds, ca_jsr, compKm, indexKm, compKp, indexKp, Pdtmin, compPdt, indexPdt)
IMPLICIT NONE
INTEGER, VALUE :: N, maxnklm, maxnklp, N_R, irow_R
INTEGER, DIMENSION(N) :: isfu
REAL(KIND=REAL8), DIMENSION(N) :: ryrgate
REAL(KIND=real8), DIMENSION(N) :: ca_ds, ca_jsr
REAL(KIND=real8) ::compKm, compKp
INTEGER :: indexKm, indexKp
DIMENSION compKm(irow_R,N), indexKm(irow_R,N)
DIMENSION compKp(irow_R,N), indexKp(irow_R,N)
REAL(KIND=real8) :: Pdtmin
REAL(KIND=real8), DIMENSION(N, N) :: compPdt
INTEGER, DIMENSION(N, N) :: indexPdt
REAL(KIND=real8), DIMENSION(N):: bigC, chiC, chiO
REAL(KIND=real8) :: aK0, aK1
INTEGER :: i, j
END SUBROUTINE txt
|
When I compile (include linking to the main subprogram also), I get the internal compiler error.
| Code: |
abcfunc:
67, Memory set idiom, loop replaced by call to __c_mset8
169, Invariant communication calls hoisted out of loop
170, Invariant communication calls hoisted out of loop
PGF90-F-0000-Internal compiler error. unsupported operation 311 (abf_utility.f95: 222)
PGF90/x86-64 Linux 10.1-0: compilation aborted
make: *** [abc_utility.mod] Error 2
|
with 222 is the line number of
| Quote: | END SUBROUTINE txt
|
|
|
| Back to top |
|
 |
mkcolg
Joined: 30 Jun 2004 Posts: 4996 Location: The Portland Group Inc.
|
Posted: Fri Jan 29, 2010 1:20 pm Post subject: |
|
|
Hi Tuan,
Can you please send a full example that reproduces the error to PGI Customer Service (trs@pgroup.com)? Unfortunately, I'm not able to reproduce the error with this snip-it.
Thanks,
Mat |
|
| Back to top |
|
 |
Tuan
Joined: 11 Jun 2009 Posts: 226
|
Posted: Mon Feb 01, 2010 12:24 pm Post subject: |
|
|
| mkcolg wrote: | Hi Tuan,
Can you please send a full example that reproduces the error to PGI Customer Service (trs@pgroup.com)? Unfortunately, I'm not able to reproduce the error with this snip-it.
Thanks,
Mat |
Done.
Tuan |
|
| Back to top |
|
 |
mkcolg
Joined: 30 Jun 2004 Posts: 4996 Location: The Portland Group Inc.
|
Posted: Mon Feb 01, 2010 4:56 pm Post subject: |
|
|
Thanks Tuan.
The problem is that all scalar dummy arguments must either have the "VALUE" attribute or be a module device variable. Specifically, you need to add "value" to Pdtmin's declaration.
| Code: | | REAL(KIND=real8), value :: Pdtmin |
I've sent your example off to our engineers (TPR#16560) since we should be giving a syntax error for this, not an ICE.
- Mat |
|
| Back to top |
|
 |
Tuan
Joined: 11 Jun 2009 Posts: 226
|
Posted: Tue Feb 02, 2010 11:27 am Post subject: |
|
|
| mkcolg wrote: | Thanks Tuan.
The problem is that all scalar dummy arguments must either have the "VALUE" attribute or be a module device variable. Specifically, you need to add "value" to Pdtmin's declaration.
| Code: | | REAL(KIND=real8), value :: Pdtmin |
I've sent your example off to our engineers (TPR#16560) since we should be giving a syntax error for this, not an ICE.
- Mat |
I agree with you that using VALUE attribute can resolve the issue. However, we don't need to define Pdtmin as VALUE if, before calling the device subroutine, the corresponding actual argument has already been put in the device memory (i.e. passing by reference is possible). So, I think the compiler should not issue an error, probably a warning is better. Is that correct?
Tuan. |
|
| Back to top |
|
 |
|
|
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 © 2001, 2002 phpBB Group
|