给定一个 Scipy CSC 稀疏矩阵“sm”,其尺寸为 (170k x 170k),有 4.4 亿个非空点和一个稀疏 CSC 向量“v”(170k x 1),有几个非空点,有什么可以为提高操作的性能所做的:
resul = sm.dot(v)
?
目前大约需要 1 秒。将矩阵初始化为 CSR 将时间增加到 3 秒,因此 CSC 表现更好。
SM 是产品之间的相似性矩阵,V 是表示用户购买或点击的产品的向量。所以对于每个用户来说 sm 都是一样的。
我正在使用 Ubuntu 13.04、Intel i3 @3.4GHz、4 核。
研究 SO 我读到了关于 Ablas 包的信息。我在终端中输入:
~$ ldd /usr/lib/python2.7/dist-packages/numpy/core/_dotblas.so
结果是:
linux-vdso.so.1 => (0x00007fff56a88000)
libblas.so.3 => /usr/lib/libblas.so.3 (0x00007f888137f000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8880fb7000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f8880cb1000)
/lib64/ld-linux-x86-64.so.2 (0x00007f888183c000)
据我了解,这意味着我已经在使用来自 Ablas 的高性能软件包。我仍然不确定这个包是否已经实现了并行计算,但看起来它没有。
多核处理是否有助于提高性能?如果是这样,是否有任何对 python 有帮助的库?
我也在考虑在 Cython 中实现这个的想法,但我不知道这是否会带来好的结果。
提前致谢。