Как мне найти реализации "Параллельно для"? - PullRequest
0 голосов
/ 03 февраля 2011

Я бы хотел точно знать, что происходит с omp parallel for и другими подобными конструкциями. Как мне найти, как они реализованы? Краткое резюме кого-то, кто знает об этом, было бы здорово. Благодаря.

Ответы [ 3 ]

3 голосов
/ 03 февраля 2011

Open MP - это всего лишь спецификация, то, как поставщик решит реализовать ее, зависит от них.Это говорит о том, что библиотеки, используемые GCC, имеют открытый исходный код, так же как и строительные блоки Intels Thread, для которых есть параллель, но не в качестве прагмы, но ее реализация - то, что вам нужно после

0 голосов
/ 05 февраля 2011

Как вы знаете, OpenMP реализован внутри компилятора, потому что он преобразует код и генерирует распараллеленный код.Если вы хотите узнать, как работает внутренняя реализация, прочитайте эту статью , в которой подробно объясняется реализация OpenMP компилятором Intel.

Конечно, вы можете просмотреть реализацию OpenMP gcc, такую ​​как omp-low.c в libgomp.

0 голосов
/ 03 февраля 2011

http://www.compunity.org/futures/omp-api.html

Рассмотрим простую программу OpenMP с основной программой, вызывающей функцию foo, содержащую одну параллельную конструкцию OpenMP, выполняющуюся с четырьмя потоками.Перед первым входом в параллельную область программа имеет только один поток, главный поток, и этот поток имеет одинаковый стек вызовов как в модели пользователя, так и в модели реализации:

Master
foo
main
<start>

После входа в параллельную область существует четыре потока, а в пользовательской модели их стеки вызовов будут выглядеть так:

Master     Slave 1    Slave 2     Slave 3
foo-OMPa   foo-OMPa   foo-OMPa    foo-OMPa
foo        foo        foo         foo
main       main       main        main
<start>    <start>    <start>     <start>
...