Archive

Archive for October, 2013

Comando case en Linux

October 28th, 2013

Regla mnemotécnica

case: En caso de en ingles in case.

Estructura del Comando Case

El comando case es una forma de ejecución condicional que nos permite ejecutar unos u otros comandos según el valor de una variable. No incluye ninguna funcionalidad nueva que no pueda ser realizada con el uso del comando if, pero en ciertos casos la sintaxis es más sencilla, intuitiva y directa. Con el comando case se lee una variable, si su valor coincide con alguno esperado se ejecutan los comandos asociados a ese valor. La sintaxis es como indicamos a continuación:

case $variable in

valor-1) 
    comandos
;;
valor-2) 
    comandos
;;
...
*)       
    comandos
esac

donde $varible es la variable que leemos, si tiene el valor-1 ejecuta los comandos que se encuentran a continuación hasta que se encuentran ";;" que indica el fin de los comandos asociados a ese valor de la variable. Se pueden definir cuantos posibilidades sean necesarias y como última opción podemos añadir el comodín "*)" y si la ejecución llega hasta este punto ejecutará los comandos para este caso. Si no existe "*)" y la variable no toma ninguno de los valores predefinidos evidentemente no se ejecuta nada. Veamos un ejemplo:

nombre=gabriel

case $nombre in
txomin)    echo "No soy Gabriel"
           echo "Soy Txomin"
;;
gabriel)   echo "Soy Gabriel"
;;
*)         echo "No soy Txomin"
           echo "Ni tampoco soy Gabriel"
esac

Evidentemente la ejecución de este script dará como salida "Soy Gabriel" y es fácil ver que será lo que hará dependiendo del valor que le asignemos a la variable $nombre. También podemos usar el comando booleano “or”  (o) con el símbolo “|” para indicar varios posibles valores asociados a los mismos comandos.

nombre=gabriel

case $nombre in
txomin|gabriel)
           echo "Soy Gabriel o Txomin"
;;
*)         echo "No soy Txomin"
           echo "Ni tampoco soy Gabriel"
esac

Comandos Avanzados, Linux

Comando if en Linux

October 24th, 2013

Regla mnemotécnica

if: Conjunción si en ingles.

Estructura del condicional

El condicional if es un comando que nos permite ejecutar una secuencia de comandos dependiendo de la condición especificada. Con la misma podemos controlar la ejecución de un código en base a las necesidades establecidas por los condicionantes.

El modo mas simple de una sentencia condicional es:

if [ condición ]
then
    comandos 
fi

o en una única línea

if [ condición ] ; then comandos ; fi

En los siguientes ejemplos usaremos la primera sintaxis por ser más clara. En el ejemplo previo, si la condición se cumple se ejecutarán los comandos que introduzcamos hasta el cierre del condicional con fi.  Hay que tener en cuenta que la condición ha de ir entre corchetes [ ] respetando los espacios en blanco entre los corchetes y la condición. Una versión algo más compleja puede incluir más posibles condiciones:

if [ condición-1 ]
then
    comandos1
elif [ condición-2 ]
then
    comandos-2
fi

donde elfi es una contracción de else if. Primero se evalua la condición-1 y si se cumple se ejecutan los comandos-1 y se sale del condicional, no se evalúan los siguientes. Si no se cumple la condición-1 se evalúa la condición-2 y si se cumple se ejecutan los comandos-2 y si no se sale del condicional. Se pueden escribir tantos elif como se desee. La última versión y más compleja estructura de condicional incluye la condición final else:

if [ condición-1 ]
then
    comandos-1
elif [ condición-2 ]
then
    comandos-2
else
    comandos-3
fi

Aquí si no se cumple la condición-1 ni la condición-2 se entra en el else y se ejecutan los comandos-3. Veamos un ejemplo.

a=hola
if [ $a == 1  ]
then
    echo "a es igual a 1"
elif [ $a == "adios" ]
then
    echo "a es igual a adios"
else
    echo "a nos es ni 1 ni adios"
fi

En este caso evidentemente veremos en pantalla el último mensaje “a no es ni 1 ni adios”.  Observemos  como la condición de igual se construye con dos signos [ a == 1] dado que con [ a = 1 ] lo que estamos haciendo es asignar a la variable a el valor 1. Algunos de los condicionantes más comunes son:

 == Igual que, tanto para números enteros como palabras
