<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>All-in Labs &#187; programacion</title>
	<atom:link href="http://www.all-in.cl/tag/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.all-in.cl</link>
	<description>Blog comunitario sobre ...</description>
	<lastBuildDate>Fri, 08 Jan 2010 20:28:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Cluster MPI en Linux con computadores de escritorio</title>
		<link>http://www.all-in.cl/2009/09/cluster-mpi-linux/</link>
		<comments>http://www.all-in.cl/2009/09/cluster-mpi-linux/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 23:14:10 +0000</pubDate>
		<dc:creator>fsaravia</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[servidores]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.all-in.cl/?p=335</guid>
		<description><![CDATA[A diferencia de la mayoría de los tutoriales, que parten de la base que uno tiene N equipos para destinarlos exclusivamente a ser parte de un cluster, acá relato cómo armé un cluster en equipos de un laboratorio de computación, que además son utilizados por usuarios para trabajo habitual (todo esto bajo Linux, obvio)

Configuración de [...]]]></description>
			<content:encoded><![CDATA[<p>A diferencia de la mayoría de los tutoriales, que parten de la base que uno tiene N equipos para destinarlos exclusivamente a ser parte de un cluster, acá relato cómo armé un cluster en equipos de un laboratorio de computación, que además son utilizados por usuarios para trabajo habitual (todo esto bajo Linux, obvio)<br />
<span id="more-335"></span><br />
Configuración de red: 192.168.5.0 ethernet gigabit<br />
Configuración de equipos: Kubuntu 9.10 64-bit</p>
<p><strong>Paso 1: El servidor. Ejecutar como root lo siguiente:</strong></p>
<p>Instalar paquetes de NFS, SSH y compiladores<br />
<code>$ apt-get install nfs-kernel-server openssh-server build-essential</code></p>
<p>Instalar MPICH2<br />
<code>$ wget http://octopus.inf.utfsm.cl/fsaravia/files/herramientas/mpich2_1.1.1p1-1ubuntu_amd64.deb<br />
$ dpkg -i mpich2_1.1.1p1-1ubuntu_amd64.deb</code></p>
<p>Crear un usuario (en este caso &#8220;mpi&#8221;), con un <strong>uid</strong> fijo<br />
<code>$ adduser mpi --uid 1002</code></p>
<p>Crear claves DSA para conectarse por ssh sin password<br />
<code>$ ssh-keygen -t dsa</code></p>
<p>Exportar por NFS el $HOME del usuario <strong>mpi</strong>, agregando en el archivo <strong>/etc/exports</strong> lo siguiente:<br />
<code>$ /home/mpi 192.168.5.0/24*(rw,no_root_squash,sync,no_subtree_check)</code></p>
<p>Luego aplicar los cambios:<br />
<code>$ exportfs -av</code></p>
<p>Por simplicidad, agregar los nodos de la red en <strong>/etc/hosts</strong>. La separación entre las direcciones IP y el nombre de cada host <strong>debe ser un tabulador</strong> y no espacios.<br />
<code>192.168.5.70    pc001<br />
192.168.5.116   pc002<br />
192.168.5.78    pc003<br />
192.168.5.77    pc004<br />
</code></p>
<p>Esto es todo lo que se debe realizar como <strong>root</strong>.</p>
<p>Ahora acceder como usuario <strong>mpi</strong> y configurar la cuenta para trabajar como cluster:</p>
<p>En el archivo <strong>/home/mpi/mpd.hosts</strong> poner los nombres de todos los equipos que forman parte del cluster:<br />
<code>pc001<br />
pc002<br />
pc003<br />
pc004</code></p>
<p>Luego crear el archivo <strong>/home/mpi/.mpd.conf</strong> donde va la &#8220;clave&#8221; del cluster:<br />
<code>$ echo algunapalabra > /home/mpi/.mpd.conf<br />
$ chmod 600 /home/mpi/.mpd.conf</code></p>
<p>Finalmente, crear claves DSA para acceder por SSH sin clave. Por seguridad no utilizar las mismas de root.<br />
<code>$ ssh-keygen -t dsa</code></p>
<p>Listo. Con esto tenemos el pc servidor configurado.</p>
<p><strong>Paso 2: Equipos esclavos</strong></p>
<p>Ejecutar como <strong>root</strong> lo siguiente:</p>
<p>Instalar paquetes de NFS, SSH y compiladores<br />
<code>$ apt-get install nfs-kernel-server openssh-server build-essential</code></p>
<p>Instalar MPICH2<br />
<code>$ wget http://octopus.inf.utfsm.cl/fsaravia/files/herramientas/mpich2_1.1.1p1-1ubuntu_amd64.deb<br />
$ dpkg -i mpich2_1.1.1p1-1ubuntu_amd64.deb</code></p>
<p>Crear un usuario (en este caso &#8220;mpi&#8221;), con un <strong>uid</strong> fijo<br />
<code>$ adduser mpi --uid 1002</code></p>
<p>Copiar el archivo <strong>/etc/hosts</strong> del servidor al equipo esclavo<br />
<code>$ scp root@pc001:/etc/hosts /etc</code></p>
<p>Configurar el $HOME del usuario mpi para que se monte vía NFS desde el servidor, agregando la siguiente línea al archivo <strong>/etc/fstab</strong><br />
<code>pc001:/home/mpi /home/mpi nfs defaults,auto 0 0</code></p>
<p>Luego, eliminar el contenido local del directorio <strong>/home/mpi</strong> y montar vía NFS:<br />
<code>$ rm -rf /home/mpi/*<br />
$ mount -a</code></p>
<p>Con esto queda configurado el cliente.</p>
<p><strong>Consideraciones finales:</strong></p>
<p>Desde el servidor y como usuario <strong>mpi</strong> conectarse por ssh a todos los nodos, para que quede como &#8220;conocido&#8221; y guardado en <strong>~/.ssh/known_hosts</strong>.</p>
<p>Una vez realizado esto, es posible levantar un cluster MPI con todas las de la ley:<br />
<code>$ mpdboot -n 4 -f ~/mpd.hosts</code></p>
<p>Si no hay ningún mensaje de error se puede visualizar una lista de los nodos que forman parte del cluster<br />
<code>$ mpdtrace</code></p>
<p>Y finalmente, para ejecutar código C++/MPI<br />
<code>mpirun -np 8 ./programa_mpi</code><br />
En el ejemplo, hay 4 máquinas dual-core, es decir, 8 cores en total.</p>
<p>Seguramente me faltan algunos detalles. Información más detallada y otros tips en los siguientes sitios:<br />
http://allintech.info/2008/09/a-ubuntu-mpi-cluster-part-1-server-setup<br />
http://www.glib.org.mx/article.php?story=20070320133500387</p>
<p>Una posible causa de errores puede ser que el nombre del equipo (hostname) no coincida con lo que dice /etc/hosts</p>
<p>Probado con máquinas Kubuntu 9.10 alpha, Ubuntu 9.04, centos 5.3, centos 5.2.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.all-in.cl/2009/09/cluster-mpi-linux/" target="_blank"><img src="http://www.all-in.cl/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://www.all-in.cl/2009/09/cluster-mpi-linux/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.all-in.cl/2009/09/cluster-mpi-linux/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monitorear Crecimiento de un archivo de log</title>
		<link>http://www.all-in.cl/2009/07/monitorear-crecimiento-de-un-archivo-de-log/</link>
		<comments>http://www.all-in.cl/2009/07/monitorear-crecimiento-de-un-archivo-de-log/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 14:46:16 +0000</pubDate>
		<dc:creator>ahenriq</dc:creator>
				<category><![CDATA[Informática]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.all-in.cl/?p=114</guid>
		<description><![CDATA[Este es un tip cortito y presiso. Cuando uno tiene un programa que va agregando datos a un archivo (ya sea un archivo log, u otro) se debe esperar a que el programa termine su ejecución para luego abrir el archivo y ver los resultados. Esto puede volverse un tanto tedioso si la ejecución del [...]]]></description>
			<content:encoded><![CDATA[<p>Este es un tip cortito y presiso. Cuando uno tiene un programa que va agregando datos a un archivo (ya sea un archivo log, u otro) se debe esperar a que el programa termine su ejecución para luego abrir el archivo y ver los resultados. Esto puede volverse un tanto tedioso si la ejecución del programa demora muchos minutos (u horas!!!) y uno quiere ir viendo las salidas a medida que se van generando.</p>
<p>Para esto, en linux existe un comando que permite ir viendo la cola de un archivo y asi ir viendo como se van agregando lineas a medida que se van generando.</p>
<p>El comando es bien simple.<br />
<code>tail -f archivo_salida.txt</code><br />
Pruebalo y verás que te hará más facil el debub de codigo utilizando archivos de log.</p>
<p class="facebook"><a href="http://www.facebook.com/share.php?u=http://www.all-in.cl/2009/07/monitorear-crecimiento-de-un-archivo-de-log/" target="_blank"><img src="http://www.all-in.cl/wp-content/plugins/add-to-facebook-plugin/facebook_share_icon.gif" alt="Share on Facebook" title="Share on Facebook" /></a><a href="http://www.facebook.com/share.php?u=http://www.all-in.cl/2009/07/monitorear-crecimiento-de-un-archivo-de-log/" target="_blank" title="Share on Facebook">Share on Facebook</a></p>]]></content:encoded>
			<wfw:commentRss>http://www.all-in.cl/2009/07/monitorear-crecimiento-de-un-archivo-de-log/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
