2016-04-04 31 views
6

Pracuję ze źródłami kompilatora gcc-4.7.4. Muszę się uczyć pracy z bibliotekami OpenMP i czytałem dokumentacje różnych wersji OpenMP i nie znalazłem żadnych informacji na temat mechanizmu kradzieży wok. Czy to prawda, że ​​OpenMP nie obsługuje mechanizmu kradzieży pracy?Czy OpenMP obsługuje mechanizm kradzieży pracy?

Odpowiedz

4

OpenMP bierze prawie całą odpowiedzialność za planowanie pracy z rąk programisty. Nie ma wyraźnego wsparcia dla kradzieży podczas pracy ani dla żadnej innej strategii planowania, pozwalającej określić sposób, w jaki pętle mają być dzielone między procesory.

Jednak wdrożenie OpenMP może skorzystać z kradzieży pracy. Podejście to byłoby całkowicie odpowiednie dla konstruktu jawnego task obsługiwanego przez OpenMP. Podobnie, wdrożenie może wybrać inne podejście do planowania.

Przeczytałem, że implementacja gcc używa kradzieży pracy, ale nie jest to coś, na co zaglądałem i mogę się mylić.

+3

Muszę przyznać, że nigdy wcześniej nie słyszałem o kradzieży pracy (https://en.wikipedia.org/wiki/Work_stealing). Byłoby miło opisać, co to jest i jak kontrastuje z dzieleniem się pracą. –

+1

Kradzież pracy brzmi trochę jak metoda oparta na stosie, którą użyłem [tutaj] (http://stackoverflow.com/questions/35675466/reductions-in-parallel-in-logarithmic-time). –

+0

@Zboson: cóż, artykuł w Wikipedii, do którego prowadzi link, zawiera ładne opisy, których szukasz. –