【发布时间】:2013-02-13 17:20:53
【问题描述】:
在 OpenMP 中,我可以刷新一组指定的变量或整个缓存。
有人知道这个操作的性能吗?仅刷新真正发生变化的变量是否有意义,或者“全部刷新”如此之快,我不应该担心?
我有需要不时在我的线程中刷新的链接列表。我应该遍历列表并单独刷新每个元素,还是简单地刷新所有内容?
【问题讨论】:
在 OpenMP 中,我可以刷新一组指定的变量或整个缓存。
有人知道这个操作的性能吗?仅刷新真正发生变化的变量是否有意义,或者“全部刷新”如此之快,我不应该担心?
我有需要不时在我的线程中刷新的链接列表。我应该遍历列表并单独刷新每个元素,还是简单地刷新所有内容?
【问题讨论】:
鉴于 OpenMP 3.1 标准中的建议:
将 flush 结构与列表一起使用非常容易出错,并且 强烈建议用户不要尝试。
和下面的句子:
实现可以通过忽略列表来实现 flush 列表,并将其视为没有列表的 flush。
我将首先使用pragma omp flush 实现一个解决方案(没有任何列表)。
然后,在尝试优化此实现之前,我真的会仔细考虑,将列表添加到刷新结构中,因为代码不会具有性能可移植性。
【讨论】: