使用compressed_matrix在发布模式下出现axpy_prod问题

时间:2011-08-19 16:18:46

标签: c++ debugging release ublas

我注意到ublas中的函数axpy_prod()在使用压缩稀疏矩阵的释放模式时有问题, 看你自己:

#define BOOST_UBLAS_NDEBUG
#include <boost/numeric/ublas/matrix_sparse.hpp>
#include <boost/numeric/ublas/operation.hpp>

namespace ublas = boost::numeric::ublas;
#include <boost/timer.hpp>
int main()
{
    boost::timer t;
    t.restart();

    ublas::compressed_matrix<double> m1(700,700,0);
    ublas::compressed_matrix<double> m2(700,700,0);
    ublas::compressed_matrix<double> r(700,700,0);
    //r=  prod(m1,m2);
    ublas::axpy_prod(m1,m2,r,true);
    std::cout << "Matrix mult. took " <<t.elapsed()<< " s" << std::endl;

    return 0;
}

我在Xcode中遇到的错误: 错误:无效使用不完整类型'struct boost :: numeric :: ublas :: zero_matrix&gt;'

我还注意到,对于密集和稀疏矩阵,prod()比axpy_prod更快,与宣传的内容相反!您也可以使用相同的代码检查它。

最后,我想更多地了解编译命令中的选项-O3 -DNDEBUG,这些选项在使用时会大大加快程序的速度,它们到底做了什么? 非常感谢!

0 个答案:

没有答案