Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 37, средняя оценка - 4.65
CLEO_ROCK
69 / 69 / 2
Регистрация: 22.05.2011
Сообщений: 528
#1

Умножение матриц с использованием OpenMP - C++

02.04.2012, 22:06. Просмотров 5513. Ответов 3
Метки нет (Все метки)

Здрасте. Есть следующая задача. Нужно реализировать умножение двух квадратных матриц с использованием OpenMP. Без него все пашет нормально, но вот когда использовать его, то нельзя изменять счетчик в теле цыкла. Долго копался в коде но не смог сделать. Вот мой код умножения, если можно переделать именно его для использования OpenMP буду очень признателен)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
int** Multipl(int** matr1, int** matr2,int N)
{   
    clock_t start;
    int **rezultMatr=CreateMatr(N,false);
    int d=0,i=0,f=0;
 
      for(i=0;i<N;)
     {
         for(int j=0;j<N;j++)
         {
             rezultMatr[i][d]+=matr1[i][j]*matr2[j][d];
         }
 
        d++;
        if(d==N)
            {
              d=0;
              i++;
            }
     }
    printf("Multiplication time = %f\n\n", (long double) (clock() - start) / CLOCKS_PER_SEC);
 
    return rezultMatr;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.04.2012, 22:06     Умножение матриц с использованием OpenMP
Посмотрите здесь:
Умножение матриц с использованием классов C++
C++ Ленточное умножение матриц с использованием MPI
C++ Перемножение матриц блоками. OpenMP
С++. OpenMp. Flops. Увеличить скорость перемножение матриц C++
C++ Сортировка с использованием OpenMP
C++ Разработать программу для многопоточного вычисления суммы матриц (OpenMP)
Вычисление функции с использованием OpenMP на нескольких ядрах C++
Умножение матриц C++
Умножение матриц C++
Умножение матриц C++
Умножение 3 матриц C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
03.04.2012, 07:56     Умножение матриц с использованием OpenMP #2
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
  int n ; // размер матрицы
  double sum;
  int i, j, k;
...
  double *MatrixA=new double [n*n];
  double *MatrixB=new double [n*n];
  double *MatrixC=new double [n*n];
...
#pragma omp parallel for private(j,k,sum)
 for(i=0;i<n;i++)
 {
      for(k=0;k<n;k++)
      {   
             sum=0;
             for(j=0;j<n;j++)
            {
               sum+=MatrixA[i*n+j]*MatrixB[j*n+k];
 
            }
             MatrixC[i*n+k]=sum;
      }
 
 }
pluprod
0 / 0 / 0
Регистрация: 19.06.2013
Сообщений: 109
19.04.2015, 01:46     Умножение матриц с использованием OpenMP #3
Deviaphan, немного не понял как вы перемножаете? обычно элемент на элемент
например:
C++
1
c[i][j]+=a[i][k]*b[k][j];
а в вашем случаи что?
nonedark2008
887 / 626 / 126
Регистрация: 28.07.2012
Сообщений: 1,688
19.04.2015, 02:12     Умножение матриц с использованием OpenMP #4
Цитата Сообщение от pluprod Посмотреть сообщение
а в вашем случаи что?
Там то же самое, только метод индексации другой.
Yandex
Объявления
19.04.2015, 02:12     Умножение матриц с использованием OpenMP
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru