2017-05-04 45 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