我正在使用intel icpc编译器并通过ICC 13.1 / mkl / include / mkl_boost_ublas_matrix_prod.hpp标头使用Boost :: numeric :: ublas :: prod方法。从提升1.51升至1.60,性能变慢约30倍。除了提升1.60之外,我没有做任何其他改变。 知道为什么会这样吗?如果有任何建议,请告诉我。
使用以下代码:
#include <iostream>
#include <boost/timer.hpp>
#include <boost/numeric/ublas/matrix.hpp>
#include <mkl_boost_ublas_matrix_prod.hpp>
using namespace boost::numeric::ublas;
int main()
{
boost::numeric::ublas::matrix<double> A(643, 13503);
boost::numeric::ublas::matrix<double> B(13503, 413);
boost::numeric::ublas::matrix<double> C(643, 413);
for (int i = 0; i < A.size1(); ++i)
for (int j = 0; j < A.size2(); ++j)
A(i,j) = i+j;
for (int i = 0; i < B.size1(); ++i)
for (int j = 0; j < B.size2(); ++j)
B(i,j) = i+j;
std::cout << "starting multiplication" << std::endl;
boost::timer t;
noalias(C) = prod(A,B);
//B = prod(A,B);
std::cout << "ublas: " << t.elapsed() << std::endl;
}