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

рапараллелить процесс - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Выполнить задачу перегруженными функциями (Вывести на экран два массива, сформированные по правилу) http://www.cyberforum.ru/cpp-beginners/thread882204.html
Задан массив целых чисел. Вывести на экран два массива, элементами первого массива являются четные элементы исходного массива, элементами второго - нечетные. Массив должен быть одномерный. 2 перегруженные функции для вещественного и целочисленного массивов.
C++ решение задачи (сумма ряда). исправление ошибки вот пример для вычисления Fn(x)= \frac{{x}^{n}}{1+{x}^{n}} и вот что я наколдовал #include <iostream.h> #include <conio.h> #include <math.h> void main() { int x;n; float S; cout<<"vvedite x = "; cin>> x; http://www.cyberforum.ru/cpp-beginners/thread882195.html
Метод пузырька C++
Ребят помогите голова уже кипит 3 проги сделал на последнию уже сил нет( Реализовать все алгоритмы сортировки, оформив решение в виде функций ввода, вывода и обработки массивов. Дан массив из N элементов. Отсортировать по убыванию суммы модулей разностей каждого элемента со всеми остальными. Найти такой элемент из данного множества, для которого эта сумма минимальна, и саму эту сумму. Метод...
Вычислить и вывести на экран в виде таблицы значения функции, заданной с помощью ряда Тейлора C++
Ребят помогите пожалуйста с этим заданием, код есть но я не могу понять почему работает не правильно. Задание 4 Вычислить и вывести на экран на двух языках программирования C++ и Pascal в виде таблицы значения функции, заданной с помощью ряда Тейлора, на интервале от xнач к xкон с шагом dx с точностью ε. Таблицу обеспечить заголовком и шапкой. Каждая строка таблицы должна содержать значение...
C++ Множественное наследование http://www.cyberforum.ru/cpp-beginners/thread882145.html
// 4.1.cpp: главный файл проекта. #include <stdafx.h> #include <iostream> #include <string.h> #include <locale> #include <conio.h> using namespace std;
C++ Классы (построить иерархию классов окружности - 2 окружности с одним центром) построить иерархию классов окружности - 2 окружности с одним центром В программе предусмотреть следующие действия с объектами создаваемого класса: -создание объектов -уничтожение объектов -изменения параметров объектов(цвет, координаты, размер) -отоброжение объектов на экране -гашение объектов -перемещение объектов подробнее

Показать сообщение отдельно
KToRRy
Сообщений: n/a
28.05.2013, 17:03     рапараллелить процесс
добрый день.

Помогите пожалуйста...

мне надо на определенном промежутке найти наиболее подходящее значение параметра. для оценивания параметра используется сравнение посчитанного значения со взятым из статистики. перебрать значения надо для 7 параметров одновременно... для этого еще есть рабочие процессы, который осуществляют перебор и диспетчер, который потом обрабатывает значения и считает конечное значение показателя




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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
    int main(int argc, char **argv)
    {
    int rank, size, type=99;
 
    MPI_Status status;
    MPI_Init(&argc, &argv);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 
    if(rank>0)
    {
        double e[11];
        double ee[11]={0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01};
        double k1, k2, k3, k4, k5, k6, n0;
 
        for(int i=1; i<size; i++)
        {
            for(k[0]=0.6+(i-1)*(0.4/(size-1)); k[0]<=0.6+i*(0.4/(size-1)); k[0]+=0.02) // для коэф-та к0 интервал        от 0.6 до 1. он делится на количество процессоров, чтобы считать меньшие интервалы.
                for(k[1]=1+(i-1)*(0.3/(size-1)); k[1]<=1+i*(0.3/(size-1)); k[1]+=0.02)
                    for(k[2]=1+(i-1)*(0.3/(size-1)); k[2]<=1+i*(0.3/(size-1)); k[2]+=0.02)
                        for(k[3]=0.6+(i-1)*(0.4/(size-1)); k[3]<=0.6+i*(0.4/(size-1)); k[3]+=0.02)
                            for(k[4]=0.8+(i-1)*(0.4/(size-1)); k[4]<=0.8+i*(0.4/(size-1)); k[4]+=0.02)
                                for(k[5]=0.6+(i-1)*(0.4/(size-1)); k[5]<=0.6+i*(0.4/(size-1)); k[5]+=0.02)
                                    for(n=0.1+(i-1)*(0.2/(size-1)); n<=0.1+i*(0.2/(size-1)); n+=0.01)
                                    {
                                        while(e[11]>ee[11])
                                        {
                                            for(int t=0; t<11; t++) // пересчет параметров с вызовом из последовательного кода
                                            { for(int i=0; i<6; i++)
                                                  S(i,t);
                                              for (int i=0; i<6; i++)
                                                  LL(i,t);
                                              for (int i=0; i<6; i++)
                                                  Y(i,t);
                                              for (int i=0; i<6; i++)
                                                  VRP1(i,t);
                                            }
                                            for (int t=0; t<11;t++)
                                                e[t]=abs(vrp1[t]-VRP[t]);
                                        }
                                    }
        }
 
         k1=k[0];
         k2=k[1];
         k3=k[2];
         k4=k[3];
         k5=k[4];
         k6=k[5];
         n0=n;
 
         printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f",k1,k2,k3,k4,k5,k6,n);
 
         for(int i=1;i<size; i++) //передача диспетчеру
         {
             MPI_Send(&k1,1,MPI_DOUBLE, 0, type, MPI_COMM_WORLD);
             MPI_Send(&k2,1,MPI_DOUBLE, 0, type, MPI_COMM_WORLD);
             MPI_Send(&k3,1,MPI_DOUBLE, 0, type, MPI_COMM_WORLD);
             MPI_Send(&k4,1,MPI_DOUBLE, 0, type, MPI_COMM_WORLD);
             MPI_Send(&k5,1,MPI_DOUBLE, 0, type, MPI_COMM_WORLD);
             MPI_Send(&k6,1,MPI_DOUBLE, 0, type, MPI_COMM_WORLD);
         }
    }
    
    if(rank==0)
    {
        double k1, k2, k3, k4, k5, k6, n0;
 
        for (int i=1; i<size;i++) // получение от рабочих процессоров
        {
            MPI_Recv(&k1,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
            MPI_Recv(&k2,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
            MPI_Recv(&k3,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
            MPI_Recv(&k4,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
            MPI_Recv(&k5,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
            MPI_Recv(&k6,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
            MPI_Recv(&n0,1,MPI_DOUBLE, i, type, MPI_COMM_WORLD, &status);
        }
        for(int t=0;t<11;t++) //пересчет
        {
            for(int i=0; i<6; i++)
                S(i,t);
            for (int i=0; i<6; i++)
                LL(i,t);
            for (int i=0; i<6; i++)
                Y(i,t);
            for (int i=0; i<6; i++)
                VRP1(i,t);
        }
 
         printf("%.2f %.2f %.2f %.2f %.2f %.2f %.2f",k1,k2,k3,k4,k5,k6,n);
         printf(" VRP = %.3f", vrp1);
 
         for(int t=0;t<11;t++)
         {
             double e[11];
             e[t]=abs(VRP[t]-vrp1[t]);
             printf("e[t]=%f", e[t]);
         }
    }
 
    MPI_Finalize();
 
    return 0;
 
    }
К сожалению, в настоящее время нет возможности проверить этот код на работоспособность. Подскажите плиз вообще правильный ли ход мысли?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 12:31. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru