Archive

Archive for July, 2013

bc, let y expresiones matemáticas en Linux

July 23rd, 2013

Regla mnemotécnica

bcBasic Calculator

El comando bc es una calculadora que se puede usar dese la línea de comandos. Esta herramienta ofrece muchas posibilidades. En nuestro caso la presentaremos para realizar operaciones muy básicas, y más adelante veremos su utilidad en los scripts.

Si ejecutamos bc y entramos en su consola y podemos realizar operaciones y nos irá imprimiendo el resultado. Veamos un ejemplo:

$ bc
7+5
12
((7+5)/2)^2
36
1.1*3
3.3
quit

 

Su utilidad dentro de los scritps reside en la posibilidad de realizar operaciones utilizando las tuberías para pasarle operaciones matemáticas y que nos devuelva el resultado. veamos unos ejemplos:

$ echo 7+5*2 | bc
17
$echo (3^5-sqrt(16))/2 | bc
119

 

Podemos actualizar el valor de variables. Guardamos en actualizamos el valor de una variable con una operación matemática y=y+1 en la variable y:

$ y=1
$ y=$(echo $y+1 | bc)
$ echo $y
2

 

Expresiones mátemáticas en bash

Para trabajar con operaciones simples (+,-,* y /) y números enteros y asignarlo a variables es el comando let o la sintaxis $(( )). Veamos como reescribiríamos el ejemplo anterior con let:

$ y=1
$ let y=y+1
$ echo $y
2

y con la sintaxis para operaciones matemáticas

$ y=1
$ y=$((y+1))
$ echo $y
2

 

Estos dos comandos cuando trabajamos con números reales truncan el resultado y dan error si tratamos de escribir un número decimal. Así obtenemos el resultado el resultado incorrecto con:

$ y=$((7/4))
$ echo $y
1

en vez de 1.75 que es el correcto.

.

Comandos Avanzados, Linux

Tuberías y redirecciones en Linux

July 5th, 2013

Las redirecciónes nos permiten en Linux redirigir la entrada o salida estándar desde o hacia un fichero, respectivamente. La tubería nos permite usar la salida de un comando como entrada para otro, permitiendo concatenar comandos.

 

Redirecciones

Primero señalar que en cuando hablamos de la entrada estándar se hace referencia, normalmente, a lo escrito a través del teclado y como salida estándar a lo envíado a la pantalla, aunque pueden ser otros los dispositivos definidos como estándar en algún caso especial. Las redirecciones se realizan con los símbolos > y < usando su similitud con unas flechas. Así con el símbolo > podemos redirigir la salida estándar desde un comando hacia un fichero. La redirección es muy útil cuando la salida es muy larga y no nos cabe en pantalla, cuando necesitamos o nos es conveniente guardarla en un fichero, etc. Veamos un ejemplo.

$ echo "Hola mundo"
Hola mundo
$ echo "Hola mundo" > saludo
$ cat saludo
Hola mundo

Como vemos en el ejemplo con el comando echo mandamos a pantalla un mensaje, pero si usamos la redirección > mandamos el mensaje al fichero saludo. Luego con el comando cat hemos mostrado el contenido del fichero que hemos creado. Para añadir información a un fichero existente, sin sobreescribirlo se usa >>. Veamos otro ejemplo:

$ echo "Hola mundo"
Hola mundo
$ echo "Hola mundo" > saludo
$ cat saludo
Hola mundo
$ echo "Ahora he sobreescrito el fichero saludo" > saludo
$ cat saludo
Ahora he sobreescrito el fichero saludo
$ echo "Pero ahora le he añadido otra línea" > saludo
$ cat saludo
Ahora he sobreescrito el fichero saludo
Pero ahora le he añadido otra línea

Como vemos en este ejemplo > destruye el contenido del fichero si existe pero >> añade la información al final.

El símbolo < permite enviar el contenido de un fichero como entrada estándar. Esto es útil, por ejemplo, en programas o comandos en los que introducimos o podemos introducir los argumentos por el teclado, de tal manera que podemos sustituirlos por un fichero. Un ejemplo tirivial con cat es:

$ echo "Hola mundo" > saludo
$ cat < saludo
Hola mundo

 

Tuberías

Las tubería es una redirección especial que nos permite enviar la salida de un comando como entrada de otro, para ellos se usa el símbolo |. Su gran útilidad es que nos permite concatenar comandos enriqueciendo mucho la programación. Veamos unos sencillos ejemplos con seq y head:

$ seq 1 5 |head -2
1
2

 

Redirecciones, avanzado

También exite la salida de error que va por otro ‘canal’ diferente. Así por ejemplo si el fichero file1 existe y el file2 no tenemos el siguiente comportamiento

$ ls file1 file2
ls: no se puede acceder a file2: No existe el archivo o el directorio
file1
$ ls file1 file2 > salida
ls: no se puede acceder a file2: No existe el archivo o el directorio
$ cat salida
file1

Como vemos, cuando hemos redirigido la salida al fichero salida, el mensaje de error que nos informa que el fichero file2 no existe sigue saliendo por pantalla. Para poder redireccinar también la salida de error tenemos que usar &> que nos dice que redireccionemos ambas salidas, así:

$ ls file1 file2 &> salida
$ cat salida
ls: no se puede acceder a file2: No existe el archivo o el directorio
file1

De hecho la salida estándar suele ir identificada con 1 (o &1 si va despues de > para diferenciarla de un fichero con nombre 1), y la salida de error con 2 (o &2) para poder hacer redirecciones individuales. Así, es equivalente a redirigir la sólo salida el siguiente comando:

$ ls file1 file2 1> salida
ls: no se puede acceder a file2: No existe el archivo o el directorio
$ cat salida
file1

Para redirigir la salida de error a un fichero

$ ls file1 file2 2> salida
file1
$ cat salida
ls: no se puede acceder a file2: No existe el archivo o el directorio

2>&1 o 1>&2  sirven para redirigir la salida de error a la estandar  o viceversa para luego, por ejemplo, enviarla con una tubería a otro comando.

$ ls file1 file2 2>&1 salida |wc -l
2

 

 

Comandos Avanzados, Linux

Tianhe-2, el ordenador más potente del mundo

July 1st, 2013

De acuerdo a la lista top500.org de los ordenadores más potentes del mundo, a día de hoy Julio de 2013, el ordenador más potente del mundo es Tianhe-2 (Vía Láctea-2). Este superordenador está instalado en la National University of Defense Technology (NUDT) de China y es el sucesor tecnológico de Tianhe-1A, instalado en el National Supercomputer Center en Tianjin que ya fué número 1 del top500 en la lista de Noviembre de 2010.

(Nota: Ya existe un nuevo ordenador más potente, puedes leer sobre Tianhe-2 en este enlace)

Tianhe-2 Supercomputer

Tianhe-2 Supercomputer

Tianhe-2 está formado por 16.000 nodos cada uno de los cuales tiene 2 procesadores Intel Xeon Ivy Bridge y 3 coprocesadores para acelerar los cálculos Xeon Phi. Esto hace un total de 3.120.000 cores de cálculo,  384.000 Xeon y 2.736.000 cores en los coprocesadores Phi. Es una novedad que tenga 3 coprocesadores por nodo pues lo habitual son uno o dos. Estos cores le dotan de un rendimiento teórico ejecutando operaciones matemáticas de 54,9 PFLOPS (Peta=10^15 FLoating-point Operation Per Second, 1.000.000.000.000.000 operaciones matemáticas por segundo) y en el benchmark LINPACK alcanza un rendimiento real de 33,9 PFLOPS, lo cual es casi el doble que el anterior número 1 Titan.

La red de interconexión entre los nodos es un diseño propio, TH Express-2, y trata de evitar que las comunicaciones sean un cuello de botella gracias al ancho de banda bidireccional de 16 GB/s, baja latencia y topología fat tree. Tianhe-2 usa el sistema operativo Kylin, basado en Linux, y también desarrollado por la NUDT y optimizado para HPC. El hecho de estar basado en un estándar como Linux le da mucha flexibilidad a la hora de ejecutar muchos códigos sin necesidad de reprogramarlos específicamente.

Tianhe consume 17.8 MW, que equivale aproximadamente al consumo de 27.000 familias, a pesar de lo cual es también en un supercomputador muy eficiente dado el alto número de FLOPS por watio que realiza, aunque cuando se anuncie la lista green500.org de los computadores energéticamente más eficientes del mundo probablemente ocupará entorno al puesto 40.

De acuerdo a la NUDT Tianhe-2 estará dedidado a aplicaciones de simulación, análisis y seguridad nacional.

Datos más relevantes

Marca y modelo Diseño propio
Nº de cores 3.120.000: 384.000 cores xeon y 2.736.000 cores Phi
Procesador Intel Xeon E-2692 de 12 cores a 2.2 GHz
Coprocesador Intel Phi 31S1P de 57 cores a 1,1 GHz
Interconexión TH Express-2
Sistema Operativo Kylin
FLOPS teóricos 54,9 PetaFLOPS
FLOPS Linpack 33.9 PetaFLOPS
Potencia eléctrica 17.8 MW
FLOPS/W 1.9 GigaFLOPS

 

 

 

HPC