Статья: Распределенные вычисления на 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
|