До сих пор я использовал OpenMP для параллелизации для цикла на C++. Однако мне интересно, могу ли я выполнять другие строки кодов, которые не являются циклами в Parallel.OpenMP-распараллеливание цикла non-for
void minimization(int *a, int *x) {
// this part of the code is dependent of other library.
}
void checkForNaN(int *a){
// check nan points
}
int main() {
// read data
minimization (a,b);
checkForNaN(x);
}
Рассмотрим пример фрагмента кода выше, в результате чего minimization(,)
и checkForNaN()
независимы что результаты либо одного не влияет на другой раз. Можно ли его распараллелить?
Я имею в виду что-то вроде этого:
int main() {
// read data
#pragma omp parallel
{
minimization (a,b);
checkForNaN(x);
}
}
ли это выглядит правильно?
Вы можете также использовать задачи OpenMP для достижения той же цели (задачи OMP #pragma). Существует хорошая дискуссия о различиях между задачами и разделами в http://stackoverflow.com/questions/13788638/difference-between-section-and-task-openmp – Harald