OpenMP.ru

Archive for Ноябрь, 2014

Shared или private, три простых правила

by on Ноя.16, 2014, under Распараллеливание

В Openmp параллелизация подкупает своей простотой. Добавил прагму к циклу и хоп — я знаю кунг-фу. Тем не менее такое отношение частенько приводит к разнообразным ошибкам обращения к одной и той же переменной.
В OpenMP есть два основных класса переменных — shared и private. Shared переменная общая между потоками, хранится в обычной памяти процесса (стек или хип) и ничего не стоит. Private переменная для каждого OpenMP потока своя и хранится в TLS — специальном месте, уникальном для каждого потока (thread), есть дополнительные расходы на копирование.
Как их отличать между собой.
1. По умолчанию все переменные внутри parallel секции считаются shared за исключением п.2.
2. Все локальные переменные (объявленные внутри parallel секции) и итераторы будут private.
3. Все нелокальные переменные (объявленные ранее parallel) в которые что-то пишется (lvalue) должны быть явно указаны как private.
(continue reading…)

Leave a Comment more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!