avx
编译选项:
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的更多相关文章
- 使用CPU的AVX指令
arch:AVX 很抱歉GCC还不行……有……倒是 但是不是这么写的 我忘记了……官网上有 http://www.oschina.net/news/66980/kreogist-0-9
- 编译AVX代码,升级Redhat 5.5 GCC至4.7.1
Redhat 的GCC编译器4.1版本号,为SSE4,AVX,AVX2支持不够好,官方建议4.7以上. 就这样开始了GCC升级之路. 因为Redhat 5.5它安装在一个虚拟机.全然解决,经过若干尝试 ...
- 报错解决——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 ...
- SIMD指令集——一条指令操作多个数,SSE,AVX都是,例如:乘累加,Shuffle等
SIMD指令集 from:https://zhuanlan.zhihu.com/p/31271788 SIMD,即Single Instruction, Multiple Data,一条指令操作多个数 ...
- 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 ...
- Tensorflow源码编译,解决tf提示未使用SSE4.1 SSE4.2 AVX警告【转】
本文转载自:https://blog.csdn.net/iTaacy/article/details/72799833 版权声明:欢迎转载,转载请注明出处! https://blog.csdn.net ...
- ubuntu16.04解决tensorflow提示未编译使用SSE3、SSE4.1、SSE4.2、AVX、AVX2、FMA的问题【转】
本文转载自:https://blog.csdn.net/Nicholas_Wong/article/details/70215127 rticle/details/70215127 在我的机器上出现的 ...
- DeepFaceLab: SSE,AVX, OpenCL 等版本说明!
Deep Fake Lab早期只有两个版本,一个是专门正对NVIDIA显卡的CUDA9的版本,另一个是支持CPU的版本. 三月初该项目作者对tenserFlow,Cuda的版本进行了升级,预编译的软件 ...
- intel AVX指令集
听说这 AVX 很牛,,支持Win7,大幅提高游戏浮点运算性能warning C4752: 发现 Intel(R) 高级矢量扩展:请考虑使用 /arch:AVX
- Dlib支持CPU指令集编译问题(SSE4.2或者AVX)
The compile script is: mkdir build cd build cmake ../../tools/python -DUSE_SSE2_INSTRUCTIONS=ON cmak ...
随机推荐
- js 三维数组转对象数组 二维数组转对象数组
1. 三维数组转对象数组 输出: 代码如下: let dataArr = [ [ [109.654541015625, 29.34387539941801], [110.467529296875, ...
- Ubuntu18.04 右上角网络连接消失问题记录
问题记录 因为一块板子要访问远程桌面,需要联网才行,然后发现桌面右上角的网络连接标志不见了,而且无论用usb共享网路,或者是无线网卡,都连不上网. 首先想是不是硬件的问题,给系统重新装了一个ubunt ...
- 041_Record Type
应用场景:在使用Apex新建记录时,有时需要根据具体需求为用户匹配对应的记录类型,这个时候就需要用到记录类型Id的情况. 获取RecordTypeId的方法有2种,一种是根据soql进行查询,另一种是 ...
- bigdecimal 比较大小、bigdecimal 数学运算、bigdecimal 精度
创建 BigDecimal 建议使用 public BigDecimal(String val),使用 number 参数可能会有精度问题 设置精度 setScale(3, BigDecimal.RO ...
- c语言中位运算符及用法 异或
a&b: 00000000 00000000 a&b=0x0 a|b : 00000000 01011111 a|b=0x5f a^b : 00000000 01011111 ...
- Python冰墩墩(非原创,搬运工)
import turtle turtle.title('2022北京冬奥会冰墩墩') turtle.speed(10000) # 速度 # 左手 turtle.penup() turtle.goto( ...
- 实时中文语音克隆——开源项目MockingBird体验
[引子] 在今年大型网络攻防演练前不久,笔者接到一个公司的座机号码来电,上来就问防守准备得怎么样了,哪里还有不足等.等等,这声音不认识,笔者第一反应就是蓝军(Red Team)来进行社会工程攻击,于是 ...
- MFC调用外部dll时,出现无法解析的外部符号的解决方法)
最近在一个MFC工程文件中调用了多个dll和lib文件,包括matlab和can连接文件,时常出现"无法解析的外部符号"的错误,特此记录解决方法. 通常出现这个问题的原因有以下 ...
- 基于rabbitmq之MQTT协议的智能家居
智能家居项目 智能可燃气体报警器 产品是一款可燃气体报警器,如果家中燃气泄露浓度到达一定阈值,报警器检测到并上传气体浓度值给后台,后台以电话.短信.微信等方式,提醒用户家中可能有气体泄漏. 用户还可能 ...
- Go的目录及其含义
运行 go env 找到go的运行目录,可以看到下边有三个文件: bin存放编译后的可执行文件(go install 自动创建),pkg存放编译后的包文件(go install 自动创建),src存放 ...