Próbuję zoptymalizować aplikację MPI z wysoce asynchronicznym wzorcem komunikacji. Każda ranga ma listę rzeczy do obliczenia i wysyła wiadomości w razie potrzeby, jeśli dane wejściowe lub wyjściowe znajdują się na innej pozycji. Ponadto każda ranga jest podzielona na wątki (obecnie z jednym wątkiem komunikacyjnym i 5 pracownikami).
Oprzyrządowałem kod za pomocą timerów wokół różnych krytycznych pod względem wydajności części kodu, co daje mi listę potrójnych (początek, koniec, typ) dla każdego wątku. Wykreślone w oczywisty sposób, z czasem jako osią poziomą, rzędem i gwintem jako pionem, a kolorem wskazującym, co aktualnie robi każdy wątek, otrzymuję taki obraz dla 16 szeregów z 6 wątkami / rzędem:
Moje pytanie brzmi: jakie są inne sposoby wizualizacji tych danych, które mogą pomóc w określeniu problemów z wydajnością? Czy ktoś ma ulubiony typ wykresu, którego używają podczas profilowania aplikacji asynchronicznych?
Ten zestaw danych jest ograniczony, ponieważ nie zna struktury przepływu danych, ale chciałbym uzyskać z niego jak najwięcej wglądu, zanim spróbuję zebrać coś bardziej skomplikowanego.
Bez kompresji obrazu jest tutaj w przypadku gdy ktoś chce się rozejrzeć (nie udało się załadować poprzez normalną trasą). Niestety Firefox nie akceptuje tego, chociaż uważam, że jest poprawny, być może dlatego, że jest po prostu za duży.