1. Registrarse en la Universidad de Chicago: FLASH
2. Luego, se enviará por mail la aceptación y se podrá bajar el código: FLASH
3. Descomprimir el tar.gz bajado en el lugar donde se va a querer trabajar.
4. Instalar fortran, c, mpif90. Para éste último, instalar mpich.
5. Flash necesita la librería hdf5 1.8.12. Instalación como root: bajar, descomprimir, y hacer
1. Ya está instalado. Sólo levantar los módulos que se detallan en la sección “Uso de Flash”
Manual de usuario: manual de FLASH
1. El Makefile.h que usa para compilar el programa está en: /lugardeinstalacion/FLASHX.X/sites/Prototypes/Linux Allí hay varios ejemplos de makefiles. Para nuestro ejemplo utilizaremos un makefile que llamaremos Makefile.h.escogido. Iremos a la carpeta “site”.
Ejecutar el siguiente comando.
Eso creará una carpeta que se llama como el nombre de la maquina en /sites. Copiar en esa carpeta el Makefile.h elegido. Renombrar este archivo a Makefile.h.
2. Módulos a cargar en las diferentes máquinas:
#FLASH makefile definitions for x86-64 Linux (GNU compilers) #---------------------------------------------------------------------------- # Set the HDF5/MPI library paths -- these need to be updated for your system #---------------------------------------------------------------------------- # sites/clemente/Makefile.h MPI_PATH = /opt/spack/0.16.2/opt/spack/linux-centos7-broadwell/gcc-10.2.0/openmpi-4.0.5-jdedu5ob5yuqtaujmqw7l3fyzfaatzqm/ HDF4_PATH = HDF5_PATH = /opt/spack/0.16.2/opt/spack/linux-centos7-broadwell/gcc-10.2.0/hdf5-1.10.7-6v6h3jwmez6mhhfg5vrhp2odezq7kdat/ HYPRE_PATH = /opt/spack/0.16.2/opt/spack/linux-centos7-broadwell/gcc-10.2.0/hypre-2.20.0-izz4brayoocfvlz2u3z76avmrlvls2gi/ ZLIB_PATH = /opt/spack/0.16.2/opt/spack/linux-centos7-broadwell/gcc-10.2.0/zlib-1.2.11-nk6k5unszfepso6b4zvivtimoeped7if/ PAPI_PATH = PAPI_FLAGS = NCMPI_PATH = /usr/local/netcdf MPE_PATH = #---------------------------------------------------------------------------- # Compiler and linker commands # # Use the MPICH wrappers around the compilers -- these will automatically # load the proper libraries and include files. Version of MPICH prior # to 1.2.2 (?) do not recognize .F90 as a valid Fortran file extension. # You need to edit mpif90 and add .F90 to the test of filename extensions, # or upgrade your MPICH. #---------------------------------------------------------------------------- FCOMP = ${MPI_PATH}/bin/mpif90 CCOMP = ${MPI_PATH}/bin/mpicc CPPCOMP = ${MPI_PATH}/bin/mpic++ LINK = ${MPI_PATH}/bin/mpif90 # pre-processor flag PP = -D #---------------------------------------------------------------------------- # Compilation flags # # Three sets of compilation/linking flags are defined: one for optimized # code, one for testing, and one for debugging. The default is to use the # _OPT version. Specifying -debug to setup will pick the _DEBUG version, # these should enable bounds checking. Specifying _TEST is used for # flash_test, and is set for quick code generation, and (sometimes) # profiling. The Makefile generated by setup will assign the generic token # (ex. FFLAGS) to the proper set of flags (ex. FFLAGS_OPT). #---------------------------------------------------------------------------- OPENMP = #-fopenmp # *************************cambio ******************************** # PATRON #FFLAGS_OPT = -c -O2 -fdefault-real-8 -fdefault-double-8 \ #-Wuninitialized # OPTIMIZADO FFLAGS_OPT = -c -O3 -march=broadwell -fdefault-real-8 -fdefault-double-8 \ -Wuninitialized #I explictly add -O0 because I found that compiling source files without #an optimization flag generates the same object code as compiling source #files with -O2. The -O0 is required so that gdb no longer shows #"<value optimized out>" for certain function arguments. FFLAGS_DEBUG = -ggdb -c -O0 -fdefault-real-8 -fdefault-double-8 \ -pedantic -Wall -Waliasing \ -Wsurprising -Wconversion -Wunderflow \ -ffpe-trap=invalid,zero,overflow -fbounds-check \ -fimplicit-none -fstack-protector-all FFLAGS_TEST = -ggdb -c -O0 -fdefault-real-8 -fdefault-double-8 FFLAGS_HYPRE = -I${HYPRE_PATH}/include F90FLAGS = -w -fallow-argument-mismatch #The macro _FORTIFY_SOURCE adds some lightweight checks for buffer #overflows at both compile time and run time (only active at -O1 or higher) #http://gcc.gnu.org/ml/gcc-patches/2004-09/msg02055.html # *****************************cambios*********************************** # FLAGS PATRON #CFLAGS_OPT = -ggdb -c -O2 -Wuninitialized -D_FORTIFY_SOURCE=2 # FLAGS OPTIMIZADO CFLAGS_OPT = -c -O3 -march=broadwell -Wuninitialized -D_FORTIFY_SOURCE=2 CFLAGS_DEBUG = -ggdb -c -O0 -Wno-div-by-zero -Wundef \ -Wconversion -Wstrict-prototypes -Wunreachable-code \ -pedantic -Wall -Winit-self -ftree-vrp -Wfloat-equal \ -Wunsafe-loop-optimizations -Wpadded -fstack-protector-all CFLAGS_TEST = -ggdb -O0 -c # if we are using HDF5, we need to specify the path to the include files CFLAGS_HDF5 = -I${HDF5_PATH}/include -DH5_USE_16_API CFLAGS_NCMPI = -I${NCMPI_PATH}/include #---------------------------------------------------------------------------- # Linker flags # # There is a seperate version of the linker flags for each of the _OPT, # _DEBUG, and _TEST cases. #---------------------------------------------------------------------------- LFLAGS_OPT = -o LFLAGS_DEBUG = -ggdb -O0 -o LFLAGS_TEST = -ggdb -O0 -o #---------------------------------------------------------------------------- # Library specific linking # # If a FLASH module has a 'LIBRARY xxx' line in its Config file, we need to # create a macro in this Makefile.h for LIB_xxx, which will be added to the # link line when FLASH is built. This allows us to switch between different # (incompatible) libraries. We also create a _OPT, _DEBUG, and _TEST # library macro to add any performance-minded libraries (like fast math), # depending on how FLASH was setup. #---------------------------------------------------------------------------- LIB_OPT = LIB_DEBUG = LIB_TEST = LIB_HDF4 = LIB_HDF5 = -L ${HDF5_PATH}/lib -lhdf5 -lz LIB_PAPI = LIB_MATH = LIB_MPI = LIB_NCMPI = -L ${NCMPI_PATH}/lib -lpnetcdf LIB_MPE = LIB_HYPRE = -L${HYPRE_PATH}/lib -lHYPRE # Uncomment the following line to use electic fence memory debugger. # export EF_ALLOW_MALLOC_0=1 #CONFIG_LIB = -L/usr/lib64 -lefence #---------------------------------------------------------------------------- # Additional machine-dependent object files # # Add any machine specific files here -- they will be compiled and linked # when FLASH is built. #---------------------------------------------------------------------------- MACHOBJ = #---------------------------------------------------------------------------- # Additional commands #---------------------------------------------------------------------------- MV = mv -f AR = ar -r RM = rm -f CD = cd RL = ranlib ECHO = echo #---------------------------------------------------------------------------- # Fake existence of iso_c_bindings module to prevent unnecessary recompilations. #---------------------------------------------------------------------------- ifeq ($(FLASHBINARY),true) iso_c_binding.mod : touch $@ endif
3. Cómo compilar el programa: En /lugardeinstalacion/FLASHX.X/./setup magnetoHD/proyecto -auto -parfile=flash.par +usm threadBlockList=True -objdir=object -site=clemente -2d -maxblocks=5000 -nxb=20 -nyb=10
Luego compilar haciendo:
4. Cómo correr el programa
a) Máquinas con trabajos en cola → clemente, mulatona (uso exclusivo del IATE) y mendieta (cluster UNC) Para correr el programa, usar los diferentes script según la maquina . Se deben copiar los submit_job_maquina.sh en las carpetas donde se crean los objetos de la compilación. Luego correrlos con: sbatch submit_job_maquina.sh
Tutorial de Slurm
b) Para correr en las máquinas sin trabajos en cola: