Vous êtes sur la page 1sur 137

Contenido.

Acceso al cluster
Herramientas en lnea de comandos
Configuracin del entorno de trabajo
Uso de editores
Uso de compiladores
Uso del sistema de colas I
Uso del sistema de colas II
File management
ls - directory listing
ls -a - directory listing with hidden files
ls -al - formatted directory listing with hidden files
cd dir - change directory to dir
cd - change to home
cd - - change back to previous directory
pwd - show current directory
mkdir dir - create directory dir
rm file - delete file
rmdir dir - delete empty directory dir
rm -r dir - recursively delete directory dir (use with caution)
rm -f file - force remove file; no error output if file doesn't exist
rm -rf dir - recursively force remove directory dir (use with caution)
cp file1 file2 - copy file1 to file2
cp file1 file2 file3 dir - copy file1, file2 and file3 to dir
cp -r dir1 dir2 - recursively copy dir1 to dir2; create dir2 if it doesn't exist
mv file1 file2 - move file1 to file2 if file2 is an existing directory, moves file1 into directory file2
ln -s file link - create symbolic link link to file
>file - create file (use with caution, doing this on an existing file will overwrite the content)
touch file - create or update file
cat > file - places standard input into file
cat file1 > file2 - overwrites the content of file2 with the content of file1
cat file1 >> file2 - appends the content of file1 to file2
echo "Hello World" > file - overwrites file's content with Hellow World
echo "Hello World" >> file - appends Hello World to the end of file
less file - output the contents of file
more file - output the contents of file
head file - output the first 10 lines of file
tail file - output the last 10 lines of file
tail -f file - output the contents of file as it grows, starting with the last 10 lines
sed 's/foo/bar/g' file - replaces all occurrences of foo with bar in file
sed -i.backup 's/foo/bar/g' file - replaces all occurrences of foo with bar in file after backing up file as
file.backup
rm {m,M}yfile - remove files according to a pattern

Process Management
ps - display your currently active processes
top - display all running processes
kill pid - kill process id pid
killall proc - kill all processes named proc * file
bg - lists stopped or background jobs; resume a stopped job in the background
fg - brings the most recent job to foreground
fg n - brings job n to the foreground
File Permissions
chmod octal file - change the permissions of file to octal, which can be found separately for user, group, and
world by adding:
* 4 read (r)
* 2 write (w)
* 1 execute (x)

Examples:
chmod 777 - rwx for all
chmod 755 - rwx for owner, rx for group and world. For more options, see man chmod

Searching
grep pattern files - search for pattern in files
grep -r pattern dir - search recursively for pattern in dir
command | grep pattern - search for pattern in the output of command
updatedb - updates the slocate database (only root); see next item
locate file - find all instances of file(any user); may need to run updatedb first
find $HOME -user root - find files owned by root in $HOME
find /path -depth -type d -empty - find empty directories
find /path -type d -empty -exec rm -rf '{}' \; - find and delete empty directories
find /path -depth -type f -empty - find empty files
find /path -name [name_of_file] - find a file with a specific name
find /path -name "*.[given_extension]" - find a file with a specific extension
find /path -name '*.txt' -perm 644 - find .txt files with specific permissions
find /path -name '[given_name].*' - find files with a given name and any extension
System
date - show the current date and time
cal - show this month's calendar
uptime - show current uptime
w - display who is online
whoami - who you are logged in as
finger user - display information about user
uname -a - show kernel information
cat /proc/cpuinfo - cpu information
cat /proc/meminfo - memory information
man command - show the manual for command
df - show disk usage
du - show directory space usage
free - show memory and swap usage
whereis app - show possible locations of app
which app - show which app will be run by default
tr : '\n' <<<$PATH - show directories in the PATH, one per line
sed 's/:/\n/g' <<<$PATH - show directories in the PATH, one per line with sed
mount - list currently mounted file systems
lspci - list all PCI devices
lsusb - list al USB devices
who - list users currently logged in
which command - show the full path of command
time command - see how long command takes to complete
logsave - save the output of a command in a logfile
Compression
tar cf file.tar files - create a tar named file.tar containing files
tar xf file.tar - extract the files from file.tar
tar cf file.tar.gz files - create a tar with Gzip compression
tar xf file.tar.gz - extract a tar using Gzip
tar cf file.tar.bz2 - create a tar with Bzip2 compression
tar xf file.tar.bz2 - extract a tar using Bzip2
gzip file - compresses file and renames it to file.gz
gzip -d file.gz - decompresses file.gz back to file

Network
ping host - ping host and output results
whois domain - get whois information for domain
dig domain - get DNS information for domain
dig -x host - reverse lookup host
wget file - download file
wget -c file - continue a stopped download

SSH
ssh user@host or ssh -l user host - connect to host as user
ssh -p port user@host - connect to host on port port as user
scp file user@host:path copy file to home's user to host, if no path is especifed.
BASH Shortcuts
Ctrl+a - move to the start of the line
Ctrl+e - move to the end of the line.
Ctrl+u - delete from the cursor to the beginning of the line.
Ctrl+k - delete from the cursor to the end of the line.
Ctrl+w - delete from the cursor to the start of the word.
Ctrl+l - clear the screen leaving the current line at the top of the screen.
Ctrl+c - halts the current command
Ctrl+z - stops the current command, resume with fg in the foreground or bg in the background
Ctrl+d - log out of current session, similar to exit
Ctrl+r - reverse search
!! - repeats the last command
sudo !! - repeats the last command with sudo privileges
exit - log out of current session
Linux y la filosofa UNIX
Linux CentOS
Linux es un sistema operativo tipo 'unix' y por tanto tiene influencia
de la cultura unix:

Escribir programas que hagan una sola tarea y que esta tarea sea
bien hecha
Esperar que la 'salida' de un programa sea la 'entrada' de otro
programa
Escribir programas que manipulen flujos de texto ya que sta es un
interface universal.
Linux CentOS
La filosofa unix (Linux) es bottom-up y no top-down
Linux tambin se ve influenciado por las reglas de diseo

de unix:

Todo flujo de informacin deber ser texto, de forma que pueda ser
filtrada por herramientas estndar
La informacin almacenada sobre informacin y configuracin de
aplicaciones deber ser en formato de texto que pueda ser ledo y
editado por humanos
Cuando sea posible, realizar prototipos en lenguajes interpretados
antes de codificar en C
Mezclar lenguajes es mejor que codificar todo en uno solo.
Mecanismos, no polticas
Una de los principales reglas de programacin en sistemas
operativos unix es la de programar 'mecanismos' y delegar las
polticas o decisiones a capas superiores.
La mayora de las opciones y comportamientos de un programa en
unix se dejan a el usuario final.
Mientras que esta forma de programar produce programas robustos
y satisfactorios para usuarios expertos, a la vez produce interfaces
sobrecargadas para el usuario no experimentado.
El funcionamiento de un sistema operativo unix refleja que esta
diseado para usuarios tcnicos que saben exactamente cuales son
sus necesidades y un programa no debe tomar decisiones por l.
Funcionamiento de unix
El funcionamiento de un sistema operativo unix se basa en que el
usuario sabe lo que hace, por ejemplo el comando
rm -rf /
Se ejecutar sin ninguna confirmacin.

Un programa en unix no tendr internamente una opcin que no


pueda ser hecha por otro programa o un pipeline:
El comando ls no tiene una opcin para mostrar en pginas el listado
de un directorio
Shell BASH y comandos
bsicos
Bash
La shell es un interfaz que nos proporciona herramientas de trabajo y
permite establecer una comunicacin con el ncleo o kernel del
sistema. Hay diversas shells, cada una con sus caractersticas.
Podemos citar:

Bourne shell (sh)


Korn shell (ksh)
Shell C (csh)
Bourne again shell (bash)

El programa shell default en CentOS es Bash


Completado de archivos y comandos
La idea detrs del completado de archivos o 'autocompletado' es que
cuando uno tenga que escribir un comando, no se deben de escribir
mas de los caracteres necesarios para identificar lo que se desea
escribir.
Bash ofrece diferentes formas de 'autocompletado'
Comando (primeros caracteres del comado + [TAB])
Archivos (primeros caracteres del archivo + [TAB])
Nombres de hosts ( @ + [TAB])
Variables ($ + [TAB])
Metacaracteres
Existen ciertos caracteres que tienen un significado propio para la shell.
Estos caracteres son:

& ; | * ? ' ` [ ] ( ) $ < > { } # / \ ! ~

Si en alguna ocasin nos interesa usar este carcter como literal, es


