编译选项:

CXXFLAGS += -mavx2

#include <immintrin.h>
#include <cmath> void reset_xy(int *x, int *y, int vector_size)
{
for (int i = 0; i < vector_size; i++) {
x[i] = 1;
y[i] = 1;
}
} template <typename F>
double runtime_test(int repeat_times, const F& f)
{
clock_t start = clock();
int counter = repeat_times;
while (counter--) {
f();
}
clock_t end = clock();
double time = (double)(end - start) / CLOCKS_PER_SEC;
return time;
} int avx_test()
{
constexpr int repeat_times = 100;
constexpr int vector_size = 1000 * 1000;
int x[vector_size] = {0};
int y[vector_size] = {0};
reset_xy(x, y, vector_size);
std::cout << "repeat_times = " << repeat_times << " vector_size = " << vector_size << std::endl; auto f_noavx = [&x, &y, vector_size]() {
for(int i = 0; i < vector_size; i++) {
x[i] += y[i];
}
};
double noavx_time = runtime_test(repeat_times, f_noavx);
std::cout << "x[0] = " << x[0] << " x[vector_size - 1] = " << x[vector_size - 1] << std::endl; auto f_avx = [&x, &y, vector_size]() {
for(int i = 0; i < vector_size; i += 8) { // step 8 is 8 * 32 = 256 bit
int *x0 = x + i;
int *y0 = y + i;
__m256i v1 = _mm256_loadu_si256((const __m256i*)x0);
__m256i v2 = _mm256_loadu_si256((const __m256i*)y0);
v1 = _mm256_add_epi32(v1, v2);
_mm256_storeu_si256 ((__m256i*)x0, v1);
}
};
reset_xy(x, y, vector_size);
double avx_time = runtime_test(repeat_times, f_avx);
std::cout << "x[0] = " << x[0] << " x[vector_size - 1] = " << x[vector_size - 1] << std::endl;
std::cout << "noavx_time = " << noavx_time << " avx_time = " << avx_time << std::endl;
std::cout << "noavx_time / avx_time = "<< noavx_time / avx_time << std::endl;
return 0;
}
 

avx的更多相关文章

  1. 使用CPU的AVX指令

    arch:AVX 很抱歉GCC还不行……有……倒是 但是不是这么写的 我忘记了……官网上有 http://www.oschina.net/news/66980/kreogist-0-9

  2. 编译AVX代码,升级Redhat 5.5 GCC至4.7.1

    Redhat 的GCC编译器4.1版本号,为SSE4,AVX,AVX2支持不够好,官方建议4.7以上. 就这样开始了GCC升级之路. 因为Redhat 5.5它安装在一个虚拟机.全然解决,经过若干尝试 ...

  3. 报错解决——Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2

    在导入tensorflow后,进行运算时,出现了报错Your CPU supports instructions that this TensorFlow binary was not compile ...

  4. SIMD指令集——一条指令操作多个数,SSE,AVX都是,例如:乘累加,Shuffle等

    SIMD指令集 from:https://zhuanlan.zhihu.com/p/31271788 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数 ...

  5. not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

    Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AV ...

  6. Tensorflow源码编译,解决tf提示未使用SSE4.1 SSE4.2 AVX警告【转】

    本文转载自:https://blog.csdn.net/iTaacy/article/details/72799833 版权声明:欢迎转载,转载请注明出处! https://blog.csdn.net ...

  7. ubuntu16.04解决tensorflow提示未编译使用SSE3、SSE4.1、SSE4.2、AVX、AVX2、FMA的问题【转】

    本文转载自:https://blog.csdn.net/Nicholas_Wong/article/details/70215127 rticle/details/70215127 在我的机器上出现的 ...

  8. DeepFaceLab: SSE,AVX, OpenCL 等版本说明!

    Deep Fake Lab早期只有两个版本,一个是专门正对NVIDIA显卡的CUDA9的版本,另一个是支持CPU的版本. 三月初该项目作者对tenserFlow,Cuda的版本进行了升级,预编译的软件 ...

  9. intel AVX指令集

    听说这 AVX 很牛,,支持Win7,大幅提高游戏浮点运算性能warning C4752: 发现 Intel(R) 高级矢量扩展:请考虑使用 /arch:AVX

  10. Dlib支持CPU指令集编译问题(SSE4.2或者AVX)

    The compile script is: mkdir build cd build cmake ../../tools/python -DUSE_SSE2_INSTRUCTIONS=ON cmak ...

随机推荐

  1. 整合jUnit4和jUnit5

    整合jUnit4 1.引入依赖 <dependency> <groupId>org.springframework</groupId> <artifactId ...

  2. PMP学习:弱势乙方如何利用阶段性需求固化搞定甲方

  3. H5分享功能--带图标、说明

    代码实现 index.vue <template> <div id="app"> <SelfSharePage v-if="share_da ...

  4. windows 设置修改本地 hosts 访问 github 快速访问 提高访问 github 速度

    获取IP地址 查询 以下域名IP地址 github.com github.global.ssl.fastly.net assets-cdn.github.com 通过在线网址查询:https://we ...

  5. PAT-basic-1024 科学计数法 java

    一.题目 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式 [+-][1-9].[0-9]+E[+-][0-9]+,即数字的整数部分只有 1 位,小数部分至少有 1 位,该 ...

  6. 【批处理】启动 VMware 服务的简单批处理脚本

    早些时候编写的一个启动VMware服务的简单批处理脚本. 主要是记录一下自动提升运行权限的命令,不用再右键"以管理员身份运行". @echo off mode con cols=9 ...

  7. G6-Editor 编辑器入门使用教程

    一.前言 G6-Editor 是 AntV 官方提供的.专注于图可视化编辑器的类库,也是市面上完成度较高的图可视化编辑器.然而令人诟病的是其文档对新手极度不友好,我一度怀疑此文档只有他们自己开发人员才 ...

  8. Java基础学习:2、Java数据类型及逻辑运算符

    1.数据类型: 数据类型范围: byte:-2^7 ~ 2^7-1,即-128 ~ 127.1字节.Byte.末尾加B short:-2^15 ~ 2^15-1,即-32768 ~ 32767.2字节 ...

  9. window安装、启动consul

    1.官网下载:https://www.consul.io/downloads.html 2.下载解压后的安装包只有一个consul.exe文件,双击可查看版本信息 3.设置环境变量,在Path下新增一 ...

  10. mysql之数据类型-第三篇

    mysql数据库中的每个列都应该有适当的数据类型,用于限制或允许该列中存储的数据.mysql的数据类型分别有整数,浮点数和定点数类型,日期和时间类型,字符串类型和二进制类型等. 整数类型 数值型数据类 ...