加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

混合SIMD指令和多线程时,是否会降低性能?

发布时间:2020-12-15 01:01:28 所属栏目:Java 来源:网络整理
导读:我有兴趣做一个关于面部识别的项目(使用SIMD指令集).但是在今年的第一学期,我学到了一些关于线程的知识,我想知道我是否可以将它们结合起来. 我什么时候应该避免结合多线程和SIMD指令?什么时候值得呢? 解决方法 保存x87 / MMX / XMM / YMM寄存器可能需要相
我有兴趣做一个关于面部识别的项目(使用SIMD指令集).但是在今年的第一学期,我学到了一些关于线程的知识,我想知道我是否可以将它们结合起来.

我什么时候应该避免结合多线程和SIMD指令?什么时候值得呢?

解决方法

保存x87 / MMX / XMM / YMM寄存器可能需要相当长的时间才能显着
缓存捶打.通常,FP状态的保存和恢复是以惰性方式完成的:在上下文切换时,内核将当前线程记为FP状态的“所有者”,并在CR0中设置TS标志 – 这将导致陷阱每当线程尝试执行FP insn时内核.此时,分别保存和恢复旧线程的FP状态和当前正在执行的线程的FP状态.

现在,如果延长的时间段(几个或多个上下文切换)没有其他线程使用FP insns – 惰性策略将导致无法保存/恢复任何FP状态,并且您不会受到性能影响.

由于我们显然是在讨论多处理器系统,因此并行执行算法的线程不会相互冲突,因为它们应该在自己的CPU / core / HT上执行并拥有一组私有寄存器.

TL;博士

您不应该关心保存和恢复FP寄存器的开销.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读