🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.c
13 messages
13 total messages Started by Borneq Tue, 04 Oct 2016 18:06
Jaki dobry profiler?
#308813
Author: Borneq
Date: Tue, 04 Oct 2016 18:06
4 lines
1025 bytes
Używam LTProf, płatny, podoba mi się interfejs ale ma ograniczenie: 
profiluje jedynie funkcje, a w trybie release funkcje są rozwijane. 
Potrzebuję dokładniejszego, który profilował by na poziomie pojedynczej 
instrukcji
Re: Jaki dobry profiler?
#308814
Author: Sebastian Biały
Date: Tue, 04 Oct 2016 18:31
8 lines
1220 bytes
On 2016-10-04 20:06, Borneq wrote:
> Potrzebuję dokładniejszego, który profilował by na poziomie pojedynczej
> instrukcji

http://developer.amd.com/tools-and-sdks/archive/compute/amd-codeanalyst-performance-analyzer/

Nie działa lub działa bardzo źle z procesorami Intela. Czy coś się 
poprawiło ostatnio - nie wiem, nie używam dłuższą chwilę.
Re: Jaki dobry profiler?
#308815
Author: Borneq
Date: Tue, 04 Oct 2016 21:22
9 lines
1393 bytes
W dniu 04.10.2016 o 20:31, Sebastian Biały pisze:
> Nie działa lub działa bardzo źle z procesorami Intela. Czy coś się
> poprawiło ostatnio - nie wiem, nie używam dłuższą chwilę.

Mam procesor Intela i3; na początku trochę problemów bo instalacja 
została na pasku na dole, ale zabiłem przez wylogowanie.
Jest niesamowity, nie tylko każda linia kodu ale każda instrukcja!
i nawet specjalnie nie zwolnił na testowym programie.
Testuję dla VC++, nie wiem czy działa na GCC pod Windows (MinGW)
Re: Jaki dobry profiler?
#308816
Author: Borneq
Date: Tue, 04 Oct 2016 21:25
4 lines
1071 bytes
W dniu 04.10.2016 o 23:22, Borneq pisze:
> i nawet specjalnie nie zwolnił na testowym programie.

A może jednak zwolnił, tylko wcześniej zabiłem
Re: Jaki dobry profiler?
#308817
Author: Borneq
Date: Wed, 05 Oct 2016 00:19
14 lines
1634 bytes
W dniu 04.10.2016 o 23:25, Borneq pisze:
> W dniu 04.10.2016 o 23:22, Borneq pisze:
>> i nawet specjalnie nie zwolnił na testowym programie.
>
> A może jednak zwolnił, tylko wcześniej zabiłem

To co się okazało: w działaniach na bitach, gdzie adres wyliczam przez 
bit/8, VC++ nawet w release nie potrafi zamienić /8 na >>3, ale może 
dlatego że przy optymalizacjach musi być dokładnie ten sam wynik a 
liczba bitów była tu całkowita a nie naturalna więc wywołuje procedurę. 
Zmiana ta przyśpieszyła znacznie działanie testowego programu sita 
Erastotenesa na bitach.
Trzeba pamiętać że kompilatory często nie optymalizują dzielenia przez 
stała 2^n
Re: Jaki dobry profiler?
#308820
Author: Borneq
Date: Wed, 05 Oct 2016 01:17
8 lines
1260 bytes
W dniu 04.10.2016 o 23:25, Borneq pisze:
> W dniu 04.10.2016 o 23:22, Borneq pisze:
>> i nawet specjalnie nie zwolnił na testowym programie.
>
> A może jednak zwolnił, tylko wcześniej zabiłem

CodeXL ma inny sposób profilowania - błyskawicznie działa, nie trzeba 
długo czekać na zakończenie procesu
Re: Jaki dobry profiler?
#308818
Author: slawek
Date: Wed, 05 Oct 2016 07:19
8 lines
1332 bytes
On Wed, 5 Oct 2016 02:19:23 +0200, Borneq <borneq@antyspam.hidden.pl> 
wrote:
> To co się okazało: w działaniach na bitach, gdzie adres wyliczam 
przez 
> bit/8, VC++ nawet w release nie potrafi zamienić /8 na >>3, ale może

Bo najnowsze procesory mogą szybko dzielić. Zobacz ile taktów co robi 
np. nowy I7.
Re: Jaki dobry profiler?
#308821
Author: Sebastian Biały
Date: Wed, 05 Oct 2016 17:06
17 lines
1843 bytes
On 2016-10-04 23:22, Borneq wrote:
>> Nie działa lub działa bardzo źle z procesorami Intela. Czy coś się
>> poprawiło ostatnio - nie wiem, nie używam dłuższą chwilę.
> Mam procesor Intela i3; na początku trochę problemów bo instalacja
> została na pasku na dole, ale zabiłem przez wylogowanie.
> Jest niesamowity, nie tylko każda linia kodu ale każda instrukcja!

W tym problem. Procesory AMD mają bardzo dokładnie okreslony profil 
instrukcji we współdziałaniu z cache. Ten profiler pokazuje (pokazywał?) 
głupoty na Intelach. Należy więc podchodzić z rezerwą.

> i nawet specjalnie nie zwolnił na testowym programie.

