🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.c
16 messages
16 total messages Started by Borneq Fri, 12 Jan 2018 15:51
future i threads pools
#309591
Author: Borneq
Date: Fri, 12 Jan 2018 15:51
7 lines
1121 bytes
Jest co prawda w Google:
http://en.cppreference.com/w/cpp/thread/future
http://www.cplusplus.com/reference/future/future/

Ale są tam raczej szczegóły które można czytać gdy się mniej więcej wie 
co to jest. A jakby można to wytłumaczyć? Jaka różnica future i threads 
pools w porównaniu z wątkami?
Re: future i threads pools
#309592
Author: bartekltg
Date: Fri, 12 Jan 2018 16:34
25 lines
2334 bytes
On Friday, January 12, 2018 at 4:51:12 PM UTC+1, Borneq wrote:
> Jest co prawda w Google:
> http://en.cppreference.com/w/cpp/thread/future
> http://www.cplusplus.com/reference/future/future/
> 
> Ale są tam raczej szczegóły które można czytać gdy się mniej więcej wie 
> co to jest. A jakby można to wytłumaczyć? Jaka różnica future i threads 
> pools w porównaniu z wątkami?

-Gdzie tam widzisz poole?
-Wytłumaczyć co? Musizz dać nam konkretny problem;>
-Wątki sa 'niższego poziomu'. async/future to klocki, z których wygodnie
możesz _pewne_ rzeczy budować. 

Zerknij na to ;-)
https://www.youtube.com/watch?v=js-e8xAMd1s
[materiałow jest wiecej, szukaj po nazwisku].
W wielkim skrócie, odpalenie funkcji tworzy graf zależności (wykrzystując
m.in future) a potem jest od odpalany - jak dobrze pojdzie*) praktycznie
nie ma sytuacji, że masz nieobsadzone rdzenie. 

*) zalezy od problemu etc.

pzdr
bartekltg
Re: future i threads pools
#309593
Author: bartekltg
Date: Fri, 12 Jan 2018 16:35
32 lines
2593 bytes
On Friday, January 12, 2018 at 5:34:35 PM UTC+1, bartekltg wrote:
> On Friday, January 12, 2018 at 4:51:12 PM UTC+1, Borneq wrote:
> > Jest co prawda w Google:
> > http://en.cppreference.com/w/cpp/thread/future
> > http://www.cplusplus.com/reference/future/future/
> > 
> > Ale są tam raczej szczegóły które można czytać gdy się mniej więcej wie 
> > co to jest. A jakby można to wytłumaczyć? Jaka różnica future i threads 
> > pools w porównaniu z wątkami?
> 
> -Gdzie tam widzisz poole?
> -Wytłumaczyć co? Musizz dać nam konkretny problem;>
> -Wątki sa 'niższego poziomu'. async/future to klocki, z których wygodnie
> możesz _pewne_ rzeczy budować. 

Samy tytuł
https://www.youtube.com/watch?v=4OCUEgSNIAY
;-)


 
> Zerknij na to ;-)
> https://www.youtube.com/watch?v=js-e8xAMd1s
> [materiałow jest wiecej, szukaj po nazwisku].
> W wielkim skrócie, odpalenie funkcji tworzy graf zależności (wykrzystując
> m.in future) a potem jest od odpalany - jak dobrze pojdzie*) praktycznie
> nie ma sytuacji, że masz nieobsadzone rdzenie. 
> 
> *) zalezy od problemu etc.
> 
> pzdr
> bartekltg
Re: future i threads pools
#309606
Author: Sebastian Biały
Date: Fri, 12 Jan 2018 18:39
8 lines
1175 bytes
On 1/12/2018 4:51 PM, Borneq wrote:
> Jaka różnica future i threads 
> pools w porównaniu z wątkami?

Czas inicjacji. Z grubsza nowy watek wymaga allokacji stosu i kontekstu 
cpu. W przypadku thread poola to już jest gotowe.

