我正在尝试使用使用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。
答案 0 :(得分:2)
我假设这是正确的吗?
没有
是否有其他数据类型可以使用?
没有
这里的问题是你不能在针对numba GPU后端运行的代码中使用numpy.linalg
。