Está en la página 1de 8

Cluster en Linux

Manual
Realizado por:
Antonio Jess Mancera Blanco.
Juan Carlos Canto Gonzalez.
www .mancera .org
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
Datos iniciales:
-Se han utilizado 2 ordenadores personales con Ubuntu desktop.
-Red coni!urada "#ara el e$e%plo ub&' ()2.(*+.(.2& , ub('()2.(*+.(.2-..
-/espu0s de los pasos todos los nodos lle!ar1n a tener los %is%os no%bres de
usuarios "para el e$e%plo' %piu2ub&, %piu2ub(. 3 el %is%o directorio de traba$o
"para el e$e%plo' 4ho%e4%piu.
1. Instalar en todas las mquinas MPIC!.
%piu2ub&'56 sudo apt-!et install %pich2
%piu2ub('56 sudo apt-!et install %pich2
!. Instalar "#$.
%piu2ub&'56 sudo apt-!et install ns-kernel-ser7er
%piu2ub('56 sudo apt-!et install ns-kernel-ser7er
%. Instalar $$.
%piu2ub&'56 sudo apt-!et install ssh
%piu2ub('56 sudo apt-!et install ssh
&. 'ditar (etc()osts para con*igurar las ip+s de , en todos los nodos
%piu2ub&'56 sudo nano 4etc4hosts
%piu2ub('56 sudo nano 4etc4hosts
#ara el e$e%plo las l8neas relati7as a las 9#:s deben ;uedar co%o si!uen '
(2<.&.&.( localhost localhost.localdo%ain
()2.(*+.(.2& ub&
()2.(*+.(.2- ub(
Guarda%os "Ctrl=o. 3 sali%os "Ctrl=>..
-. Compartir directorio del usuario en u./ para los dems nodos.
A?adir al ichero 4etc4e>ports
%piu2ub&'56 sudo nano 4etc4e>ports
@ a?adir dentro' 4ho%e4%piu A"rB,s3nc.
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
0. Montar en u.1 el directorio compartido de u./
%piu2ub('56 sudo %ount ub&'4ho%e4%piu 4ho%e4%piu
Si ;uere%os pode%os editar el archi7o 4etc4stab para no tenerlo ;ue %ontar cada
7ez ;ue inicie%os la %a;uina, a?adiendo esta linea'
7
ub('4ho%e4%piu 4ho%e4%piu ns
1. Crear en ()ome(mpiu de u./ el *ic)ero2oculto3 .mpd.con*
"con puntos incluidos, 0ste contendr1 la cla7e de cone>iCn de SSD .Se le dar1
per%isos *&&..
Edita%os4crea%os '
%piu2ub&'56 nano 4ho%e4%piu4.%pd.con
3 escribi%os la l8nea en el ichero'
M#/FSECREGHIR/JKsecretK
Guarda%os "Ctrl=o.3 sali%os "Ctrl=>..
#er%isos'
%piu2ub&'56 sudo ch%od *&& 4ho%e4%piu4.%pd.con
LIGA' el propietario del ichero debe ser sie%pre el usuario %piu, por si no he%os
podido crearlo en no%bre de 0ste e$ecuta%os'
%piu2ub&'56 sudo choBn %piu 4ho%e4%piu4.%pd.con
4. Crear en ()ome(mpiu de u./ el *ic)ero2oculto3 .mpd.)osts
"con puntos incluidos 0ste, contendr1 los no%bres de los hosts .Se le dar1
per%isos *&&. .
Edita%os4crea%os '
%piu2ub&'56 nano 4ho%e4%piu4.%pd.hosts
3 escribi%os la l8nea en el ichero'
ub&
ub(
Guarda%os "Ctrl=o.3 sali%os "Ctrl=>..
#er%isos'
%piu2ub&'56 sudo ch%od *&& 4ho%e4%piu4.%pd.hosts
LIGA' el propietario del ichero debe ser sie%pre el usuario %piu, por si no he%os
podido crearlo en no%bre de 0ste e$ecuta%os'
%piu2ub&'56 sudo choBn %piu 4ho%e4%piu4.%pd.hosts
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
5. 6enerar las cla7es de $$ en los nodos.
#ara ;ue no pida contrase?as se !enera la lla7e'
%piu2ub&'56 ssh-ke3!en -t dsa
Se pre!unta donde !uardarla 3 passBords, se de$a el archi7o por deecto "intro. 3
sin passBords"intro 2 7eces..
-Mue!o se copia a los nodos escla7os
%piu2ub&'56 ssh-cop3-id %piu2ub(
%piu2ub&'56 ssh-add
Ahora lo %is%o con la lla7e rsa
%piu2ub&'56 ssh-ke3!en -t rsa
%piu2ub&'56 ssh-cop3-id %piu2ub(
%piu2ub&'56 ssh-add
1/. $e puede pro.ar la conexi8n $$ con los nodos9 desde el
maestro2u./3.
Al principio puede ;ue solicite "3es., pero lue!o no debe pedir passBords.
%piu2ub&'56 ssh ub(
Con ello entra%os co%o usuario re%oto en ub(N, lue!o sali%os con e>it.
11. :na 7ez que tenemos todo con*igurado ponemos a prue.a el
cluster.
9nicia%os el proceso de escucha en el %aestro'
%piu2ub&'56 %pdboot -n 2 - .%pd.hosts
"LIGA' el 2 por el n%ero de nodos totales.
#ara co%probar ;ue se ha car!ado el de%onio N
%piu2ub&'56 %pdtrace
/e7ol7er1 los nodos i%plicados si est1 todo correcto '
ub&
ub(
1!. Compilando e;emplos
"0stos est1n instalados en 4usr4include4%pi4e>a%ples.
Si no est1n co%pilados los pro!ra%as "pro!ra%as especiales para procesos
distribuidos., lo co%pila%os con %picc.
En el caso de ;ue estos archi7os no e>istieran co%o era nuestro caso, aba$o est1 el
cCdi!o uente escrito en C 3 ;ue debe%os copiar en un archi7o de te>to plano
lla%ado C#9.C o 9C#9.C
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
E$' cpi.c "pro!ra%a ;ue calcula apro>i%aciones del n%ero #9.
%piu2ub&'56 %picc -o 4ho%e4%piu4cpi 4usr4include4%pi4e>a%ples4cpi.c
"/onde cpi es el no%bre del e$ecutable obtenido 3 cpi.c el uente.
1%. ';ecutando e;emplo
%piu2ub&'56 %pie>ec -l -n O 4ho%e4%piu4cpi
"/ebe%os obtener los procesos e$ecutados en cada nodo 3 tie%po de e$ecuciCn.
#ara co%parar el tie%po de e$ecuciCn, pode%os ca%biar el n%ero de nodos ;ue
desea%os ;ue inter7en!an ca%biando el O , pero teniendo en cuenta ;ue deben
ser pro!ra%as ;ue e$ecuten !randes tareas , por e$e%plo con el pro!ra%a icpi.c
" e$ecuta 7arias 7ueltas en bucles del c1lculo. . Si son pro!ra%as cortos puede ;ue
se e$ecuten %1s r1pidos con %enos nodos "no siendo lC!ico., por la 7elocidad de
red...
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
Cdigo fuente de ejemplos


CPI.C

#include "mpi."
#include !stdio."
#include !mat."

double #$double%&

double #$double a%
'
return $(.0 ) $1.0 * a+a%%&
,

int main$int ar-c.car +ar-/01%
'
int n. m2id. numprocs. i&
double 3425D6 7 8.1(1592:585;9<9828;(:2:(8&
double m2pi. pi. . sum. =&
double start>time 7 0.0. end>time&
int namelen&
car processor?name0M34?MA@?3ABCCDDBA?EAMC1&

M34?4nit$Far-c.Far-/%&
M34?Comm?size$M34?CBMM?GBAHD.Fnumprocs%&
M34?Comm?ranI$M34?CBMM?GBAHD.Fm2id%&
M34?Get?processor?name$processor?name.Fnamelen%&

#print#$stdout."3rocess Jd o# Jd is on JsKn".
m2id. numprocs. processor?name%&
##lus$stdout%&

n 7 10000& )+ de#ault # o# rectan-les +)
i# $m2id 77 0%
start>time 7 M34?Gtime$%&

M34?Bcast$Fn. 1. M34?4E6. 0. M34?CBMM?GBAHD%&

7 1.0 ) $double% n&
sum 7 0.0&
)+ A sli-tl2 better approac starts #rom lar-e i and >orIs bacI +)
#or $i 7 m2id * 1& i !7 n& i *7 numprocs%
'
= 7 + $$double%i L 0.5%&
sum *7 #$=%&
,
m2pi 7 + sum&

M34?Aeduce$Fm2pi. Fpi. 1. M34?DBMBHC. M34?DMM. 0. M34?CBMM?GBAHD%&

i# $m2id 77 0% '
end>time 7 M34?Gtime$%&
print#$"pi is appro=imatel2 J.1:#. Crror is J.1:#Kn".
pi. #abs$pi L 3425D6%%&
print#$">all clocI time 7 J#Kn". end>timeLstart>time%&
##lus$stdout%&
,

M34?Ninalize$%&
return 0&
,
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
ICPI.C

#include "mpi."
#include !stdio."
#include !mat."
double #$double%&
double #$double a%
'
return $(.0 ) $1.0 * a+a%%&
,
int main$int ar-c.car +ar-/01%
'
int done 7 0. n. m2id. numprocs. i&
double 3425D6 7 8.1(1592:585;9<9828;(:2:(8&
double m2pi. pi. . sum. =&
double start>time 7 0.0. end>time&
int namelen&
car processor?name0M34?MA@?3ABCCDDBA?EAMC1&
M34?4nit$Far-c.Far-/%&
M34?Comm?size$M34?CBMM?GBAHD.Fnumprocs%&
M34?Comm?ranI$M34?CBMM?GBAHD.Fm2id%&
M34?Get?processor?name$processor?name.Fnamelen%&
)+
#print#$stdout."3rocess Jd o# Jd is on JsKn".
m2id. numprocs. processor?name%&
##lus$stdout%&
+)
>ile $Odone% '
i# $m2id 77 0% '
#print#$stdout. "Cnter te number o# inter/alsP $0 Quits% "%&
##lus$stdout%&
i# $scan#$"Jd".Fn% O7 1% '
#print#$ stdout. "Eo number entered& Quittin-Kn" %&
n 7 0&
,
start>time 7 M34?Gtime$%&
,
M34?Bcast$Fn. 1. M34?4E6. 0. M34?CBMM?GBAHD%&
i# $n 77 0%
done 7 1&
else '
7 1.0 ) $double% n&
sum 7 0.0&
#or $i 7 m2id * 1& i !7 n& i *7 numprocs% '
= 7 + $$double%i L 0.5%&
sum *7 #$=%&
,
m2pi 7 + sum&
M34?Aeduce$Fm2pi. Fpi. 1. M34?DBMBHC. M34?DMM. 0. M34?CBMM?GBAHD%&

i# $m2id 77 0% '
print#$"pi is appro=imatel2 J.1:#. Crror is J.1:#Kn".
pi. #abs$pi L 3425D6%%&
end>time 7 M34?Gtime$%&
print#$">all clocI time 7 J#Kn". end>timeLstart>time%&
##lus$ stdout %&
,
,
,
M34?Ninalize$%&
return 0&
,
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco
Cluster Hinu= b2 Juan Carlos Canto Gonzalez . Antonio Jess Mancera Blanco is licensed under
a Creati/e Commons Aeconocimiento LEoComercial LCompartir4-ual 8.0 CspaRa Hicense .
Con la colaboraciSn de Juan JosT Galle-o GarcUa. Que sin Tl no ubiese sido posible la
realizaciSn de este pro2ecto.
Realizado por:
Juan Carlos Canto Gonzalez Diciembre 2010
Antonio Jess Mancera Blanco

También podría gustarte