Future może działa z poolami i bez. Bez wielkiego znaczenia koncepcyjnie.
Re: future i threads pools
#309594
Author: M.M.
Date: Fri, 12 Jan 2018 20:47
25 lines
2485 bytes
On Friday, January 12, 2018 at 5:35:29 PM UTC+1, bartekltg wrote:
> On Friday, January 12, 2018 at 5:34:35 PM UTC+1, bartekltg wrote:
> > On Friday, January 12, 2018 at 4:51:12 PM UTC+1, Borneq wrote:
> > > Jest co prawda w Google:
> > > http://en.cppreference.com/w/cpp/thread/future
> > > http://www.cplusplus.com/reference/future/future/
> > > 
> > > Ale są tam raczej szczegóły które można czytać gdy się mniej więcej wie 
> > > co to jest. A jakby można to wytłumaczyć? Jaka różnica future i threads 
> > > pools w porównaniu z wątkami?
> > 
> > -Gdzie tam widzisz poole?
> > -Wytłumaczyć co? Musizz dać nam konkretny problem;>
> > -Wątki sa 'niższego poziomu'. async/future to klocki, z których wygodnie
> > możesz _pewne_ rzeczy budować. 
> 
> Samy tytuł
> https://www.youtube.com/watch?v=4OCUEgSNIAY
> ;-)

Skoczyłem tylko do rezultatów, nie na razie godziny czasu aby obejrzeć
całość. Wygląda na to, że HPX Blocked wygrywa. Co takiego złego jest w
OpenMP?

Pozdrawiam
Re: future i threads pools
#309596
Author: Borneq
Date: Fri, 12 Jan 2018 21:42
8 lines
1320 bytes
W dniu 12.01.2018 o 17:34, bartekltg pisze:
> Zerknij na to ;-)
> https://www.youtube.com/watch?v=js-e8xAMd1s
> [materiałow jest wiecej, szukaj po nazwisku].

Słucham, mowa jest o tym że z punktu programisty używającego tego, jest 
podobne użycie jakby to było sekwencyjne a resztę załatwia mechanizm.
A gdzie to opisane? Najlepiej po polsku, może w jakiejś książce?
Re: future i threads pools
#309604
Author: Borneq
Date: Fri, 12 Jan 2018 21:44
10 lines
1476 bytes
W dniu 12.01.2018 o 17:34, bartekltg pisze:
> W wielkim skrócie, odpalenie funkcji tworzy graf zależności (wykrzystując
> m.in future) a potem jest od odpalany - jak dobrze pojdzie*) praktycznie
> nie ma sytuacji, że masz nieobsadzone rdzenie.

Future jest jakby wydajniejsze od zwykłych wątków? jeśli chodzi o 
rdzenie, bo jest jeszcze to że jak rozumiem możliwość bycia lżejszym, 
ale to już thread pools:
"Z grubsza nowy watek wymaga allokacji stosu i kontekstu cpu. W 
przypadku thread poola to już jest gotowe."
Re: future i threads pools
#309595
Author: bartekltg
Date: Fri, 12 Jan 2018 22:06
64 lines
4493 bytes
On Friday, January 12, 2018 at 9:47:21 PM UTC+1, M.M. wrote:
> On Friday, January 12, 2018 at 5:35:29 PM UTC+1, bartekltg wrote:
> > On Friday, January 12, 2018 at 5:34:35 PM UTC+1, bartekltg wrote:
> > > On Friday, January 12, 2018 at 4:51:12 PM UTC+1, Borneq wrote:
> > > > Jest co prawda w Google:
> > > > http://en.cppreference.com/w/cpp/thread/future
> > > > http://www.cplusplus.com/reference/future/future/
> > > > 
> > > > Ale są tam raczej szczegóły które można czytać gdy się mniej więcej wie 
> > > > co to jest. A jakby można to wytłumaczyć? Jaka różnica future i threads 
> > > > pools w porównaniu z wątkami?
> > > 
> > > -Gdzie tam widzisz poole?
> > > -Wytłumaczyć co? Musizz dać nam konkretny problem;>
> > > -Wątki sa 'niższego poziomu'. async/future to klocki, z których wygodnie
> > > możesz _pewne_ rzeczy budować. 
> > 
> > Samy tytuł
> > https://www.youtube.com/watch?v=4OCUEgSNIAY
> > ;-)
> 
> Skoczyłem tylko do rezultatów, nie na razie godziny czasu aby obejrzeć

