Статья: Распределенные вычисления на FreePascal под Windows

test.pas

uses mpi;

var namelen, numprocs, myid : longint;

processor_name : pchar;

begin

MPI_Init( argc, argv);

MPI_Comm_size( MPI_COMM_WORLD, numprocs);

MPI_Comm_rank( MPI_COMM_WORLD, myid);

GetMem( processor_name, MPI_MAX_PROCESSOR_NAME+1); // константа MPI_MAX_PROCESSOR_NAME равна 256

namelen := MPI_MAX_PROCESSOR_NAME;

MPI_Get_processor_name( processor_name, namelen);

Writeln('Hello from ',myid,' on ', processor_name);

FreeMem(processor_name);

MPI_Finalize;

end.

Здесь, как видно, никакого обмена нет, каждый процесс только "докладывает" свой ранг.

Для наглядности выводится также имя компьютера, где запущен каждый процесс. Для его определения используется функция MPI_Get_processor_name.

function MPI_Get_processor_name( proc_name : Pchar;

var name_len : longint) : longint;

При успешном вызове этой функции переменная proc_name содержит строку с именем компьютера, а name_len — длину этой строки.

После компиляции (с соответствующими опциями)

>fpc -dRELEASE [-Fu<каталог, где размещен файл mpi.pp>] test.pas

должен появиться исполняемый файл test.exe, однако рано радоваться. Запуск этого exe-файла не есть запуск параллельной программы.

Запуск MPI-программы.

Запуск MPI-программы осуществляется с помощью загрузчика приложения mpirun. Формат вызова таков:

>mpirun [ключи mpirun] программа [ключи программы]

Вот некоторые из опций команды mpirun:

-np x
запуск x процессов. Значение x может не совпадать с числом компьютеров в кластере. В этом случае на некоторых машинах запустится несколько процессов. То, как они будут распределены, mpirun решит сам (зависит от установок, сделанных программой MPIConfig.exe)
-localonly x
-np x -localonly
запуск x процессов только на локальной машине
-machinefile filename
использовать файл с именами машин
-hosts n host1 host2 ... hostn
-hosts n host1 m1 host2 m2 ... hostn mn
запустить на n явно указанных машинах. Если при этом явно указать число процессов на каждой из машин, то опция -np становится необязательной
-map drive: \\host\share
использовать временный диск
-dir drive:\my\working\directory
запускать процессы в указанной директории
-env "var1=val1|var2=val2|var3=val3..."
присвоить значения переменным окружения
-logon
запросить имя пользователя и пароль
-pwdfile filename

использовать указанный файл для считывания имени пользователя и пароля.

Первая строка в файле должна содержать имя пользователя, а вторая — его пароль)

-nocolor
подавить вывод от процессов различным цветом
-priority class[:level]

К-во Просмотров: 398
Бесплатно скачать Статья: Распределенные вычисления на FreePascal под Windows