Académique Documents
Professionnel Documents
Culture Documents
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.
/home/usuario/.bashrc
../../.bash_profile
*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.
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
$ 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
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]
$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 >
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:
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
$ mkdir uno/dos/tres
$ mkdir uno dos tres
$ mkdir .uno/.dos/.tres
Opciones:
-d , --directory: Crea un directorio en lugar de un archivo
-p <directorio> , --tmpdir[=directorio] crea el archivo temporal relativo a
directorio
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
PUTTY
http://the.earth.li/~sgtatham/putty/latest/x86/putty.exe
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)
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 !
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.
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.
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.
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
#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
#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
#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
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:
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
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
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