!= Diferente que, tanto para números enteros como palabras
-eq Igual que (equal), sólo para números enteros
-ne Diferente que (non equal), sólo para números enteros
-gt Mayor que (greater than)
-ge Mayor o igual que (greater or equal than)
-lt Menor que (less than)
-le Menor o igual que (less or equal than)
! Negación, invierte el condicional
-f nombre El fichero regular nombre existe
-d nombre El directorio nombre existe

Ejemplos

Tres breves ejemplos. En el primero verificamos si el fichero regular datos.txt existe y en ese caso lo mostramos:

if [ -f datos.txt ]
then
    echo "datos.txt existe"
    cat datos.txt
fi

En el segundo ejemplo verificamos si el fichero regular datos.txt no existe y en ese caso lo creamos vacío:

if [ ! -f datos.txt ]
then
    echo "datos.txt existe"
    touch datos.txt
fi

En el tercer ejemplo usamos la salida de un comando dentro del condicional. Para ellos listaremos en un columna los ficheros y directorios del directorio actual terminados en txt con el comando ls, le pasaremos el resultado con una tubería (|) al comando wc y contaremos con este el número de ficheros Para tratar la salida de un comando como variable este ha de ir dentro de $( ).

#Primero simplemente mostramos el resultado para verificar
ls *txt |wc 
#Ahora ejecutamos el ejemplo de condicional
if [ $(ls *txt |wc) -gt 0 ]
then
    echo "Existen ficheros txt. Los borramos"
    rm *txt
fi

En este script hemos borrado los ficheros *txt y hemos evitado que el script de error en caso de no existir ninguno.

Condicionales complejas

Se pueden construir condicionales complegas donde se conjugan varias de ellas a través de los operadores los booleanos “y” &&, “o” (||) y negación (!), este último que ya hemos visto. Ilustrémolos con un par de ejemplos en los que usaremos comando date para obtener información sobre el día de hoy. Con “o” basta que se cumpla una de las dos condiciones :

#Asignamos a la variable today el día de la semana.
today=$(date +%A)
#Evaluamos el condicional.
if [ $today == "lunes" ] || [ $today == "martes" ]; then
    echo "Hoy es lunes o martes."
fi

Con “y” han de cumplirse ambas condiciones:

#Asignamos a la variable today el día de la semana.
dia=$(date +%e)
mes=$(date +%B)
#Evaluamos el condicional.
if [ $mes == "marzo" ] && [ $dia == "13" ]; then
    echo "Hoy es mi cumpleaños."
fi

El operador && siempre se evalua antes que ||, pero se puede alterar esto agrupando los comando con paréntesis. Por ejemplo:

( [  cond-1 ] || [ cond-2 ] ) && ( [  cond-3 ] || [ cond-4 ] )

 

 

 

Comandos Avanzados, Linux

¿Qué es un Supercomputador?

October 21st, 2013

El término supercomputador surgió en la década de los 60, para describir el ordenador CDC 6600 que creó entonces la compañía Control Data Corporation (CDC). Este ordenador fue diseñado principalmente por  Seymour Cray, que abandonó CDC en 1974 formando la empresa Cray Inc.

Las computadoras diseñadas por Cray tenían innumerables mejoras respecto a otros computadores de la misma época. Consideraban la paralelización a la hora de ejecutar códigos, y alcanzaba picos de rendimiento muy altos, la memoria y almacenamiento también era singulares. Al principio, estos supercomputadores eran máquinas individuales, con un único procesador y memoria que accedía el mismo. Más tarde, incorporaron varios procesadores, todos ellos accediendo la misma memoria. Los procesadores de estos supercomputadores eran vectoriales, y tenían un alto rendimiento en aplicaciones científicas, es decir en el Cálculo Científico. Podían realizar operaciones con vectores/matrices muy rápido y en pocos ciclos, ya que estos cabían en los registros del los procesadores.

Hasta la década de los noventa, fueron estos los supercomputadores más potentes del mercado. Los procesadores escalares que predominan hoy en día, realizan los cálculos con un único dato en cada ciclo. Los computadores Cray eran muy caros, costaban varios millones de dolares, y eran muy pocas las instituciones que podían contar con un supercomputador entre sus recursos para la investigación. Estos supercomputadores, aunque fueran unidades computacionales, eran grandes de tamaño (ver Fig 1).

