Если у вас достаточно памяти для хранения A
и всех векторов q
, вычисление этих продуктов не займет 16 минут, если вы поместите все векторы q
в массив Q
и вызовете A.dot(Q)
.
Это на ноутбуке с 2,6 ГГц Intel Core i7 и 16 ГБ памяти. Я использую интерактивную Python оболочку ipython
:
In [1]: import numpy as np
In [2]: rng = np.random.default_rng()
In [3]: A = rng.normal(size=(500, 40_000)).astype(np.float32)
In [4]: Q = np.ones((40_000, 50_000), dtype=np.float32)
In [5]: %timeit A.dot(Q)
7.79 s ± 235 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
Это меньше 8 секунд - довольно далеко от 16 минут!
Если вы не имеет достаточно памяти, это может занять гораздо больше времени, так как ОС может начать выгружать память на диск.