Bo to profiler ktory nie instrumentuje tylko przerywa. To jest zaleta 
(mierzy razem z wywołaniami obcych biblitek) ale i wada (uszkadza cache 
procesora i program zachowuje się inaczej jesli chodzi o prędkosc na 
poziomie instrukcji).
Re: Jaki dobry profiler?
#308822
Author: M.M.
Date: Wed, 05 Oct 2016 22:57
22 lines
2371 bytes
On Wednesday, October 5, 2016 at 7:06:18 PM UTC+2, Sebastian Biały wrote:
> On 2016-10-04 23:22, Borneq wrote:
> >> Nie działa lub działa bardzo źle z procesorami Intela. Czy coś się
> >> poprawiło ostatnio - nie wiem, nie używam dłuższą chwilę.
> > Mam procesor Intela i3; na początku trochę problemów bo instalacja
> > została na pasku na dole, ale zabiłem przez wylogowanie.
> > Jest niesamowity, nie tylko każda linia kodu ale każda instrukcja!
> 
> W tym problem. Procesory AMD mają bardzo dokładnie okreslony profil 
> instrukcji we współdziałaniu z cache. Ten profiler pokazuje (pokazywał?) 
> głupoty na Intelach. Należy więc podchodzić z rezerwą.
> 
> > i nawet specjalnie nie zwolnił na testowym programie.
> 
> Bo to profiler ktory nie instrumentuje tylko przerywa. To jest zaleta 
> (mierzy razem z wywołaniami obcych biblitek) ale i wada (uszkadza cache 
> procesora i program zachowuje się inaczej jesli chodzi o prędkosc na 
> poziomie instrukcji).

By musiał w pełni symulować daną konfigurację sprzętową, aby nie uszkadzać.

Pozdrawiam
Re: Jaki dobry profiler?
#308825
Author: Borneq
Date: Thu, 06 Oct 2016 11:58
11 lines
1580 bytes
W dniu 05.10.2016 o 19:06, Sebastian Biały pisze:
> Bo to profiler ktory nie instrumentuje tylko przerywa. To jest zaleta
> (mierzy razem z wywołaniami obcych biblitek) ale i wada (uszkadza cache
> procesora i program zachowuje się inaczej jesli chodzi o prędkosc na
> poziomie instrukcji).

W każdym razie nie udał się mój sposób profilowania: rdtsc pomiędzy 
każdą instrukcją maszynową, wraz ze wzrostem ilości pętli zmienia się 
odczyt na coraz mniejsze ilości i wychodzi że pomiędzy instrukcjami jest 
tak samo mało. Ten sposób może by zadziałał na 386 ale tutaj mamy potok 
instrukcji.
Re: Jaki dobry profiler?
#308819
Author: Wojciech Muła
Date: Thu, 06 Oct 2016 16:56
16 lines
2054 bytes
On Wednesday, October 5, 2016 at 9:19:32 AM UTC+2, slawek wrote:
> On Wed, 5 Oct 2016 02:19:23 +0200, Borneq <borneq@antyspam.hidden.pl> 
> wrote:
> > To co się okazało: w działaniach na bitach, gdzie adres wyliczam 
> przez 
> > bit/8, VC++ nawet w release nie potrafi zamienić /8 na >>3, ale może
> 
> Bo najnowsze procesory mogą szybko dzielić. Zobacz ile taktów co robi 
> np. nowy I7.

Dzielenie to kilkanaście-kilkadziesiąt cykli opóźnienia
versus 1 cykl dla przesunięcia bitowego. Więc to nie
jest "szybko", lecz "dramatycznie wolno, unikaj jeśli
możesz".

w.
Re: Jaki dobry profiler?
#308823
Author: Sebastian Biały
Date: Thu, 06 Oct 2016 17:17
10 lines
1625 bytes
On 2016-10-06 00:57, M.M. wrote:
>> Bo to profiler ktory nie instrumentuje tylko przerywa. To jest zaleta
>> (mierzy razem z wywołaniami obcych biblitek) ale i wada (uszkadza cache
>> procesora i program zachowuje się inaczej jesli chodzi o prędkosc na
>> poziomie instrukcji).
> By musiał w pełni symulować daną konfigurację sprzętową, aby nie uszkadzać.

Z grubsza to nie jest możliwe. Wywołania biblitek systemowych i kernela 
nie da się instrumentować ani "naprawiać" cache po przerwaniu. Rozlatują 
się subtelne zależnosci miedzywątkowe itd.
Re: Jaki dobry profiler?
#308824
Author: M.M.
Date: Fri, 07 Oct 2016 19:11
16 lines
2261 bytes
On Thursday, October 6, 2016 at 7:17:38 PM UTC+2, Sebastian Biały wrote:
> On 2016-10-06 00:57, M.M. wrote:
> >> Bo to profiler ktory nie instrumentuje tylko przerywa. To jest zaleta
> >> (mierzy razem z wywołaniami obcych biblitek) ale i wada (uszkadza cache
> >> procesora i program zachowuje się inaczej jesli chodzi o prędkosc na
> >> poziomie instrukcji).
> > By musiał w pełni symulować daną konfigurację sprzętową, aby nie uszkadzać.
> 
> Z grubsza to nie jest możliwe. Wywołania biblitek systemowych i kernela 
> nie da się instrumentować ani "naprawiać" cache po przerwaniu. Rozlatują 
> się subtelne zależnosci miedzywątkowe itd.

Zgadzam się, to są utrudnienia praktycznie nie do przezwyciężenia. Niemniej jeśli optymalizujemy własny kod, to symulator powinien dać lepsze wyniki niż
profiler który ciągle oddziałuje na cache.

Pozdrawiam
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads