Как правильно профилировать различные матричные операции в numpy, факел? - PullRequest
0 голосов
/ 01 мая 2020

Считается, что CUDA может ускорить матричные манипуляции. Тем не менее, я тестирую его в python Jupyter, это не ожидается.

np_list = []
NUM_MATRIX = 100
SIZE_MATRIX = 1000
for i in range(NUM_MATRIX):
    matrix = np.random.randn(SIZE_MATRIX,SIZE_MATRIX)
    np_list.append(matrix)
# constuct torch tensor
torch_cpu_list = []
torch_gpu_list = []
for i in range(NUM_MATRIX):
    torch_cpu_list.append(torch.from_numpy(np_list[i]))
    torch_gpu_list.append(torch_cpu_list[i].cuda())

Затем обратная работа профиля

%%time

for i in range(NUM_MATRIX):
    np.linalg.inv(np_list[i])

Время ЦП: пользователь 7,86 с, sys: 72,2 мс, всего: 7,93 с Время стены: 2 с

%%time

for i in range(NUM_MATRIX):
    torch_cpu_list[i].inverse()

Время ЦП: пользователь 5.84 с, sys: 36 мс, всего: 5,88 с Время стены: 1,48 с

%%time

for i in range(NUM_MATRIX):
    torch_gpu_list[i].inverse()

Время ЦП: пользователь 11,7 с, сис: 528 мс, всего: 12,2 с Время стены: 3,07 с

Я думаю, что-то не так с моим профилем. Но я не понимаю феномен.

...