Multiprocesorove programovani – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Multiprocesorove programovani – C / C++ – Fórum – Programujte.comMultiprocesorove programovani – C / C++ – Fórum – Programujte.com

 

_Radek_
~ Anonymní uživatel
88 příspěvků
21. 5. 2010   #1
-
0
-

Zdravim,
nevim jestli je tento dotaz uplne vhodny do teto kategorie, ale nevedel jsem kam ho jinam umistit.
Mam otazku ohledne programovani pro vice jadrove systemy. Pokud mam napriklad vice jadrovy procesor, OS bere kazde jadro jako jeden procesor (zjednodusene receno), spravne ? A z C++ vim, ze lze v ramci aplikace vytvorit vice vlaken. Temto OS automaticky prirazuje procesorovy cas, a pokud to OS podporuje, sam i priradi ve kterem jadre vlakno nebo program spusti. Takze ja jako programator se nemuzu postarat, ve kterem jadre aplikace pobezi. Chapu to spravne ?

Ve skole nam ucitel tvrdil, dnesni aplikace nedokazi vyuzit kapacitu vicejadrovych procesoru. Myslel to v tom duchu, ze ja jako programator aplikace se musim postarat sam, aby aplikace bezeli na vice jadrech.

Pripada mi to cele zmatene, tak jestli mi to muze nekdo jednoduse vysvetlit bude velice vdecny :-), Diky

Nahlásit jako SPAM
IP: 91.187.60.–
yaqwsx+9
Posthunter
21. 5. 2010   #2
-
0
-

Nejsem přes tuto oblast odborník, ale "problém" vidím v tom, že programátor udělá aplikaci jednovláknovou - tzn. že OS nemůže rozdělit běh aplikace mezi 2 jádra.
Pro ověření této teorie jsme si zkusil vytvořit jednoduchý program, který jenom provádí 2 nesmyslné výpočty (tak aby co nejvíce vytěžoval procesor). První program jsme udělal jednovláknový, druhý jsme rozdělil do 2 vláken (v každém vláknu sólo výpočet). Poté jsme ve správci úloh sledoval vytížení procesoru. První program vytěžoval procesor na 50 % (jedno jádro), druhý na 78 % (2 jádra počítají).

Nahlásit jako SPAM
IP: 85.160.106.–
Life is too short to remove USB mass storage safely...
Správný drsňák udělá z konzole cokoliv
ondra.holub
~ Anonymní uživatel
255 příspěvků
21. 5. 2010   #3
-
0
-

Důležité je také řešit takový problém, který lze paralelizovat. Pokud se jedná o nějaký z principu sekvenční problém, tak nepomůže ani stojádrový procesor. Pokud se jedná o drobné neparalelizovatelné úlohy, kterých je větší množství, je obvykle jednodušší nechat dílčí úlohy jednovláknové a spouštět jich více najednou. Prostě něco na způsob

make -j 4
. Takže pokud například překódovávám 20 WAVů do MP3 a mám dvoujádrový procesor, je dobré spouštět aspoň dvě úlohy paraleleně. U překladu větších projektů se někde doporučovalo překládání v N+1 paralelních větvích, kde N je počet procesorů/jader. To +1 bylo z důvodu, že při čtení z disku může běžet i jiná aplikace a není nutné, aby ta čtoucí zablokovala celý procesor (ano, jsou OS, kde to takto skutečně funguje).

Pokud je zpracovávána nějaká úloha skutečně vícevláknově, je třeba si dát velký pozor na správnou synchronizaci a zároveň tu synchronizaci udělat tak, aby zůstal čas i na vlastní výpočet (aby se prostě jenom nesychronizovalo). Napsat a odladit takovou aplikaci je mnohem komplikovanější než napsat jednovláknovou. Chybu dost často není možné najít jinak, než čtením a analyzováním kódu. Chce to dost kázně.

Jinak si myslím, že v dnešní době už přibývá aplikací, které umějí více procesorů využít - např. střižny videa, různé překódovávače (tam se to vyloženě nabízí), programy na řešení velkých soustav rovnic apod.

Nahlásit jako SPAM
IP: 194.138.12.–
liborb
~ Redaktor
+18
Guru
21. 5. 2010   #4
-
0
-

Problém je také v tom, že naplánovat rozvržení běžících procesů (v OS) na jednotlivé procesory je značně komplikovaná úloha, která by sama o sobě dokázala jeden z nich plně vytížit :-). Co se týká matematických výpočtů, tak tam asi problém není. V "normálních" programech se ovšem něco sdílí, takže občas musí někdo na někoho čekat atd. Což jsou potencionální zdroje problémů. Vůbec to není tak snadné, jak by se mohlo na první pohled zdát. A pokud vím, tak to nikdo neumí optimálně pro obecnou sadu úloh. Možná to měl váš učitel na mysli.

Nahlásit jako SPAM
IP: 195.189.143.–
liborb
~ Redaktor
+18
Guru
21. 5. 2010   #5
-
0
-

Problém je také v tom, že naplánovat rozvržení běžících procesů (v OS) na jednotlivé procesory je značně komplikovaná úloha, která by sama o sobě dokázala jeden z nich plně vytížit :-). Co se týká matematických výpočtů, tak tam asi problém není. V "normálních" programech se ovšem něco sdílí, takže občas musí někdo na někoho čekat atd. Což jsou potencionální zdroje problémů. Vůbec to není tak snadné, jak by se mohlo na první pohled zdát. A pokud vím, tak to nikdo neumí optimálně pro obecnou sadu úloh. Možná to měl váš učitel na mysli.

Nahlásit jako SPAM
IP: 195.189.143.–
_Radek_
~ Anonymní uživatel
88 příspěvků
21. 5. 2010   #6
-
0
-

Jo diky moc. Jeste se zeptam, pokud bych mel, ale spustene pouze jednovlaknove aplikace, OS kazdou priradi do jineho jadra, takze porad dojde k nejakemu celkovemu zrychleni, nez pokud bych mel pouze jednojadrovy procesor, spravne ?

Nahlásit jako SPAM
IP: 91.187.60.–
ondra.holub+1
Stálý člen
21. 5. 2010   #7
-
0
-

To _Radek_ : Ano, tak by to mělo fungovat.

Nahlásit jako SPAM
IP: 89.203.160.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 118 hostů

Podobná vlákna

Programovani C — založil XxX

C# - programovani — založil Siembra

Programovani C++ — založil jonny

Programovani za FO — založil abcdefg

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý