Математически , умножение матрицы на вектор является частным случаем умножения матрицы на матрицу, но это не обязательно верно для них, как это реализовано в программной библиотеке.
Они поддерживают различные варианты.Например, gemv
поддерживает пошаговый доступ к векторам, на которых он работает, тогда как gemm
не поддерживает макеты пошаговой матрицы.В привязках к языку C gemm
требует, чтобы вы указали порядок хранения всех трех матриц, тогда как в gemv
это не нужно для векторных аргументов, потому что это было бы бессмысленно.
Помимо поддержки различных опций,есть семейства оптимизаций, которые могут быть выполнены на gemm
, которые не применимы к gemv
.Если вы знаете, что работаете с матрично-векторным продуктом, вы не хотите, чтобы библиотека тратила время на выяснение этого, прежде чем переключаться на путь кода, оптимизированный для этого случая;вместо этого лучше позвонить прямо.