lunes, mayo 24, 2010

Más de programacion paralela: OpenMP

OpenMP es un estandar creado por un grupo de fabricantes de software y hardware, con la intención de crear herramientas que sean útiles y de fácil uso, para la programación de máquinas de varias unidades de procesamiento con memoria compartida.

Es decir, herramientas que permitan a cualquier programar supercomputadoras clásicas (como la Cray). Y la idea es que sea posible programar de manera secuencial, para que cualquiera pueda desarrollar sus algoritmos sin tantas complicaciones y que a su vez, la porción paralela se ejecute en hilos, pero la decisión de cuantos hilos y de como sincronizarlos se le deja al compilador y no al programador. Que como se puede intuir, ayuda al programador.

Esto se logra mediante pragmas, directivas, llamadas a funciones y variables, que le indican al compilador que debe paralelizar en hilos.

Pero si es para programar supercomputadoras ¿qué sentido tiene hablar de ello cuando muy pocos pueden acceder a una de esas máquinas? Lo interesante, Open MP es independiente de plataforma (portable), y es posible usar OpenMP si se cuenta con una computadora con al menos dos núcleos. Es decir, gracias al avance de los procesadores, hoy cuanquiera con al menos dos núcleos, puede aprovechar el uso de OpenMP.

Y lo mejor aún, el compilador de GNU gcc soporta el más reciente estándar OpenMP 3.0; por lo que si además se tiene instalado alguna distribución GNU/Linux, ya se puede comenzar a jugar con OpenMP.

La página oficial de OpenMP:

http://openmp.org/wp/

Y ahí mismo hay mucho material para comenzar a trabajar, en donde se puede encontrar un tutorial de intel, que me ha parecido bastante bueno para comenzar a entender que es y como funciona OpenMP.

http://software.intel.com/en-us/articles/getting-started-with-openmp/

martes, abril 20, 2010

FLISoL 2010 en la UNAM


Nuevamente este año, la Facultad de Ingeniería será sede el Festival Latinoamericano de Software Libre. Que comenzará sus actividades el próximo jueves 22 de abril.

Estas activiades consiste en un conjunto de conferencias que se darán en el Auditorio del Edificio Principal.

Para continuar el sábado 24 de abril con la instalación de software libre en conjunto con más de 200 ciudades en Latinoamérica.

Para más información consulten los siguientes enlaces:

http://lidsol.fi-b.unam.mx

http://wiki.lidsol.org

Pero no solo se efectuará el FLISoL en la FI, nuevamente este año también participa FES Acatlán.

http://flisol.acatlan.unam.mx/


Para ver el resto de lugares y buscar uno más cercano se puede consultar:

http://flisol.info/FLISOL2010/Mexico

domingo, abril 11, 2010

Unos cuantos mini tips para consola.

Algunos comandos básicos que no están por demás recordar.

>$ ls -lt

Muestra un listado de los archivos en el directorio actual, ordenados de acuerdo a la fecha de última modificación, comenzando por mostrar el más reciente.

>$ ls -lt --reverse

Con la opción --reverse se invierte el orden, mostrando primero el archivo más antiguo.

Y si lo que interesa es ver el contenido de un archivo zip, se puede usar el comando zipinfo, que muestra el contenido del archivo sin descomprimirlo.

>$ zipinfo .zip

domingo, febrero 14, 2010

Minitip: Actualizando el menú de grub

En Ubuntu hasta la versión 9.04 trae el gestor de arranque grub 0.97, y existe un archivo llamado menu.lst en /boo/grub; que es el que se usa para gestionar el arranque de los diferentes sistemas operativos que estén instalados y en el caso de las distribuciones GNU/Linux, cada que se instala un nuevo kernel, se anexa una entrada al menú.

Se puede alterar el archivo menu.lst para modificar el orden presentado de opciones de arranque, o para eliminar o agregar entradas al menú.

Cuando se hace una actualización de Linux (el kernel) en Ubuntu, el gestor de paquetes puede detectar que se ha alteraro el archivo menu.lst y pregunta que se desea hacer, si conservar el archivo que fue modificado de manera manual o si se desea actualizar el archivo a través del gestor.

Si se opta por la opción conservar el archivo modificado, no se anexa al menú la opción del nuevo Linux; por lo que se trabajará con las versiones antiguas.

Para actualizar el menu.lst se puede usar el comando update-grub para actualizar el menu.lst.

En este caso, lo que se debe hacer es mover el viejo menu.lst a por ejemplo menu.lst.old,

>$ sudo mv /boot/grub/menu.lst /boot/grub/menu.lst.old

y después como root en /boot/grub ejecutar update-grub,

>$ cd /boot/grub/; sudo update-grub

dando como resultado la generación de un nuevo archivo menu.lst que solo contiene las opciones Linux que encuentre; por lo que después se edita para agregar los demás S. O. que se tengan instalados, comparando el archivo menu.lst nuevo y el que se respaldó como menu.lst.old

domingo, agosto 23, 2009

