Разница между dtrtrs и dtrsm

Я ищу несколько треугольных решателей, и я наткнулся на два решателя. Один в BLAS: dtrsm и другой в LAPACK: dtrtrs. Судя по внешнему виду, оба они имеют общие функциональные возможности, причем dtrsm имеет немного большую функциональность (масштабирование правой стороны перед решением системы).

Хотелось бы узнать
1) Чем еще различаются эти функции?
2) При выполнении одной и той же операции, что быстрее?
3) Если ответ на (2) не очевиден, Когда dtrsm предлагается вместо dtrtrs и наоборот?


person Pavan Yalamanchili    schedule 29.06.2011    source источник


Ответы (1)


  1. Помимо масштабирования, dtrsm также может решать системы, в которых треугольная матрица умножается справа на неизвестную матрицу (т. Е. Он может решать XA = B, а также AX = B). С другой стороны, dtrsm может молча выйти из строя, если A единственное число, тогда как dtrtrs проверяет это условие и сообщает об ошибке.

  2. В «типичном» дистрибутиве LAPACK dtrtrs — это просто оболочка, которая проверяет сингулярность, а затем вызывает dtrsm. Таким образом, dtrsm немного быстрее, но эта разница незначительна для матриц любого разумного размера.

person Stephen Canon    schedule 29.06.2011
comment
Спасибо! Я собираюсь работать с графическими процессорами. Это сэкономило мне много времени и избавило меня от стрельбы в темноте, пока я не разобрался. - person Pavan Yalamanchili; 29.06.2011