我正在使用scipy
和numpy
多次计算6 * 6矩阵的取幂。
与Matlab相比,速度慢了约10倍。
我正在使用的功能是scipy.linalg.expm
,我还尝试过不推荐的方法scipy.linalg.expm2
和scipy.linalg.expm3
,这些只比expm
快两倍。我的问题是:
expm2
和expm3
有什么问题,因为它们比expm
更快?
我正在使用http://www.lfd.uci.edu/~gohlke/pythonlibs/的轮包,我找到了https://software.intel.com/en-us/articles/building-numpyscipy-with-intel-mkl-and-intel-fortran-on-windows。轮盘包是用MKL编译的。如果没有,我想我可以通过自己用MKL编译来优化和调整scipy?
优化效果的其他方法是什么?
答案 0 :(得分:0)
我认为我已经找到了问题1和2的答案 1.似乎expm2和expm3返回数组而不是矩阵。但它们比expm快2倍
希望有人回答问题3。
答案 1 :(得分:0)
您的矩阵相对较小,因此数字部分可能不是瓶颈。您应该使用分析器来确保限制在取幂中。 您还可以查看source code of these implementations并编写具有较少条件和检查的等效函数。