Minitip: agregando un elemento de boot a GRUB

Inicialmente en una computadora se tiene dual boot, está instalado Win XP y Ubuntu 9.04 y se requería instalar Fedora 11.

Como había espacio libre disponible, se le indicó al instalador de Fedora, que usara el espacio libre disponible. Fedora 11 usa LVM y sobre esto crea las particiones y actualmente el tipo que asigna es ext4.

Preferí cambiar el tipo de ext4 a ext3 y no usar LVM, si no que sobre la particion extendida, crear las particiones lógicas, una para /boot otra para / y la de /home.

Aunque el proceso de instalación se realizó satisfactoriamente, y llegó al punto en que pide colocar el orden de inicio de los sistemas instalados, y además si es necesario, permite agregar otras entradas para otros sistemas operativos instalados; al reiniciar mi sorpresa fue grande porque en lugar de estar el grub que instala Fedora, seguía corriendo el grub que había instalado Ubuntu. Y por supuesto, la entrada para iniciar Fedora no estaba disponible.

El método para arrancar Fedora fue agregar la entrada del mismo al menu.lts de Ubuntu, tomando como información de referencia, la entrada generada en el menu.lts de Fedora.

El menu.lts de Ubuntu para la ubicación del dispositivo desde donde arrancar, usa uuid, y Fedora no, por lo que era necesario determinar el uuid de la partición.

Para ello se puede hacer uso del comando vol_id, que entre otros datos, devuelve el uuid del dispositivo que se le pase por referencia.

>$ sudo vol_id /dev/<dispositivo >

Donde <dispositivo > es el dispositivo que se desea saber, por ejemplo, suponniendo que sea un disco duro ide y que sea el primer disco dur, y la partición que me interesa saber su uuid es la 10, queda de la siguiente forma:

>$ sudo vol_id /dev/hda10

El valor que se obtiene se puede usar para agregarlo al menu.lts; que en mi caso, me permitió agregar la partición de arranque donde estaba Fedora.

sábado, agosto 22, 2009

Un ejemplo de programacion paralela

En una materia de programación en paralelo, se me solicitó que presentara la solución a un problema empleando el esquema farmer - worker.

El material resultante también me sirvió para dar una plática en el CONSOL 2009, y llevé como parte de la exposición el código fuente que soluciona el problema.

Lo que presenté fue una forma de calcular el conjunto de Mandelbrot en paralelo, en C y usando como biblioteca de paso de mensajes mpich para poder ejecutarse en paralelo en un cluster.

La idea detrás del esquema farmer - worker es que cada tarea tarda diferente tiempo en resolverse, por lo que el proceso farmer lo que hace es distribuir las tareas entre los procesos worker que se encuentran desocupados. Es decir, sin importar quien es, el primero que termina, es el siguiente en recibir nuevo trabajo.

El esquema farmer - worker es conveniente para tareas que tardan diferente tiempo en terminarse, porque es una forma automática de balancear la carga.

Hoy me entero que ya está disponible el material de las diferentes exposiciones que se dieron en el CONSOL 2009 (lo malo es que es un único archivo de más de 500 MB), y entre el material se encuentra lo que expuse, así que si quieren ver tanto la presentación como el código fuente, hay que descargar el archivo, descomprimir y disfrutar de todo el contenido.

Y si solo quieren ver el material referente a mi presentación, también pueden obtenerlo de:

http://rompope.fi-b.unam.mx/clemens/intro-prog-paralela.tar.gz

jueves, agosto 13, 2009

Reponiendo FLISoL 2009 en C. U. - UNAM

Como recordarán, en el mes de abril se dió una contingencia por la epidemia de influeza que tuvo un fuerte impacto en México; por lo cual muchas de las actividades en el país se vieron suspendidas.

Por otro lado, el Festival Latinoamericano de Software Libre, se celebra cada año aproximadamente el penúltimo sábado de abril, que en este 2009 coincidió con la aparición de la influenza en México, es por ello que todas las cedes de la zona metropolitana (DF-Edo. México), se vieron obligadas a posponerlo indefinidamente.

La mayoría de las cedes ya ha logrado efectuar su respectivo install-fest, pero en el caso de la UNAM, los periodos de apertura de los espacios tardaron un poco más, y además al estar cerca de fin de semestre, y próximas las vacaciones administrativas, impidieron que en un intervalo relativamente corto, se contara con las condiciones adecuadas para realizarlo.

Pero finalmente se comienza un nuevo semestre que aporta condiciones muy adecuadas para efectuar un install-fest con motivo del FLISoL 2009.

Es por ello que la coordinación del install-fest en la Facultad de Ingeniería en C. U. está realizando los preparativos para que el sàbado 5 de septiembre se realice en el lobby del edificio principal.

Las actividades que se están organizando son:

- Talleres
- Conferencias (el viernes 4 de septiembre)
- Y por supuesto, el install-fest.

De momento todavía no se tiene el calendario de actividades, pero será publicado a la brevedad posible, por si desean participar o acopañarnos en C. U.