1
A
回答
2
如果您使用的机器具有连贯的缓存(大多数主流机器),则通常不需要缓存行刷新,并且flush指令不太可能对缓存做任何明确的操作。在一个连贯的系统中,任何写入一个内核缓存的内容都可以立即被所有其他内核看到。
但是,FLUSH指令可能充当内存屏障或fence,并且它还会强制编译器为其可能已存储在寄存器中的值生成存储指令。
有指令here,包括本说明的一个很好的说明:
Q17:是对$ OMP冲水指令所必需的高速缓存一致性的系统上!?
A17:是的flush指令是必要的。查看OpenMP规范中的使用示例。该指示对于指示编译器必须将该变量写入存储器系统/从存储器系统读取是必需的,即,该变量不能通过代码中的刷新“语句”保存在本地CPU寄存器中。
缓存一致性确保了如果一个CPU执行从/到内存的读取或写入指令,则系统中的所有其他CPU在访问时都会从该内存地址获取相同的值。所有缓存都将显示一个连贯的值。但是,在OpenMP标准中,必须有一种方法来指示编译器实际插入读/写机器指令,而不是延迟它。为循环生成高效的机器语言代码时,将循环变量保存在寄存器中是非常常见的。
如果您使用的机器具有非一致性缓存,那么您可能正在使用超级计算机,并应咨询熟悉您的体系结构和工具集的本地专家。
相关问题
- 1. MemoryError是否会导致python刷新其缓存?
- 2. OpenMP flush与flush(列表)
- 3. 高速缓存行刷新是否将整行写入内存?
- 4. registerTempTable是否会导致表被缓存?
- 5. php 5.3导致flush()失败?
- 6. 存在新对象的缓存策略导致缓存失效
- 7. 由于CUcontext缓存,Matlab是否会导致Cuda泄漏内存?
- 8. Akamai缓存刷新
- 9. 刷新LRU缓存
- 10. Flush iOS指令缓存
- 11. SqlCE刷新间隔 - 默认设置是否会导致损坏?
- 12. 由于实际刷新高速缓存,是否可以“统计”大量文件导致性能影响?
- 13. onclick刷新但不是从缓存?
- 14. 是否加入std :: thread flush内存?
- 15. 刷新iFrame(缓存问题)
- 16. 进程跳转内核时是否刷新了L1缓存?
- 17. 的Android - ION缓存导致
- 18. iis6中的刷新缓存
- 19. 刷新指令的缓存
- 20. Symfony的app.php刷新缓存
- 21. Symfony的缓存明确
- 22. Haml的 - 端缓存明确
- 23. 自动刷新缓存
- 24. django刷新查询缓存
- 25. SolrJ是否执行缓存?
- 26. NSFetchedResultsController〜缓存导致问题?
- 27. 如果未明确关闭,是否会导致ResultSet泄漏?
- 28. Rails行动缓存刷新后过期
- 29. print_r导致页面刷新?
- 30. GUI刷新导致异常
谢谢,这解释了它。 – user2887306