iiii i::::i iiii nnnn nnnnnnnn iiiiiii ssssssssss ssssssssss aaaaaaaaaaaaa n:::nn::::::::nn i:::::i ss::::::::::s ss::::::::::s a::::::::::::a n::::::::::::::nn i::::i ss:::::::::::::s ss:::::::::::::s aaaaaaaaa:::::a nn:::::::::::::::n i::::i s::::::ssss:::::s s::::::ssss:::::s a::::a n:::::nnnn:::::n i::::i s:::::s ssssss s:::::s ssssss aaaaaaa:::::a n::::n n::::n i::::i s::::::s s::::::s aa::::::::::::a n::::n n::::n i::::i s::::::s s::::::s a::::aaaa::::::a n::::n n::::n i::::i ssssss s:::::s ssssss s:::::s a::::a a:::::a n::::n n::::n i::::::i s:::::ssss::::::s s:::::ssss::::::s a::::a a:::::a n::::n n::::n i::::::i s::::::::::::::s s::::::::::::::s a:::::aaaa::::::a n::::n n::::n i::::::i s:::::::::::ss s:::::::::::ss a::::::::::aa:::a nnnnnn nnnnnn iiiiiiii sssssssssss sssssssssss aaaaaaaaaa aaaa Introduction ------------ Nissa Is a Set of SU(3) Algorithm Creator: Francesco Sanfilippo - fr.sanfilippo@gmail.com Contributors: Mariam Atoui Benoit Blossier Nuria Carrasco Silvano Simula Thread pool ideas, SPI and BGQ optimization taken from M.Kruse work This project is host at: https://github.com/sunpho84/nissa/ Requirements ------------ -MPI distribution (at the moment also when running on scalar machine). -Support for threads in the compiler. -gcc >= 6 or intel compiler -Autotools >= 1.14 to generate configure and Makefile. -Bison >=3.0 and flex (see scripts in the config folder). NB: use the scripts in the "config" folder to install the appropriate versions Compiling and installing ------------------------ Compilation proceeds as customary in autotools: bash config/bootstrap mkdir build cd build ../configure --help # to see all flags ../configure # appending all specific flags make # -j N to use N threads The program have to be compiled with C++ including all the libraries and header necessary for MPI. Typically you can use some wrapper of the system compiler to avoid having to pass all the paths and flags needed by MPI. Pass the name of such compiler wrapper through "MPICXX" parameter, e.g: "MPICXX=mpicxx". Optionally, pass the flag needed to activate OpenMP through CXXFLAGS: if none are passed, they will be guessed. Structure --------- The package is divided in various piecese, namely the "library", whose source are contained in "src" directory, and various projects and tools. This is the content of the various directories: -doc: in principle this should contain documentation to each and everything, but at the moment only notes on some particular routine -src: contains the library and all the routines common to the various programs (see below) -tools: simple programs like converters, data check, etc -projects: programs to perform massive computations -test: dedicated programs to check the library (inside "nissa" sub-drectory), and also input files and reference data to check "tools" and "projects" programs -work_in_prog: scratch area where to develop new programs Detailed content of "src" directory: -base: all the routines needed to initialize and close the package and communicate data, use vector, debug and generate random numbers; file "global_variables.cpp" contains also all the variables common to the package -dirac_operators: dirac operators for twisted mass and staggered regularizations, in double and quadruple precisions (tm only) -geometry: routines to move around on the lattice -hmc: routines to generate new confs with hybrid monte carlo methods, stout staggered and quenched theories only -inverters: multi-mass (cgm) and single mass (cg) inverters for twisted mass and staggered Dirac operators, in double and quadruple precisions -IO: routines to read and write ILDG files and to parse input files, and in general to access to the filesystem -linalgs: some linear algebra (not much indeed) -new_types: this contains definitions of types (file: src/new_types/new_types_definitions.h) and routines working on new types (see various files, e.g. su3.cpp) -operations: routines to make contractions, fourier transform and fft, fix the gauge, smear, and compute gauge observables All the files contained in the "src" directory are compiled and put together in the "libissa.a" library, in the main nissa directory. The program that want to use the "nissa" library should link it and include "nissa.h" (located inside "src"). Copyright --------- Nissa is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Nissa is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License (that you can find in doc/license) for more details.