桌面支持--电脑桌面图标全选怎么解除.png
2015-08-19 15:51
148 查看
上文可以说是一个大杂烩,开发环境是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次不完全更新。
(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次不完全更新。
相关文章推荐
- Quartz2d从易到难全解析---绘制封闭三角形,四边形
- LeetCode:Sliding Window Maximum 题解 Python
- [C++]Ugly Number II丑数2
- Highcharts-4.1.7使用实例(关键部分代码)
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- c++ primer plus 第八章《编程题8.7.8》
- 【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永不过期
- 如何在 Java 中正确使用 wait, notify 和 notifyAll – 以生产者消费者模型为例
- Android UI学习 - 对话框
- Apache/Tomcat/JBOSS/Nginx区别
- 51Nod 1135-原根(快速求解一个素数的原根)
- 多校第九场Travelling Salesman Problem总结
- 桌面支持--电脑访问不了服务器资源
- 数组指针和指针数组和mutable和explicit和static和const关键字
- shell简介
- WEB开发笔记
- Cocos从入门到精通--《Cocos引擎在Windows平台上的搭建》
- .Net程序员安卓学习之路6:等待条
- mybatis Java API
- 浏览器提示ERR_CONTENT_DECODING_FAILED,Gzip压缩数据无法解压