/*------------------------------------- CSS ----------------------------------------------*/ /* Estilo para el texto paresido consola */ .shell-body { margin: 0; padding: 5px; list-style: none; background: #141414; /* #eeffcc; amarillo*/ color: #45D40C; font: 1.0em 'Andale Mono', Consolas, 'Courier New'; line-height: 1.0em; -webkit-border-bottom-right-radius: 3px; -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomright: 3px; -moz-border-radius-bottomleft: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; border: 1px solid blue; border-radius: 4px; } .shell-body li { word-wrap: break-word; position: relative; padding: 0 0 0 15px; } .recuadro{ border: 1px solid #d3d3d3; border-radius: 1px; padding:0.2em 16px; margin-top:16px; margin-bottom:16px; } .recuadroCodeVerde{ border: 1px solid #d3d3d3; border-radius: 1px; padding:0.2em 16px; margin-top:16px; margin-bottom:16px; color:green; background-color:#ddffdd ; } .recuadroCodeAzul{ border: 1px solid #d3d3d3; border-radius: 1px; padding:0.2em 16px; margin-top:16px; margin-bottom:16px; color:blue; background-color:#ddffff ; } body {font-family: Arial;} /* Style the tab */ .tab { overflow: hidden; border: 1px solid #ccc; background-color: #f1f1f1; } /* Style the buttons inside the tab */ .tab button { background-color: inherit; float: left; border: none; outline: none; cursor: pointer; padding: 14px 16px; transition: 0.3s; font-size: 17px; } /* Change background color of buttons on hover */ .tab button:hover { background-color: #ddd; } /* Create an active/current tablink class */ .tab button.active { background-color: green /*#ccc;*/ } .tablinks.active { color: green /*#ccc;*/ } /* Style the tab content */ .tabcontent { display: none; padding: 6px 12px; border: 1px solid #ccc; border-top: none; } .botonPanel { background-color: #eee; color: blue; cursor: pointer; padding: 18px; width: 100%; border: none; text-align: left; outline: none; font-size: 15px; transition: 0.4s; } .active, .botonPanel:hover { background-color: #ccc; } .panel { padding: 0 18px; display: none; background-color: white; overflow: hidden; } .ul1 { list-style-type: none; padding: 0; border: 1px solid #ddd; } .ul1 .li1 { padding: 8px 16px; border-bottom: 1px solid #ddd; } .ul1 .li1:last-child { border-bottom: none; } .textoNoImportante{ } .consolaResaltadaconsolaResaltada { background-color: #eeffcc; color: blue; } /* FIN Estilo para el texto paracido consola*/ .tips{ color:#795548 ; background-color:#ffffcc ; padding:0.2em 16px; border: 2px solid #ffff33; border-radius: 15px; margin-top:16px; margin-bottom:16px; } /* ----------------------------- texto oculto en la lista ------------------- */ .textoVisible { position: relative; display: inline-block; border-bottom: 1px dotted black;*/ } .textoVisible .textoOculto { visibility: hidden; width: 550px; background-color: black; color: #fff; text-align: center; border-radius: 6px; padding: 5px 0; position: absolute; z-index: 1; top: 150%; left: 30%; margin-left: -60px; } .textoVisible .textoOculto::after { content: ""; position: absolute; bottom: 100%; left: 40%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: transparent transparent black transparent; } .textoVisible .textoOculto2 { visibility: hidden; width: 550px; background-color: black; color: #fff; text-align: center; border-radius: 6px; padding: 5px 0; position: absolute; z-index: 1; top: 150%; left: -70%; margin-left: -20px; } .textoVisible .textoOculto2::after { content: ""; position: absolute; bottom: 100%; left: 40%; margin-left: -5px; border-width: 5px; border-style: solid; border-color: transparent transparent black transparent; } .textoVisible:hover .textoOculto2 { visibility: visible; } .subrayadoVerde{ text-decoration-color: green; } .subrayadoAzul{ text-decoration-color: blue; } .textoVisible:hover .textoOculto { visibility: visible; } .tipsAmarillo{ color:#795548 ; background-color:#ffffcc ; padding:0.3em 16px; border: 2px solid #ffff33; border-radius: 15px; margin-top:16px; margin-bottom:1px; } .tipsVerde{ color:green; background-color:#ddffdd ; padding:0.3em 16px; border: 2px solid green; border-radius: 15px; margin-top:16px; margin-bottom:1px; } .tipsAzul{ color:green; background-color:#ddffff ; padding:0.3em 16px; border: 2px solid #607d8b; border-radius: 15px; margin-top:16px; margin-bottom:1px; } .tipsRojo{ color:green; background-color:#ffdddd ; padding:0.3em 16px; border: 2px solid red; border-radius: 15px; margin-top:16px; margin-bottom:1px; } /*------------------------------------FIN CSS---------------------------------------------*/ .lista1{ color:black; } ======INSTALACIÓN DE FLASH====== =====EN COMPUTADORA PERSONAL===== 1. Registrarse en la Universidad de Chicago: [[http://flash.uchicago.edu/|FLASH]] 2. Luego, se enviará por mail la aceptación y se podrá bajar el código: [[http://flash.uchicago.edu/|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
=====EN LOS CLUSTERS===== 1. Ya está instalado. Sólo levantar los módulos que se detallan en la sección “Uso de Flash” ---------------------------------- ======USO DE FLASH====== Manual de usuario: [[http://flash.uchicago.edu/site/flashcode/user_support/|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:
clemente



#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 #"" 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


mulatona (mulatona.ccad.unc.edu.ar)


mendieta (mendieta.ccad.unc.edu.ar)


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 * **parfile**: archivo de parámetros * **+usm**: se activa el Unsplit Staggered Method. Este metodo evalua los campos en las caras, para hacer una correcta limpieza de los monopolos magnéticos. * **threadBlockList**: * **-objdir**: directorio donde se crearán los objetos para compilar * **-site**: nombre de la máquina donde se correrá. Si no se pone nada, por default es la máquina donde estamos * **-2d**: corrida bidimensional * **maxblocks**: número máximo de bloques permitidos * **nxb, nyb**: número de celdas por bloque. 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>wiki:infraestructura_computo|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 Tips: antes de correr verificar los cores y nodos disponibles:

[[Tutorial>wiki:tutorial_slurm|Tutorial de Slurm]] b) Para correr en las máquinas sin trabajos en cola:
var acc = document.getElementsByClassName("botonPanel"); var i; for (i = 0; i < acc.length; i++) { acc[i].addEventListener("click", function() { this.classList.toggle("active"); var panel = this.nextElementSibling; if (panel.style.display === "block") { panel.style.display = "none"; } else { panel.style.display = "block"; } }); }