Ogolnie polecam wyklady z cppcon. Też jeszcze nie nadrobilem, ale czasem 
do obiadu mozna sobie puścić. Tylko nie te trudneijsze, bo ciężko
się trawi;-)

> całość. Wygląda na to, że HPX Blocked wygrywa. Co takiego złego jest w
> OpenMP?

Złego nie ma nic. OpenMP jest dobre do zrobienia pętli. 
Jeśli zaczynasz dawać mu różna kawałki, działał (kiedyś, nie wiem jak
ostatnio) kiepsko - albo rozwijał tylko najwyzszy poziom urównoleglania,
albo wszystkie. 

I w sumie to samo daje async(co, co karmisz funkcją a  zwraca future do 
wyniku), o ile jedla zaimplementowały ładnie threadpoolem. 
Kiedyś był cilk/cilk plus, bardzo mim się koncepcja podobała,
ale projekt się zwija.

Numer z filmiku polega na zrobieniu kroku dalej. Pisząc z uzyciem
openMP/cilca/std::async często robisz tak, ze masz jednen "potok
tego, co sie dzieje", i co jakiś czas widzisz, że to zadanie jest
łatwo urównoleglalne, a te parę zadań można odpalić niezależnie...
Przed wyjściem z funkcji zbierasz wszystkie wyniki (masz barierę 
synchronizacji czy to przez odczytanie futurów, czy koniec obszaru
objętego pragmą openmp). Ale mozę dałoby się równolegle wykonać
coś więcej? Więc funkcja nie zwraca wyniku, jeśli go nie potrzebuje,
bo wtedy musiałaby zaczekać na niego, ale przekazuje euture dalej.

Więc na naszych 48 procesorach być może zamiast 60% czasu pracować 
na wszykich rdzeniach, będzie na wsztkich pracować 95% czasu. 

tl;dr: w opengl nie ma nic złego. Tylko nieraz chcemy móc robić 
więcej. Jeśli nie cehmy, nic nas do dziwnych bibliotek nie zmusza;-)
 

A, co do async vs wątki, warto wspomnieć do roznicy miedzy
"concurrency" a "parallelism". Do wspołbieżności wątki nadal 
są potrzebne. Masz wątek robiący coś i wątek robiący coś,
jakoś się tam komunikują. 

pzdr
bartekltg
Re: future i threads pools
#309597
Author: bartekltg
Date: Fri, 12 Jan 2018 22:21
44 lines
2798 bytes
On Friday, January 12, 2018 at 10:42:25 PM UTC+1, Borneq wrote:
> W dniu 12.01.2018 o 17:34, bartekltg pisze:
> > Zerknij na to ;-)
> > https://www.youtube.com/watch?v=js-e8xAMd1s
> > [materiałow jest wiecej, szukaj po nazwisku].
> 
> Słucham, mowa jest o tym że z punktu programisty używającego tego, jest 
> podobne użycie jakby to było sekwencyjne a resztę załatwia mechanizm.

Tak jak i zwykłe async i future. 

Robisz 
auto future_bla = async(std::launch::async,funkcja,[parametry]);
//robisz co innego
//byc moze odpalasz inne asyncy

 int bla = future_bla.get();
 //tutaj wynik funkcji jest potrzebny, jeśli się jeszcze nie wyliczył
//poczekamy na niego.

> A gdzie to opisane? 

https://stellar-group.github.io/hpx/docs/html/hpx.html

https://github.com/STEllAR-GROUP/hpx

> Najlepiej po polsku, 

To chyba byś musiał sam przetłumaczyć. 

> może w jakiejś książce?

To jest eksperymentalna biblioteka. Jeśli keidyś wejdzie do boosta albo
standardu, to może się w książkach znajdzie;-)

Na razie rozgryź to, co jest w biblitece standardowej.
Wpisując w google async future tutorial trochę znajdziesz. 
Nawet dokuentacja dla asynca z  cplusplus/cppreference ma
nienajgorsze przyklady. 

A, z tego towarzystwa jest jeszcze std::promise.  

pzdr
bartekltg
Re: future i threads pools
#309598
Author: Borneq
Date: Fri, 12 Jan 2018 22:32
12 lines
1434 bytes
W dniu 12.01.2018 o 23:21, bartekltg pisze:
> 
> To chyba byś musiał sam przetłumaczyć.
> 
>> może w jakiejś książce?
> 
> To jest eksperymentalna biblioteka. Jeśli keidyś wejdzie do boosta albo
> standardu, to może się w książkach znajdzie;-)

A https://pdf.helion.pl/cpbsp2/cpbsp2.pdf?
chyba kupię całą ksiąźkę.
Czy ten mechanizm jest nowszy i nie ma w tej książce o c++11?
Re: future i threads pools
#309605
Author: bartekltg
Date: Fri, 12 Jan 2018 22:49
26 lines
2559 bytes
On Friday, January 12, 2018 at 10:44:44 PM UTC+1, Borneq wrote:
> W dniu 12.01.2018 o 17:34, bartekltg pisze:
> > W wielkim skrócie, odpalenie funkcji tworzy graf zależności (wykrzystując
> > m.in future) a potem jest od odpalany - jak dobrze pojdzie*) praktycznie
> > nie ma sytuacji, że masz nieobsadzone rdzenie.
> 
> Future jest jakby wydajniejsze od zwykłych wątków? jeśli chodzi o 

Nie. Dlaczego miałby być. 
Nawet jak odpalasz nowy wątek, to prawdopodobnie go nie odpalasz,
tylko dostajesz z puli;>

Zaletą tech klocków jest to, że są wygodniejsze do pisania.

> rdzenie, bo jest jeszcze to że jak rozumiem możliwość bycia lżejszym, 
> ale to już thread pools:
> "Z grubsza nowy watek wymaga allokacji stosu i kontekstu cpu. W 
> przypadku thread poola to już jest gotowe."

I teraz pytanie, co tak naprawdę robi konstruktor std::thread
może odbiera coś z puli? ;> I czy async na pewno jest zaimplementowany
z pulą, Testy z filmiku sugerowały malutki narzut, wiec chyba tak
ale potwierdzenia na szybko nie znalazłem.

pzdr
bartekltg
Re: future i threads pools
#309599
Author: bartekltg
Date: Fri, 12 Jan 2018 22:53
24 lines
2404 bytes
On Friday, January 12, 2018 at 11:32:37 PM UTC+1, Borneq wrote:
> W dniu 12.01.2018 o 23:21, bartekltg pisze:
> > 
> > To chyba byś musiał sam przetłumaczyć.
> > 
> >> może w jakiejś książce?
> > 
> > To jest eksperymentalna biblioteka. Jeśli keidyś wejdzie do boosta albo
> > standardu, to może się w książkach znajdzie;-)
> 
> A https://pdf.helion.pl/cpbsp2/cpbsp2.pdf?
> chyba kupię całą ksiąźkę.
> Czy ten mechanizm jest nowszy i nie ma w tej książce o c++11?

Nie czytałem, wiec o książce się nie wypowiem.

async/future/promise w książkach o c++11 będzie, bo są one
z c++11. Co masz napisane na cpprefereence i podobnych stronach.

Pytałes o książkę cutując i gadając o bibliotece HPX, która
 jest rozwinięicem tych pomysłow, i do niej ksiazki nie raczej nie ma.

pzdr
bartekltg
Re: future i threads pools
#309603
Author: Borneq
Date: Fri, 12 Jan 2018 22:59
7 lines
1328 bytes
W dniu 12.01.2018 o 23:32, Borneq pisze:
> A https://pdf.helion.pl/cpbsp2/cpbsp2.pdf?
> chyba kupię całą ksiąźkę.
> Czy ten mechanizm jest nowszy i nie ma w tej książce o c++11?

Chodziło mi bardziej o podstawowe mechanizmy, które były już w c++11 i 
są w tej książce.
Re: future i threads pools
#309600
Author: Borneq
Date: Fri, 12 Jan 2018 23:02
12 lines
1669 bytes
W dniu 12.01.2018 o 23:53, bartekltg pisze:
> async/future/promise w książkach o c++11 będzie, bo są one
> z c++11. Co masz napisane na cpprefereence i podobnych stronach.
> 
> Pytałes o książkę cutując i gadając o bibliotece HPX, która
>   jest rozwinięicem tych pomysłow, i do niej ksiazki nie raczej nie ma.

Wcześniej nie używałem async/future/promise tylko zwykłych wątków 
standardowych i obudowywane pthreads. Z powodu nieznajomości mogłem 
pomylić z HPX ale najpierw przyjrzę się tym standardowym.

Pozdrawiam
Re: future i threads pools
#309601
Author: Borneq
Date: Fri, 12 Jan 2018 23:04
7 lines
1471 bytes
W dniu 12.01.2018 o 23:53, bartekltg pisze:
> Pytałes o książkę cutując i gadając o bibliotece HPX, która
>   jest rozwinięicem tych pomysłow, i do niej ksiazki nie raczej nie ma.

może poczekam jak będzie w boostcie albo w standardzie
rozumiem że ta z HPX jest bardziej wydajna niż ta z c++11 jeśli chodzi o 
wielordzeniowe procesory?
Re: future i threads pools
#309602
Author: bartekltg
Date: Sat, 13 Jan 2018 02:58
36 lines
3088 bytes
On Saturday, January 13, 2018 at 12:04:49 AM UTC+1, Borneq wrote:
> W dniu 12.01.2018 o 23:53, bartekltg pisze:
> > Pytałes o książkę cutując i gadając o bibliotece HPX, która
> >   jest rozwinięicem tych pomysłow, i do niej ksiazki nie raczej nie ma.
> 
> może poczekam jak będzie w boostcie albo w standardzie


Ja naprawdę mam wątpliwości, czy rozumiesz, co do Ciebie piszę. 

async/future/... są w standardzie od 11 i to nimi doradzałem 
Ci się zajać, przynajmniej na początek. 

> rozumiem że ta z HPX jest bardziej wydajna niż ta z c++11 jeśli chodzi o 
> wielordzeniowe procesory?

Może, bo ma własną implementację async i na pewno zoptymalizowany
pulę wątków. Ale nie mosi, bo std::async też może byc znośnie napisane.
Nie to jest zaletą tej biblioteczki. To kobyła do HPC. Dokumentacja
nie zaczyna się od jak uruchomić, ale jak wpleśc to w popularne
menadzery zadań na superkomputerach. 

Niezależnie od tego, że biblioteka wielka, technika ciekawa i być może
_cześć_ (operacja na future) jej wejdzie do standardu. Ale nie za szybko,
jedyne co widzę w c++20 o wykonaniu r.ownoległym to to:

http://www.modernescpp.com/index.php/task-blocks

I gdzieś tam w oddali
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3562.pdf 
http://open-std.org/JTC1/SC22/WG21/docs/papers/2017/p0443r1.html

Hmm, trochę sie w temacie dzieje. 

pzdr
bartekltg
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