Story Transcript
Descripción de la máquina. • Altix 3700 Bx2. • 64 procesadores 1600 MHz Intel Itanium 2 Rev. 1 Processor y con una memoria 128 GB. • ip 147.96.1.107 y dns abaco.sim.ucm.es. • Linux basado en Redhat Enterprise AS version 3.0.
1. PROGRAMAS DE CONEXIÓN. • Conexión remota a través del protocolo ssh. – “SSH Secure Shell Client” para una conexión segura y un icono denominado “SSH Secure File Transfer Client” para la realización de FTP seguro.
• El programa Exceed puede actuar como un servidor de ventanas X.
2. INTRODUCCIÓN A LINUX. • Un shell es un entorno, para la relación con el sistema basados en modo texto (a través de comandos). tcsh, bash, bsh y ksh son los más habituales. • Algunas nociones básicas: – Teclear exactamente, diferenciar mayúsculas y minúsculas, carácter % para root (administrador), autorrellenado con Tab, cambio de directorio…
ALGUNOS COMANDOS SENCILLOS. • Manual de comandos de Linux: man – Sintaxis: man – q para salir.
• • • •
Cambio de contraseña: passwd Fecha: date, cal Uso del terminal: who, whoami Limpiar la consola: clear
COMANDOS MÁS UTILIZADOS. • Listado del contenido de directorios: ls – Este comando admite múltiples opciones (ver man ls). – Es posible combinar las acciones. – Nota: El carácter * representa cualquier conjunto o secuencia de caracteres. El carácter ? representa cualquier carácter, pero sólo uno.
• • • • • •
Creación de directorios: mkdir Borrado de subdirectorios: rmdir Cambio de directorio: cd Situación actual: pwd Copia de ficheros: cp Traslado y cambio de nombre de fich: mv – Realiza la misma función que cp pero se destruye el fichero original y sólo queda el fichero destino.
• Enlaces a ficheros: ln – En realidad sólo existe un fichero pero puede haber varios enlaces o accesos al mismo. – A diferencia de los comandos cp y mv, este comando toma más precauciones, ya que advierte previamente si el nombre nuevo está ocupado, y en este caso no se ejecuta. – Los ficheros enlazados a otro se borran como los ficheros normales. – El contenido del fichero sólo se borra cuando se borran todos los enlaces al fichero.
• Borrado de ficheros: rm – Se recomienda usar siempre el comando -i (ej. rm –i file 1) para evitar el borrado de ficheros útiles.
• Características de un fichero: file • Cambio de modo de los ficheros: chmod – Los permisos se ven con: ls –l – Sintaxis: chmod [u,g,o,a] [+/-][r,w,x] [archivos] (ej. chmod a –r fichero.txt). – Los permisos de lectura, escritura y ejecución tienen un significado diferente cuando se aplican a directorios.
• Espacio ocupado en disco: du, df y quota
VISUALIZACIÓN DE FICHEROS. • Visualización sin formato: cat – También permite copiar uno o más ficheros como apéndice de otro ya existente. – El carácter > se utiliza para almacenar un fichero en otro, y >> para añadir al final de un fichero (ej. cat file1 > file3). Se verá después.
• Cabecera: head • Visualización con formato: pr – Está muy en relación con el comando lp (de salida por impresora). El carácter > crea un fichero nuevo al original, pero con formato.
BÚSQUEDA DE FICHEROS. • Búsqueda de ficheros: grep – Sintaxis: grep 'conjuntocaracteres‘ file – Las expresiones regulares son una forma de describir patrones (utilizando caracteres especiales de Linux) para la búsqueda de unas determinadas líneas dentro de uno o más ficheros ASCII
COMPRESIÓN. • Compresión: tar y gzip – tar sirve para agrupar varios ficheros en un solo fichero, mientras que gzip sirve para comprimir un fichero. – Es típico emplear tar y gzip de forma consecutiva, para obtener ficheros con extensión tar.gz o tgz (similar a un zip de Windows).
3. REDIRECCIONES Y TUBERÍAS. • Redirecciones: – El operador > de redirección dirige la salda estándar hacia la salida indicada a continuación (normalmente un fichero). – El operador < redirige la entrada estándar desde un determinado fichero. – El operador >> redirige la salida estándar hacia otro fichero, pero en modo append.
• Tuberías: – El concepto de tubería (pipe), consiste en “empalmar” la salida estándar de un comando con la entrada estándar de otro. – Con el operador de tubería | se pueden empalmar tantos comandos como se desee.
• Bifurcación o T: – El operador tee hace que la salida de un comando, además de redirigirse a un determinado fichero, se bifurque también hacia la terminal
4. PROGRAMAS DE COMANDOS. SCRIPTS. • Una primera forma de agrupar comandos la ofrece Linux por medio del carácter: ; • Es posible agrupar en un fichero distintos comandos para ejecutarlos con una sola instrucción posteriormente. • Para ejecutar este script, puede teclearse el comando sh fichero_de_comandos, o bien convertirlo (mediante chmod) para que sea directamente ejecutable.
• Las órdenes sh fichero_de_comandos y fichero_de_comandos no son enteramente equivalentes. • Para que las variables del shell original conserven su valor en el nuevo shell, es necesario preservarlo con el comando export antes de abrir el nuevo shell. • Para introducir líneas de comentarios en un script, basta comenzar dichas líneas con el carácter #
VARIABLES DE ENTORNO O DEL SHELL. • UNIX permite definir variables en un script: USER=/mnt/mecan/juanto TERM=hp2392 • Si utilizamos en el script el valor de TERM, hay que escribir $TERM y se sustituirá por su valor. • El comando set muestra las variables de entorno estándar que Linux tiene definidas para cada usuario.
COMANDO ECHO. • El comando echo imprime un determinado texto en el terminal, es útil en los scripts. • Cuando el texto contiene alguno de los caracteres especiales de UNIX ( * ? [ ] > >> < & ; \ ' ) hay que tratarlos como caracteres literales y no como metacaracteres. – La barra invertida \ anula un metacaracter. – Las comillas simples ‘’ anulan el significado de todos los caracteres contenidos en ellas.
– Las comillas dobles “” anulan el significado de todos los caracteres excepto los metacaracteres ` \ . – El carácter \ tiene otros significados,cuando en un comando echo aparecen los caracteres \c y \n quiere decir, respectivamente, que no se cambie de línea y que se salte de línea, al escribir por la pantalla. – Cuando en un comando echo aparece el nombre de otro comando encerrado entre el carácter ` (p.ej. `date`, `who`, `ls`, ...), el nombre de dicho comando se sustituye por el resultado que genera al ejecutarse interactivamente.
PARÁMETROS DE LOS PROGRAMAS DE COMANDOS. • Los scripts pueden recibir como parámetros un conjunto de una o más variables. Dentro del script, estas variables o parámetros se conocen o identifican con los nombres 0, 1, 2, ..., 9. La variable 0 representa el propio nombre del fichero de comandos, y 1, 2, ..., 9 son los nombres de los parámetros propiamente dichos.
EJECUCIÓN DE PROGRAMAS • Ejecución en Background: – Para recuperar el control del terminal tras el lanzamiento a ejecución, basta añadir el carácter & al final del comando de ejecución. – Para detener definitivamente dicha ejecución (no se puede detener temporalmente) se puede utilizar el comando kill – Para que el programa continúe ejecutándose aun cuando hayamos terminado la sesión, hay que utilizar el comando nohup – nice permite realizar ejecuciones con baja prioridad
5. GESTOR DE COLAS. batch1d
Limite CPU 24 horas, 1 semana de ejecución,40 procesadores simultáneos, 8 por usuario. Ejecución en 1 CPU, Cola por defecto.
batch15d
Limite CPU 15 días, 1 mes de ejecución, 40 procesadores simultáneos, 8 por usuario. Ejecución en 1 CPU
batchduro
Limite CPU 2 meses, 4 meses de ejecución, 40 procesadores simultáneos, 8 por usuario. Ejecución en 1 CPU
paralelo
Limite CPU 2 meses, 4 meses de ejecución, 56 procesadores simultáneos, 16 por usuario. Ejecución hasta en 8 CPU.
TRABAJOS EN UNA COLA • Envío de trabajos a una cola. – bsub [-q nom_cola] [trabajo [argumento]]
• Información del estado de colas. – bqueues [-w | -l [nom_cola]]
• Información del estado de los trabajos. – bjobs [-w | -l] [-q nom_cola] [-u nom_us | all]
• Eliminación de un trabajo enviado. – bkill id
6. COMPILACIÓN. INTEL FORTRAN IFORT • Usaremos el comando ifort tanto para compilar como para cargar programas realizados en Fortran 77, 90 o 95 respectivamente. • La sintaxis general del comando es: ifort [-opciones[args]] ... fichero [fichero] ... [-opciones[args]]
• Ficheros de entrada, que serán interpretados según su extensión: – .f , .for, .ftn, .fpp, .F, .FOR, .FTN ó .FPP : Fuentes Fortran con formato fijo, son pasados directamente al compilador. – .F90 o .f90 : Fuentes Fortran con formato libre, son pasados directamente al compilador. – .o : Módulos objeto, serán pasados al cargador. – .a : Librería estática u otro fichero lincable. – .s : Ficheros fuente en lenguaje ensamblador simbólico.
• Ficheros de salida: – La ejecución del comando ifort puede producir: • Fichero(s) objeto si se especifica la opción -c • Fichero(s) ejecutable(s) si no se especifica -c • Listado(s) de la compilación con la opción –V
– Por defecto el nombre de un ejecutable será a.out – El de un objeto será el mismo que el del fuente con extensión .o – Los ficheros con listados de compilación se llamarán igual que las fuentes originales con extensión .l
• Múltiples ficheros e interacción de opciones: – -o : Renombra los ficheros de salida. – El comando ifort admite varios ficheros de entrada. • Si se aplican a la vez las opciones -c y -o se crea un único objeto a partir de los programas fuente. • Si se indican simultáneamente las opciones -V y -c se genera un listado por cada fuente de entrada. Especificando sólo -V se genera un único listado.
• Ejecución y ejemplos: – Para ejecutar un programa bastará con teclear el nombre del ejecutable al prompt del sistema. – Un ejemplo sencillo sería: • ifort median.for Æ generaría a.out • ifort -o median median.for Æ renombra la salida además del • ifort -c median.for ejecutable se guarda ifort -o median median.o el objeto
• Optimizaciones básicas – -O0 Deshabilita todas las optimizaciones. Es útil cuando se está desarrollando y depurando código – -O1 Optimiza en espacio. Omite las optimizaciones que aumentan el tamaño sin mejorar apreciablemente el rendimiento – -O2 Optimiza en velocidad. Es el nivel de optimización por defecto. Mejora apreciablemente el rendimiento a costa del tamaño del ejecutable – -O3 Optimización agresiva en velocidad. Incluye las optimizaciones introducidas con -O2 más otras de más alto nivel.
INTEL C/C++ ICC • Usaremos el comando icc tanto para compilar como para cargar programas realizados en C • Para tener una información mas detallada del uso del compilador y de la sintaxis existente, teclear man icc. • La sintaxis general del comando es: icc [-opciones[args]] ... fichero [fichero] ... [-opciones[args]]
• Ficheros de entrada, que serán interpretados según su extensión: – .c, .C, .i : Fichero de entrada con el código fuente escrito en C, es pasado directamente al compilador. – .cc, .cpp, .cxx, .ii : Fichero de entrada escrito en C,es pasado directamente al compilador. – .o: Módulos objeto, serán pasados al cargador. – .a: Librería estática u otro fichero lincable. – .s: Ficheros fuente en lenguaje ensamblador simbólico.
• Ficheros de salida: – La ejecución del comando icc puede producir: • Fichero(s) objeto si se especifica la opción -c • Fichero(s) ejecutable(s) si no se especifica -c • .a : Fichero(s) lenguaje ensamblador simbólico si se especifica la opción -s.
– Por defecto el nombre de un ejecutable será a.out – El de un objeto será el mismo que el del fuente con extensión .o
• Múltiples ficheros e interacción de opciones: – -o : Renombra los ficheros de salida. – -S : Compila los ficheros fuente especificados y genera el programa en lenguaje ensamblador simbólico con el sufijo .s – El comando icc admite varios ficheros de entrada. • Si se aplican a la vez las opciones -c y -o se crea un único objeto a partir de los diversos programas fuente. Si no se combinan ambas opciones, se genera un objeto por cada fuente.
• Ejecución y ejemplos: – Para ejecutar un programa bastará con teclear el nombre del ejecutable al prompt del sistema. – Un ejemplo sencillo sería: • icc prueba.c Æ generaría a.out • icc -o prueba prueba.c Æ renombra la salida además del • icc -c prueba.c ejecutable se guarda icc prueba.o -o prueba el objeto
• Optimizaciones básicas – -O0 Deshabilita todas las optimizaciones. Es útil cuando se está desarrollando y depurando código – -O1 Optimiza en espacio. Omite las optimizaciones que aumentan el tamaño sin mejorar apreciablemente el rendimiento – -O2 Optimiza en velocidad. Es el nivel de optimización por defecto. Mejora apreciablemente el rendimiento a costa del tamaño del ejecutable – -O3 Optimización agresiva en velocidad. Incluye las optimizaciones introducidas con -O2 más otras de más alto nivel.
COMPILACIÓN Y EJECUCIÓN MPI • En icc y ifort, si después de los flags y del codigo fuente ponemos –lmpi accederemos a las librerías que tienen implementadas las funciones de mpi. • Nuestro programa ya compilado, se ejecuta poniendo – mpirun -np numprocesos nomejecutable mpirun -np 4 saludos.out