java sse实例_使用SSE指令

回答(15)

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

SSE指令是特定于处理器的 . 您可以在维基百科上查找哪个处理器支持哪个SSE版本 .

如果SSE代码更快或更快取决于许多因素:第一个当然是问题是内存限制还是CPU限制 . 如果内存总线是瓶颈,SSE将无济于事 . 尝试简化整数计算,如果这使代码更快,它可能受CPU限制,并且你很有可能加快它的速度 .

请注意,编写SIMD代码要比编写C代码困难得多,并且生成的代码更难以更改 . 始终保持C代码为最新,您需要将其作为注释并检查汇编代码的正确性 .

考虑使用类似IPP的库,它实现了针对各种处理器优化的常见低级SIMD操作 .

e15298c6a3b4591803e154ab0c3b3e2e.png

2 years ago

以SSE为例的SIMD允许您对多个数据块执行相同的操作 . 因此,使用SSE作为整数运算的直接替换,您将无法获得任何优势,只有在您可以同时对多个数据项执行操作时才会获得优势 . 这涉及加载一些在内存中连续的数据值,执行所需的处理,然后单步执行数组中的下一组值 .

问题:

1如果代码路径依赖于正在处理的数据,则SIMD变得更难实现 . 例如:

a = array [index];

a &= mask;

a >>= shift;

if (a < somevalue)

{

a += 2;

array [index] = a;

}

++index;

像SIMD一样不容易做到:

a1 = array [index] a2 = array [index+1] a3 = array [index+2] a4 = array [index+3]

a1 &= mask a2 &= mask a3 &= mask a4 &= mask

a1 >>= shift a2 >>= shift a3 >>= shift a4 >>= shift

if (a1

// help! can't conditionally perform this on each column, all columns must do the same thing</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值