1
1
## Lyncs, a Python API for Lattice QCD applications
2
2
3
- Lyncs is a Python API for Lattice QCD currently under development.
3
+ Lyncs is a Python API for Lattice QCD, currently under development.
4
4
Lyncs aims to bring several popular libraries for Lattice QCD
5
5
under a common framework. Lyncs interfaces with libraries for
6
6
GPUs and CPUs in a way that can accommodate additional computing
7
7
architectures as these arise, achieving the best performance for
8
8
the calculations while maintaining the same high-level workflow.
9
9
10
- Lyncs distributes calculations using [ Dask] , with bindings to the
10
+ Lyncs distributes calculations using [ mpi4py ] and [ Dask] , with bindings to the
11
11
libraries performed automatically via [ cppyy] . Multiple distributed
12
12
tasks can be executed in parallel and different computing units
13
13
can be used at the same time to fully exploit the machine allocation.
14
14
While Lyncs is designed to quite generally allow linking to multiple
15
- libraries, we have focused on a set of targeted packages that include
15
+ libraries, we focus on a set of targeted packages that include
16
16
[ c-lime] , [ DDalphaAMG] , [ tmLQCD] and [ quda] . Any contribution to link
17
17
other libraries is very welcome!
18
18
19
+ [ mpi4py ] : https://mpi4py.readthedocs.io/en/stable/
19
20
[ Dask ] : https://dask.org/
20
21
[ cppyy ] : https://cppyy.readthedocs.io/
21
22
[ c-lime ] : https://github.com/usqcd-software/c-lime
@@ -25,7 +26,7 @@ other libraries is very welcome!
25
26
26
27
### The Lyncs ecosystem
27
28
28
- The Lyncs API is a top-level framework meant to be user-friendly,
29
+ The Lyncs- API is a top-level framework meant to be user-friendly,
29
30
flexible, modular and extendable. Under the hood, the project is
30
31
divided in many Python (sub-)modules that serve for a specific or
31
32
generic purpose. These modules are collected in the [ Lyncs-API]
@@ -51,6 +52,10 @@ The modules part of lyncs are the following.
51
52
- [ lyncs.mpi] ( https://github.com/Lyncs-API/lyncs.mpi ) :
52
53
utils for interfacing to MPI libraries using mpi4py and dask.
53
54
55
+ - [ lyncs.io] ( https://github.com/Lyncs-API/lyncs.io ) :
56
+ IO functions (` load ` and ` save ` ) that support various formats
57
+ and also parallel IO via MPI and Dask.
58
+
54
59
##### Interfaces to Lattice QCD libraries
55
60
56
61
- [ lyncs.clime] ( https://github.com/Lyncs-API/lyncs.clime ) :
@@ -69,7 +74,7 @@ The modules part of lyncs are the following.
69
74
70
75
These modules can be either installed as part of Lyncs,
71
76
` pip install lyncs[NAME] `
72
- or independently,
77
+ or independently (suggested for now) ,
73
78
` pip install lyncs_NAME ` .
74
79
75
80
In the first case they can be imported with
@@ -84,10 +89,55 @@ applications in Python. We seek for contributions under many
84
89
aspect: linking to libraries, expanding the features of the API
85
90
and writing of documentation and educational-oriented notebooks.
86
91
87
- If you want to contribute, please read the following.
92
+ If you want to contribute, please read the [ Developer guide] .
93
+
94
+ For any news or being informed about planned events,
95
+ please consider registering to our mailing list.
96
+
97
+ https://groups.google.com/g/lyncs-api
88
98
89
99
#### Developer guide
90
100
101
+ When contributing to a package, clone the source from [ github] ( https://github.com/Lyncs-API/ )
102
+ and install the package in development mode:
103
+
104
+ ```
105
+ pip install -e .[all]
106
+ ```
107
+
108
+ Now you can run the test-suite for checking the correctness of the installation:
109
+
110
+ ```
111
+ pytest -v
112
+ ```
113
+
114
+ If everything goes well, you should see all the tests passed and obtain a coverage report.
115
+
116
+ A main implementation requirement is a ** high code-coverage** .
117
+ If you are going to implement something new, please, also add the respective
118
+ test files or functions in the ` test/ ` directory.
119
+
120
+ Another implementation requirement is to ** format the code** via [ black] ( https://github.com/ambv/black )
121
+ and to use [ pylint] ( https://github.com/PyCQA/pylint ) for improving the code standards.
122
+
123
+ These packages can be installed via pip:
124
+
125
+ ```
126
+ pip install black lyncs_setuptools[pylint]
127
+ ```
128
+
129
+ Before any commit, run black from the source directory:
130
+
131
+ ```
132
+ black .
133
+ ```
134
+
135
+ When you are done with the implementation, try to resolve as many comments/warnings/errors
136
+ as possible brought up by ` pylint ` :
137
+
138
+ ```
139
+ lyncs_pylint .
140
+ ```
91
141
92
142
93
143
### Funding
0 commit comments