Printed by Hector Aceves Apr 05, 11 15:43 InstalarMPI_GADGET.txt ================================================================== ||||||||||||||| GADGET NBODY−SPH PARALLEL CODE |||||||||||||||||| ================================================================== Page 1/6 * Instrucciones generales para instalar el GADGET en PARALELO, en el directorio LOCAL. Este procedimiento funciona, o al menos esta probado, para maquinas con memoria compartida (shared): maquinas tipo multicore (dual, quadcore, etc). * Sin librerias HDF, por el momento. * La instalacion como root (superusuario, sudo, etc etc) es similar, y mas conveniente, pero si no se tienen privilegios de administrador ni modo; este es el camino. * Se debe tener los compiladores, por ejemplo: gcc y gfortran funcionales. [instalarlos, si se esta en Ubuntu, con el synaptic manager] Vamos a describir como instalar: a) b) c) d) e) MPI FFTW GSL GADGET, y correr el ejemplo de GADGET: galaxias colisionando Hector Aceves / IAUNAM / 2010 ================================================================== |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ================================================================== * Crear directorio "local", por ejemplo: /home/aceves/local −desde su home.... en el prompt (> o $ generalmente) hacer: > mkdir local * Tener en directorio home ( HOME=/home/aceves ) 1) 2) 3) 4) los archivos: mpich2−1.2.tar.gz fftw−2.1.5.tar.gz gsl−1.13.tar.gz gadget−2.0.7.tar ================================================================== (a) INTALACION DE LIBRERIA MPI ================================================================== * Se instalar la libreria MPI usando los compiladores gcc y el gfortran. Tambien pudieran instalarse con otros, como el Intel o el Portland, pero no los describimios aqui. Como nota, entre el fortran de Intel y Gfortran existen incompatibilidades en los archivos binarios; el gfortran no puede leer adecuadamente los binarios generados con compiladores Intel. Tuesday April 05, 2011 1/6 Printed by Hector Aceves InstalarMPI_GADGET.txt Apr 05, 11 15:43 Page 2/6 # des−tararear y crear dir *> tar xfz mpich2.tar.gz # moverse al dir cread *> cd HOME/mpich2−1.2 #HOME=/home/aceves en este caso #usar el correspondiente en adelante # configurar ahi y crear un archivo # de bitacora *.log *> ./configure −−prefix=HOME/local/ 2>&1 | tee configure.log #si hay problemas con crear la bitacora #con el "tee" solo hagase # > ./configure −−prefix=HOME/local/ # y similar en otros "tees" *> make 2>&1 | tee make.log # contruir libreria y bitacora #.. o solo make # instalar en el LOCAL *> make install 2>&1 | tee install.log # o solo make install # ir al HOME y ver que PATHs existen *> cd HOME *> echo $PATH [e.g. /usr/lib64/mpi/gcc/openmpi/bin:/usr/local/bin:/usr/bin/X11:..... ] # # # # # # # # # *> emacs .bashrc si hay MPIs o OPENMPIs apuntando a otro lado.. quitarlo. Para lo cual hay que abrir el archivo ".bashrc" (u otro semejante si tiene tcsh o algo asi) e ingresar el path anterior, pero sin el directorio "ofensor" en su PATH. *Conviene guardar todos los directorios de su PATH original en un archivo dado por si luego tiene problemas, ok!* # Digamos que hace: # se le quito el: # /usr/lib64/mpi/gcc/openmpi/bin PATH=/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:.... PATH=$PATH:HOME/local/bin export PATH # Anexarle el bin local al PATH #...recuerde que HOME es /home/usuario # Esta linea tambien se anexa al .bashrc # Anexarle la direcciones de las # librerias locales: LD_LIBRARY_PATH=$LD_LIBRARY_PATH:HOME/local/lib export LD_LIBRARY_PATH 2/6 Tuesday April 05, 2011 Printed by Hector Aceves Apr 05, 11 15:43 InstalarMPI_GADGET.txt *> salvar y salirse del emacs *> en el prompt hacer: source .bashrc Page 3/6 (para activar los cambios) * Checar que funciona el MPICH: *> which mpd # debe apuntar a /HOME/local/bin/mpd *> which mpirun # debe apuntar a /HOME/local/bin/mpirun *> emacs # crear este archivo e ingresar palabra secreta .mpd.conf secretword=palabrasecreta # solo esta linea y salirse *> chmod 600 .mpd.conf # para cambiar atributos. * Para correr en paralelo, se haria algo como: *> mpd & # activa el manejador de procesos, no olvidar la & *> mpirun −np 4 ./Gadget galaxy.param *> mpdallexit # como se correria el gadget # deja de activarse el trabajo en paralelo... ================================================================== (b) FFTW (Transformada de Fourier) ================================================================== * Desde su directorio HOME, hacer *> tar −zxvf fftw−2.1.5.tar.gz # ..descomprimir desde el HOME *> cd fftw−2.1.5 # .. irse al directorio # crear e instalar en el directorio # LOCAL las librerias de fftw, con # las opciones indicadas... *> ./configure −−prefix=HOME/local loat −−enable−type−prefix −−enable−mpi −−enable−f *> make *> make install ================================================================== (c) GSL ================================================================== * De nuevo desde su HOME *> tar −zxvf gsl−1.13.tar.gz # descomprimir *> cd gsl−1.13 Tuesday April 05, 2011 3/6 Printed by Hector Aceves Apr 05, 11 15:43 InstalarMPI_GADGET.txt *> ./configure −−prefix=HOME/local Page 4/6 *> make *> make install ================================================================== (d) GADGET ================================================================== Desde su HOME *> tar −zxvf gadget−2.0.7.tar.gz *> cd Gadget−2.0.7 *> cd Gadget2 # crear una "maquina" para Gadget segun sus # cualidades, eg: JUPITER (eliga el nombre # que guste para su maquina) *> cp Makefile Makefile.orig #..salvando el makefile original *> emacs Makefile * Comentar (poner un # al inicio) las opciones default: −comentar SYSTYPE="MPA" −−> #SYSTYPE="MPA" −comentar que se tiene HDF −−> #OPT += −DHAVE_HDF5 −crear nuevo sistema −−> SYSTYPE="JUPITER" * Hacer un "copy & paste" de las opciones para la definicion de una nueva maquina. Asi, por ejemplo, anexar la siguiente opcion en "Adjust settings for target computer" con los paths pertinentes * Salvar el archivo (aqui suponemos que nuestra maquina es de 64 bits ifeq ($(SYSTYPE),"JUPITER") CC = mpicc OPTIMIZE = −O3 −Wall −m64 GSL_INCL = −I/HOME/local/include/gsl GSL_LIBS = −L/HOME/local/lib −Wl,"−R /HOME/local/lib" FFTW_INCL= −I/HOME/local/include FFTW_LIBS= −L/HOME/local/lib MPICHLIB = HDF5INCL = HDF5LIB = endif *> make *> ls !debe aparecer el ejecutable: Gadget2 ================================================================== 4/6 Tuesday April 05, 2011 Printed by Hector Aceves Apr 05, 11 15:43 InstalarMPI_GADGET.txt (e) Ejemplo de uso de GADGET ================================================================== Page 5/6 − Para cada tipo de simulacion (ncuerpos, gas, cosmologica, etc) se debe recompilar GADGET (vease su manual). − Para la prueba de la colision entre dos galaxias, en el Makefile anterior hay que deshabilitar la opcion de PERIODIC (poner un # en OPT: #OPT += −DPERIODIC ) y la de malla ( #OPT += −DPMGRID=128 ). Ya que se resuelven las ecuaciones con la parte de codigo de arbol. Activar la de calculo de energia potencial, para ver luego la conservacion de energia: ( OPT += −DCOMPUTE_POTENTIAL_ENERGY ) *> make # volvera a generar el Gadget2 con las opciones anteriores *> cd .. # para estar en ~/Gadget−2.0.7 *> mkdir Galaxia y no en Gadget2/ #creando directorio de trabajo para prueba *> cp Gadget2/Gadget2 Galaxia/ # copiar el ejecutable al dir de trabajo *> cp ICs/galaxy_littleendian.dat Galaxia/ #copiar condiciones iniciales #generalmente las PC x86 usan #el tipo little−endian #..googlear este punto.. # en.wikipedia.org/wiki/Endianness *> cp Gadget2/parameterfiles/galaxy.param Galaxia/ #copiar params en el dir *> cd Galaxia # irnos al directorio de trabajo "Galaxia" *> mkdir galaxy # crear un directorio "galaxy" donde estaran resultados *> ls # debe estar: Gadget2 galaxy galaxy_littleendian.dat *> emacs galaxy.param galaxy.param #editar el archivo de parametros.. − cambiar en: InitCondFile ICs/galaxy_littleendian.dat por: InitCondFile galaxy_littleendian.dat − cambiar OutputListFilename parameterfiles/output_list.txt por: OutputListFilename output_list.txt − para que todo este en el directorio de trabajo "Galaxia" Tuesday April 05, 2011 5/6 Printed by Hector Aceves InstalarMPI_GADGET.txt Apr 05, 11 15:43 Page 6/6 − salvar y salirse *> mpd & # cargar el manejador de procesos en paralelo *> mpdtrace # para checar que apunte al HOST en que estamos trabajando *> mpirun −np 4 ./Gadget2 galaxy.param *> ls galaxy/ # para correr el gadget con 4 CPUs # ahi deben estar los snapshots generados !!!!! ================================================================== 6/6 Tuesday April 05, 2011