PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 21 июл 18 16:21

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Компиляция программы
СообщениеДобавлено: 5 дек 11 18:10 
Не в сети

Зарегистрирован: 4 дек 11 20:01
Сообщения: 3
Подскажите как скомпилировать эту программу в ОС Windows vista.

#include <stdio.h>
#include <math.h>
#include "mpi.h"

double f(double a)
{
return (4.0 / (1.0+ a*a));
}

int main(int argc, char **argv)
{
int done = 0, n, myid, numprocs, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);

fprintf(stdout, "Process %d of %d is on %s\n", myid,numprocs,processor_name);
fflush(stdout);

while(!done)
{
if(myid==0)
{
fprintf(stdout, "Enter the number of intervals: (0 quits) ");
fflush(stdout);
if(scanf("%d",&n) != 1)
{
fprintf(stdout, "No number entered; quitting\n");
n = 0;
}
startwtime = MPI_Wtime();
}
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if(n==0)
done = 1;
else
{
h = 1.0 / (double) n;
sum = 0.0;
// Обсчитывание точки, закрепленной за процессом
for(i = myid + 1 ; (i <= n) ; i += numprocs)
{
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;

MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD);

if(myid==0)
{
printf("PI is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT));
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime-startwtime);
fflush(stdout);
}
}
}
MPI_Finalize();
return 0;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компиляция программы
СообщениеДобавлено: 6 дек 11 10:00 
Не в сети

Зарегистрирован: 3 дек 11 0:45
Сообщения: 13
С MPICH идёт пример, по умолчанию в папке C:\Program Files\MPICH2\examples. Там есть и проект для MS Visual Studio. Можно его открыть и посмотрать, какие параметры в его настройках добавлены.
Если кратко, то в дополнительные опции линкера добавляешь:
/LIBPATH:"C:\Program Files\MPICH2\lib" mpi.lib
В опции компилятора:
/I "C:\Program Files\MPICH2\include"
Если нет желания ковырятся в опциях, можно путь к mpi.h указать прямо в исходном тексте, там же через прагму прицепить библиотеку.
Но а если использовать MinGW или Cygwin, то там несколько по другому будет


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компиляция программы
СообщениеДобавлено: 6 дек 11 17:01 
Не в сети

Зарегистрирован: 4 дек 11 20:01
Сообщения: 3
Спасибо огромное ваш ответ мне пригодился также я воспользовался этим материалом: http://blogs.msdn.com/b/ru-hpc/archive/ ... erver.aspx
Программа запускается через командную строку, там же нужно указать кол-во, процессов, все работает :D
Теперь я столкнулся с новой проблемой при запуске файла ЕХЕ созданного в Вижуал студио 2008, в приложении MPICH2, программа бездействует. MPICH2 был настроен так как было сказано здесь http://iproc.ru/programming/mpich-windows/ с учетом что программа будет выполнятся на одном компьютере.
Может ли эта проблема быть вызвана тем что я воспользовался библиотеками из Microsoft HPC Pack 2008 SDK?
:!: Я в этом еще слабо разбираюсь поэтому заранее извиняюсь если вопросы глупые)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компиляция программы
СообщениеДобавлено: 6 дек 11 21:44 
Не в сети

Зарегистрирован: 3 дек 11 0:45
Сообщения: 13
Eddie писал(а):
Может ли эта проблема быть вызвана тем что я воспользовался библиотеками из Microsoft HPC Pack 2008 SDK?

Я не понял, вы что, использовали для программы, запускаемой в среде MPICH2 библиотекой mpi от Microsoft HPC? Вообще, такие эксперименты, конечно, попробовать ставить можно, но перед этим лучше более-менее разобраться с функционированием какой-либо одной реализации mpi. Разные реализации mpi имеют и разную реализацию межпроцессной коммуникации. Даже в рамках того же MPICH существуют разные способы межпроцессного взаимодействия, и могут возникнуть проблеммы при коммуникации процессов между процессами на системах использующих разный интерфейс.
Если вам интересно поэкспериментировать, попробуйте огранизовать выполнение программы не на одной, а на двух и более системах. Установите их, для начала, хотябы под какой-нибудь виртуальной машиной, хотя бы vmware || virtual box.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Компиляция программы
СообщениеДобавлено: 7 дек 11 3:24 
Не в сети

Зарегистрирован: 4 дек 11 20:01
Сообщения: 3
Да я действительно использовал для программы, запускаемой в среде MPICH2 библиотекой mpi от Microsoft HPC и вы абсолютно правы спасибо за ответ :D


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB