SSE指令集简单入门
来源:互联网 发布:网络手机电视直播 编辑:程序博客网 时间:2024/06/11 14:00
我们从这个程序入手:
void sse_cal(float *a,float*b){ __m128 m1, m2, m3; __m128 SSEA = _mm_load_ss(a); __m128 SSEB = _mm_load_ss(b); __m128 h = _mm_set_ss(1.0f); for(int i=0;i<LOOP;i++) { m1 = _mm_mul_ss(SSEA, SSEB); m2 = _mm_sqrt_ss(SSEB); m3 = _mm_add_ss(m1,m2); SSEA = _mm_add_ss(SSEA, h); SSEB = _mm_add_ss(SSEB, h); }}
注意到SSE并不能访问一般的内存,我们必须要有一个新建或者复制的过程
__m128 m1, m2, m3;//声明了变量__m128 SSEA = _mm_load_ss(a);//将a地址指向的值复制给SSEA__m128 SSEB = _mm_load_ss(b);//将b地址指向的值复制给SSEB__m128 h = _mm_set_ss(1.0f);//声明了变量并赋值(1.0f)
而循环体里面的则是一些计算命令:
m1 = _mm_mul_ss(SSEA, SSEB);//将SSEA和SSEB相乘m2 = _mm_sqrt_ss(SSEB);//求SSEB的平方m3 = _mm_add_ss(m1,m2);//将m1和m2相加 SSEA = _mm_add_ss(SSEA, h);//将SSEA和h相加SSEB = _mm_add_ss(SSEB, h);//将SSEB和h相加
我们可以发现,其实调用SSE来计算并不是多么困难的,事实上也不一定能提高速度,还是需要按需使用。
比较完整的函数表可以参考这篇博客:http://blog.csdn.net/jacke121/article/details/54630930
感觉SSE和CUDA还是比较像的。
阅读全文
0 0
- SSE指令集简单入门
- SSE指令集入门
- SSE指令集入门
- SSE指令集入门
- SSE指令集入门
- SSE指令集
- SSE指令集
- SSE指令集
- 关于SSE指令集
- SSE指令集简记
- SSE加速指令集
- SSE指令算法及应用----入门篇
- sse 指令集--摘自sse_introduction
- SSE指令集加速运算
- 简单介绍SSE指令的功能
- SSE指令
- sse指令
- SSE 指令
- 随笔_1024
- Mysql中文乱码问题完美解决方案
- 单件模式
- Android设计模式之——策略模式
- Windows安装和使用zookeeper
- SSE指令集简单入门
- Web DOM事件探秘
- Unity3D小白学习日记(03):Unity3D 常用技巧整理(大量干货!)
- 第8周项目3(2) 压缩存储的对称矩阵的运算
- 文章标题
- CSS 学习笔记
- Java 程序代码在内存中的分配解析
- Linux内核追踪[3.14] 用户态死锁检测--UserMode lockdep
- linux网络编程之 epoll