我在我的程序中使用了本征库,当在英特尔编译器(在英特尔(R) C++编译器18.0.222 x86_64 Ubuntu 16上测试)编译-O2/-O3优化级别( -O0和其他编译器,如MS)时,它的工作不正确。
原因是什么?
复制代码
ArrayXXf test(2,3);
float sumBefore = test.sum();
test.row(0).swap(test.row(1));
float sumAfter = test.sum();
float dif = abs(sumBefore - sumAfter);
assert(dif < 0.0001);
例如,我得到了dif = 0.22
发布于 2018-08-06 07:22:12
这是因为Eigen.swap函数+ Intel编译器上的一些错误。
很难将一个bug提交给特征,所以我会把它留在这里,这样有关bug的信息就可以用于搜索了。
例如,解决方法是使用工作正常的?从MKL交换。
https://stackoverflow.com/questions/51710915
复制