eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingHyper Threading
Ilość wypowiedzi w tym wątku: 21

  • 1. Data: 2009-09-16 12:33:56
    Temat: Hyper Threading
    Od: mgk <m...@w...pl>

    Mam algorytm ktory nie skaluje sie liniowo. Przyrost wydajnosci to
    pierwiastek z liczby procesorow. Czyli na 4 rdzeniach jest 2 razy. Na
    2 jest jakies 1.4 raza.
    Algorytm ten nie korzysta z operacji zmiennoprzecinkowych.

    Mam obawy co do HT.
    Z tego co wiem o HyperThreading to dziala to tak ze na 1 rdzeniu
    procesor wykonuje 2 watki. Ale tylko wtedy gdy jeden watek
    wykorzystuje operacje zmiennoprzecinkowe a drugi staloprzecinkowe.
    Jesli sie myle to prosze o skorygowanie. Tak gdzies czytalem. Nie
    dotarlem nigdzie jak to jest do konca.

    Ale jesli tak jest to oznacza ze nie ma sensu tworzyc 2 watkow na 1
    rdzen HT.

    Czyli jesli moja aplikacja dzieli zadanie na tyle watkow ile mam
    procesorow, a system mi zglasza bledna ich liczbe poniewaz na 4ro
    rdzeniowym procesorze HT system mi zglosi 8 procesorow moja aplikacja
    moze dzialac wolniej niz jakby bylo 4 zwykle rdzenie bez HT.

    Przykladowo na 2 rdzeniowym CPU moja aplikacja przyspiesza 1.4 raza
    wzgledem 1 rdzeniowego. Gdy procesor jest 1 rdzeniowy z HT i jesli HT
    dziala tak jak napisalem to aplikacja przyspiesza 1.4/2 raza... czyli
    0.7 czyli spowolni...

    Czy moje obawy sa sluszne?

    W przypadku algorytmow ktore skaluja sie liniowo to pal licho ze
    narobimy tyle watkow ile jest logicznych procesorow a nie fizycznych
    rdzeni. Ale w tym przypadku juz chyba nie jest to "pal licho".

    Chociaz nie wiem czy na HT gdy jeden watek wykonuje np kopiowanie
    zmiennej z pamieci do rejestru, albo wrzucenie na stos, a drugi watek
    wykonuje dodawanie na ALU to czy nie wykonaja sie te operacje
    rownolegle?


  • 2. Data: 2009-09-17 05:40:20
    Temat: Re: Hyper Threading
    Od: Adam Kłobukowski <a...@k...pl>

    mgk wrote:
    > Mam algorytm ktory nie skaluje sie liniowo. Przyrost wydajnosci to
    > pierwiastek z liczby procesorow. Czyli na 4 rdzeniach jest 2 razy. Na
    > 2 jest jakies 1.4 raza.

    To nie jest liniowo.

    > Algorytm ten nie korzysta z operacji zmiennoprzecinkowych.
    >
    > Mam obawy co do HT.
    > Z tego co wiem o HyperThreading to dziala to tak ze na 1 rdzeniu
    > procesor wykonuje 2 watki. Ale tylko wtedy gdy jeden watek
    > wykorzystuje operacje zmiennoprzecinkowe a drugi staloprzecinkowe.
    > Jesli sie myle to prosze o skorygowanie. Tak gdzies czytalem. Nie
    > dotarlem nigdzie jak to jest do konca.
    >
    > Ale jesli tak jest to oznacza ze nie ma sensu tworzyc 2 watkow na 1
    > rdzen HT.
    >
    > Czyli jesli moja aplikacja dzieli zadanie na tyle watkow ile mam
    > procesorow, a system mi zglasza bledna ich liczbe poniewaz na 4ro
    > rdzeniowym procesorze HT system mi zglosi 8 procesorow moja aplikacja
    > moze dzialac wolniej niz jakby bylo 4 zwykle rdzenie bez HT.
    >
    > Przykladowo na 2 rdzeniowym CPU moja aplikacja przyspiesza 1.4 raza
    > wzgledem 1 rdzeniowego. Gdy procesor jest 1 rdzeniowy z HT i jesli HT
    > dziala tak jak napisalem to aplikacja przyspiesza 1.4/2 raza... czyli
    > 0.7 czyli spowolni...
    >
    > Czy moje obawy sa sluszne?
    >
    > W przypadku algorytmow ktore skaluja sie liniowo to pal licho ze
    > narobimy tyle watkow ile jest logicznych procesorow a nie fizycznych
    > rdzeni. Ale w tym przypadku juz chyba nie jest to "pal licho".
    >
    > Chociaz nie wiem czy na HT gdy jeden watek wykonuje np kopiowanie
    > zmiennej z pamieci do rejestru, albo wrzucenie na stos, a drugi watek
    > wykonuje dodawanie na ALU to czy nie wykonaja sie te operacje
    > rownolegle?

    Zależy od procesora, może być różnie. Najlepiej odpytywać OS o ilość
    dostępnych rdzeni i tego się trzymać.

    Adam Kłobukowski


  • 3. Data: 2009-09-17 07:54:29
    Temat: Re: Hyper Threading
    Od: mgk <m...@w...pl>

    No wlasnie o to chodzi ze jak odpytac o ilosc dostepnych rdzeni?
    Na procesorze HT system Ci zwroci ilosc logicznych procesorow a nie
    rdzeni. Czyli na 4ro rdzeniowym HT system zwroci wartosc 8 a nie 4. I
    w tym problem.


  • 4. Data: 2009-09-18 06:36:31
    Temat: Re: Hyper Threading
    Od: Bernard <b...@e...net>

    mgk wrote:
    > Mam algorytm ktory nie skaluje sie liniowo. Przyrost wydajnosci to
    > pierwiastek z liczby procesorow. Czyli na 4 rdzeniach jest 2 razy. Na
    > 2 jest jakies 1.4 raza.
    > Algorytm ten nie korzysta z operacji zmiennoprzecinkowych.
    >
    > Mam obawy co do HT.
    > Z tego co wiem o HyperThreading to dziala to tak ze na 1 rdzeniu
    > procesor wykonuje 2 watki. Ale tylko wtedy gdy jeden watek
    > wykorzystuje operacje zmiennoprzecinkowe a drugi staloprzecinkowe.
    > Jesli sie myle to prosze o skorygowanie. Tak gdzies czytalem. Nie
    > dotarlem nigdzie jak to jest do konca.

    Mylisz się. Po prostu procesor wykonuje na przemian instrukcje obu
    wątków. Robi to dość elatycznie - kiedy jeden strumień instrukcji
    dostaje czkawki, wykonuje się ten drugi.

    > Ale jesli tak jest to oznacza ze nie ma sensu tworzyc 2 watkow na 1
    > rdzen HT.
    >
    > Czyli jesli moja aplikacja dzieli zadanie na tyle watkow ile mam
    > procesorow, a system mi zglasza bledna ich liczbe poniewaz na 4ro
    > rdzeniowym procesorze HT system mi zglosi 8 procesorow moja aplikacja
    > moze dzialac wolniej niz jakby bylo 4 zwykle rdzenie bez HT.

    Jedne aplikacje dziają lepiej z SMT, inne bez. Multimedia i masowe
    obliczenia mogą być sprawniejsze bez HT.

    > Przykladowo na 2 rdzeniowym CPU moja aplikacja przyspiesza 1.4 raza
    > wzgledem 1 rdzeniowego. Gdy procesor jest 1 rdzeniowy z HT i jesli HT
    > dziala tak jak napisalem to aplikacja przyspiesza 1.4/2 raza... czyli
    > 0.7 czyli spowolni...
    >
    > Czy moje obawy sa sluszne?

    Może są, może nie. Wszystko zależy od zależności międzyinstrukcyjnych i
    od sposobu korzystania z kieszeni.

    > Chociaz nie wiem czy na HT gdy jeden watek wykonuje np kopiowanie
    > zmiennej z pamieci do rejestru, albo wrzucenie na stos, a drugi watek
    > wykonuje dodawanie na ALU to czy nie wykonaja sie te operacje
    > rownolegle?

    Dowolne operacje przy HT wykonują się quasi-równolegle. Z grubsza
    intuicyjnie można to opisać tak, że procesor w kolejnych cyklach
    wykonuje na przemian instrukcje dwóch wątków, i są to zupełnie dowolne
    instrukcje.


  • 5. Data: 2009-09-18 06:49:05
    Temat: Re: Hyper Threading
    Od: "Mariusz Marszałkowski" <b...@N...gazeta.pl>

    mgk <m...@w...pl> napisał(a):

    > Mam algorytm ktory nie skaluje sie liniowo. Przyrost wydajnosci to
    > pierwiastek z liczby procesorow. Czyli na 4 rdzeniach jest 2 razy. Na
    > 2 jest jakies 1.4 raza.
    > Algorytm ten nie korzysta z operacji zmiennoprzecinkowych.

    Nigdy nie zrobiłem żadnych dokładnych testów ani pomiarów.

    Ale na oko wygląda to tak, jakbym przy jednym wątku miał jeden procesor
    wydany na 100%, a przy dwóch wątkach tak jakbym miał dwa procesory wydajne
    na 50-80%. Oczywiście mowa o komputerze z jednym rdzeniem zawierającym HP.

    Pozdrawiam


    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 6. Data: 2009-09-18 07:22:37
    Temat: Re: Hyper Threading
    Od: mgk <m...@w...pl>

    > Dowolne operacje przy HT wykonują się quasi-równolegle. Z grubsza
    > intuicyjnie można to opisać tak, że procesor w kolejnych cyklach
    > wykonuje na przemian instrukcje dwóch wątków, i są to zupełnie dowolne
    > instrukcje.

    No tak, ale czy wykonywanie na przemian trwa 2 razy dluzej? :) czy
    jest to rownolegle.
    Z tego co napisales to zrozumialem ze dla dowolnych instrukcji da sie
    czasem wykonac je rownolegle. No to OK. Niestety nie mam procesora HT
    by sprawdzic jak moj program sie zachowuje na nim.


  • 7. Data: 2009-09-18 07:24:52
    Temat: Re: Hyper Threading
    Od: mgk <m...@w...pl>

    > > Mam algorytm ktory nie skaluje sie liniowo. Przyrost wydajnosci to
    > > pierwiastek z liczby procesorow. Czyli na 4 rdzeniach jest 2 razy. Na
    > > 2 jest jakies 1.4 raza.
    > > Algorytm ten nie korzysta z operacji zmiennoprzecinkowych.

    > Ale na oko wygląda to tak, jakbym przy jednym wątku miał jeden procesor
    > wydany na 100%, a przy dwóch wątkach tak jakbym miał dwa procesory wydajne
    > na 50-80%. Oczywiście mowa o komputerze z jednym rdzeniem zawierającym HP.

    Poprostu algorytm ten z natury jest szeregowy. Podzial zadan na kilka
    watkow wymusza liczenie wiecej z tego powodu ze rdzen 2, 3, 4 musza
    zaczynac juz liczyc gdy nie ma jeszcze wynikow z rdzen 1, a te wyniki
    przyspieszyly by dalsze obliczenia. Spadek predkosci wynika z samego
    rozciecia szeregowych zaleznych od siebie obliczen na kilka grup nie
    zaleznych.


  • 8. Data: 2009-09-18 10:26:34
    Temat: Re: Hyper Threading
    Od: "Mariusz Marszałkowski" <b...@N...gazeta.pl>

    mgk <m...@w...pl> napisał(a):

    > Poprostu algorytm ten z natury jest szeregowy. Podzial zadan na kilka
    > watkow wymusza liczenie wiecej z tego powodu ze rdzen 2, 3, 4 musza
    > zaczynac juz liczyc gdy nie ma jeszcze wynikow z rdzen 1, a te wyniki
    > przyspieszyly by dalsze obliczenia. Spadek predkosci wynika z samego
    > rozciecia szeregowych zaleznych od siebie obliczen na kilka grup nie
    > zaleznych.

    Domyślam się, mój problem przy zrównoleglaniu ma podobne cechy

    Mogę zaproponować dwie rzeczy:

    1) Opracować lepszy algorytm:
    a) o mniejszej zlożoności algorytmicznej
    b) o mniejszym narzucie liniowym (lepiej zapisany)
    c) dający się lepiej zrównoleglać
    2) Program instalacyjny może uruchomić program na różnych ilościach
    wątków, zmierzyć czasy i zaproponować użytownikowi konfigurację,
    która działa najszybciej.

    Pozdrawiam

    P.S.

    Co oblicza ten algorytm?




    --
    Wysłano z serwisu Usenet w portalu Gazeta.pl -> http://www.gazeta.pl/usenet/


  • 9. Data: 2009-09-18 16:53:48
    Temat: Re: Hyper Threading
    Od: Wojciech Jaczewski <w...@o...pl>

    mgk wrote:

    >> Dowolne operacje przy HT wykonują się quasi-równolegle. Z grubsza
    >> intuicyjnie można to opisać tak, że procesor w kolejnych cyklach
    >> wykonuje na przemian instrukcje dwóch wątków, i są to zupełnie dowolne
    >> instrukcje.
    >
    > No tak, ale czy wykonywanie na przemian trwa 2 razy dluzej? :) czy
    > jest to rownolegle.

    Procesor ma - przykładowo - trzy jednostki obliczeń zmiennoprzecinkowych,
    trzy jednostki stałoprzecinkowych i kilka jednostek spełniających inne
    funkcje.
    Jeśli mamy na przykład fragment programu wykonujący obliczenia
    zmiennoprzecinkowe takie, że do wykonania kolejnej operacji potrzebny jest
    wynik poprzedniej, a jednocześnie nie ma w tej sekwencji skoków
    warunkowych, to taki wątek będzie w stanie dać zajęcie tylko jednej
    jednostce zmiennoprzecinkowej. Dwie pozostałe jednostki zmiennoprzecinkowe
    może wtedy wykorzystać drugi wątek.
    Podobnie będzie, jeśli się trafi, że jeden wątek akurat zapragnął wykonywać
    operacje zmiennoprzecinkowe, drugi - stałoprzecinkowe.

    Z kolei zmniejszanie wydajności wskutek HT wynika z tego, że każdy wątek
    potrzebuje korzystać z pamięci, często z całkowicie różnych obszarów. Poza
    tym, że daną przepustowość pamięci trzeba rozdzielić na dwa wątki, zwiększy
    się prawdopodobieństwo, że oczekiwany blok pamięci nie znajduje się w cache
    procesora.

    Nie wiem, czy istnieje jakakolwiek reguła pomagająca oszacować, na ile
    przyda się w danym wypadku HT. Niestety jak zwykle jedynie słuszną jest
    rada: zmierzyć.


  • 10. Data: 2009-09-18 16:56:56
    Temat: Re: Hyper Threading
    Od: Wojciech Jaczewski <w...@o...pl>

    Dorzucę jeszcze odnośnik do pewnego artykułu.
    W zasadzie od razu powinienem go dać, zamiast samemu próbować to wyjaśnić:

    http://arstechnica.com/old/content/2002/10/hyperthre
    ading.ars

strony : [ 1 ] . 2 . 3


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: