я пытаюсь распараллелить свою программу с помощью OpenMP, и иногда мне кажется, что я захожу в тупик.
Я хотел бы поделиться переменными в члене функции, который я определил (и инициализировал) в классе. Если я правильно понял, невозможно выполнить #pragma omp parallel shared(foo)
элементов данных (например, int
, boost::multi_array
и std::vector
) класса. например: использование push_back() для члена векторных данных в классе. обновление значений boost::multi_array
.
Мой вопрос в том, подходит ли для этого OpenMP, или мне следует использовать boost::thread или tbb? или что-то еще... что поддерживает C++ API
Соответствует
boost::multi_array<int,1> foo(boost::extents[10])
, а затем:#pragma omp parallel for for(int i = 0;i<10;i++) foo[i] = i;
нужно ли мне перед доступом кfoo
atomic или mutex? 29.06.2011