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 ...
随机推荐
- Oracle11gR2安装
https://blog.csdn.net/newbie_907486852/article/details/80716275
- nginx的nginx.conf配置文件如何修改代理的路由
方法 location /api/ { set $request_uri_new $request_uri; if ($request_uri ~ "^/api/(.*)$") { ...
- window java 字节码修改
前提: win10 安装包: 1. JDK10.0.1.msi (包含jre环境), JDK的安装路径 2. jclasslib 6.0.3 用于编辑常量 3.JBE 用于编辑 ...
- js 获取标签属性值
有时候需要获取标签里属性里的值,可以采用以下方法: demo: <a href="/admin/article/${id}" onclick="return del ...
- Qt中资源文件qrc中的路径访问
首先先看一下我们的qrc文件目录结构: 在文件系统中的目录结构是这样的: 请务必注意这边的前缀(按照网友推荐,大部分项目前缀都是只写一个"/"): 接下来进入正题,我们来分 ...
- js-禁止鼠标右键/禁止选中文字
1 <p>使用contextmenu禁止鼠标右键</p> 2 <script> 3 document.addEventListener('contextmenu', ...
- uniapp使用rich-text内容过长在真机无法滚动
解决方案:在rich-text标签上加scroll-view解决 <scroll-view scroll-y="true" style="height: 745rp ...
- 一种基于Modbus的工业通信网关设计
近年来,随着工业自动化领域的发展,工业现场对网络的可靠性及成本有极高的要求.传统基于串口的工业网关可以满足工业现场的应用,但却要付出高额成本.一种基于 ModBus 设计的工业通信网关就走进人们的眼中 ...
- C语言的所有函数
auto 声明自动变量break 跳出当前循环case 开关语句分支char 声明字符型变量或函数返回值类型const 定义常量,如果一个变量被cost修饰,那么他的值就不能再被改变continue ...
- SQL相关知识
SQL(Structure Query Language) 结构化查询语言,它是关系型数据库的应用语言,由IBM上世纪70年代开发出来的. SQL语言规范 语句以;封号结束 ...