Как подключить 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();
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.667 из 5
Похожие ответы