Распараллелить цикл for с помощью OpenMP можно следующим образом.
OpenMP предоставляет набор директив и функций, которые позволяют распараллелить программу на несколько потоков. Для распараллеливания цикла for в C с помощью OpenMP, можно использовать директиву #pragma omp parallel for
.
Пример:
#include <stdio.h> #include <omp.h> int main() { int i; int N = 10; int arr[N]; // Директива для распараллеливания цикла #pragma omp parallel for for (i = 0; i < N; i++) { arr[i] = i; printf("Thread %d executed iteration %dn", omp_get_thread_num(), i); } // Вывод результатов printf("nArray:n"); for (i = 0; i < N; i++) { printf("%d ", arr[i]); } printf("n"); return 0; }
В данном примере, директива #pragma omp parallel for
позволяет распараллелить цикл for, чтобы различные итерации выполнялись параллельно разными потоками. Количество потоков определяется переменной окружения OMP_NUM_THREADS
.
Для компиляции такой программы с использованием OpenMP можно использовать флаг -fopenmp
(для GCC):
gcc -fopenmp parallel_for.c -o parallel_for
Вывод программы может быть различным для разных запусков, так как потоки могут выполнять итерации в произвольном порядке. Однако, результаты должны быть корректными.