加速指令集和计时的应用
来源:互联网 发布:中国移动网络投诉电话 编辑:程序博客网 时间:2024/05/18 01:48
#define WIN #include <Windows.h>#include <intrin.h> #include <stdlib.h> #include <math.h> #include <iostream>using namespace std;#define N 4*100000 // 注意:必须是4的倍数,否则使用SSE指令计算,要进行一些处理,从而保证正确。 _MM_ALIGN16 float op1[N];_MM_ALIGN16 float op2[N];_MM_ALIGN16 float result1[N];_MM_ALIGN16 float result2[N];void init(){ for (int i = 0; i < N; i++) { op1[i] = (float)rand() / (float)RAND_MAX; op2[i] = (float)rand() / (float)RAND_MAX; }}void checkResult(int debug){ bool isSame = true; for (int i = 0; i < N; i++) { if (debug) { cout << "result1:" << result1[i] << "result2:" << result2[i] << endl; } else { if (fabs(result1[i] - result2[i]) > 0.000001) { isSame = false; break; } } } if (!debug) { if (isSame) printf("Result is Same\n"); else printf("Result is not same\n"); }}void add1(){ for (int i = 0; i < N; i++) result1[i] = op1[i] + op2[i];}void add2(){ __m128 a; __m128 b; __m128 c; for (int i = 0; i < N; i = i + 4) { // Load a = _mm_load_ps(op1 + i); b = _mm_load_ps(op2 + i); c = _mm_add_ps(a, b); // c = a + b _mm_store_ps(result2 + i, c); }}int main(){ init(); _LARGE_INTEGER time_start; /*开始时间*/ _LARGE_INTEGER time_over; /*结束时间*/ double dqFreq; /*计时器频率*/ LARGE_INTEGER f; /*计时器频率*/ QueryPerformanceFrequency(&f); dqFreq = (double)f.QuadPart; QueryPerformanceCounter(&time_start); //--- printf("Add a vector:\n"); add1(); // QueryPerformanceCounter(&time_over); cout << ((time_over.QuadPart - time_start.QuadPart) / dqFreq) << endl;//单位为秒,精度为1000 000/(cpu主频)微秒 printf("\n"); _LARGE_INTEGER time_start1; /*开始时间*/ _LARGE_INTEGER time_over1; /*结束时间*/ double dqFreq1; /*计时器频率*/ LARGE_INTEGER f1; /*计时器频率*/ QueryPerformanceFrequency(&f1); dqFreq1 = (double)f.QuadPart; QueryPerformanceCounter(&time_start1); printf("Add a vector with SSE instructions:\n"); add2(); QueryPerformanceCounter(&time_over1); cout << ((time_over1.QuadPart - time_start1.QuadPart) / dqFreq1) << endl; printf("\n"); checkResult(0); return 0;}
0 0
- 加速指令集和计时的应用
- SSE加速指令集
- CPU 指令集加速
- java 文件读取和计时线程的应用
- SSE指令集加速运算
- SSE指令指令集进行程序加速、DCT的优化处理
- 多核CPU加速并行计算的快捷开发和应用
- 《Node.js简记》包管理器npm的安装、加速和常用指令
- 加速你的Android应用
- 加速你的Android应用
- unity加速传感器的应用
- JS的简单计时和改变网站
- android开发 倒计时和计时的实现
- Git 安装环境配置和简单的指令应用
- CNN的压缩和加速
- 加速Python运行的工具应用
- 加速HTML5应用的几大方法
- Rancher Labs和EVRY结为战略合作伙伴,加速DevOps在北欧市场的应用
- mkdir命令--Linux命令应用大词典729个命令解读
- 哈尔滨理工大学第六届程序设计团队赛网络同步赛
- 活动中使用Toast
- 最值得研究的开源框架:来自百度的71款开源项目
- 逐浪CMS商城系统
- 加速指令集和计时的应用
- phpstorm 功能详解
- 输出日志格式 分析
- 免杀原理
- C和C++混合编程(__cplusplus使用)
- Android 判断程序是否是第一次启动
- Xposed Android hook框架入门 -开发步骤
- 接口java.util.Map.Entry的使用
- 倾斜图像