SIMD和多核心编程时的一些总结。

本文总结了在进行SIMD(单指令多数据)和多核心编程时的一些关键点,包括:1) 使用_mm*_stream_*优化不涉及输出内存的数据;2) 确保共享数据在多核间的使用时间接近以充分利用L3缓存;3) 关闭超线程以避免线程间SIMD寄存器的上下文切换开销;4) 通过数组和PADD扩展确保数据块对齐到缓存行大小;5) 在性能对比中,当SIMD与多核并用效果不佳时,优先考虑SIMD,因其更轻量且无同步开销。
摘要由CSDN通过智能技术生成

1  在计算过程中不涉及输出内存的数据时,应使用_mm*_stream_*(直接写入内存)代替_mm*_store_*,例如:

for( i=0; i<256; i+=4 )

{

    ymm0=_mm256_load_pd(a+i);

    ymm1=_mm256_load_pd(b+i);

    ymm2=_mm256_add_pd(ymm0,ymm1);

    _mm256_stream_pd(c+i,ymm2);

}

若计算过程中还要使用输出内存中的数据,则应使用_mm*_store_*,例如:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值