《OpenACC并行程序设计:性能优化实践指南》一 1.4 并行执行和竞争条件

  1. 云栖社区>
  2. 华章计算机>
  3. 博客>
  4. 正文

《OpenACC并行程序设计:性能优化实践指南》一 1.4 并行执行和竞争条件

华章计算机 2017-09-08 16:11:00 浏览813
展开阅读全文

1.4 并行执行和竞争条件

OpenACC并行化for循环(Fortran中是do循环),因此循环内的代码使用并发硬件执行线程并行执行。
循环内的变量i似乎是顺序递增的,但实际上在这个for循环中使用多个i变量的线程可能同时并行执行,这可能有点令人困惑。OpenACC不保证线程执行的顺序,注意这点非常重要。实际上,甚至不可能假设单调性。例如,很有可能第nCount―1次迭代实际上先于第0次迭代执行完。
OpenACC不保证线程执行的顺序,注意这点非常重要。
总之,OpenACC编程人员不能也不应该对线程执行的顺序做任何假设,如图1-15所示。

screenshot

竞争条件
并行循环中线程之间的数据依赖性可能会给OpenACC编程人员带来问题,尤其是OpenACC除了原子操作外不提供任何锁机制来防止竞争条件。当多个线程相竞对一个共享数据项执行某个操作,这会导致竞争

网友评论

登录后评论
0/500
评论
华章计算机
+ 关注
所属云栖号: 华章计算机