2012-07-20 63 views
13

Numpy可以针对不同的BLAS实现(MKL,ACML,ATLAS,GotoBlas等)进行“链接/编译”。这并不总是直接配置,但它是可能的。Numpy,BLAS和CUBLAS

是否有可能针对NVIDIA的CUBLAS实现“链接/编译”numpy?
我在网上找不到任何资源,在我花太多时间尝试之前,我想确保它可能。

回答

15

总而言之:不,你不能这样做。

有一个相当不错的scikit,可以从scipy提供对CUBLAS的访问,它叫做scikits.cuda,它建立在​​之上。 PyCUDA提供了类似于numpy.ndarray的类,它可以无缝地使用CUDA处理GPU内存中的numpy数组。所以你可以使用CUBLAS和CUDA,但是你不能直接链接到CUBLAS,并期望它可以工作。

还有一个商业图书馆提供numpy和cublas之类的功能,它有一个Python界面或绑定,但我会把它留给他们的一个愿望来填补你的空白。

+1

感谢您的信息。我知道允许访问CUDA的各种Python库。不过,如果我可以配置Numpy来使用Cublas,我不需要改变现有代码中的任何东西(目前它使用''numpy.dot()''和其他Linealg函数与MKL或GotoBlas2),我可以做性能比较。出于好奇:你是否偶然知道技术上的原因是为什么不可能将numpy与CUBLAS联系起来? – 2012-07-20 10:01:19

+1

这是因为API不同,并且存在整个内存管理层,标准Blas应用程序一无所知。 – talonmies 2012-07-20 10:16:15

+1

这可能会改变这种情况:http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/虽然这适用于八度,它应该也适用于Numpy – 2014-09-16 21:05:37

4

这里是另一种可能性:

http://www.cs.toronto.edu/~tijmen/gnumpy.html

这基本上是一个gnumpy + cudamat环境,其可用于利用一个GPU。也可以在没有使用npmat的情况下运行相同的代码。参考上面的链接下载所有这些文件。