Вместо умножения матрицы на вектор в BLAS или аналогичных - PullRequest
4 голосов
/ 08 ноября 2010

Я хотел бы выполнить простую операцию на месте A x \ to x в BLAS для матрицы A и вектора x. sgemv предоставляет A x + b y \ для y, а вызов A x + 0 x даст неверный результат. Как правильно выполнить эту простую задачу? trmv обеспечивает умножение на месте, но только для треугольных матриц.

Матрицы не очень большие, возможно, 64 * 64, но у меня есть массив из 2 ^ 14 из них, и я повторяю операцию несколько раз. Обратите внимание, что структура является более сложной, чем A ^ n x: A, зависит от расположения в массиве 2 ^ 14 и от шага итерации. Я предполагаю (возможно, неправильно), что чередование A x \ to y, A y \ to x будет иметь худшую производительность кэша? Производительность довольно критична.

1 Ответ

8 голосов
/ 08 ноября 2010

Я не уверен, можно ли выполнить умножение на месте:

При умножении A x каждый элемент оригинала x необходим для каждого элементавектора результата, поэтому вам нужно как минимум временное пространство размером x .

...