-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathREADME
More file actions
136 lines (92 loc) · 5.45 KB
/
Copy pathREADME
File metadata and controls
136 lines (92 loc) · 5.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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 - [email protected]
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.