【问题标题】:Numpy, BLAS and CUBLASNumpy、BLAS 和 CUBLAS
【发布时间】:2012-07-20 08:54:09
【问题描述】:

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

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

【问题讨论】:

    标签: numpy cuda gpgpu blas


    【解决方案1】:

    一句话:不,你不能那样做。

    有一个相当不错的 scikit 提供从 scipy 访问 CUBLAS 的功能,称为 scikits.cuda,它建立在 PyCUDA 之上。 PyCUDA 提供了一个类似numpy.ndarray 的类,它允许使用 CUDA 无缝地操作 GPU 内存中的 numpy 数组。所以你可以将 CUBLAS 和 CUDA 与 numpy 一起使用,但你不能仅仅链接到 CUBLAS 并期望它能够工作。

    还有一个商业库,它提供类似 numpy 和 cublas 的功能,并具有 Python 接口或绑定,但我将把它留给他们的一个工人来填补。

    【讨论】:

    • 感谢您的信息。我知道允许访问 CUDA 的各种 Python 库。但是,如果我可以将 Numpy 配置为使用 Cublas,我就不必更改现有代码中的任何内容(目前它使用 numpy.dot() 和其他带有 MKL 或 GotoBlas2 的 Linealg 函数)并且我可以进行性能比较。只是出于好奇:您是否偶然知道为什么无法将 numpy 与 CUBLAS 链接起来的技术原因是什么?
    • 这是因为 API 不一样,还有一整层内存管理,标准的 blas 应用程序一无所知。
    • 这可能会改变情况:devblogs.nvidia.com/parallelforall/… 虽然这适用于 octave,但它也应该适用于 Numpy
    • cupy.chainer.org 是否比您回答中的内容更好?
    【解决方案2】:

    这是另一种可能性:

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

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

    【讨论】:

      猜你喜欢
      • 2011-02-14
      • 2012-12-12
      • 1970-01-01
      • 2011-11-27
      • 1970-01-01
      • 2011-07-12
      • 2012-02-18
      • 2013-10-26
      • 1970-01-01
      相关资源
      最近更新 更多