Chciałbym przewidzieć środowiska wykonawcze dla gęstych operacji algebry liniowej na określonej architekturze przy użyciu określonej biblioteki. Chciałbym nauczyć się modelu zbliżonego do funkcji
rozmiary wejściowe czas pracy w
do operacji takich jak mnożenie macierzy, dodawanie elementów, rozwiązywanie trójkątne itp.
Podejrzewam, że te środowiska wykonawcze są w większości przewidywalne ze względu na regularność operacji, gdy przekroczysz rozmiary problemów, które wygodnie mieszczą się w pamięci podręcznej.
Pytania:
- Czy to założenie jest realistyczne? Czy funkcja czasu wykonywania może być prawie deterministyczna?
- Czy mogę założyć, że ta funkcja będzie wielomianowa pod względem wielkości wejść? (tzn. spodziewam się, że mnożenie gęstej macierzy będzie wyglądało jak dla i jakiś współczynnik skalarny)
- Czy jest już gdzieś nad tym praca?
- Mój obecny plan polega na regresji metodą najmniejszych kwadratów za pomocą . Jakieś inne sugestie?
Edycja: Aby być jasnym, szukam środowisk uruchomieniowych, a nie FLOP ani innych typowych wskaźników wydajności. Chcę ograniczyć się do jednej konkretnej architektury.
źródło
Istnieje wiele wcześniejszych prac. Większość twórców bibliotek algebry liniowej publikuje wyniki wydajności w kategoriach wydajności zmiennoprzecinkowej, które można przeliczyć na czasy wykonywania.
Na przykład Google dla „wydajności DGEMM” daje następujące wyniki: http://math-atlas.sourceforge.net/timing/3_5_10/index.html .
Zasadniczo można oczekiwać, że odpowiedzi nie będą płynne. W pobliżu pewnych rozmiarów problemów (które dotyczą rozmiarów pamięci podręcznej) będą występowały skoki lub skoki. Powinieneś także spodziewać się płaskich stawek, a zatem i regionów liniowych dla szerokiego zakresu rozmiarów problemów. Nie oczekuję, że dopasowania wielomianowe będą bardzo pomocne.
Biorąc pod uwagę szeroko zakrojone wysiłki w zakresie analizy porównawczej, łatwiejsze może być zestawienie wyników i interpolowanie w razie potrzeby. Jaki jest Twój cel?
źródło
DGEMM
wskazuje na