2011-06-29 19 views
7

Poszukuję rozwiązań trójkątnych i natknąłem się na dwa rozwiązania. Jeden w BLAS: dtrsm i inny w LAPACK: dtrtrs. Wygląda na to, że oba mają wspólną funkcjonalność, a dtrsm ma nieco większą funkcjonalność (skalowanie po prawej stronie przed rozwiązaniem systemu).Różnica między dtrtrs a dtrsm

Chciałbym wiedzieć
1) Jak inaczej różnią się te funkcje?
2) Podczas wykonywania tej samej operacji, która jest szybsza?
3) Jeśli odpowiedź na (2) nie jest oczywista, Kiedy dtrsm zasugerowano nad dtrtrs i na odwrót?

Odpowiedz

8
  1. Poza skalowania dtrsm można również rozwiązać układy, w których matryca trójkątna jest prawym mnożone w nieznanej matrycy (to znaczy, może rozwiązać XA = B oraz AX = B). Z drugiej strony, dtrsm może po cichu zawieść, jeśli A jest liczbą pojedynczą, podczas gdy dtrtrs sprawdza ten warunek i zgłasza błąd.

  2. W "typowej" dystrybucji LAPACK, dtrtrs jest po prostu otoką, która sprawdza osobliwość, a następnie wywołuje dtrsm. W związku z tym dtrsm jest szybszy, ale jest to nieznaczna różnica w przypadku macierzy o dowolnej rozsądnej wielkości.

+0

Dzięki! Będę pracował nad procesorami graficznymi. Oszczędził mi to wiele czasu i oszczędził mi strzelania w ciemności, dopóki nie odkryłem tego. –