Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2018, 15:13   #1
regina_
Новичок
Джуниор
 
Регистрация: 02.03.2018
Сообщений: 2
Злость OpenMP

Распараллелить цикл:
Код:
For(i=2;i<N;i++) 
 For(j=2;i<N;j++)
   A[i,j] =A[i-2,j] +A[i,j-2];
Не выходит распараллеливание. Результаты неверные.
Код:
#include <iostream>
#include <omp.h>
#include <iomanip>
using namespace std;


    
    int main()
    {
    	 int n=1000;
    	 int g = 1;
    	 int **A = new int*[1000];
    	 for (int i = 0; i < n; i++)
        	A[i] = new int[n+1];
    	
    	 for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                A[i][j] = g;
                A[j][i] = g+2;
               // cout << A[i][j] << " ";
                g++;
            }
           // cout << endl;

    }

    cout << endl;
    #pragma omp parallel for num_threads(4)
    	for (int k=0; k<2; ++k) 
    	{
    		int i1 = k/2;
    		int j1 = k%2;
    		for (int i = 2+i1; i < n; ++i)
    		{
    			for (int j = 2+j1; j < n; j+=2)
    			{
    				A[i][j] = A[i - 2][j] + A[i][j - 2];
    			}
    		}
    	}  


  	for (int i = n-2; i < n; i++) {
            for (int j = n-2; j < n; j++) {
                cout << A[i][j] << " ";
            }
            cout << endl;
        }

      for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                A[i][j] = g;
                A[j][i] = g+2;
               // cout << A[i][j] << " ";
                g++;
            }
       }
    for (int i = 2; i<n; i++)
        for (int j = 2; j<n; j++)
            A[i][j] = A[i - 2][j] + A[i][j - 2];  
	for (int i = n-2; i < n; i++) {
            for (int j = n-2; j < n; j++) {
                cout << A[i][j] << " ";
            }
            cout << endl;
        }
    for (int i = 0; i < n; i++)
        delete [] A[i];
    	delete [] A;
}
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 02.03.2018 в 15:32.
regina_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Циклы For и OpenMP BrookBond Общие вопросы C/C++ 0 11.06.2013 16:26
OpenMP и while на С++ Brabus Помощь студентам 3 13.03.2013 14:47
openmp hunter03 Общие вопросы C/C++ 0 02.10.2012 17:54
OpenMP Timur1 Visual C++ 1 16.06.2012 15:40
OpenMP Алек Помощь студентам 2 14.10.2011 11:52