decir, que la shell no lo interprete como carcter especial es necesario
que est precedido (protegido) por el carcter de escape \ (barra
invertida).
Archivos y directorios
El nombre de un archivo o directorio est formado por letras, nmeros y
otros caracteres. Debemos evitar los meta caracteres de la shell en los
nombres de archivos. En caso necesario, si el nombre tiene un
metacarcter o espacio en blanco, ser necesario proteger el nombre
de fichero con comillas (").

El sistema Linux no identifican ninguna extensin en los nombres de


archivos.
Ubicacin de archivos y directorios
Para indicar la ubicacin en disco de un archivo hay que indicar la lista completa
de directorios que contienen a el archivo. En esta lista, que denominaremos ruta
de acceso, cada directorio est separado del siguiente directorio por el signo / , y
sin dejar espacios en blanco. Por ejemplo:
/usr/bin/wc
hace referencia a el archivo wc que est contenido en el directorio bin, que a su
vez est dentro del directorio usr, que est en el directorio raz.
Para facilitar las cosas existen ciertos directorios especiales:
/ Es el directorio raz. El superior de todos.
Es el directorio actual. En el que nos encontramos en un momento dado.
.. Es el directorio superior, o directorio padre, al que nos encontramos. El nico
directorio que no tiene directorio superior es el directorio raz.
Rutas absolutas
Una ruta absoluta es aquella que parte del directorio raz. Las rutas
absolutas son vlidas en cualquier caso. Ejemplo:

/home/usuario/.bashrc

/home/soporte/Descargas/YouTube\ Audio\ \(MP3\)/

"/home/soporte/Descargas/YouTube Audio (MP3)"


Ruta relativa
Es una ruta que parte del directorio actual como origen. Esta ruta slo
es vlida desde un directorio actual concreto , es decir es relativa a un
directorio.

../../.bash_profile

En este caso estamos haciendo referencia al archivo .bash_profile que


est dos directorios por encima del directorio actual.
Ejecucin de comandos
Para ejecutar un comando simplemente lo escribimos en la lnea de
comandos con sus opciones y argumentos y pulsamos la tecla enter.

Tambin en una misma lnea podemos ejecutar varios comandos


separndolos por ; (punto y coma). De esta forma se ejecutarn en
secuencia, en el orden de izquierda a derecha.

Es posible controlar la ejecucin de varios comandos separndolos con


los meta caracteres && y ||

*En algunos casos puede ser necesario indicar la ruta de bsqueda del comando a
ejecutar. /usr/local/netcdf/nconfig
Comandos bsicos
Existe un conjunto de comandos que todo usuario debe conocer para
poder trabajar con un sistema GNU/Linux. La mayora de estos
comandos estn relacionados con el manejo de archivos y directorios
Cada uno de estos comandos, fue creado con dos ideas en mente:
Debe realizar una sola funcin.
Dicha funcin debe realizarse correctamente.

Con estos objetivos, la simpleza de las herramientas permite que


puedan combinarse para solucionar diferentes problemas que
individualmente no podran
Entrada y salida estandar y de errores
Un sistema GNU/Linux dispone de tres vas o canales para comunicarse con el exterior
de forma estndar.
Una de ellas, la entrada estndar, se utiliza para introducir datos en la shell; de forma
predeterminada est asociada al teclado.
La salida estndar, se utiliza para mostrar informacin y de forma predeterminada est
asociada al monitor (consola).
Por ltimo existe un canal dedicado a mostrar la salida de errores, que de forma
predeterminada est asociado a la salida estndar.
En mltiples ocasiones nos puede interesar redirigir alguna de estas salidas a otro canal;
para realizar esto disponemos de los meta caracteres :
< redirige la entrada estndar
> redirige la salida estndar. Si esta redireccin es a un fichero, lo crea nuevo.
>> redirige la salida estndar. Si esta redireccin es a un fichero, la aade al final.
2> redirige la salida de errores, igual que la redireccin de la salida estndar.
Nota. Opciones en los comandos
Las opciones en estos comandos bsicos modifican el comportamiento en cmo hacer la
funcin y en cmo mostrar el resultado.

Para la descripcin de las opciones en los diferentes comandos se utilizan las siguientes
convenciones:
[ ] Rodean argumentos opcionales.
< > Rodean argumentos obligatorios.
{ } Rodean argumentos obligatorios.
| Separa alternativas.
- Indica entrada o salida estandar, dependiendo del contexto.
-- Indica el fin de las opciones.
Una funcin que todos estos comandos realizn, es mostrar informacin acerca de como
utilizarlos, la opcin para solicitar ayuda es --help --usage
Comando pwd
Este es un comando muy simple y a la vez til. Su funcin es la de
imprimir en pantalla la ruta absoluta del directorio donde el usuario est
trabajando.
Opciones:
-P , --physical: Muestra la ruta la ruta completa, omitiendo enlaces, del
directorio actual

usuario@maquina:~ >$ pwd


/home/usuario
Comando basename
Elimina cualquier componente de directorio en la cadena dada

$ basename /home/soporte
soporte

$ basename /usr/src/kernels/2.6.41.1-1.fc15.i686.PAE/usr/Makefile
Makefile
Comando dirname
Muestra la cadena eliminando las barras finales y la ltima
componente que no sea una barra; si NOMBRE no tiene /, el
resultado es '.' (representando el directorio actual).

$dirname /usr/src/kernels/2.6.41.1-1.fc15.i686.PAE/usr/Makefile
/usr/src/kernels/2.6.41.1-1.fc15.i686.PAE/usr

$dirname arhivo
.
Comando cd
Este comando se usa para cambiar de directorio. Generalmente
cuando el usuario inicia una sesin en GNU/Linux el directorio donde
comienza es su directorio personal, llamado el directorio HOME

usuario@maquina:~ >$ cd directorio


usuario@maquina:~ >$ pwd
/home/usuario/directorio
Manejo de archivos
Mucho del trabajo administrativo en un sistema GNU/Linux involucra la
manipulacin texto, por lo tanto saber trabajar con texto se vuelve
importante.

Creacin
Presentacin
Anlisis
Edicin
Comando cat
cat, diminutivo de concatenate que significa combinar o concatenar archivos,
muestra el contenido de un archivo por la salida estndar.
Opciones relevantes:
-b , --number-nonblank
-n , --number
$ cat /etc/inittab
$ cat > archivo.1
Abc
123
[Ctrl]-[D]

$ cat < archivo.1


Comando tac
El comando tac concatena y escribe archivo en forma inversa.
$cat numbers
1
2
3

$tac numbers
3
2
1
Comando nl
El comando nl escribe a la salida estandar el o los archivos usados
como argumento con nmeros agregados al inicio de cada lnea.
Opciones relevantes:
-b , --body-numbering=< a | t | pEXP >

-n , --number-format=< ln | rn | rz >

-v , --starting-line-number=< nmero >


Usos de nl
cat -n /etc/nsswitch.conf

nl -b t (numerar lneas no en blanco)


nl -b a (numerar todas las lneas)
nl -n rn (numeracin ajustada a la derecha)
nl -n rz (numeracin completada a ceros)
Comando head
El comando head muestra por default las primeras 10 lneas de cada
archivo.
Opciones relevantes:
-n , --lines=<nmero>

Si nmero comienza con - (-10), se mostraran todas las lneas de los


archivos menos las ltimas n.
Comando tail
El comando tail muestra por default las ltimas 10 lneas de cada
archivo.
Opciones relevantes:
-f , --follow
-F , --follow=name retry
--sleep-interval=<nmero>
-n , --lines=<nmero>

Si nmero comienza con + (+20) se mostrara a partir de la lnea n


desde el inicio de los archivos
Comando wc
El comando wc imprime en la salida estandar el nmero de bytes,
caracteres, palabras y lneas de cada archivo dado como argumento o
de la entrada estandar.

Opciones relevantes:
-c , --bytes
-m , --chars
-l , --lines
Comando sort
Ordena las lneas de cada uno de los archivos dados como argumento
Opciones relevantes:
-d , --dictionary-order
-f , --ignore-case
-h , --human-numeric-sort
-n , --numeric-sort
-r , --reverse
-u, --unique
Comando uniq
Escribe a la salida estndar las lneas que son nicas en el archivos
dado como argumento
Opciones relevantes:
-c , --count
-i , --ignore-case
-w , --check-chars=<nmero>
Comando cut
Escribe a la salida estndar las partes seleccionadas de cada lnea, de
cada archivo dado como argumento:
Opciones relevantes:
-b , --bytes=<rango numrico>
-c , --characters=<rango numrico>
-f , --fields=<rango numrico>
-d , --delimiter=<carcter delimitador para los campos>
Comando tr
Una de las funciones principales del comando tr es la de 'traducir' caracteres
tomados de la entrada estndar y copiarlos o escribirlos a la salida estndar.
Opciones relevantes:
-d , --delete
-s , --squeeze-repeats
$tr .
$tr -d .
$tr linux LINUX *traduce las letras l,i,n,u,x a L,I,N,U,X
$tr 0-5 \*
$tr a-z A-Z
$tr -d '[x*3]'
Rango de caracteres
Algunas herramientas para manipular texto utilizan la siguiente convencin para
tratar con caracteres:
Rangos. M-N se expande a todos los caracteres desde M y hasta N
A-Z, a-z, 0-9
Repeticin de caracteres. '[C*N]' se expande a N copias del carcter C
'[d*5]' es lo mismo que 'ddddd'
Clases de caracteres. La notacin '[:CLASS:]' se expande a todos los
caracteres en la clase predefinida CLASS. Algunas clases de uso frecuente
son:
[:alum:] letras y digitos
[:alpha:] letras
[:digit:] digitos
[:lower:] letras minusculas
[:upper:] Letras mayusculas
Comando ls
Muestra la informacin acerca de los archivos solicitados.
Debido a que ls es un comando fundamental, ha ido acumulando
muchas opciones las cuales podemos resumir como:

Cules archivos mostrar?


Qu informacin mostrar?
Cmo mostrar la informacin?
Comando ls
Cules archivos mostrar?

-a , --all : No ignorar nombres de archivos que comiencen con '.'


-B , --ignore-backups : Ignorar archivos que comiencen con '~'
-d , --directory : Mostrar los nombres de directorios y no su contenido
-R , --recursive : Mostrar recursivamente el contenido de los directorios
Comando ls
Qu informacin mostrar?

--full-time : Muestra la informacin de en formato largo y el tiempo en


formato ISO 8601
-h , --human-readable: Agrega las letras K,M,G, etc. Para indicar el
tamao de los archivos
-l , --format=long, --format=verbose: Muestra la informacin de los
archivos en formato largo tipo de archivo, permisos en formato bits,
nmero de enlaces duros, propiertario, grupo, tamao y fecha
-s , --size: Muestra a la izquierda del nombre del archivo su tamao en
bloques de 1024 bytes
Comando ls
Cmo mostrar la informacin?
Por default ls muestra los archivos ordenados alfabticamente

-r , --reverse : Mostrar los archivos en orden inverso (alfabticamente, tiempo,


tamao).
-S , --sort=size : Muestra los archivos ordenados por tamao, el mas grande
primero
-t , --sort=time : Muestra los archivos ordenado por el tiempo de acceso, el mas
reciente primero
-1 : Muestra los archivos en una columna, un nombre por lnea
-Q : Muestra los nombres de los archivos encerrados entre comillas dobles
Comando cp
Se utiliza para copiar archivos, Entre las opciones ms relevantes, se tienen:

-f , --force : Forza la copia si los archivos de destino ya existen


--remove-destination: Borra los archivos destino antes de copiar el origen
-d , --no-dereference Copiar los enlaces simblicos como enlaces
-p , --preserve: Preservar los permisos, el usuario y el grupo del archivo a copiar.
-r , --recursive: Copiar directorios recursivamente.
-a , --archive: Equivalente a utilizar las opciones -dpR.
-b , --backup: Crea un respaldo 'backup' del archivo destino, si ste existe.
-u , --update: No copia un archivo si en el destino ya existe tal archivo, y ste tiene la
fecha de modificacin igual o mas reciente.
-v , --verbose: Muestra en pantalla el nombre de cada archivo antes de copiarlo.
Comando cp
Usando cp para copias de respaldo.

cp -avf /home/soporte /usr/local/respaldos

Usando cp para actualizar archivos.

cp -uv /usr/local/tp/grupo15/tp2/* /home/pedro/TPs/2

Creando copias con respaldos

cp -v --backup=t /etc/hosts .
Comando mv
El comando mv mueve o renombra archivos.
Opciones relevantes:
-b , --backup=t : Crea un respaldo del archivo destino si este ya existe
-n , --no-clobber : No mueve el archivo si esta ya existe en el destino
-v , --verbose: Muestra el nombre del archivo antes de moverlo.
-t , --target-directory=<ruta>: especifica el directorio destino

$mv -v /home/* /usr/people


$mv -v -t /usr/people -- /home/*
Comando split
El comando split parte el o los archivos de entrada en varios archivos con el
nombre por default xaa, xab, ..., conteniendo cierta cantidad de informacin
consecutiva de los archivos originales
Opciones relevantes:
-l , --lines=<nmero>
-d , --numeric-suffixes
-b , --bytes=<nmero>[b | KB | K | MB | M | GB | G ]
b=>512 KB=1000 K=1024 MB=1000 M=1024 GB=1000 G=1024

$split -d --bytes=1GB respaldo_usuarios.tar.gz respaldo-enero


respaldo-enero00 respaldo-enero01 ... respaldo-enero09
Comando sha1sum
El comando sha1sum Calcula la suma de comprobacin (checksum) de
cada uno de los archivos dados como argumentos
Opciones relevantes :
-c , --check

$sha1sum respaldo-enero00 respaldo-enero01 respaldo-enero02 respaldo-enero03 respaldo-enero04


79dfca15afbf1562cbbe51bc69c5afd0194029a7 respaldo-enero00
922d87b86dce854158413478cd3582fca94f5594 respaldo-enero01
b3a5a2e7ce2b6eb7806eca15a52998228f8abca7 respaldo-enero02
ee844bfc4ef82e69d3b1e818a243bff3dc9990d8 respaldo-enero03
d1b5a1bdf70f3d08f27e108d00381cfece11da1d respaldo-enero04
Comando sha1sum
$sha1sum -c respaldo-enero.sha1
respaldo-enero00: La suma coincide
respaldo-enero01: La suma coincide
respaldo-enero02: La suma coincide
respaldo-enero03: La suma coincide
respaldo-enero04: La suma coincide

Los comandos sha224sum, sha256sum, sha384sum y sha512sum, generan


'checksums' de 224, 256, 384 y 512 bits respectivamente.
Comando rm
Remueve o borra los archivos dados. Por default no borra directorios
Opciones:
-f , --force: Ignora archivos no existentes y no espera por la confirmacin del
usuario
-i , --interactive: Pregunta siempre al usuario antes de remover un archivo
--one-file-system: Remueve solo los archivos de un mismo sistema de
archivos
-r , --recursive: Remueve los directorios especificados y su contenido de
forma recursiva
rm -file
El comando rmdir borra un directorio que se encuentre vaco
Comando ln
Un enlace duro o 'hard link' es otro nombre para un archivo que
existe. No se permiten 2 nombres para un mismo directorio y no se
permiten otros nombres para archivos en otros sistemas de archivos
que no sea el que contenga al archivo original.
Un enlace simblico o 'symbolic link' es un archivo especial que hace
referencia a un archivo, an si este no existe
El comando ln crea por defualt enlaces duros.
Opciones:
-s , --symbolic : Crea enlaces simblicos
-v , --verbose : Muestra el nombre de cada archivo despus de crear el
enlace
Comando mkdir
El comando mkdir crea un directorio. Si aadimos la opcin -p crear
todos los directorios necesarios hasta llegar al ltimo en caso de que
no existieran.

$ mkdir uno/dos/tres
$ mkdir uno dos tres
$ mkdir .uno/.dos/.tres

$ mkdir cuatro\ cinco


$ mkdir \ ..
Comando mktemp
El comando mktemp ayuda en la creacin de archivos y directorios
temporales, por default crea un archivo temporal con el formato
tmp.XXXXXXXXXX e imprime en pantalla la ruta al archivo

Opciones:
-d , --directory: Crea un directorio en lugar de un archivo
-p <directorio> , --tmpdir[=directorio] crea el archivo temporal relativo a
directorio

$mktemp -p /home/usuario file-XXXX.dat


Ayuda en linea
El comando man muestra en la salida estandar el manual del comando
solicitado.
man descomprime y da formato a la pgina solicitada, posteriormente
utiliza less como programa paginador.

man -f ln
man 1 ln
man -P cat ln
man -t ln | ps2pdf
man -k mkt
Redireccionamiento
Salida estndar, esta asociada generalmente al monitor
cal > archivo

Entrada estandar, esta asociado generalmente al teclado


echo 2020 + 30 > suma
bc < suma

bc < suma > resultado


Tuberias
Muchos comandos en un sistema GNU/Linux fueron creados con el
fin de realizar una sola tarea.
Para hacer una tarea mas compleja es necesario el uso de varios
comandos
Una tarea puede realizarse de muchas formas
El uso de tuberias o 'pipes' es similar al redireccionamiento, la
informacin que se imprimir en la salida estndar ahora es
redireccionada a la entrada estndar de otro programa
El uso de pipes permite 'encadenar' programas para realizar tareas
mas complejas.

man ls | tee man-ls | wc


Comando grep
Su funcionalidad es la de escribir en salida estndar aquellas lneas que
concuerden con un patrn.
-c Imprime la cantidad de lneas que coincidieron en cada archivo.
-e PATRN Usar PATRN como el patrn de bsqueda.
-f ARCHIVO Obtiene los patrones del archivo ARCHIVO
-H Imprimir el nombre del archivo con cada coincidencia.
-r Buscar recursivamente dentro de todos los subdirectorios del directorio
actual.
--color Imprime en color el PATRON en los archivos
El patrn de bsqueda normalmente es una palabra o una parte de una
palabra. Tambin se pueden utilizar expresiones regulares, para realizar
bsquedas ms flexibles.
Objetivos

Desarrollar habilidades en el uso de Linux para el


trabajo con sistemas de cmputo de alto rendimiento.

I hear and I forget. I see and I remember. I do and I understand.


Acceso al cluster
SSH
OpenSSH es un proyecto 'Open Source' que implementa el protocolo
SSH/SecSH para el acceso remoto (login), transferencia de archivos
entre otros.
El puerto designado para SSH es por default el 22

Desde un sistema operativo Linux o MAC OSX desde un emulador de


terminal ejecutar:

ssh -l usuario servidor


ssh usuario@servidor
ssh -p 22 -l usuario servidor
SSH
Para el sistema operativo Windows * existen clientes ssh gratuitos que
soportan las versiones ssh1 y ssh2

PUTTY
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe

SSHSecureShellClient (tectia client)


En versiones anteriores era gratuito solamente el cliente, ahora es con
licenciamiento
Puede descargarse la versin gratuita desde:
http://132.248.8.253/usuario/SSHSecureShellClient-3.2.9.exe
SCP / SFTP
El protocolo SSH provee de 2 mecanismos para la tranferencia de
archivos: scp y sftp

SCP
scp archivo_loca usuario_remoto@maquinaremota:RUTA_DESTINO
scp -P 23 wien2k.tar soporte@132.248.8.253:
scp -r work_dir soporte@132.248.8.253:
SFTP
De man sftp: Once in interactive mode, sftp understands a set of
commands similar to those of ftp(1).
Sftp -o port=23 soporte@132.248.8.253:
SFTP
Se puede utilizar un cliente FTP para la transferencia de archivos
indicando el puerto 22 para realizar la conexin (en ometeotl el puerto
es 23)

Filezilla (linux, windows y mac os)


http://filezilla-project.org/download.php
Winscp (windows) http://winscp.net/eng/download.php
En un escritorio GNOME el administrador de archivos nautilus
permite la transferencia de archivos por medio de sftp: comando
nautilus-connect-server
Trabajo remoto
Escenario.
Durante la ejecucin de un comando en una sesin remota al cluster,
se pierde la conexin y por consecuencia se termina la ejecucin del
comando en la sesin remota.

Durante un da de trabajo y varias sesiones/terminales abiertas es hora


de ir a comer/casa/clases/etc. Siendo necesario cerrar/apagar laptop o
PC, recordar la secuencia de comandos, archivos abiertos, etc al
regresar a trabajar puede llevar tiempo.

En principio el cluster estar prendido todo el tiempo, Es posible que


el trabajo sea 100% remoto?
BARRA DE ESTADO
TMUX
tmux is a "terminal multiplexer", it enables a number of terminals (or windows) to
be accessed and controlled from a single terminal. tmux is intended to be a
simple, modern, BSD-licensed alternative to programs such as GNU screen.

TMUX es controlado por combinaciones de teclas <prefijo +


comando>, el prefijo por default es C-b
Por ejemplo la secuencia C-b c implica presionar Ctrl+b soltar e
inmediatamente presionar la tecla c
El comando para mostrar la hora es: t
El comando para crear otra terminal o ventana: c
El carcter pipe ' | ' divide verticalmente una ventana
El carcter guin2 ' - ' divide horizontalmente una ventana
PANEL 1 PANEL 2

PANEL 3 PANEL 4
TMUX
Para cambiar de panel en la misma ventana utilizar las teclas de
navegacin: C-b arriba, abajo, izquierda, derecha.
Para cambiar entre ventanas usar los comandos p (previous) y n
(next): C-b p C-b n
Para convertir un panel en una ventana nueva usar el comando !

Para desconectarse de una sesin de tmux usar el comando d


(detach)
Para ver la lista de comandos configurados en tmux usar el comando
?
Para volver a conectarse a la sesin ejecutar tmux attach
El programa mc (Midnight Commander) es un administrador de archivos en modo
texto.

Para iniciarlo en terminales que no son nativas linux ejecutar el comando mc


con la opcin -a
mc -a

El administrador mc utiliza las teclas de funciones F1 F10, hay que


tener en cuenta que esta teclas pueden ser interceptadas por el SO de
nuestra laptop o PC, en ese caso utilizar la combinacin alt+n para
invocar la accin a la tecla de funcin Fn:
Alt+1 = F1 Alt+9 = F9
Administrador de archivos mc
El programa mc (Midnight Commander) es un administrador de archivos en modo
texto.
F1 ayuda
F2 Men de archivo
F3 Ver contenido de archivo
F4 Editar
F5 Copiar
F6 Mover
F7 Crear directorio
F8 Borrar directorio
F9 Men
F10 Salir
Panel izquierdo Panel derecho
Lnea de comandos
Seleccionar archivos con
la tecla insert
Cambiar de panel con la
tecla tabulador
Presionando Ctrl-o cambiamos entre la
lnea de comandos y mc
Editor y visualizador
El programa mcedit es el editor por default en mc. Puede invocarse
independientemente
mcedit [nombre de archivo]

El programa mcview es el visualizador de archivos por default en mc.


Puede invocarse independientemente
mcview <nombre archivo>
Acceso al cluster
Al conectarse por primera vez, se crearn los archivos
$HOME/.ssh/authorized_keys
$HOME/.mpd.conf

Estos archivos son usados en el cluster para el envo de trabajos


PBS as como el uso de MPI

En caso de corrupcin hay que borrarlos y al prximo ingreso se


generarn de nuevo
Qu es un cluster ?
Clasificacin arquitectura de computadoras
La taxonoma de Flynn es una clasificacin de arquitecturas de computadores propuesta por
Michael J. Flynn en 1972.
SISD: Single Instruction, Single Data
Basic uniprocessors -- until recently, most PCs and many servers
SIMD: Single Instruction, Multiple Data
array/vector processors
graphics processors (GPU)
MISD: Multiple Instruction, Single Data
(No viable architectures here)
MIMD: Multiple Instruction, Multiple Data
This is what most people think of when they say "parallel computer". There are two basic models:
Shared-memory multiprocessors
Distributed-memory multiprocessors
(There are a number of variations on these themes, such as non-uniform memory access
(NUMA) architectures)

Clasificacin arquitectura de computadoras


Parallel Hardware Architecture Classes
SISD: Single Instruction, Single Data
SIMD: Single Instruction, Multiple Data
MISD: Multiple Instruction, Single Data
MIMD: Multiple Instruction, Multiple Data
Shared-memory multiprocessors
Distributed-memory multiprocessors

Parallel Programming
Shared Memory (OpenMP)
Message Passing (MPI)
Qu es un cluster ?
Un cluster es un conjunto de computadoras independientes
interconectadas por medio de una red.

Una configuracin muy especifica del sistema operativo en cada


computadora que conforma el cluster permite hacer uso de todos los
recursos de cmputo como lo son la memoria y el procesador.

Los clusters se clasifican como maquinas de memoria distribuida.


Memoria distribuida
Qu es un cluster ?
Un nodo del cluster llamado master
node, head node o front end tiene
eth1 acceso a una red ya sea institucional o
eth0 internet. Es por medio de este nodo que
Nodo
Nodomaestro
maestro los usuarios pueden trabajar de manera
remota en el cluster.

eth0
Nodo
Nodocmputo
cmputo
La conexin por medio de una red de
eth0 todos los nodos que conforman al cluster
Nodo
Nodocmputo
cmputo es una de las partes ms importantes
para su funcionamiento.

eth0
Nodo
Nodocmputo
cmputo
Qu es un cluster ?
El objetivo de un cluster es poder ejecutar programas que requieran
ms recursos de cmputo de los que un solo nodo puede proveer.

Para poder ejecutar estos programas es necesario una programacin


y ejecucin especiales.

Un cluster tambin tambin puede utilizarse para ejecutar varios


programas seriales o poco demandantes en recursos de cmputo.
Shell y varibles de entorno

Shell y varibles de entorno


Shell Bash
Scripts Bash
Shell y variables de entorno
El shell default es /bin/bash
El shell puede ser cambiado mediante el comando chsh -s
El comando chsh -l muestra los shells disponibles en el sistema
El shell 'lee' varios archivos de configuracin antes de comenzar a in-
terpretar comandos
La configuracin del shell es expuesta a los programas del usuario
por medio de variables de ambiente.
El usuario puede modificar esta configuracin modificando o defi-
niendo nuevas variables de ambiente
Variables de entorno
Las variables de entorno en Linux es informacin que generalmente
es usada por programas para fines de configuracin.
Esta informacin es almacenada en la forma VAR_NAME=VALUE.
Donde VAR_NAME es el nombre de la variable de configuracin y
VALUE es su valor.
En las variables de entorno hay algunas con ms de un valor
asignado, estos valores generalmente esta separados por el smbolo
dos puntos ':'
Estos mltiples valores son usados o ledos por los programas para
obtener la informacin en el orden que se fueron asignados, es decir
del primero al ltimo valor.
Login y no login shell
Hay 2 tipos de shell llamados shell de login y shell de no login.
Un shell de login pregunta por un nombre de usuario y una
contrasea para autenticar a un usuario.
Una vez que nos autenticamos en el sistema, la apertura o ejecucin
de otro shell es en consecuencia de un shell de no login.
La diferencia entre ambos tipos de shell esta en los archivos de
configuracin que leen al ejecutarse.
Un shell de login obtiene su configuracin de los siguientes archivos
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile

Un shell de no login obtiene su configuracin de estos archivos


/etc/bash.bashrc
~/.bashrc
Variables de entorno
Algunas variables de entorno importantes son:
HOME : La ruta del directorio home del usuario
SHELL: EL nombre del shell que esta siendo utilizado en el sistema
EDITOR : El nombre del editor default para el usuario
PATH : La ruta para buscar un programa cuando es ejecutado en el shell
PWD : El directorio actual de trabajo
USER : El nombre de usuario del usuario actual
CC : Compilador default para cdigo C
FC : Compilador default para cdigo Fortran
LD_LIBRARY_PATH: La ruta para buscar archivos objeto o bibliotecas
necesarias para la ejecucin de un programa
Para obtener la informacin valor de una variable de entorno es
necesario anteponer el smbolo $ antes del nombre de la variable.
Por ejemplo el comando echo $PWD imprimir en pantalla el
directorio actual de trabajo

Por la naturaleza de la arquitectura de un cluster, n nodos


independientes, es necesario en ocasiones definir variables de
entorno en el archivo ~/.bashrc para el correcto funcionamiento de
las aplicaciones.

Las variables de entorno necesarias para el uso del cluster


deben ser definidas por el usuario
Uso del sistema de colas I
Procesamiento interactivo
Es la forma en que un usuario trabaja normalmente es su
computadora.
El usuario ingresa un comando, el resultado del comando es impreso
en el monitor. En base a este resultado se ingresa otro comando, el
resultado es impreso en el monitor, etc. El usuario esta nter-
actuando en tiempo real con la computadora.

Algunos ejemplos de tareas interactivas: bsqueda de archivos o


directorios, edicin de archivos, empaquetamiento o compresin de
archivos o directorios, depuracin de cdigo, uso de algn software
basado en ventanas, etc,
En las prximas lminas se utilizaran los archivos: monte-carlo-pi.c, monte-
carlo-pi-mpi.c y matrix_mpi.c para efectos de este ejemplo se encontraran
en el directorio test_pbs del directorio $HOME de un usuario.
*estos archivos pueden descargarse de la direccin
http://132.248.8.253/usuario/test_pbs
Tambin puede ser copiados desde el directorio /var/www/html/usuario/test_pbs

Se llevarn a cabo las siguientes tareas interactivas:


Cambio al directorio ~/test_pbs
Compilar un archivo con cdigo C
Ejecutar el binario resultante de la compilacin
Analizar los resultados
Sesin interactiva
Una vez ingresado al nodo maestro ejecutaran los siguientes
comandos:

cd test_pbs
gcc -o pi.serial monte-carlo-pi.c
./pi.serial 100000
rm pi.serial
Sesin interactiva
En la sesin interactiva previa, el usuario sabe exactamente los
comandos a ejecutar.
El programa funciona y no se requiere una interaccin en tiempo real
Por tanto esta secuencia de comandos puede ser puesta en un
archivo guin o script.

Un trabajo en el sistema de colas es un script (una secuencia de


comandos escritos en un archivo) que contiene:
Todos los comandos necesarios a ejecutarse en el mismo orden que en una
sesin interactiva
Algunas lneas al inicio que le indican al sistema de colas algunos
parmetros para la ejecucin del trabajo.
Estructura de un trabajo para el sistema de colas
#PBS -l walltime=0:01:00
#PBS -N PI_serial
#PBS -j oe
#PBS -S /bin/bash

set -x
cd test_pbs
gcc -o pi.serial monte-carlo-pi.c
./pi.serial 100000
rm pi.serial
[soporte@master ~]$ qsub run-pi
5.master
[soporte@master ~]$ qstat
Job id Name User Time Use S Queue
------------------------- ---------------- --------------- -------- - -----
5.master PI_serial soporte 0 R amd
[soporte@master ~]$ ls
PI_serial.o5 run-pi test_pbs
[soporte@master ~]$ cat PI_serial.o5
++ cd test_pbs
++ gcc -o pi.serial monte-carlo-pi.c
++ ./pi.serial 100000
Program results with 1 processes:
number of samples = 100000, seed = 1355228200
estimated pi = 3.1425200000
difference between estimated pi and math.h M_PI = 0.0009273464
++ rm pi.serial
Requerimientos del trabajo
El sistema de colas instalado en el cluster se llama Torque y esta
basado en el software PBS Portable Batch System.
Este sistema de colas interpreta las lneas que comienzan con #PBS en
un archivo de trabajo como opciones propias.
Desde el punto de vista de un script, cualquier lnea que comienza con
el carcter # es un comentario.
#PBS -l walltime=00:01:00
Esta lnea indica al sistema de colas un lmite en el tiempo de ejecucin del
trabajo.
El formato es hh:mm:ss
Para estimar el tiempo que tomar la ejecucin de un trabajo se puede
ejecutar como primer y ltimo comando del script el comando date
#PBS -N PI_serial
Esta lnea indica el nombre que debe llevar el trabajo dentro del sistema de
colas. En este caso el trabajo se llama PI_serial.
Cuando se verifica el estado del trabajo por medio del comando qstat, el
nombre del trabajo es el que se reporta en la tabla junto con otra
informacin.
El nombre del trabajo es el prefijo del archivo log regresado por el sistema
del colas al termino de su ejecucin
El archivo log puede pensarse como un volcado de la pantalla durante toda
la ejecucin del trabajo
#PBS -j oe
Por default el sistema de colas regresa 2 archivos de log: uno conteniendo
la informacin generada la salida estandar por el trabajo y el otro la
informacin del error estandar
Esta opcin une o mezcla join estos 2 archivos en 1

El comando set -x indica al shell bash que imprima en pantalla los


comandos antes de ejecutarlos.
La impresin de estos comandos aparecen con el smbolo ms + en el
archivo log del trabajo
Ejecucin de un trabajo
1. Escribir un script para el sistema de colas
Conteniendo las opciones para el sistema, lneas #PBS
2. Usar el comando qsub para enviar el trabajo al sistema de colas
La ejecucin de un trabajo en el sistema de colas comenzar en el
directorio de trabajo $HOME correspondiente al usuario
El sistema de colas asignar un nmero al trabajo o job id para control
interno.
3. Utilizar el comando qstat para verificar el estado del trabajo
Los estados principales de un trabajo son Q, R, E: Queued, Run, Exit.
Encolado, en ejecucin, en terminacin.
Pueden verificarse todos los recursos asignados con la opcin -a
El trabajo ha terminado cuando ya no es reportado por el comando
qstat
El trabajo comienza cuando los recursos solicitados estn disponibles
El trabajo termina cuando el script termina de ejecutarse o cuando se
alcanza el tiempo lmite solicitado para su ejecucin.
El archivo log correspondiente al trabajo es creado en el mismo
directorio en donde fue enviado el trabajo con el comando qsub
El archivo log tendr el nombre Nombre_del_trabajo.oJID
El Nombre_del_trabajo es el asignado por la lnea #PBS -N
La letra o despus del punto hacer referencia a la salida del trabajo output
JID es el nmero de identificacin del trabajo asignado al momento de
enviarlo al sistema de colas por medio del comando qsub
Borrar un trabajo
El comando del sistema de colas para borrar un trabajo, estando
ste en ejecucin o en espera de ser despachado, es qdel JID

Por ejemplo qdel 23

Para ms informacin respecto a la administracin de trabajos en el


sistema de colas consultar el manual del comando qsub
Uso del sistema de colas II
Opciones qsub
Las lneas #PBS en un archivo de trabajo para el sistema de colas son
formalmente opciones para el comando qsub

En el ejemplo anterior utilizamos la lnea #PBS -j oe para indicar que se


junten en un solo archivo la salida y el error estandar

Este resultado tambin puede obtenerse si al momento de enviar el


trabajo usamos la opcin -j oe del comando qsub
Por ejemplo qsub -j oe run_pi
Archivo de log
Es posible cambiar el nombre default asignado a el archivo log de un
trabajo con la opcin -o

#PBS -o nombre_archivo

qsub -o nombre_archivo
Trabajos MPI
El sistema de colas provee de todos los mecanismos necesarios para
la ejecucin de un trabajo MPI.
La parte mas importante de un trabajo MPI es el nmero de
procesadores en los que se ejecutar nuestro trabajo. Esta valor se
define por medio de una opcin para el comando qsub.

#PBS -l nodes=N:ppn=P
qsub -l nodes=N:ppn=P

N es la cantidad de nodos solicitados y P en nmero de cores


solicitados por cada uno de esos nodos.
#PBS -S /bin/bash
#PBS -l walltime=00:10:00
#PBS -N PI_parallel
#PBS -j oe
#PBS -o PI.out
#PBS -l nodes=1:ppn=8
set -x
cd test_pbs
mpicc -o pi.parallel monte-carlo-pi-mpi.c
qstat -rn
mpirun -n 8 ./pi.parallel 10000000
Variables de entorno del sistema de colas
Cualquier trabajo que sea ejecutado por medio del sistema de colas, es
ejecutado en un no login shell con variables de entorno definidas por el propio
sistema de colas. Entre las ms importantes tenemos:

PBS_O_WORKDIR : contiene la ruta desde donde fue ejecutado el comando


qsub. Generalmente el directorio de trabajo donde se encuentran el script.

PBS_NP : contiene el resultado de multiplicar N*P de la opcin del comando


qsub -l nodes=N:ppn=P

PBS_NODEFILE: Contiene la ruta a un archivo creado por el sistema de colas,


este archivo tiene el nombre del nodo o nodos que nos fueron asignados
tantas veces como cores solicitados.
Enviar el trabajo desde el directorio test_pbs de la siguiente forma
funcionara

qsub -l nodes=2:ppn=16 -o PI_32.out -N PI_32

#PBS -S /bin/bash
#PBS -j oe

set -x
qstat -rn
cd $PBS_O_WORKDIR
mpirun -n $PBS_NP ./pi.parallel
Enviar el trabajo desde el directorio test_pbs de la siguiente forma
funcionara

qsub -l nodes=2:ppn=16 -o PI_32.out -N PI_32

#PBS -S /bin/bash
#PBS -j oe

set -x
qstat -rn
cd $PBS_O_WORKDIR
mpirun -n $PBS_NP ./pi.parallel
Podemos enviar varios trabajos utilizando el mismo script:
qsub -l nodes=1:ppn=16 -o PI_16.out -N PI_16
qsub -l nodes=2:ppn=16 -o PI_32.out -N PI_32
qsub -l nodes=3:ppn=16 -o PI_48.out -N PI_48
qsub -l nodes=4:ppn=16 -o PI_64.out -N PI_64

#PBS -S /bin/bash
#PBS -j oe
set -x
qstat -rn
cd $PBS_O_WORKDIR
mpirun -n $PBS_NP ./pi.parallel
Ejecucinn de varios trabajos seriales
#!/bin/bash
#PBS -l nodes=1:ppn=4
cd $PBS_O_WORKDIR
#ejecutamos 4 instancias del porgrama pero con valores dintintos para la entrada
./exe_c_pi < valor1 >out1 &
./exe_c_pi < valor2 >out2 &
./exe_c_pi < valor3 >out3 &
./exe_c_pi < valor4 >out4
wait
#es importante que la ultima instancia no sea en 'background' ya que si se hace asi, el script se terminaria de ejecutar
indicando que el trabajo ha terminado
#el comando wait le indica al script que espere hasta que todos los trabajos en 'background' terminen

121
Uso de compiladores
Compiladores GNU
Compiladores Intel

Compilacin MPI

122
Compilacin
Compiladores GNU Versin 4.4.6

Fortran.
gfortran -o a.out source.f
g77 -o a.out source.f
C / C++
gcc -o exe_output source.c

g++ -o exe source.cpp

123
Compilacin
Compiladores INTEL Versin 12.1
Para hacer uso de los compiladores de intel es necesario definir
variables de ambiente, esto logra con los siguientes comandos:

#Uso de compiladores C y C++


Source /opt/intel/icsxe/2012.0.032/cc/bin/iccvars.sh intel64
#Uso de compiladores Fortran
Source /opt/intel/icsxe/2012.0.032/fc/bin/ifortvars.sh intel64
#Pueden cargarse ambos ambiente con el comando
source /opt/intel/composerxe/bin/compilervars.sh intel64
124
Compilacin
Compiladores INTEL Versin 12.1
Opciones recomendadas para el sistema:
-O3 -axSSE4.2 -fp-model precise
Fortran.
ifort -O3 -axSSE4.2 -fp-model precise -o a.out source.f

C / CXX
icc -O3 -axSSE4.2 -fp-model precise -o exe_output source.c
icpc -O3 -axSSE4.2 -fp-model precise -o exe source.cpp
125
MPI
MPI. Es un especificacin para la programacin en maquinas
de memoria distribuida.
Existen implementaciones libres (openmpi, mpich, lam/mpi,
mvapich, etc) y comerciales (Intel mpi, scali mpi, hp mpi, etc).
Intel mpi se encuentra instalado en el directorio
/opt/intel/impi
Para cargar el ambiente de intel mpi usar el comando despus de
haber cargado el de los compiladores
#source /opt/intel/icsxe/2012.0.032/impi/bin64/mpivars.sh

126
Compilacin MPI
C
mpiicc -O3 -axSSE4.2 -fp-model precise -o exe_mpi test.c
C++
mpiicpc -O3 -axSSE4.2 -fp-model precise -o exe_mpi test.cpp
Fortran 77
mpiifort -O3 -axSSE4.2 -fp-model precise -o exe_mpi test.f

Se puede controlar el comportamiento de mpicc, mpif77, mpif90, mpicxx mediante el uso


de la variables;
MPICH_F77, MPICH_F90, MPICH_CC, MPICH_CXX
ej. export MPICH_F90=ifort
127
Opciones Intel MPI
I_MPI_DEVICE
Establece el dispositivo de comunicacin, por default se prueba la conexin mas
rpida (rdssm) hasta llegar a mermoria compartida (shm)
shm (shared memory only)
sock (sockets only)
ssm (shared memory + sockets)
rdma (DAPL only)
rdssm (shared memory + DAPL + sockets)
mpirun -np 8 -env I_MPI_DEVICE sock ./mpi.out

128
Opciones Intel MPI
I_MPI_DEBUG
Muestra en pantalla el tipo de conexin usada, asi como el 'mapeo' de los
procesos en los nodos.
Valor recomendado 5

mpirun -n 8 -env I_MPI_DEBUG 5 ./mpi.out


mpirun -n 8 -env I_MPI_DEBUG 2 ./mpi.out

129
Opciones Intel MPI
-ppn
Processes Per Node, establece cuantos procesos sern lanzados en cada nodo
que participa en la ejecucin. Por ejemplo podemos ejecutar un proceso en
cada chip en una maquina con 8 cores.
Se puede ver el 'mapeo' de los procesos con la ayuda de la variable
I_MPI_DEBUG=+6

export I_MPI_DEBUG=+6
mpirun -ppn 1 -n 8 ./mpi.out

130
I_MPI_PIN_PROCS
Opciones Intel MPi
Permite controlar el mapeo a nivel 'core' del procesador.
mpirun -ppn 2 -n 4 -env I_MPI_DEBUG 4 ./mpi.out

0 1 8 9 0 1 8 9
2 3 10 11 2 3 10 11
4 5 12 13 4 5 12 13
6 7 14 15 6 7 14 15

131
Opciones Intel MPi
I_MPI_PIN_PROCS (Cont...)
Para modificar este comportamiento y ejecutar 2 procesos en un solo
procesador (la aplicacin es sensible al cache), definimos la varible como sigue:
mpirun -ppn 2 -n 4 -env I_MPI_DEBUG 4 I_MPI_PIN_PROCS=0,1 ./a.out
*Los dispositivos de comunicacin se encuentran en el procesador 0

0 1 8 9 0 1 8 9
2 3 10 11 2 3 10 11
4 5 12 13 4 5 12 13
6 7 14 15 6 7 14 15

132
Intel Xeon quad core X5472
Intel Xeon six core X5675
Intel Xeon 8 core
E5-2670
AMD interlagos
16 cores 2600

Vous aimerez peut-être aussi