Figura 1. Cray 2  4 procesadores vectoriales (1985). Fuente infotology.

 

En la década de los 90, la arquitectura de los supercomputadores cambio, y la unión de miles de ordenadores crearon los nuevos supercomputadores con miles de procesadores, los clusters de computación.

En 1993, se creó la lista del top500, donde aparecían los supercomputadores más potentes del momento. Mirando los ordenadores más potentes de ésta lista a largo de los años, vemos que durante algunos años se alternaron en el número uno los superordenadores con procesadores vectoriales y escalares. Hasta 1997, a partir de ese año, los procesadores vectoriales desaparecieron.

En las fotos de abajo se pueden ver algunos ordenadores que han estado en el top de la lista top500, en ellos se puede ver la evolución en el tamaño de los supercomputadores.

Figura 2.- Connection Machine 5  supercomputador con 1024 procesadores escalares. (1993). Fuente infotology.

 

Figura 3.-  Supercomputador Fujitsu Numerical Wind (1994). Tenía 140 procesadores vectoriales, que eran más rápidos que los 3.680 escalares del supercomputador Intel Paragon XP/S140. Fuente infotology .

 

Figura 4.-  Supercomputador K de Fujitsu. Fuente infotology.

 

Los supercomputadores de hoy en día son clusters (granjas) de computadoras, miles de ordenadores que a través de unas redes especiales se unen en un supercomputador. Estas unidades, estos ordenadores que forman el supercomputador, son parecidas a los ordenadores normales que todos conocemos, eso sí, disponen de procesadores de alto rendimiento (para el cálculo científico), y normalmente también tienen más memoria que los ordenadores convencionales. Estas unidades están unidas por redes especiales, redes diseñadas específicamente para un superordenador concreto, redes del tipo cray, o algo más estándares como pueden ser infiniband y 10Gb Ethernet. A menudo también disponen de un sistema de almacenamiento de altas prestaciones, que puede ser otro cluster que se dedica únicamente a guardar los datos generados por la parte que se dedica al cómputo.

Estas características permiten crear supercomputadoras menores con los mismos componentes que los que pueden tener los que aparecen en la lista del top500. Estos superordenadores se quedarían en unos pocos miles de procesadores, pero suficientes para muchos investigadores. Para diferenciar estos superordenadores de menor tamaño, se suele usar el término de Computador de Altas Prestaciones, (HPC en inglés, de High Performance Computing), aunque es muy difícil de establecer el límite entre unos u otros.

Tabla 1.-  Los primeros ordenadores (o sus familias) de la lista Top500 a lo largo de los años.

Año Supercomputador Procesadores Potencia (Rmax) TFLOPS
Junio 1993 TMC CM-5 1.024 Escalares 0,1
Noviembre 1993 Fujitsu Numerical Wind Tunnel 140 Vectoriales 0,12
Junio 1994 Intel Paragon XP/S140 3.680 Escalares 0,14
Noviembre 1994 Fujitsu Numerical Wind Tunnel 140 Vectoriales 0,17
Junio 1996 Hitachi SR2201 1.024 Pseudo-Vectoriales 0.22
Noviembre 1996 Hitachi CP-PACS 2.048 Pseudo-Vectoriales 0,37
Junio 1997 Intel ASCI Red 7.264  Escalares (9.632) 1 (2.3)
Noviembre 2000 IBM ASCI White 8.192 Escalares 4,9
Junio 2002 NEC Earth Simulator 5.120 Escalares 35
Noviembre 2004 IBM Blue Gene/L* 32.768 (212.992) Escalares 70       (478)
Junio 2008 IBM Roadrunner 122.400   Escalares 1.026 GPU
Noviembre 2009 Cray Jaguar 224.162  Escalares 1.759
Noviembre 2010 NUDT Tianhe-1A 186.368  Escalares 2.566 GPU
Junio 2011 Fujitsu K computer 548.352  Escalares 8.162
Junio 2012 IBM Sequoia Blue Gene/Q 1.572.864  Escalares 16.324
Noviembre 2012 Cray Titan 560.640  Escalares 17.590 GPU
 Junio 2013 NUDT Tianhe-2 3.120.000  Escalares 33.862 Coprocesadores

