-
1. Data: 2012-12-22 18:34:02
Temat: Wielordzeniowość na poziomie instrukcji
Od: "Borneq" <b...@a...hidden.pl>
Mając dwu lub więcej rdzeniowy procesor, można puścić jeden wątek na jednym
rdzeniu a drugi na drugim. A czy jest możliwość działania na rdzeniach nie z
poziomu wątku a instrukcji? Przełączanie wątków odbywa się z częstotliwością
1/64 sekundy a przypuśćmy że mamy operację trwającą jedną stutysięczną
sekundy, chcę puścić dwie na dwóch wątkach bo z jej wyników korzyta następna
operacja i wszystko się powtarza milion razy?
-
2. Data: 2012-12-22 20:31:06
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: firr kenobi <p...@g...com>
W dniu sobota, 22 grudnia 2012 18:34:02 UTC+1 użytkownik Borneq napisał:
> Mając dwu lub więcej rdzeniowy procesor, można puścić jeden wątek na jednym
>
> rdzeniu a drugi na drugim. A czy jest możliwość działania na rdzeniach nie z
>
> poziomu wątku a instrukcji? Przełączanie wątków odbywa się z częstotliwością
>
> 1/64 sekundy a przypuśćmy że mamy operację trwającą jedną stutysięczną
>
> sekundy, chcę puścić dwie na dwóch wątkach bo z jej wyników korzyta następna
>
> operacja i wszystko się powtarza milion razy?
koszt przelaczania jest raczej zbyt duzy (sa w sumie pewnie dwa koszty, koszt
proesora i koszt systemu, dokladnie nie wiem ile a tez chcialbym wiedziec) - w sumie
mozna by to jednak minimalizowac, i mozna sobie wyobrazis pewnie nawet rozszczepialny
rdzen, tj taki ktory wykonuje na roznych podrdzeniach ten sam kod w c/amie (daletego
zeby kontekst byl ten sam bo zdaje sie ze przy takich drobnych operacjach nie tylko w
rozpedzaniu problem ale i kontekst programu musialby byc podobny *) po czym
rozszczepia sie na 17 podrdzeni, ktore po robocie znowu sie zbiegają - jest b duzo
mozliwych opcji
8 ale moze i nie bo wtedy trzebaby to synchronizowac itd, a jakie konkretnie
operacje? (mowisz w kazdym razie o tym
co ja nazywam zrownoleglaniem w sredniej
skali 0 w miare ciekaw rzecz)
-
3. Data: 2012-12-22 21:34:04
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: "Grzegorz Niemirowski" <g...@p...onet.pl>
Borneq <b...@a...hidden.pl> napisał(a):
> Mając dwu lub więcej rdzeniowy procesor, można puścić jeden wątek na
> jednym rdzeniu a drugi na drugim. A czy jest możliwość działania na
> rdzeniach nie z poziomu wątku a instrukcji? Przełączanie wątków odbywa
> się z częstotliwością 1/64 sekundy a przypuśćmy że mamy operację
> trwającą jedną stutysięczną sekundy, chcę puścić dwie na dwóch wątkach
> bo z jej wyników korzyta następna operacja i wszystko się powtarza
> milion razy?
A po co właściwie chcesz przełączać te wątki? Masz za mało rdzeni? Nie
mylisz przełączania z synchronizacją?
--
Grzegorz Niemirowski
http://www.grzegorz.net/
OE PowerTool i Outlook Express: http://www.grzegorz.net/oe/
Uptime: 0 days, 10 hours, 32 minutes and 21 seconds
-
4. Data: 2012-12-22 22:02:06
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: "Borneq" <b...@a...hidden.pl>
Użytkownik "Grzegorz Niemirowski" <g...@p...onet.pl> napisał w
wiadomości news:kb55gr$k8d$1@news.icpnet.pl...
> A po co właściwie chcesz przełączać te wątki? Masz za mało rdzeni? Nie
> mylisz przełączania z synchronizacją?
Bez przełączania wątków, coś w rodzaju
mov eax,1[rdzen 0] mov ebx,2[rdzen 1]
ale chyba lepszym rozwiązaniem jest C++ Accelerated Massive Parallelism
http://msdn.microsoft.com/en-us/library/hh265136.asp
x
Działa na kartach graficznych, nie wiem czy pójdzie na zwykłym procesorze,
wolniej ale czy można tworzyć na zwykłym. To interesujące bo mam już Windows
8 i trochę działałem z Visual Studio 2012.
-
5. Data: 2012-12-22 22:06:56
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: "Borneq" <b...@a...hidden.pl>
Użytkownik "Borneq" <b...@a...hidden.pl> napisał w wiadomości
news:kb4qu1$99t$1@node2.news.atman.pl...
> 1/64 sekundy a przypuśćmy że mamy operację trwającą jedną stutysięczną
> sekundy, chcę puścić dwie na dwóch wątkach bo z jej wyników korzyta
> następna
Pomyłka, powinno byc "na dwóch rdzeniach" zamiast " na dwóch wątkach "
-
6. Data: 2012-12-23 00:19:07
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: e...@g...com
W dniu sobota, 22 grudnia 2012 22:02:06 UTC+1 użytkownik Borneq napisał:
> Użytkownik "Grzegorz Niemirowski" <g...@p...onet.pl> napisał w
> wiadomości news:kb55gr$k8d$1@news.icpnet.pl...
> > A po co właściwie chcesz przełączać te wątki? Masz za mało rdzeni? Nie
> > mylisz przełączania z synchronizacją?
> Bez przełączania wątków, coś w rodzaju
> mov eax,1[rdzen 0] mov ebx,2[rdzen 1]
> ale chyba lepszym rozwiązaniem jest C++ Accelerated Massive Parallelism
> http://msdn.microsoft.com/en-us/library/hh265136.asp
x
>
> Działa na kartach graficznych, nie wiem czy pójdzie na zwykłym procesorze,
> wolniej ale czy można tworzyć na zwykłym. To interesujące bo mam już Windows
> 8 i trochę działałem z Visual Studio 2012.
To ze masz Win 8 to dobrze, ale co do reszty to wypadaloby sie zorientowac
z grubsza, jak to dziala. Na razie wychodzi temat w sam raz dla profesura.
--
Edek
-
7. Data: 2012-12-23 12:01:31
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: Sebastian Biały <h...@p...onet.pl>
On 2012-12-22 18:34, Borneq wrote:
> chcę puścić dwie na dwóch wątkach
> bo z jej wyników korzyta następna operacja
Poczytaj:
http://en.wikipedia.org/wiki/Fiber_(computer_science
)
Ponadto niewiele wiadomo o problemie, ale możliwe że bedziesz musiał
wykonac własny pseud-scheduler, ponieważ "dużo krótkich operacji
zależnych od poprzednich" brzmi bardziej jak zadanie dla cooperative
multitaskingu. Ponadto jest te dupereliki nie wykonuja żadnego wait() a
jedynie np. liczą i zwracają wynik to sens ich wywłaszczania/inicjacji i
synchronizacji jest niewielki skoro da się to zrobić o poziom abstrakcji
wyżej (np. sortują topologicznie drzewo zależności i szukając
równoległych ścieżek).
-
8. Data: 2012-12-23 18:57:36
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: firr kenobi <p...@g...com>
W dniu niedziela, 23 grudnia 2012 00:19:07 UTC+1 użytkownik e...@g...com
napisał:
> W dniu sobota, 22 grudnia 2012 22:02:06 UTC+1 użytkownik Borneq napisał:
>
> > Użytkownik "Grzegorz Niemirowski" <g...@p...onet.pl> napisał w
>
> > wiadomości news:kb55gr$k8d$1@news.icpnet.pl...
>
> > > A po co właściwie chcesz przełączać te wątki? Masz za mało rdzeni? Nie
>
> > > mylisz przełączania z synchronizacją?
>
> > Bez przełączania wątków, coś w rodzaju
>
> > mov eax,1[rdzen 0] mov ebx,2[rdzen 1]
>
> > ale chyba lepszym rozwiązaniem jest C++ Accelerated Massive Parallelism
>
> > http://msdn.microsoft.com/en-us/library/hh265136.asp
x
>
> >
>
> > Działa na kartach graficznych, nie wiem czy pójdzie na zwykłym procesorze,
>
> > wolniej ale czy można tworzyć na zwykłym. To interesujące bo mam już Windows
>
> > 8 i trochę działałem z Visual Studio 2012.
>
>
>
> To ze masz Win 8 to dobrze, ale co do reszty to wypadaloby sie zorientowac
>
> z grubsza, jak to dziala. Na razie wychodzi temat w sam raz dla profesura.
>
merry Xmas głąbie, nie zaniżaj poziomu (pisze program i nie mam czasu znowu obracac w
kolko rozmaitych głupawych bezsensów ) :O (ostatnio nuda i forma słaba)
-
9. Data: 2012-12-25 13:47:08
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: firr kenobi <p...@g...com>
>
> merry Xmas głąbie, nie zaniżaj poziomu (pisze program i nie mam czasu znowu obracac
w kolko rozmaitych głupawych bezsensów ) :O (ostatnio nuda i forma słaba)
(głabie bylo tu uzyte niejako w cudzyslowie,
(z naciskiem na merry krismas) jako nawolywanie do podwyzszenia poziomu mentalnego -
ostatnio ta grupa mz przezywa pewien kryzys (a i ja sam czuje nieco plonną potrzebe
by troche zmadrzec) ale poczeka sie troche to pewnie wydobrzeje (/AWAY)
-
10. Data: 2012-12-26 00:19:02
Temat: Re: Wielordzeniowość na poziomie instrukcji
Od: Michoo <m...@v...pl>
On 22.12.2012 18:34, Borneq wrote:
> Mając dwu lub więcej rdzeniowy procesor, można puścić jeden wątek na
> jednym rdzeniu a drugi na drugim. A czy jest możliwość działania na
> rdzeniach nie z poziomu wątku a instrukcji? Przełączanie wątków odbywa
> się z częstotliwością 1/64 sekundy a przypuśćmy że mamy operację
> trwającą jedną stutysięczną sekundy, chcę puścić dwie na dwóch wątkach
> bo z jej wyników korzyta następna operacja i wszystko się powtarza
> milion razy?
Czego teraz uczą na studiach? Toż to podstawy...
Masz jak rozumiem trzy operacje:
a,b,c
c wymaga wyniku a i b
O ile tylko nie potrzebujesz odpowiedzi RT to grupujesz operacje a,b i c
w bloki i wykonujesz hurtem (to jest celowe choćby ze względu na
optymalizację cache czy użycie pipeline już na jednym wątku). A że
chcesz użyć wątki:
wątek a (producent)
wątek b (producent)
wątek c (konsument)
Dobierasz tylko rozmiar bloku (synchronizacja kosztuje) zależnie od tego
czy optymalizujesz całkowitą przepustowość, czas odpowiedzi, pamięć czy
coś innego.
--
Pozdrawiam
Michoo