Ich versuche ein lineares System mit numba mit GPU-Verarbeitung mit CUDA zu lösen.Lineares System mit Python mit Numba und CUDA lösen
Ich habe alle relevanten Pakete installiert und getestet, so scheint es, dass meine GPU und CUDA usw. richtig eingerichtet ist.
Mein Code ist:
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()
kommentierte die @vectorize...
Linie, wird der Code in Ordnung läuft. Allerdings, wenn ich versuche, es mit numba und CUDA zu tun, ich eine lange Liste von Fehlern kommen, wo ich denke, dass er am wichtigsten ist:
raise TypingError(msg)
numba.errors.TypingError: Failed at nopython (nopython frontend)
np.linalg.solve() only supported for array types
Ich nehme an, das Problem ist, dass numpy.linalg.solve
nicht die Datentypen akzeptiert von cuda gefordert.
Bin ich richtig bei der Annahme? Gibt es andere Datentypen, die funktionieren?
In this Beispiel Problem, der gleiche Datentyp wird an die Funktion übergeben, so denke ich, das Problem liegt bei numpy.linalg.
Danke Robert. Ich habe gerade ein "Spielzeug" -Problem benutzt, um mit dem Cuda-Arbeitsablauf zu beginnen. Ich nehme an, ich habe kein gutes Beispiel gewählt. – Mike