* Durante los años 2004-2008 fueron diferentes Blugene/L los que estuvieron en el top de la lista top500 con entre 32.786 y 212.992 cores. Algo similar ocurrió con ASCI Red.

Mirando la Tabla 1. llama la atención el Road Runner de 2008 y la aparición de las GPU (en este caso procesadores de Play Station) en su arquitectura, y cómo, a pesar de tener casi la mitad de procesadores que su predecesor (212.992), tiene más del doble de TeraFLOPS gracias a la potencia de las GPUs. Las GPUs son los compononetes especializados en cálculo gráfico para la representación de imágenes complejas en nuestros ordenadores, por ejemplo las de los videojuegos. La tecnología GPU para cálculo es una rama especializada en la utilización de esta tecnología para el cálculo científico. Las GPUs se pueden entender como una especie de coprocesador que se encuentra fuera de la CPU, y que ayuda a realizar operaciones matemáticas de una manera muy rápida y eficiente. Muchos de los supercomputadores actuales incluyen tarjetas GPUs. El Tianhe-2, supercomputador más rápido del momento, utiliza otro tipo de coprocesadores, que no tiene nada que ver con las GPUs, pero que cumplen con el mismo objetivo.

Uno de los principales problemas de la actualidad es el consumo energético de uno de estos supercomputadores (hablamos del tema en el post El top de los ordenadores más potentes del mundo, y la lista green500). Una solución para reducir éste consumo en la carrera hacia el ExaFLOPS, además del uso de GPUs, es el uso de procesadores de bajo consumo similares a los que se usan en teléfonos móviles o tablets. Estos procesadores no son tan potentes como los actuales, pero su eficiencia energética es mayor. El proyecto  MontBlanc  es un ejemplo, donde tiene como objetivo construir un supercomputador con potencia de 1 ExaFLOPS y un consumo en proporción 15/30 veces menor que los actuales.

Nota: Este post es básicamente una traducción del post Zer da Superkonputagailu bat? que publicamos en Euskera.

HPC

Estadísticas e informe de 2012 del Servicio de Cálculo Científico

October 18th, 2013

Memoria 2012

El Servicio de Informática Aplicada a la Investigación (Cálculo Científico) IZO-SGI SGIKer ha publicado la memoria del 2012. La memoria completa puede encontrarse en el siguiente enlace:

IZO-SGI informe del 2012 (pdf)

 

El IZO-SGI en cifras

En la siguiente tabla se resumen los datos más significativos del Servicio de cálculo en los últimos años. En la figura inferior se muestra la ocupación de Arina.

2009 2010 2011 2012
Cores de cálculo 440 872 1.520 1.520
Millones de horas de cálculo consumidas 2,11 2,26 5,76 11,27
Investigadores activos 101 98 90 89
Grupos activos 53 40 39 42
Cuentas nuevas 49 33 33 20
Satisfacción de los usuarios¹ 8.9 8.8 8.8 9,3
Artículos científicos² 44 58 57 74
Visitas web 4.925 5.957 8.022 9.899
Páginas vistas 58.731 40.987 30.042 30.738
Posts en el blog HPC 29 34 27
Visitas del blog HPC 1.431 3.818 4.741
Arina
Cores de cálculo 320 752 1.360 1360
Millones de horas de cálculo consumidas 2,07 2,11 5,20 9,6
Promedio de ocupación 75% 47%³ 74% 79%
Trabajos enviados 38.497 65.179 68.991 98.383
Trabajos de más de 2 minutos⁴ 28.377 50.624 51.735 78.846
Tiempo promedio por trabajo⁵ 76 horas 44 horas 101 horas 122 horas
Tiempo medio de espera⁶ 5,7 horas 3,8 horas 3,8 horas 5,2 horas
Péndulo
Cores de cálculo 120 120 120 80
Millones de horas de cálculo consumidas 0,02 0,15 0,09 0,07
Ikerbasque
Cores de cálculo 208 208
Millones de horas de cálculo consumidas 0,47 1,6

 

