پاسخ داده شده: نحوه موازی کردن یک حلقه for بوسیله openMP
خیلی سخت نیست . برای نمونه :
int size =20; std::vector<int> a(size); std::vector<int> b(size); ///read a,b ... std::vector<int> res(size); #pragma omp parallel #pragma omp for for(i = 0; i < size ; i++) { res[i] = a[i] - b[i]; }
کاری که openmp میکنه اینه که for رو به چند قسمت میشکنه و هر thread یک قسمت از حلقه رو اجرا میکنه (مثلا 0 تا 5 یک thread و 5 تا 10 یک thread دیگه و... ) و نهایتا وقتی که همه thread ها کارشون تموم شد برنامه از حلقه for خارج میشه .