Команды OpenMP являются заметками "на полях" для компилятора, где возможно распараллелить выполнение. OpenMP поддерживается многими компиляторами С/C++ и Fortran.
Для включения OpenMP в MinIDE в локальных настройках нужно указать:
```text
compile.flags=-fopenmp
```
Если флаг не включен, программа будет компилироваться для выполнения на 1 ядре процессора.
```c++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <omp.h>
int count(int a[], int n, int x) // подсчитать, сколько значений в массиве a больше x
{ int cnt=0;
#pragma omp parallel for reduction(+:cnt)
for(int i=0;i<n;++i)
if(a[i]>x)
++cnt;
return cnt;
}
long double getclock()
{ struct timespec ts;
timespec_get(&ts, TIME_UTC);
return ts.tv_sec+1e-9L*ts.tv_nsec;
}
int a[100000000];
int main()
{
int n=1e8;
for(int i=0;i<n;++i)
a[i]=rand()%100;
long double t1,t2;
t1=getclock();
int r=count(a,n,10);
t2=getclock();
printf("%d\n%Lf ms\n",r,(t2-t1)*1000);
}
```