¹ Encuesta de satisfacción de los usuarios del Servicio realizada por la Unidad de Calidad de SGIker.
² En los que se agradece al IZO-SGI.
³ El uso de 2010 es aparentemente bajo debido a que se instaló una ampliación de Arina que pasó de 300 cores a 752 y se hizo disponible a finales de Julio. Esto provocó que en Agosto y Septiembre Arina estuviese muy vacía y, debido a la magnitud de la ampliación, estos meses han tenido mucho peso en la media anual. En el mes de Noviembre ya se alcanzó un 76% de ocupación.
Los trabajos de menos de 2 minutos se deben normalmente a trabajos fallidos que terminan inmediatamente en error. En cualquier caso, aun de no ser así, dada su corta duración no repercuten en el cluster.
No se han tenido en cuenta los trabajos de menos de dos minutos.
Los trabajos se ejecutan a través de un sistema de colas que asigna a cada trabajo los recursos que se le han solicitado y ordena su ejecución para optimizar el uso del cluster. El tiempo en cola es el tiempo que están esperando los trabajos hasta que se liberan los recursos que necesitan.

2012 Arina year use

Uso de Arina de Diciembre de 2011 a Noviembre de 2012.

 

 

IZO-SGI

Variables y arrays en Linux

October 14th, 2013

En Linux se pueden definir variables y arrays para facilitar la programación. La diferencia es que una variable almacena un dato mientras que un array almacena varios y se puede acceder a ellos individualmente.

Variables

Para asignar una variable usamos simplemente el nombre que queremos usar pero para mostrar su valor usamos el comando echo y la variable precedida del símbolo "$", para indicar que queremos que echo nos devuelva el valor de la variable y no el nombre que indicamos. Veamos unos ejemplos:

 $ a=1

 $ #Imprimimos la cadena literal a
 $ echo a
 a

 $ #Imprimimos la varible a
 $ echo $a
 1

 $ #Otros ejemplos
 $ variable1=cascanueces
 $ echo $variable1
 cascanueces
 $ kpj33='Entrecomillado para usar espacios'
 $ echo $kpj33
 Entrecomillado para usar espacios

 $#Asignamos a una varible otra variable
 $ a=xy
 $ b=$a
 $ echo $b
 xy

 $ #Con comillas simples no interpreta la variable
 $ #en el siguiente ejemplo $a
 $ c='La variable a tiene por valor $a'
 La variable a tiene por valor $a

 $ #En general en linux las comillas dobles
 $ #si interpretan las variables
 $ c="La variable a tiene por valor $a"
 La variable a tiene por valor xy

Arrays

Los arrays tienen una sintaxis diferente para asignarlos a las variables, precisamene para poder diferenciarlos. Posteriormente se pueden mostrar los elementos uno a uno.El índice del primer elemento es el 0 no el 1. Veámoslo con unos ejemplos.

 $ #v es una variable
 $ v="a b c"
 $ #a es un array
 $ a=(a b c)

 $ #Puedo imprimir la variable v
 $ echo $v
 a b c

 $ #La misma sintaxis me imprimirá solo el primer elemento de un array
 $ echo $a
 a

 $ #Que equivale a
 $ echo ${a[0]}
 a

 $ #Para imprimir cualquier elemento
 $ echo ${a[1]}
 b
 $ echo ${a[2]}
 c

 $ #Para imprimir todos
 $ echo ${a[*]}
 a b c

 $ #Curiosamente se admiten expresiones matemáticas, para imprimir el elemento 2=1+1
 $ echo ${a[1+1]}
 c

La sintaxis de array solo funciona para variables, o si se aplica a una variable la interpreta como un array de un elemento

 $ v="a b c"
 $ echo ${v[0]}
 a b c
 $ echo ${v[1]}

 $ #El elemento 1 ya no existe

