Преимущество numba.guvectorize на основе CUDA при использовании для циклов? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь понять преимущества создания ядра, такого как:

from numba import guvectorize

@guvectorize(['void(float64[:,:], float64[:,:],'(m,n),(n,p)->(m,p)', target='cuda')
def matmul(A, B, C):
    m, n = A.shape
    n, p = B.shape
    for i in range(m):
        for j in range(p):
            C[i, j] = 0
            for k in range(n):
                C[i, j] += A[i, k] * B[k, j]

, которое просто возвращает умножение матриц двух матриц.Чем это лучше, чем выполнять этот же процесс последовательным образом, поскольку все матрицы загружаются в ядро, которое, похоже, просто выполняет последовательную операцию.

Все, что я сделал, это перенес последовательную операцию на одно ядро ​​CUDA на моем графическом процессоре?

По-разному ли обрабатываются циклы и операции с массивами внутри функций ядра

...