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

MPI, нахождение простых чисел - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Как написать плагин для notepad++? http://www.cyberforum.ru/cpp/thread184060.html
как написать плагин для notepad++? есть какой-нибудь мануал?
C++ Распознать символы с картинки (капчи) здравствуйте! вопрос такой: имеется заранее известная картинка. картинка четкая (это НЕ капча). на картинке в известных местах находятся 5 цифр. делается скриншот. необходимо по нему узнать эти 5 чисел. в какую сторону копать? есть идеи/примеры? http://www.cyberforum.ru/cpp/thread183287.html
Книга для начинающего C++
Посоветуйте книгу для первокурсника по c++. препод посоветовал гебрерда шилдта "C++. Базовый курс". но сейчас не могу найти ее в продаже а срочно надо. посоветуйте альтернативу. http://oz.by/books/topic10111.html - вот из этих. заранее спасибо
[СИ] Циклический буфер переменной длины C++
Мне дали задание для микроконтроллера (не важен какой, главное, алгоритм) написать циклический буфер переменной длины, равномерно распределенный по всей памяти (EEPROM), чтоб исключить перезапись в одну и ту же область памяти из за их ограничения числа записи-стирания. Там будут храниться сообщения передаваемые куда-то, новые сообщения по мере переполнения буфера затирают старые, при включения...
C++ Создание объекта класса в другом классе!!! http://www.cyberforum.ru/cpp/thread182861.html
//----------------------------------Address.h---------------------------------------------------- class Address { public: const static int SIZE_COUNTRY = 3; const static int SIZE_POSTCODE = 7; const static int SIZE_REGION = 11; const static int SIZE_INFO = 101; const static int SIZE_LINE = SIZE_COUNTRY + SIZE_POSTCODE + SIZE_REGION + 2*SIZE_INFO; const static int SIZE_XMLLINE =...
C++ Visual Studio vs Visual Studio Скажите какую версию лучше приобрести, учитывая что 2010 у меня очень зависает. Помогите пожалуйста. подробнее

Показать сообщение отдельно
IDE
Сообщений: n/a

MPI, нахождение простых чисел - C++

31.10.2010, 05:19. Просмотров 1688. Ответов 0
Метки (Все метки)

Здравсвуйте!
Пишу программу для нахождения простых чисел. Пишу в Visual Studio 2008 на C++.
Программу написал и она работает на нескольких ПК. Но проблема в том, что результаты в главный процесс возвращаются неправильно.
Допустим запускаем:
компьютер с главным процессом: 5 процессов
компьютер раб: 5 процессов.

В результате в главный файл запишутся результаты от первых 5 и только от ОДНОГО от компьютера раба. Хотя все 5 там отработали и результаты получили.

Главный процесс остается висеть в памяти, и 4 процесса на другом ПК - тоже. Т.е. возникает тупик. Видимо первый ждет от них результата, а из тех отсылает только первый.

Исходник:

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
    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    MPI_Comm_size(MPI_COMM_WORLD, &size);
 
if (rank == 0) 
    {  
 
    FILE *f;
    double *a;
    char name[6]="0.txt";
    name[0]=rank+48;
    f=fopen(name,"w");
  int position = 0;
    int how_many=0;
  fprintf(f,"N %i\n",N);
        for(int i=1; i<size; i++) 
       { 
        position=0;
        fprintf(f," %i\n",i);
       
        MPI_Recv(&how_many,1,MPI_INT,i,77,MPI_COMM_WORLD,&status);
        int*  my_array = (int*)malloc(how_many * sizeof(int));
        fprintf(f,"Array size %i\n",how_many);
            MPI_Recv(my_array,how_many,MPI_INT,i,78,MPI_COMM_WORLD,&status);
 
 
                for(int j=0; j<(int)how_many; j++) 
                 {
                fprintf(f,"My rank %i I got : %i from %i\n",rank,my_array[j],i);
                 }
 
 
}
 
 
printf("My rank %d\n", rank);
fclose(f);
    }
else
    {   
 
 
    FILE *f;
    double *a;
    char name[6]="0.txt";
    name[0]=rank+48;
    f=fopen(name,"w");
 
        fprintf(f,"A: %i  \n",min);
        fprintf(f,"B: %i  \n",max);
        
    
         myAL= IsSimple(min, max);
        for (int i=0; i<myAL->Count; i++)
        {
            fprintf(f,"Counted: %i  \n",(int)myAL[i]);
            }
 
 
    int kol = myAL->Count;
    int*  my_array = new int[myAL->Count];
 
            for (int i=0; i<myAL->Count; i++)
        {
            my_array[i] = (int)myAL[i];
        }
 
   fprintf(f,"Kol: %i  \n",(int)kol);
   fclose(f);
 
  int position = 0;
 
   MPI_Send(&kol, 1, MPI_INT, 0, 77, MPI_COMM_WORLD);
   MPI_Send(my_array, myAL->Count, MPI_INT, 0, 78, MPI_COMM_WORLD);
        
}
Пожалуйста помогите, бьюсь уже 2 недели.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru