【发布时间】:2012-07-20 08:54:09
【问题描述】:
Numpy 可以针对不同的 BLAS 实现(MKL、ACML、ATLAS、GotoBlas 等)“链接/编译”。这并不总是很容易配置,但它是可能的。
是否也可以针对 NVIDIA 的 CUBLAS 实现“链接/编译”numpy?
我在网络上找不到任何资源,在我花太多时间尝试之前,我想确保它完全可行。
【问题讨论】:
Numpy 可以针对不同的 BLAS 实现(MKL、ACML、ATLAS、GotoBlas 等)“链接/编译”。这并不总是很容易配置,但它是可能的。
是否也可以针对 NVIDIA 的 CUBLAS 实现“链接/编译”numpy?
我在网络上找不到任何资源,在我花太多时间尝试之前,我想确保它完全可行。
【问题讨论】:
一句话:不,你不能那样做。
有一个相当不错的 scikit 提供从 scipy 访问 CUBLAS 的功能,称为 scikits.cuda,它建立在 PyCUDA 之上。 PyCUDA 提供了一个类似numpy.ndarray 的类,它允许使用 CUDA 无缝地操作 GPU 内存中的 numpy 数组。所以你可以将 CUBLAS 和 CUDA 与 numpy 一起使用,但你不能仅仅链接到 CUBLAS 并期望它能够工作。
还有一个商业库,它提供类似 numpy 和 cublas 的功能,并具有 Python 接口或绑定,但我将把它留给他们的一个工人来填补。
【讨论】:
numpy.dot() 和其他带有 MKL 或 GotoBlas2 的 Linealg 函数)并且我可以进行性能比较。只是出于好奇:您是否偶然知道为什么无法将 numpy 与 CUBLAS 链接起来的技术原因是什么?
这是另一种可能性:
http://www.cs.toronto.edu/~tijmen/gnumpy.html
这基本上是一个 gnumpy + cudamat 环境,可用于利用 GPU。同样的代码也可以在没有 gpu 的情况下使用 npmat 运行。请参阅上面的链接以下载所有这些文件。
【讨论】: