gpt4 book ai didi

python - xtensor 和 xsimd : improve performance on reduction

转载 作者:太空狗 更新时间:2023-10-29 21:31:43 27 4
gpt4 key购买 nike

我正在尝试使用 xtensor 在归约操作(例如元素总和)上获得与 NumPy 相同的性能。

我为并行计算启用了xsimd,但是没有效果。

以下为基准代码:

#include <iostream>

#include "xtensor/xreducer.hpp"
#include "xtensor/xrandom.hpp"
#include <ctime>

using namespace std;


pair<double, double> timeit(int size, int n=30){
double total_clocks = 0;
double total_sum = 0;
for (int i=0;i<n;i++){
xt::xtensor<double, 1> a = xt::random::rand({size}, 0., 1.);
int start = clock();

double s = xt::sum(a, xt::evaluation_strategy::immediate)();

int end = clock();
total_sum += s; total_clocks += end-start;
}
return pair<double, double>(total_clocks/CLOCKS_PER_SEC/n, total_sum);
}

int main(int argc, char *argv[])
{
for (int i=5;i<8;i++){
int size = pow(10, i);
pair<double, double> ret = timeit(size);
cout<<"size: "<<size<< " \t " <<ret.first<<" sec\t"<<ret.second<<endl;

}
return 0;
}

并在启用和不启用 xsimd 以及启用所有优化 (-O3) 的情况下进行编译:

$ g++ -DXTENSOR_USE_XSIMD -O3  -march=native -I/home/--user--/install_path/include "./18. test speed 2.cpp" -o a && ./a
size: 100000 0.0001456 sec 1.49984e+06
size: 1000000 0.0013149 sec 1.50002e+07
size: 10000000 0.0125417 sec 1.49995e+08
$ g++ -O3  -march=native -I/home/--user--/install_path/include "./18. test speed 2.cpp" -o a && ./a 
size: 100000 0.0001433 sec 1.49984e+06
size: 1000000 0.0012621 sec 1.50002e+07
size: 10000000 0.0124868 sec 1.49995e+08

顺便说一下,使用numpy的相同操作:

$ python bench.py
size: 100000 0.000030 sec
size: 1000000 0.000430 sec
size: 10000000 0.005144 sec

大约快 4 倍!

设置

  • Ubuntu 18.04
  • 酷睿 i7 CPU
  • 最新版本的包

如何提高 xtensor 性能?提前致谢))

最佳答案

根据这个github issue我已经打开
-mavx2-ffast-math 标志应该启用!

$ g++ -mavx2 -ffast-math -DXTENSOR_USE_XSIMD -O3 -I/home/--user--/install_path/include ./bench.cpp -o a && ./a
size: 100000 3.489e-05 sec 4.99932e+06
size: 1000000 0.00050792 sec 4.99989e+07
size: 10000000 0.00544542 sec 4.99997e+08

感谢dengbangjie !

关于python - xtensor 和 xsimd : improve performance on reduction,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57442255/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com