Помогите Распараллелить!

Тема в разделе "C/C++/C#", создана пользователем Unikum, 5 ноя 2011.

  1. Unikum

    Unikum New Member

    Регистрация:
    5 ноя 2011
    Сообщения:
    1
    Симпатии:
    0
    Эксперты помогите, распараллелить консольное приложение на два(или четыре) ядра. Раньше ни когда не сталкивался с этим, даже не знаю, что лучше использовать (MPI, OpenMP, и т.п.)

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

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

    Код (C++):
    #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");
    }
     
Загрузка...

Поделиться этой страницей