OpenMP и C++ class members
lexa - 07/Сен/2008 20:00
Что-то у меня затык и гугление не помогает.
class Bar { public: int a; Bar(); void run(void); }; void Bar::run(void) { int i,k; #pragma omp parallel private(i) firstprivate(k,a) { } }
Ругается вот таким нехорошим словом:
omp-test.cpp: In member function 'void Bar::run()':
omp-test.cpp:22: error: 'Bar::a' is not a variable in clause 'firstprivate'
Ну и что с этим делать?
Update Нашел (тоже не очень легко), что возможен такой синтаксис:
class Bar { public: int a; #pragma omp firstprivate(a) }А что делать, если Bar::a в одном месте должна быть lastprivate, а в другом - reduction? Временные переменные заводить?
Comments
для ООП в C++ вместо OMP советую юзать Intel TBB
для ООП в C++ вместо OMP советую юзать Intel TBB
Ну у меня задача - получить portable-код (gcc/VS2005)....
Ну у меня задача - получить portable-код (gcc/VS2005)....
с gcc и VS тоже работает
с gcc и VS тоже работает
А, я не полез разбираться - думал что это extensions компиля
А, я не полез разбираться - думал что это extensions компилятора, а это template library (таки залез и разобрался)
У меня совсем другая задача: есть готовый код (GPLed) из которого я палкой и веревкой леплю библиотеку (LibRaw, собственно). По дороге этот код из C превращается в C++.
И есть 3rd-party патчи (OpenMP), которые там кой-чего параллелят, причем выигрыш очень большой, на самом деле (пара раз на 4-core). Вот эти патчи я и хочу присовокупить к LibRaw.
Прихреначивать туда еще и темплейты - оверкилл, тогда уж надо нормально там все переписать, благо image processing можно параллелить не на уровне отдельных for, а прямо по человечески.
понятно. на TBB лучше с 0 писать.
понятно. на TBB лучше с 0 писать.
Прошу прощения, но бродил по интернету, наткнулся на ветку и
Прошу прощения, но бродил по интернету, наткнулся на ветку и поскольку речь идет о OpenMP - не удержался. :) На днях мы выпустили первую бета версию статического анализатора кода VivaMP. Он предназначен для диагностики ошибок в параллельных программах, построенных на основе OpenMP. А еще в подарок статья:
32 подводных камня OpenMP при программировании на Си++
http://viva64.com/art-3-1-464379766.html
С уважением, Андрей Карпов.