Nos ha imprimido el resultado correcto en el primer caso, pero dado que no existe un segundo elemento en el segundo ejemplo no imprime nada. Por último, podemos obtener el número de elementos de un array “contándolos” con el símbolo "#":

 $ v=(a b c d)
 $ echo ${#v[*]}
 4

Asignando la salida de un comando

Podemos utilizar la salida de un comando a modo de variable generalmene en cualquier contexto y en particular para asignarlo a una variable ejecutándolo entre $(). Para ellos usaremos el comando seq. Veamos un ejemplo de creación de una variable:

 $ seq 1 5
 1 2 3 4 5
 $ v=$(seq 1 5)
 $ echo $v
 1 2 3 4 5

De forma similar para crear un array con la sintaxis de un array usando ():

 $ v=($(seq 1 5))
 $ echo ${#v[*]}
 5
 $ echo ${v[2]}
 3

Comandos Avanzados, Linux

Próxima ampliación de los recursos computacionales de la UPV/EHU

October 10th, 2013

El Servicio General de Informática Aplicada a la Investigación-Cálculo Científico (IZO/SGI), que oferta servicios de computación a la UPV/EHU, la comunidad científica y empresarial, motivado por la fuerte demanda de sus investigadores va a ampliar sus recursos computacionales a través de concurso público que acaba de ser publicado ((PA 29/13) en el DOUE, BOE y en el Perfil del Contratante).

Índice

El IZO-SGI

Características de la futura ampliación

Characteristics of the upgrade (In English)

 

El IZO-SGI

El Servicio General de Informática Aplicada a la Investigación-Cálculo Científico (IZO/SGI) se creó el 2004 con la compra de las primeras unidades del que se denominaría Cluster Arina que constaba de 56 procesadores interconectados a través de una red Myrinet que se ha ido actualizando regularmente y la contratación de dos técnicos.

Cluster de cálculo Arina trás 5 ampliaciones.

Cluster de cálculo Arina trás 5 ampliaciones.

Antes de la existencia del IZO/SGI, enmarcado dentro de los Servicios Generales de Investigación (SGIker), existían pequeños clusters y/o servidores pertenecientes a los grupos de investigación repartidos por la UPV/EHU. Esto obligaba a cada grupo tener que administrar sus propios recursos dedicando parte de su tiempo a ello, lo que reduce el tiempo disponible para la investigación. Por otra parte, cuando estos grupos no estaban utilizando sus computadoras (vacaciones o épocas sin calcular por diversos motivos),  se puede considerar que perdían en la amortización de las mismas, ya que al estar paradas, su poder computacional estaba siendo desaprovechado mientras que  las máquinas seguían envejeciendo.

El IZO/SGI libera a los grupos de investigación de tener que dedicar parte de su tiempo a la administración de un cluster y/o servidor y ofrece a los investigadores recursos que de forma individual no podrían tener. Los recursos están debidamente administrados y optimizados. Además, al ser un recurso compartido se garantiza que el uso de la máquina sea continuo al haber un altísimo número de investigadores usándola, por lo que su amortización es prácticamente óptima.

Los recursos del IZO-SGI se han convertido en la principal herramienta computacional para muchos grupos de la Universidad y también grupos externos. Algunos, incluso han dejado de comprar equipamiento propio, y es por eso que tenemos la necesidad de mejorar esta infraestructura ampliando sus recursos, con el fin de que los usuarios dispongan de herramientas óptimas para poder seguir desarrollando sus labores de investigación.

En la hoja de ruta del Servicio se estableció la conveniencia de ampliar los recursos cada dos años, para así­ poder ofrecer a los investigadores de la UPV/EHU y la CAV unos recursos óptimos y punteros en el ámbito de la Computación de las Altas Prestaciones, siempre y cuando la demanda lo exigiese. El periodo de actualización de dos años viene determinado por la rápida evolución del hardware informático que hace que los equipos pierdan mucho valor en dos años. Como referencia de esta evolución en los clusters de cálculo científico están las estadísticas del Top500, la lista de los ordenadores más potentes del mundo. De ésta se extrae que su potencia se duplica cada 14 meses desde 1993, o lo que es lo mismo, la competitividad de un cluster cae a la mitad cada 14 meses.

Características de la futura ampliación

Siguiendo con la hoja de ruta del Servicio y la demanda de recursos por parte de los investigadores del Servicio se ha aprobado una ampliación. Con esta ampliación se adquirirán mediante concurso público  los siguientes equipos que pretenden cubrir las necesidades de los investigadores:

  • Nuevos nodos de cálculo de propósito general para satisfacer la necesidad fundamental de potencia de cálculo.
  • Un nodo con 512 Gb de memoria RAM orientado en concreto el ensamblaje procedente de secuenciación genética y a los cálculos más puntuales que necesitan mucha memoria.
  • 2 nodos con GPGPUs para continuar dando soporte a los investigadores que actualmente la usan y tener un banco de test de esta innovadora tecnología.
  • Un sistema de almacenamiento de altas prestaciones para el cálculo.
  • Todo ello interconectado con una Infiniband FDR.

En la tabla 1 se detallan las ampliaciones más significativas del Servicio y algunas de sus características a grosso modo.

Tabla:
Ampliación de los recursos del IZO-SGI. Un core es técnicamente lo que antes se conocí­a como procesador.
Año Ampliación Realizada
2004 56 ia64 cores + Myrinet
2006 72 cores (32 ia64 y 40 x86_64)+ Almacenamiento + infiniband
2008 192 cores (ia64) + infiniband
2010 448 cores (x86_64)+ Almacenamiento + GPGPU + infiniband
2011 Ampliación con convenio con nanoGUNE
648 cores (x86_64) + Almacenamiento + infiniband

Characteristics of the upgrade

Following the road map of the Computing Service and the demand of more computational resources by the researchers of the Service has been approved to upgrade our computational resources. The following elements will be acquired through open competition in order to meet the requirements of the researches :

  • New computing nodes to fulfill the general computing needs of the researchers.
  • A 512 GB node focused in the assembly of genetic data and calculations with large memory needs.
  •  2 nodes with GPGPUS to continue the support to the researches that use this technology.
  • A High performance parallel files system.
  • Everything interconnected with FDR  Infiniband.

 

 

 

Anuncios, IZO-SGI

A supercomputer in your pocket

October 8th, 2013

Computer power doubles every 18 months so todays smartphones, tablets and small electronic devices have a computer power comparable to the supercomputers of the early 90’s. The Fonebank infographic team has created this visual infographic with curios comparisons, milestones, information, etc. about the supercomputer’s world.

Full size infographic

 

A supercomputer in you pocket infographic

A supercomputer in you pocket infographic

HPC

Comando date en Linux

October 1st, 2013

Regla mnemotécnica

date: Fecha en ingles.

El comando date nos permite imprimir la fecha de hoy en muchísimos formatos. También nos permite extraer solo el día, mes, día de la semana, etc. Es útil en la ejecución de scripts pues nos permite saber cuando se ha ejecutado, por ejemplo si estos se ejecutan de forma automática en ciertas cirscustancias. Si lo ejecutamos sin argumentos nos imprime la fecha de hoy en formato largo.

$ date
mié sep 25 12:31:17 CEST 2013

Si queremos controlar el formato tenemos que usar una sintaxis tipo

$ date +formato

donde en formato tenemos muchas posibilidades. Algunas de ellas las indicamos en la siguiente tabla. No obstante, lo mejor para conocer todos los posibles formatos es usar el comando de ayuda man con man date que nos mostrará el manual de date.

%a Día de la semana abreviado (lun, mar, etc)
%A Día de la semana (lunes, martes, etc)
%b Més abreviado (ene, feb, mar, abr, etc
%e Día del mes (1,2,..,31)
%D Fecha en formato dd/mm/aa
%H Hora en formato 00,..,23
%M Minutos en formato 00,..,59
%T Hora completa en formato hh:mm:ss (24 horas)
%W Semana del año, el lunes el primer día (00,..,53)

Así por ejemplo:

#Manual de date
$ man date

#Diferentes comandos de date
$ date +%a
lun

$ date +%T
22:15:35

$ date +%H%M
2215

También se puede intercalar texto como en los siguientes ejemplos:

#Sin texto
$ date +%H%M
2215

#Con texto, no podemos incluir espacios en blanco
$ date +hora%Hdia%M
hora22dia15

#Pero podemos formatearlo mejor entrecomillando el texto
$date +"hora: "%H" - dia: "%M
hora: 22 - dia: 15

Se puede usar el comando date para indicarle una fecha específica con la opción -d como en los ejemplos:

#La fecha de ayer 
$ date -d yesterday
mar sep 24 12:31:17 CEST 2013

#La fecha de mi cumpleaños
$ date -d 02/17/76
mar feb 17 00:00:00 CEST 1976

$ date -d 02/17/76 +"Nací un "%A
Nací un martes

 

 

 

Comandos Avanzados, Linux