CUDA_EXCEPTION_6 when calling subroutine

Hi everyone, this looks like a compiler bug. I am running some LAPACK routines in device mode, using nvfortran. I noticed the following bug: when a routine is called with complex constants in the argument list, I obtain a waro misalignment:

Thread 1 “teste” received signal CUDA_EXCEPTION_6, Warp Misaligned Address.

More precisely, the calling routine, attributes(device), defines two constants:

  COMPLEX            ONE, ZERO
  PARAMETER          ( ONE = ( 1.0E+0, 0.0E+0 ),
 $                   ZERO = ( 0.0E+0, 0.0E+0 ) )

and eventually calls a soubroutine
CALL CGEMV( ‘Conjugate transpose’, LASTV, LASTC, ONE,
$ C, LDC, V, INCV, ZERO, WORK, 1 )

I get an error message at that line. But if in the beginning of the calling routine I comment the PARAMETER attribute out,

  COMPLEX            ONE, ZERO
  •  PARAMETER          ( ONE = ( 1.0E+0, 0.0E+0 ),
    
  • $                   ZERO = ( 0.0E+0, 0.0E+0 ) )
    
  • ..
    ONE = ( 1.0E+0, 0.0E+0 )
    ZERO = ( 0.0E+0, 0.0E+0 ) 
    

…everything works fine.
Best regards,
Gregorio

Hi Gregorio,

Thanks for the report, though do you have a minimal reproducing example you could share?

If so, then I can investigate and then create a report if there is indeed a compiler issue.

-Mat