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