使用带有numba和CUDA的Python解决线性系统

时间:2017-10-05 02:40:39

标签: python numpy cuda

我正在尝试使用使用CUDA的GPU处理使用numba来解决线性系统。

我已经安装了所有相关软件包并进行了测试,因此我的GPU和CUDA等设置似乎已正确设置。

我的代码是:

import numpy as np
import time

from numba import vectorize, cuda


@vectorize(['float64(float64, float64)'], target='cuda')
def solver(A, b):
    return np.linalg.solve(A, b)


def main():

    A = np.random.rand(100, 100).astype(np.float64)
    b = np.random.rand(100, 1).astype(np.float64)

    start = time.time()
    C = solver(A, b)
    vector_add_time = time.time() - start

    print("Took " + str(vector_add_time) + " seconds to solve")


if __name__ == '__main__':
    main()

评论@vectorize...行,代码运行正常。然而,当我尝试使用numba和cuda时,我得到了一长串错误,我认为他最相关的是:

raise TypingError(msg)
numba.errors.TypingError: Failed at nopython (nopython frontend)
np.linalg.solve() only supported for array types

我认为问题是numpy.linalg.solve不接受cuda所需的数据类型。

我假设这是正确的吗?是否有其他数据类型可以使用?

this示例问题中,相同的数据类型被传递给函数,所以我认为问题在于numpy.linalg。

1 个答案:

答案 0 :(得分:2)

  

我假设这是正确的吗?

没有

  

是否有其他数据类型可以使用?

没有

这里的问题是你不能在针对numba GPU后端运行的代码中使用numpy.linalg