PyQUDA-Utils 0.10.1.dev2__tar.gz → 0.10.2.dev0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PKG-INFO +1 -1
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PyQUDA_Utils.egg-info/PKG-INFO +1 -1
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/_field_utils.py +10 -18
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/chroma.py +2 -2
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/milc.py +2 -2
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/nersc.py +3 -3
- pyquda_utils-0.10.2.dev0/pyquda_utils/_version.py +1 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/core.py +2 -1
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/gauge_nd_sun.py +33 -31
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/io/__init__.py +3 -3
- pyquda_utils-0.10.1.dev2/pyquda_utils/_version.py +0 -1
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/LICENSE +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/MANIFEST.in +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PyQUDA_Utils.egg-info/SOURCES.txt +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PyQUDA_Utils.egg-info/dependency_links.txt +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PyQUDA_Utils.egg-info/requires.txt +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PyQUDA_Utils.egg-info/top_level.txt +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/README.md +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyproject.toml +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/__init__.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/_mpi_file.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/io_general.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/kyu.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/lime.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/npy.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/openqcd.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_io/xqcd.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/__init__.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/convert.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/deprecated.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/gamma.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/gpt.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/hmc_param.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/milc_rhmc_param.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/phase.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/quasi_axial_gauge_fixing.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/source.py +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/setup.cfg +0 -0
- {pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyQUDA-Utils
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.2.dev0
|
|
4
4
|
Summary: Utility scripts based on PyQUDA
|
|
5
5
|
Author-email: SaltyChiang <SaltyChiang@users.noreply.github.com>
|
|
6
6
|
Maintainer-email: SaltyChiang <SaltyChiang@users.noreply.github.com>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: PyQUDA-Utils
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.2.dev0
|
|
4
4
|
Summary: Utility scripts based on PyQUDA
|
|
5
5
|
Author-email: SaltyChiang <SaltyChiang@users.noreply.github.com>
|
|
6
6
|
Maintainer-email: SaltyChiang <SaltyChiang@users.noreply.github.com>
|
|
@@ -183,18 +183,14 @@ def gaugeReunitarize(gauge: numpy.ndarray, reunitarize_sigma: float):
|
|
|
183
183
|
gauge[1] /= row1_abs
|
|
184
184
|
row2 = numpy.cross(gauge[0], gauge[1], axis=0).conjugate()
|
|
185
185
|
if reunitarize_sigma > 0:
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
+ (1 - row1_abs) ** 2
|
|
192
|
-
+ numpy.linalg.norm(row2 - gauge[2], axis=0) ** 2
|
|
193
|
-
).max(),
|
|
194
|
-
MPI.MAX,
|
|
195
|
-
)
|
|
196
|
-
< reunitarize_sigma
|
|
186
|
+
sigma = numpy.sqrt(
|
|
187
|
+
(1 - row0_abs) ** 2
|
|
188
|
+
+ numpy.abs(row0_row1) ** 2
|
|
189
|
+
+ (1 - row1_abs) ** 2
|
|
190
|
+
+ numpy.linalg.norm(row2 - gauge[2], axis=0) ** 2
|
|
197
191
|
)
|
|
192
|
+
failed = MPI.COMM_WORLD.allreduce(numpy.sum(sigma > reunitarize_sigma), MPI.SUM)
|
|
193
|
+
assert failed == 0, f"Reunitarization failed {failed} times"
|
|
198
194
|
gauge[2] = row2
|
|
199
195
|
return gauge.transpose(2, 3, 4, 5, 6, 0, 1)
|
|
200
196
|
|
|
@@ -212,13 +208,9 @@ def gaugeReunitarizeReconstruct12(gauge: numpy.ndarray, reunitarize_sigma: float
|
|
|
212
208
|
gauge[1] /= row1_abs
|
|
213
209
|
row2 = numpy.cross(gauge[0], gauge[1], axis=0).conjugate()
|
|
214
210
|
if reunitarize_sigma > 0:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
MPI.MAX,
|
|
219
|
-
)
|
|
220
|
-
< reunitarize_sigma
|
|
221
|
-
)
|
|
211
|
+
sigma = numpy.sqrt((1 - row0_abs) ** 2 + numpy.abs(row0_row1) ** 2 + (1 - row1_abs) ** 2)
|
|
212
|
+
failed = MPI.COMM_WORLD.allreduce(numpy.sum(sigma > reunitarize_sigma), MPI.SUM)
|
|
213
|
+
assert failed == 0, f"Reunitarization failed {failed} times"
|
|
222
214
|
gauge[2] = row2
|
|
223
215
|
return gauge.transpose(2, 3, 4, 5, 6, 0, 1)
|
|
224
216
|
|
|
@@ -34,7 +34,7 @@ def checksum_qio(latt_size: List[int], grid_size: List[int], data):
|
|
|
34
34
|
return sum29, sum31
|
|
35
35
|
|
|
36
36
|
|
|
37
|
-
def readQIOGauge(filename: str, grid_size: List[int], checksum: bool = True, reunitarize_sigma: float =
|
|
37
|
+
def readQIOGauge(filename: str, grid_size: List[int], checksum: bool = True, reunitarize_sigma: float = 5e-7):
|
|
38
38
|
from .lime import Lime
|
|
39
39
|
|
|
40
40
|
lime = Lime(filename)
|
|
@@ -68,7 +68,7 @@ def readQIOGauge(filename: str, grid_size: List[int], checksum: bool = True, reu
|
|
|
68
68
|
), f"Bad checksum for {filename}"
|
|
69
69
|
gauge = gauge.transpose(4, 0, 1, 2, 3, 5, 6).astype("<c16")
|
|
70
70
|
if precision == 4:
|
|
71
|
-
gauge = gaugeReunitarize(gauge, reunitarize_sigma) #
|
|
71
|
+
gauge = gaugeReunitarize(gauge, reunitarize_sigma) # 5e-7: Nc * 2**0.5 * 1.1920929e-07
|
|
72
72
|
return latt_size, gauge
|
|
73
73
|
|
|
74
74
|
|
|
@@ -55,7 +55,7 @@ def checksum_qio(latt_size: List[int], grid_size: List[int], data):
|
|
|
55
55
|
return sum29, sum31
|
|
56
56
|
|
|
57
57
|
|
|
58
|
-
def readGauge(filename: str, grid_size: List[int], checksum: bool = True, reunitarize_sigma: float =
|
|
58
|
+
def readGauge(filename: str, grid_size: List[int], checksum: bool = True, reunitarize_sigma: float = 5e-7):
|
|
59
59
|
filename = path.expanduser(path.expandvars(filename))
|
|
60
60
|
with open(filename, "rb") as f:
|
|
61
61
|
magic = f.read(4)
|
|
@@ -79,7 +79,7 @@ def readGauge(filename: str, grid_size: List[int], checksum: bool = True, reunit
|
|
|
79
79
|
sum31,
|
|
80
80
|
), f"Bad checksum for {filename}"
|
|
81
81
|
gauge = gauge.transpose(4, 0, 1, 2, 3, 5, 6).astype("<c16")
|
|
82
|
-
gauge = gaugeReunitarize(gauge, reunitarize_sigma) #
|
|
82
|
+
gauge = gaugeReunitarize(gauge, reunitarize_sigma) # 5e-7: Nc * 2**0.5 * 1.1920929e-07
|
|
83
83
|
return latt_size, gauge
|
|
84
84
|
|
|
85
85
|
|
|
@@ -27,7 +27,7 @@ def readGauge(
|
|
|
27
27
|
checksum: bool = True,
|
|
28
28
|
plaquette: bool = True,
|
|
29
29
|
link_trace: bool = True,
|
|
30
|
-
reunitarize_sigma: float =
|
|
30
|
+
reunitarize_sigma: float = 5e-7,
|
|
31
31
|
):
|
|
32
32
|
filename = path.expanduser(path.expandvars(filename))
|
|
33
33
|
header: Dict[str, str] = {}
|
|
@@ -63,7 +63,7 @@ def readGauge(
|
|
|
63
63
|
assert checksum_nersc(gauge.reshape(-1)) == int(header["CHECKSUM"], 16), f"Bad checksum for {filename}"
|
|
64
64
|
gauge = gauge.transpose(4, 0, 1, 2, 3, 5, 6).astype("<c16")
|
|
65
65
|
if float_nbytes == 4:
|
|
66
|
-
gauge = gaugeReunitarize(gauge, reunitarize_sigma) #
|
|
66
|
+
gauge = gaugeReunitarize(gauge, reunitarize_sigma) # 5e-7: Nc * 2**0.5 * 1.1920929e-07
|
|
67
67
|
elif header["DATATYPE"] == "4D_SU3_GAUGE":
|
|
68
68
|
gauge = readMPIFile(filename, dtype, offset, (Lt, Lz, Ly, Lx, Nd, Nc - 1, Nc), (3, 2, 1, 0), grid_size)
|
|
69
69
|
gauge = gauge.astype(f"<c{2 * float_nbytes}")
|
|
@@ -71,7 +71,7 @@ def readGauge(
|
|
|
71
71
|
assert checksum_nersc(gauge.reshape(-1)) == int(header["CHECKSUM"], 16), f"Bad checksum for {filename}"
|
|
72
72
|
gauge = gauge.transpose(4, 0, 1, 2, 3, 5, 6).astype("<c16")
|
|
73
73
|
if float_nbytes == 4:
|
|
74
|
-
gauge = gaugeReunitarizeReconstruct12(gauge, reunitarize_sigma) #
|
|
74
|
+
gauge = gaugeReunitarizeReconstruct12(gauge, reunitarize_sigma) # 5e-7: Nc * 2 **0.5 * 1.1920929e-07
|
|
75
75
|
elif float_nbytes == 8:
|
|
76
76
|
gauge = gaugeReconstruct12(gauge)
|
|
77
77
|
else:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.10.2.dev0"
|
|
@@ -377,10 +377,11 @@ def getHISQ(
|
|
|
377
377
|
tol: float,
|
|
378
378
|
maxiter: int,
|
|
379
379
|
naik_epsilon: float = 0.0,
|
|
380
|
+
multigrid: Union[List[List[int]], Multigrid] = None,
|
|
380
381
|
):
|
|
381
382
|
assert latt_info.anisotropy == 1.0
|
|
382
383
|
|
|
383
|
-
return fermion.HISQDirac(latt_info, mass, tol, maxiter, naik_epsilon,
|
|
384
|
+
return fermion.HISQDirac(latt_info, mass, tol, maxiter, naik_epsilon, multigrid)
|
|
384
385
|
|
|
385
386
|
|
|
386
387
|
def getDefaultDirac(
|
|
@@ -85,7 +85,7 @@ class LatticeLink:
|
|
|
85
85
|
latt_size: Sequence[int],
|
|
86
86
|
grid_size: Sequence[int],
|
|
87
87
|
color: int,
|
|
88
|
-
|
|
88
|
+
value: numpy.ndarray = None,
|
|
89
89
|
mu: int = None,
|
|
90
90
|
):
|
|
91
91
|
assert len(latt_size) == len(grid_size)
|
|
@@ -95,28 +95,29 @@ class LatticeLink:
|
|
|
95
95
|
self.grid_size = tuple(grid_size)
|
|
96
96
|
self.grid_coord = getGridCoord(grid_size)
|
|
97
97
|
self.sublatt_size = getSublatticeSize(latt_size, grid_size)
|
|
98
|
-
if
|
|
99
|
-
self.
|
|
98
|
+
if value is None:
|
|
99
|
+
self.data = numpy.empty((*self.sublatt_size[::-1], self.Nc, self.Nc), numpy.complex128)
|
|
100
|
+
self.data[...] = numpy.identity(self.Nc, dtype=numpy.complex128)
|
|
100
101
|
else:
|
|
101
|
-
self.
|
|
102
|
+
self.data = value.reshape(*self.sublatt_size[::-1], self.Nc, self.Nc)
|
|
102
103
|
self.mu = mu
|
|
103
104
|
|
|
104
105
|
def __getitem__(self, key):
|
|
105
|
-
return self.
|
|
106
|
+
return self.data[key]
|
|
106
107
|
|
|
107
108
|
def __matmul__(self, other: "LatticeLink"):
|
|
108
|
-
return self.
|
|
109
|
+
return self.data @ other.data
|
|
109
110
|
|
|
110
111
|
@property
|
|
111
112
|
def backend(self):
|
|
112
|
-
if type(self.
|
|
113
|
+
if type(self.data).__module__ == "numpy":
|
|
113
114
|
return numpy
|
|
114
|
-
elif type(self.
|
|
115
|
+
elif type(self.data).__module__ == "cupy":
|
|
115
116
|
import cupy
|
|
116
117
|
|
|
117
118
|
return cupy
|
|
118
119
|
else:
|
|
119
|
-
raise RuntimeError(f"Unknown array type {type(self.
|
|
120
|
+
raise RuntimeError(f"Unknown array type {type(self.data)}")
|
|
120
121
|
|
|
121
122
|
def shift(self, mu: int, dagger: bool = False):
|
|
122
123
|
assert 0 <= mu < 2 * self.Nd
|
|
@@ -126,8 +127,8 @@ class LatticeLink:
|
|
|
126
127
|
mu = mu % self.Nd
|
|
127
128
|
left_slice = [slice(None, None) for nu in range(self.Nd)]
|
|
128
129
|
right_slice = [slice(None, None) for nu in range(self.Nd)]
|
|
129
|
-
result = backend.empty_like(self.
|
|
130
|
-
right = self.
|
|
130
|
+
result = backend.empty_like(self.data)
|
|
131
|
+
right = self.data
|
|
131
132
|
rank = _RANK
|
|
132
133
|
dest = getShiftedRank(self.grid_coord, self.grid_size, [0 if nu != mu else -dir for nu in range(Nd)])
|
|
133
134
|
source = getShiftedRank(self.grid_coord, self.grid_size, [0 if nu != mu else dir for nu in range(Nd)])
|
|
@@ -161,7 +162,7 @@ class LatticeLink:
|
|
|
161
162
|
|
|
162
163
|
return LatticeLink(self.latt_size, self.grid_size, self.Nc, result, self.mu)
|
|
163
164
|
|
|
164
|
-
def
|
|
165
|
+
def matmul_shift(self, right: "LatticeLink"):
|
|
165
166
|
assert self.mu is not None, "Ambiguous dimension and direction"
|
|
166
167
|
backend = self.backend
|
|
167
168
|
Nd = self.Nd
|
|
@@ -169,9 +170,9 @@ class LatticeLink:
|
|
|
169
170
|
mu = self.mu % self.Nd
|
|
170
171
|
left_slice = [slice(None, None) for nu in range(self.Nd)]
|
|
171
172
|
right_slice = [slice(None, None) for nu in range(self.Nd)]
|
|
172
|
-
result = backend.empty_like(self.
|
|
173
|
-
left = self.
|
|
174
|
-
right = right.
|
|
173
|
+
result = backend.empty_like(self.data)
|
|
174
|
+
left = self.data
|
|
175
|
+
right = right.data
|
|
175
176
|
rank = _RANK
|
|
176
177
|
dest = getShiftedRank(self.grid_coord, self.grid_size, [0 if nu != mu else -dir for nu in range(Nd)])
|
|
177
178
|
source = getShiftedRank(self.grid_coord, self.grid_size, [0 if nu != mu else dir for nu in range(Nd)])
|
|
@@ -207,7 +208,7 @@ class LatticeLink:
|
|
|
207
208
|
self.latt_size,
|
|
208
209
|
self.grid_size,
|
|
209
210
|
self.Nc,
|
|
210
|
-
self.
|
|
211
|
+
self.data.swapaxes(-2, -1).conjugate(),
|
|
211
212
|
)
|
|
212
213
|
|
|
213
214
|
def toDevice(self):
|
|
@@ -215,10 +216,10 @@ class LatticeLink:
|
|
|
215
216
|
|
|
216
217
|
if _GPUID < 0:
|
|
217
218
|
initGPU()
|
|
218
|
-
self.
|
|
219
|
+
self.data = cupy.asarray(self.data)
|
|
219
220
|
|
|
220
221
|
def toHost(self):
|
|
221
|
-
self.
|
|
222
|
+
self.data = self.data.get()
|
|
222
223
|
|
|
223
224
|
|
|
224
225
|
class LatticeGauge:
|
|
@@ -228,7 +229,7 @@ class LatticeGauge:
|
|
|
228
229
|
grid_size: Sequence[int],
|
|
229
230
|
color: int,
|
|
230
231
|
border: int = 0,
|
|
231
|
-
|
|
232
|
+
value: numpy.ndarray = None,
|
|
232
233
|
extended: numpy.ndarray = None,
|
|
233
234
|
):
|
|
234
235
|
assert len(latt_size) == len(grid_size)
|
|
@@ -239,27 +240,28 @@ class LatticeGauge:
|
|
|
239
240
|
self.grid_coord = getGridCoord(grid_size)
|
|
240
241
|
self.sublatt_size = getSublatticeSize(latt_size, grid_size)
|
|
241
242
|
shape = (self.Nd, *self.sublatt_size[::-1], self.Nc, self.Nc)
|
|
242
|
-
if
|
|
243
|
-
self.
|
|
243
|
+
if value is None:
|
|
244
|
+
self.data = numpy.empty(shape, numpy.complex128)
|
|
245
|
+
self.data[...] = numpy.identity(self.Nc, dtype=numpy.complex128)
|
|
244
246
|
else:
|
|
245
|
-
self.
|
|
247
|
+
self.data = value.reshape(shape)
|
|
246
248
|
self.extend(border, extended)
|
|
247
249
|
|
|
248
250
|
def __getitem__(self, mu):
|
|
249
251
|
assert 0 <= mu < 2 * self.Nd
|
|
250
|
-
gauge_mu = LatticeLink(self.latt_size, self.grid_size, self.Nc, self.
|
|
252
|
+
gauge_mu = LatticeLink(self.latt_size, self.grid_size, self.Nc, self.data[mu % self.Nd], mu)
|
|
251
253
|
return gauge_mu if mu < self.Nd else gauge_mu.shift(mu, True)
|
|
252
254
|
|
|
253
255
|
@property
|
|
254
256
|
def backend(self):
|
|
255
|
-
if type(self.
|
|
257
|
+
if type(self.data).__module__ == "numpy":
|
|
256
258
|
return numpy
|
|
257
|
-
elif type(self.
|
|
259
|
+
elif type(self.data).__module__ == "cupy":
|
|
258
260
|
import cupy
|
|
259
261
|
|
|
260
262
|
return cupy
|
|
261
263
|
else:
|
|
262
|
-
raise RuntimeError(f"Unknown array type {type(self.
|
|
264
|
+
raise RuntimeError(f"Unknown array type {type(self.data)}")
|
|
263
265
|
|
|
264
266
|
def extend(self, border: int, extended: numpy.ndarray = None):
|
|
265
267
|
if border <= 0:
|
|
@@ -271,7 +273,7 @@ class LatticeGauge:
|
|
|
271
273
|
self.extlatt_size = [L + 2 * border for L in self.sublatt_size]
|
|
272
274
|
shape = (self.Nd, *self.extlatt_size[::-1], self.Nc, self.Nc)
|
|
273
275
|
if extended is None:
|
|
274
|
-
self.extended = self.backend.empty(shape, self.
|
|
276
|
+
self.extended = self.backend.empty(shape, self.data.dtype)
|
|
275
277
|
else:
|
|
276
278
|
self.extended = extended.reshape(shape)
|
|
277
279
|
self.exchange()
|
|
@@ -294,7 +296,7 @@ class LatticeGauge:
|
|
|
294
296
|
gauge_slice[mu] = slice(-Lb, None)
|
|
295
297
|
gaugeSendRecv(
|
|
296
298
|
self.extended[:, *extended_slice[::-1]],
|
|
297
|
-
self.
|
|
299
|
+
self.data[:, *gauge_slice[::-1]],
|
|
298
300
|
getShiftedRank(self.grid_coord, self.grid_size, delta),
|
|
299
301
|
getShiftedRank(self.grid_coord, self.grid_size, [-d for d in delta]),
|
|
300
302
|
)
|
|
@@ -314,12 +316,12 @@ class LatticeGauge:
|
|
|
314
316
|
|
|
315
317
|
if _GPUID < 0:
|
|
316
318
|
initGPU()
|
|
317
|
-
self.
|
|
319
|
+
self.data = cupy.asarray(self.data)
|
|
318
320
|
if self.extended is not None:
|
|
319
321
|
self.extended = cupy.asarray(self.extended)
|
|
320
322
|
|
|
321
323
|
def toHost(self):
|
|
322
|
-
self.
|
|
324
|
+
self.data = self.data.get()
|
|
323
325
|
if self.extended is not None:
|
|
324
326
|
self.extended = self.extended.get()
|
|
325
327
|
|
|
@@ -327,5 +329,5 @@ class LatticeGauge:
|
|
|
327
329
|
def link(*color_matrices: LatticeLink):
|
|
328
330
|
linked = color_matrices[-1]
|
|
329
331
|
for color_matrix in color_matrices[::-1][1:]:
|
|
330
|
-
linked = color_matrix.
|
|
332
|
+
linked = color_matrix.matmul_shift(linked)
|
|
331
333
|
return linked
|
|
@@ -69,7 +69,7 @@ def rotateToDeGrandRossi(propagator: LatticePropagator):
|
|
|
69
69
|
)
|
|
70
70
|
|
|
71
71
|
|
|
72
|
-
def readChromaQIOGauge(filename: str, checksum: bool = True, reunitarize_sigma: float =
|
|
72
|
+
def readChromaQIOGauge(filename: str, checksum: bool = True, reunitarize_sigma: float = 5e-7):
|
|
73
73
|
from pyquda import getGridSize
|
|
74
74
|
from pyquda_io.chroma import readQIOGauge as read
|
|
75
75
|
|
|
@@ -96,7 +96,7 @@ def readChromaQIOPropagator(filename: str, checksum: bool = True):
|
|
|
96
96
|
return LatticeStaggeredPropagator(LatticeInfo(latt_size), evenodd(propagator_raw, [0, 1, 2, 3]))
|
|
97
97
|
|
|
98
98
|
|
|
99
|
-
def readMILCGauge(filename: str, checksum: bool = True, reunitarize_sigma: float =
|
|
99
|
+
def readMILCGauge(filename: str, checksum: bool = True, reunitarize_sigma: float = 5e-7):
|
|
100
100
|
from pyquda import getGridSize
|
|
101
101
|
from pyquda_io.milc import readGauge as read
|
|
102
102
|
|
|
@@ -244,7 +244,7 @@ def readNERSCGauge(
|
|
|
244
244
|
checksum: bool = True,
|
|
245
245
|
plaquette: bool = True,
|
|
246
246
|
link_trace: bool = True,
|
|
247
|
-
reunitarize_sigma: float =
|
|
247
|
+
reunitarize_sigma: float = 5e-7,
|
|
248
248
|
):
|
|
249
249
|
from pyquda import getGridSize
|
|
250
250
|
from pyquda_io.nersc import readGauge as read
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.10.1.dev2"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/PyQUDA_Utils.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pyquda_utils-0.10.1.dev2 → pyquda_utils-0.10.2.dev0}/pyquda_utils/quasi_axial_gauge_fixing.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|