2016-04-11 1 views
-2

Я должен узнать OpenMP источников на gcc. Я прочитал документацию OpenMP (3.0 и 4.0). Как я знаю, OpenMP использовал механизм work-sharing. Как я понимаю, механизм work-sharing передает задачи между потоками , в то время как потоки запущены. Или выполняется ли распределение данных между потоками перед выполнением этих потоков?Предоставляет ли механизм совместного использования (в OpenMP) задачи между потоками, когда потоки WHILE выполняются?

+0

Изучение [осуществления совместного использования может научить вас многому) (http://stackoverflow.com/a/30591616/2542702). –

ответ

1

Если вы используете OpenMP с задачами, задачи хранятся в одной или нескольких очередях задач. Если поток находится в режиме ожидания, он будет отслеживать задачи из соседней очереди. Это внутреннее значение libgomp.

Если вы используете OpenMP параллельно для со статическим расписанием, никакая задача не будет отслеживаться.

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

В общем случае, когда потоки должны взаимодействовать во время выполнения, циклы проводятся от обработки.

+0

Огромное спасибо! –

Смежные вопросы