我们有一个涉及昂贵的线性代数计算的Python代码。数据存储在NumPy数组中。代码使用numpy.dot,以及一些当前通过scipy.linalg.blas和scipy.linalg.lapack访问的BLAS和LAPACK函数。当前代码是为CPU编写的。我们希望转换代码,以便在图形处理器上执行一些NumPy、BLAS和LAPACK操作。
我正在尝试确定最好的方法是。据我所知,Numba不支持GPU上的BLAS和LAPACK函数。似乎PyCUDA可能是最好的路径,但我在确定PyCUDA是否允许同时使用BLAS和LAPACK功能时遇到了麻烦。
编辑:我们需要的代码是可移植到不同的GPU架构,包括AMD和Nvidia。虽然PyCUDA似乎提供了所需的功能,但CUDA (以及PyCUDA)无法在AMD GPU上运行。
发布于 2017-11-09 19:42:55
你有没有尝试过去scikit cuda?https://scikit-cuda.readthedocs.io/en/latest/#
它似乎使用pyCUDA来访问CUDA工具包的库( CUBLAS,CUSOLVER,CUFFT,CUDA),并提供了一些基于CUBLAS的LAPACK例程的实现。
我已经在CUBLAS例程中使用过它,这是一次愉快的经历,我希望LAPACK也是如此
发布于 2018-01-04 17:57:30
另一个选择是ArrayFire。虽然这个包不包含完整的BLAS和LAPACK实现,但它确实提供了许多相同的功能。它与OpenCL和CUDA兼容,因此与AMD和Nvidia架构兼容。它有针对Python的包装器,这使得它易于使用。
https://stackoverflow.com/questions/47209532
复制相似问题