SIMD intrinsics: _mm_stream_load_si128 vs _mm_load_si128
SIMD intrinsics: _mm_stream_load_si128 vs _mm_load_si128
我什么时候应该使用流媒体版本,当SSE2 vs _mm_load_si128?性能权衡是什么?
流加载内部(mm_stream_load_si128
)执行加载"使用非临时内存提示"(根据Intel intrinsic Guide)。这意味着加载的值不会导致从缓存中删除任何内容。
如果你将大量的数据聚集在一起,你将立即对这些数据进行操作,并且在很长一段时间内不会再查看这些数据,这是很有用的。这通常发生在流操作期间。当我知道我要对一个大数据集执行一个简单的操作时,我就会使用它,因为我知道数据无论如何都会很快从缓存中取出。memcpy
等操作也属于这一类。
非流负载(mm_load_si128
)将检索该值,并且它将服从正常的缓存规则。如果需要,它可以清除旧的缓存条目,并且可以从缓存中检索,直到它被清除。
如果您希望在正常的缓存清除发生之前再次使用数据,则首选非流加载。如果您正在操作一个大数据集,其中给定的数据块在被踢出缓存之前不会被再次访问,则首选流加载。
相关文章:
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- numpy.load 给出 ValueError: descr 不是有效的 dtype 描述符:
- Qt3D:"Mesh is empty, nothing to load"消息
- Java 1.8 本机 System.load 通过 JNI 调用C++产生 TLSv1.如何获取 TLSv1.2?
- 无法将 IOKit 驱动程序与 IOHIDFamily 链接:"dependency load failed"
- 使用RCPP包创建R包时出错:macOS中的dyn.load中出错
- 当使用来自 std::atomic 的方法时隐式调用 load() 吗?
- 使用 Python "cPickle.load"加载C++编写的二进制文件时的 EOFError
- Visual C++ Load rtf 文档在丰富编辑框中包含图像和文本
- R dyn.load "Symbol not found"错误,即使C++代码构建良好
- 无法使用 dyn.load windows 7 64 位在 R 中加载 dll 文件
- 通过Atomic :: load()访问矢量时访问违规行为
- STD :: Atomic Load方法与STD :: shared_ptr一起使用时会减少参考计数
- std::atomic<int*>::load 应该做一个比较和交换循环吗?
- 对 std::atomic::load 的结果使用结构取消引用 (->) 运算符是否安全
- QTcpSocket do not load ssl
- QWebFrame load() 在初始页面加载时不发送 cookie
- 将包与Rcpp链接时发生dyn.load错误
- std::atomic::load的内存排序行为
- DRD 的假阳性"Conflicting load"?