eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › zapytanie o thready
Ilość wypowiedzi w tym wątku: 12

  • 11. Data: 2021-01-06 16:38:14
    Temat: Re: zapytanie o thready
    Od: fir <p...@g...com>

    środa, 6 stycznia 2021 o 16:29:44 UTC+1 fir napisał(a):
    > środa, 6 stycznia 2021 o 16:06:52 UTC+1 heby napisał(a):
    > > On 06/01/2021 15:41, fir wrote:
    > > > ze mozna synchronizowac watki nawet bez atomikow
    > > W ogómym przypadku to nie jest skuteczne. W przypadku architektury x86
    > > może być czasem możliwe.
    > >
    > > W bardzo ogólnym wypadku wymagany jest choć fence, który trzeba jawnie
    > > uzyć w kodzie programu. Taki mechanizm w CPU który zapewnia
    > > synchronizację dostępu do pamięci między różnymi rdzeniami i cache.
    > >
    > > Tak więc ogólnie rzecz biorąc nie da się zrobić sensownej synchronizacji
    > > tylko na spilockach bo to zależy na czym to ma pracować. Zwyczajowo w
    > > świecie wielordzeniowym trzeba się badziej postarać niż while(!flag) { }.
    > while z pust apetla bym nei uzyl ale ze sleepem 2-3 milisekundy nie wydaje mi sie
    juz tak glupie..ogolne programowanie tez mnie nie kreci bo ogolne programowanie to
    zle porogramowanie bo w ogolnosci nie dziala optymalnie na specyficznych maszynach ;c

    >
    > schemat btw raczej jaki wymodzilem byl raczej taki
    >
    > int ready = 0;
    > do
    > {
    > while(current<ready) { sleep(2); }
    > do_work();
    > ready++;
    > } whie(1);
    >
    > cos w tym stylu, robota dzielona na porcje numerowane liczba naturalna, current
    zaczyna sie od -1,
    > boczne watki czekaja na sleepach; glowny thread robi current++ do 0 wati ruszaja az
    ustawia ready na 1
    > glowny watek sprawdza czy wszystkie maja ready wieksze niz current jesli tak
    popycha current itd
    >
    > w moim przekonaniu to raczej chyba powinno dzialac

    przez powinno mam na mysli ze odpalilem to i dzialalo (ale nie ejestem pewien czy
    nei przegapilem jakichs wzglednych subtelnosci), current to oczywoscie odpowiada
    numerowi ramki obrazu w symulacji ktora dzialac ma na okolo 50-120 fps na jednym
    watku zajmowala ok 30 ms na ramke wiec w optymalnym podziale roboty powinno wyjsc po
    15 ms na rdzen na dwurdzeniaku... nie mierzylem czasu tylko patrzylem na oko czy jest
    szybciej i wylogowalem tez stany tych ready i current do loga textowego i na oko
    wygladalo ok

    aczkolwiek zawsze jak ktos wie co tu sie moze realnie chcrzaic to wiedza o detalach
    mile widziana

    (fir)


  • 12. Data: 2021-02-07 12:53:05
    Temat: Re: zapytanie o thready
    Od: "M.M." <m...@g...com>

    On Wednesday, January 6, 2021 at 4:38:15 PM UTC+1, fir wrote:
    > środa, 6 stycznia 2021 o 16:29:44 UTC+1 fir napisał(a):
    > > środa, 6 stycznia 2021 o 16:06:52 UTC+1 heby napisał(a):
    > > > On 06/01/2021 15:41, fir wrote:
    > > > > ze mozna synchronizowac watki nawet bez atomikow
    > > > W ogómym przypadku to nie jest skuteczne. W przypadku architektury x86
    > > > może być czasem możliwe.
    > > >
    > > > W bardzo ogólnym wypadku wymagany jest choć fence, który trzeba jawnie
    > > > uzyć w kodzie programu. Taki mechanizm w CPU który zapewnia
    > > > synchronizację dostępu do pamięci między różnymi rdzeniami i cache.
    > > >
    > > > Tak więc ogólnie rzecz biorąc nie da się zrobić sensownej synchronizacji
    > > > tylko na spilockach bo to zależy na czym to ma pracować. Zwyczajowo w
    > > > świecie wielordzeniowym trzeba się badziej postarać niż while(!flag) { }.
    > > while z pust apetla bym nei uzyl ale ze sleepem 2-3 milisekundy nie wydaje mi sie
    juz tak glupie..ogolne programowanie tez mnie nie kreci bo ogolne programowanie to
    zle porogramowanie bo w ogolnosci nie dziala optymalnie na specyficznych maszynach ;c

    > >
    > > schemat btw raczej jaki wymodzilem byl raczej taki
    > >
    > > int ready = 0;
    > > do
    > > {
    > > while(current<ready) { sleep(2); }
    > > do_work();
    > > ready++;
    > > } whie(1);
    > >
    > > cos w tym stylu, robota dzielona na porcje numerowane liczba naturalna, current
    zaczyna sie od -1,
    > > boczne watki czekaja na sleepach; glowny thread robi current++ do 0 wati ruszaja
    az ustawia ready na 1
    > > glowny watek sprawdza czy wszystkie maja ready wieksze niz current jesli tak
    popycha current itd
    > >
    > > w moim przekonaniu to raczej chyba powinno dzialac
    > przez powinno mam na mysli ze odpalilem to i dzialalo (ale nie ejestem pewien czy
    nei przegapilem jakichs wzglednych subtelnosci), current to oczywoscie odpowiada
    numerowi ramki obrazu w symulacji ktora dzialac ma na okolo 50-120 fps na jednym
    watku zajmowala ok 30 ms na ramke wiec w optymalnym podziale roboty powinno wyjsc po
    15 ms na rdzen na dwurdzeniaku... nie mierzylem czasu tylko patrzylem na oko czy jest
    szybciej i wylogowalem tez stany tych ready i current do loga textowego i na oko
    wygladalo ok
    >
    > aczkolwiek zawsze jak ktos wie co tu sie moze realnie chcrzaic to wiedza o detalach
    mile widziana
    >
    > (fir)

    A jakby użyć OpenCL?

    Pozdrawiam

strony : 1 . [ 2 ]


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: