Умножается ли матричное умножение (как Mat * Mat, так и Mat * Vec) на количество ненулевых элементов или на размер матрицы? Или какая-то комбинация двух.
Как насчет формы.
Например, у меня есть матрица 100 x 100 с 100 значениями в ней или матрица 1000 x 1000 с 100 значениями в ней.
При возведении в квадрат этих матриц (или умножении их на аналогичные матрицы с одинаковой разреженностью) будет ли первая (100x100) быстрее второй (1000x1000)? Зависит ли это от того, где находятся значения?
Если это зависит от реализации, меня интересует ответ для PETSc.
источник
Полная модель производительности SpMV приведена в этой статье . Это ясно показывает, что основным ограничителем является пропускная способность, хотя вы можете уменьшить нагрузку, используя несколько векторов. После этого вы сталкиваетесь с ограничениями выдачи инструкций и лимитом невыполненных инструкций по написанию.
источник