Warning
This page is located in archive.

6. Cvičení - Paralelní programy pro DMS (jazyk C + MPI)

Znění úkolů pro cvičení: 06_cviceni_zadani.pdf

Program pro úkol č.2 (testovací program):

#include <stdio.h>
#include "mpi.h"
 
int main(int argc, char *argv[]) {
  int numprocs, rank, 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, &rank);
  MPI_Get_processor_name(processor_name, &namelen);
 
  printf("Hello from process %d out of %d on %s\n",
          rank, numprocs, processor_name);
 
  MPI_Finalize();
  return 0;
}



Linux:

Kompilace:

mpiCC progam.c -lm -o program

Pro spouštění programů se používá mpirun. Postupujte v těchto krocích:

1. Vygenerovat ssh

 /usr/bin/ssh-keygen -N "" -t ecdsa -f ~/.ssh/id_ecdsa
 cd ~/.ssh/
 cat id_ecdsa.pub >> authorized_keys
 chmod -c 600 authorized_keys
2. nejprve s pomoci ssh se prihlasit na vypucetni uzly

3. Spustit

 
mpirun --host k310pc104,k310pc111 -np 5 ./program


Zjištění IP adresy:
Pro zjištění IP adresy počítače můžete použít následující kód. Za to patří dík Martinovi Velekovi. Poznámka: Pointer, který vrací getenv() používejte pouze pro čtení řetězce, na který ukazuje. Další volání getenv() může změnit jeho obsah.

#include <string.h>
char* remote_ip = getenv("SSH_CONNECTION");
char localhost[] = "localhost";
char * pch;
if(NULL != remote_ip)
{
   pch=strchr(remote_ip,' ');
   pch=strchr(++pch,' ');
   remote_ip = ++pch;
}
else remote_ip = localhost;



Windows:

Kompilace:

Nastavení NetBeans pro správnou kompilaci vytvářených programů:

Soubor → Project Properties:
C Compiler:
  - Include directories: .../Program Files/MPICH2/include
Linker:
  - Additional Library directories: .../Program Files/MPICH2/lib
  - Libraries: mpi.lib

Kompilace programu program.c z příkazového řádku Cygwin “Cygwin Bash Shell” (čili bez použití NetBeans) pomocí g(gcc, mpiCC): <code> g++ program.c -I"C:\Program Files\MPICH2\include" -L"C:\Program Files\MPICH2\lib" -lmpi </code> \\ \\ Pro **spouštění MPICH2 programů** se používá mpiexec.exe. Na každém uzlu/počítači musí běžet smpd.exe (manažér MPICH2 procesů). Program mpiexec.exe můžete ovládat z příkazové řádky, nebo pomocí grafického rozhraní wmpiexec.exe. Na obrázku níže je uveden příklad jak lze spouštět program. \\ {{courses:A4M36PAP:tutorials:06:wmpiexec.jpg

courses/a4m36pap/tutorials/06/start.txt · Last modified: 2015/01/16 21:04 (external edit)