Как подключить openMP? - C (СИ)
Формулировка задачи:
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
volatile long unsigned C[1000][1000], A[1000][1000], B[1000][1000];
int main()
{
setlocale(LC_CTYPE, "Rus");
time_t start, end;
int i, j, k, t, m;
printf("Введите порядок матрицы\n");
scanf_s("%d", &m);
start = time(NULL);
for (i = 0; i < m; i++)
for (j = 0; j < m; j++)
{
A[i][j] = 1 + rand() % (1 - 9);
B[i][j] = 1 + rand() % (1 - 9);
}
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
t = B[i][j];
B[i][j] = B[j][i];
B[j][i] = t;
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
C[i][j] = 0;
for (k = 0; k < m; k++)
C[i][j] += A[i][k] * B[j][k];
printf(" %d", C[i][j]);
}
printf("\n");
}
end = time(NULL);
printf("Матрица посчиталась за %f секунд.\n", difftime(end, start));
_getch();
}Решение задачи: «Как подключить openMP?»
textual
Листинг программы
#include <stdio.h>
#include <time.h>
#include <conio.h>
#include <locale.h>
#include <stdlib.h>
#include <omp.h>
volatile long unsigned C[1000][1000], A[1000][1000], B[1000][1000];
int main()
{
setlocale(LC_CTYPE, "Rus");
time_t start, end;
int i, j, k, t, m;
printf("Введите порядок матрицы\n");
scanf_s("%d", &m);
start = time(NULL);
#pragma omp parallel for
for (i = 0; i < m; i++)
for (j = 0; j < m; j++)
{
A[i][j] = 1 + rand() % (1 - 9);
B[i][j] = 1 + rand() % (1 - 9);
}
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
t = B[i][j];
B[i][j] = B[j][i];
B[j][i] = t;
}
}
for (i = 0; i < m; i++)
{
for (j = 0; j < m; j++)
{
C[i][j] = 0;
for (k = 0; k < m; k++)
C[i][j] += A[i][k] * B[j][k];
printf(" %d", C[i][j]);
}
printf("\n");
}
end = time(NULL);
printf("Матрица посчиталась за %f секунд.\n", difftime(end, start));
_getch();
}