【发布时间】:2014-05-16 02:48:31
【问题描述】:
我真的很想知道如何在 numpy/pandas 上利用多核处理进行矩阵乘法。
我正在尝试的是:
M = pd.DataFrame(...) # super high dimensional square matrix.
A = M.T.dot(M)
这需要大量的处理时间,因为有很多乘积,而且我认为使用多线程来进行巨大的矩阵乘法是很简单的。所以,我在仔细搜索,但在 numpy/pandas 上找不到如何做到这一点。我需要用一些python内置的线程库手动编写多线程代码吗?
【问题讨论】:
-
不要在 pandas 中执行此操作(如果是矩阵操作),请留在 numpy.这个函数
lambda x: x.T.dot(x)有另一个名字吗(它可能已经有一个 numpy 函数,你可以用 numba 或其他东西调用它)... -
在我的 fedora 20 python/numpy 安装中,我看到在大型
x.T.dot(x)calc 上使用了多个内核。整个脚本(包括创建矩阵)的 CPU 百分比为 282%。在这种情况下,多核支持是 numpy 链接到什么库的函数吗? -
您必须使用 Intel 的 MKL 库编译您的 numpy。您可以通过
import numpy as np; np.show_config()查看 -
谢谢你们。很抱歉我没有告诉我的环境,Mac OSX。我尝试了 MKL 库(anaconda 包),但它似乎没有使用多核(只是 cpu 100%)。我想只有 linux 用户才能享受 MKL 的多核功能,因为this benchmark 将 OSX 视为单核。
标签: python multithreading numpy matrix pandas