《SSE...》一文的相关说明

上文可以说是一个大杂烩,开发环境是Ubuntu的Eclipse C/C++ SDK。代码实现了求两个方阵的乘积。其中使用到的技术如下:

(1)Intel的SIMD技术SSE,这样可以用一条指令实现4个浮点数的乘法,加法;

(2)多线程调用了pthread,结合其中提供的锁机制可以自动为多个线程平均分配任务;

(3)方阵的分块处理,主要是考虑大矩阵在计算过程中内存存取突破了局部性访问原则,将其转化成小矩阵提高Cache命中率。

其中的SSE部分有一些参考价值,因为这个方面的资料很少。分块部分的效率不行,稍加改进可能可以进一步提高Cache的利用率。假设分块刚好占用一半Cache容量,那么C11 = (A11 * B11 + A12 * B21 + A13 * B31),C12 =(A11 * B12 +A12 * B22 + A13 * B32),Cache在C11和C12计算过程中有6次完全更新。若是改为C11 =+ A11 * B11,C12 =+ A11 * B12,C11 =+ A12 * B21,C12 =+ A12 * B22,C11 += A13 * B31,C12 =+ A13 * B32,Cache在计算过程中有3次完全更新和3次不完全更新。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值