2017-05-04 44 views
1

如果我在子例程中创建一个变量以在设备上运行,默认情况下它是本地范围吗?因此只能由每个单独的线程访问?Cuda Fortran设备变量初始化范围

例如,在下列情况下y是否是本地范围?

module exampleMod 
contains 
    attributes(global) subroutine exampleSub(x) 
    implicit none 
    real :: x 
    real :: y 
    end subroutine exampleSub 
end module exampleMod 

我需要另外指定它为“设备”吗?

回答

1

如果缺少有效属性(例如shared),则在global子例程中声明的任何变量都将具有线程本地范围。

+0

您知道有哪些常见原因或错误导致cuda fortran中的变量突然切换为设备上的值为零? –

+0

不会。如果您发现了错误,请进行演示并向PGI报告 – talonmies