Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个非常简单的代码片段:
$acc data copy(a(:),b(:)) $acc kernels $acc loop vector do i=1,1000 x = a(i) b(i) = sqrt(x) enddo $acc end kernels $acc end data
当然,我可以x轻松地省略,但这是一个示例,x也是我的问题的重点,即:这里的每个线程是否自动获得自己的副本x,或者我应该将其声明为私有以防止各种线程崩溃它?
x
在 OpenACC 中,标量默认情况下是 firstprivate,因此通常不需要将它们放在“private”子句中。您真正需要使用“private”子句的唯一情况是用于数组或当标量“转义”计算区域时,例如通过引用传递给设备例程或在计算区域之外使用它的值。