Open MP - paralelizace cyklu for – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Open MP - paralelizace cyklu for – C / C++ – Fórum – Programujte.comOpen MP - paralelizace cyklu for – C / C++ – Fórum – Programujte.com

 

Štěpán
~ Anonymní uživatel
126 příspěvků
4. 4. 2013   #1
-
0
-

Ahoj,

používáte někdo tento nástroj? Mohli byste mě nasměrovat, na co se kouknout, nějakou jednoduchou dobrou dokumentaci, příklady? Poradit, co nastavit v nastavení projektu a tak? Používám Visual C++ 2010 teprve 1 den, Open MP jsem nikdy dřív nepoužil, tak moc nevím. Zatím jsem se koukal jen na wikipedii, co tam o open mp je, nějaké základy tam jsou, ale nikdy jsem pro víc jader neprogramoval, tak všemu úplně nerozumím.

Úkol je cyklus for rozházet mezi maximální počet jader CPU, prvky cyklu jsou na sobě nezávislé, je jich několik milionů a jejich průchod je vždy dosti podobný. Jedno jádro řeší cca 25 000 cyklů za sekundu, výpočet uvnitř je tedy dostatečně složitý. Pro výpočet se používají (na čtení, nikoliv na zápis) pole, která budou pro jádra společná.

1. Jestli jsem to dobře pochopil, klidně i všechna jádra mohou ve stejnou dobu číst na stejném místě v paměti, je to pravda?

2. Vytvoří si při použití #pragma omp parallel for každé vlákno své proměnné (definované uvnitř cyklu)?

3. Zápis výsledku bude velmi rychlý, bude se jednat o méně než 1% celkové časové složitosti cyklu. Ukládám do velkého pole společného pro všechna vlákna a existuje šance, že by se zde vlákna mohla při zápisu setkat. Jak zařídit, aby se toto nemohlo stát?

4. Rád bych umožnil uživateli výpočet zrušit za běhu a chci jej informovat o průběhu, můžete jen naznačit logiku, jak se toto řeší?

Díky a sorry za wall of text  

Nahlásit jako SPAM
IP: 88.100.48.–
KIIV
~ Moderátor
+43
God of flame
4. 4. 2013   #2
-
0
-

ja to resil jako frontu pozadavku (zalezi co tomu potrebujes podhodit za data)... fronta se zamkne, jedno vlakno si veme pozadavek (nebo klidne i nekolik do zasoby) a pak se odemkne a pozadavky se zacnou zpracovavat... jak skonci zpracovani tak se zase zamkne, nacte pozadavek/pozadavky a odemkne fronta...

a pak uz jen zalezi co se ma s vysledky dit.. jestli se zase budou ukladat do fronty, nebo se pocita nejakej souhrn (to pak muze mit to vlakno v sobe a po skonceni jen vrati hodnotu)

(jen to nebylo v open MP ale v normalnich posix threadech)

Nahlásit jako SPAM
IP: 62.168.56.–
Program vždy dělá to co naprogramujete, ne to co chcete...
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, 27 hostů

Podobná vlákna

Open — založil paking

Vysvětlení cyklu — založil Jarda

Vysvětlení cyklu for — založil Thalorn

FOR - proměnné v cyklu — založil Michael

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ý