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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.11.2011, 20:23   #1
Unikum1979
Новичок
Джуниор
 
Регистрация: 05.11.2011
Сообщений: 1
Вопрос Не получается распараллелить!!!

Эксперты помогите, распараллелить консольное приложение на два(или четыре) ядра. Раньше ни когда не сталкивался с этим, даже не знаю, что лучше использовать (MPI, OpenMP, и т.п.)

В задаче требуется вычислить n максимальных значений, значений произведений элементов двух исходных массивов.

Саму программу без распараллеливания я написал:

Код:
#include<iostream>;
#include<ctime>;
	using namespace std;				//*****************************************************//
int main()								//	В задании требуется создать массив(С) максимальных //
{										//	значений, произведений элементов двух исходных     //
	setlocale(LC_ALL, "Russian");		//	массивов(А и В)используя параллельное вычисление.  //
	srand(time(0));						//*****************************************************//

	int i,j,n,A[100],B[100],T,k,min;
	
	cout<<"\n  Размер массива С: ";
	cin>>n;
	int *C = new int[n];				// Создаем динам. массив с размерностью n (n<10000)

	for(i=0;i<100;i++)					//
	{									//	Заполняем два исходных массива А[100] и B[100]
		A[i]=rand()%19-9;				//  случайными числами 
		B[i]=rand()%19-9;				//
		cout<<A[i]<<"\t"<<B[i]<<endl;	//
	}
	for(i=0;i<10;i++)					//	Начало фрагмента для распараллеливания
		for(j=0;j<10;j++)
		{
			T=A[i]*B[j];
			if((i*10+j+1)<=n)
				C[i*10+j]=T;
			else
			{
				min=0;
				for(k=1;k<n;k++)
					if(C[min]>C[k])
						min=k;
				if(T>C[min])
					C[min]=T;
			}
		}								//	Конец фрагмента для распараллеливания
	for(k=0;k<n;k++)
		cout<<C[k]<<" ";
	cout<<endl;
	system("pause");
}
Unikum1979 вне форума Ответить с цитированием
Старый 05.11.2011, 20:26   #2
_-Re@l-_
C++, Java
Старожил
 
Аватар для _-Re@l-_
 
Регистрация: 10.04.2010
Сообщений: 2,665
По умолчанию

Вот вам ссылка , где объясняется как реализовать многопоточность на С++.
_-Re@l-_ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не получается Александр1616 Софт 4 22.09.2011 00:20
Как распараллелить потоки Lindemann66 Qt и кроссплатформенное программирование С/С++ 1 08.09.2011 13:58
не получается Лентяй Общие вопросы по Java, Java SE, Kotlin 0 23.05.2011 22:28
не получается. svoi92 Помощь студентам 1 08.02.2011 14:50