qlat-utils 0.76__tar.gz → 0.78__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.
- {qlat_utils-0.76 → qlat_utils-0.78}/PKG-INFO +1 -1
- qlat_utils-0.78/bin/qlat-utils-config +3 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/meson.build +2 -1
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/__init__.py +2 -2
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/__main__.py +2 -2
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/cache.py +5 -2
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/data.py +3 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/complex.h +1 -1
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/lat-io.h +2 -2
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qacc-func.h +7 -7
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/show.h +28 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/timer.h +1 -1
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/json.py +10 -7
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/env.cpp +6 -6
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/timer.cpp +12 -8
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/version_gen.sh +1 -1
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/meson.build +2 -2
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/parallel.py +19 -11
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/q_fit_corr.py +4 -4
- qlat_utils-0.78/qlat_utils/q_fit_corr_2.py +849 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/rng_state.pyx +1 -1
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/meson.build +0 -1
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/timer.pyx +107 -47
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/utils.py +43 -4
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/utils_io.py +35 -0
- qlat_utils-0.78/qlat_utils_config/__init__.py +1 -0
- qlat_utils-0.76/qlat_utils/scripts/qlat_utils_config.py → qlat_utils-0.78/qlat_utils_config/__main__.py +2 -3
- qlat_utils-0.76/qlat_utils/get_include_dir.py → qlat_utils-0.78/qlat_utils_config/get_info.py +26 -3
- qlat_utils-0.78/qlat_utils_config/meson.build +18 -0
- qlat_utils-0.76/bin/qlat-utils-config +0 -3
- {qlat_utils-0.76 → qlat_utils-0.78}/LICENSE +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/README.md +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/crc32 +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/lat-io-diff +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/lat-io-glimpse +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/meson.build +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/pickle-glimpse +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/qar +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/qar-glimpse +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/bin/qunar.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/pyproject.toml +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/__init__.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/all.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/ama.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/c.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/coordinate.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/coordinate.pyx +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/cutils.pyx +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/everything.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/meson.build +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/array.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/assert.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/cache.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/compatible-endian.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/compatible-omp.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/config.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/coordinate-d.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/coordinate.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/core.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/crc32.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/eigen-sys.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/eigen.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/endian.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/env.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/handle.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mat-vec.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mat.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/matrix-hmc.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/matrix.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/meson.build +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mpi-auto.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mvector.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/py_convert.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qacc-translator.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qacc.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qar.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qcd-setting.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/rng-state.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/sha256.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/sprng-sha256.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/types.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-extra.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-io.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-ldouble.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-vec.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/vector.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/version.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/warning.h +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lat_data.pxd.in +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lat_data.pyx.in +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/cache.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/lat-io.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/mat.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/meson.build +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/mpi-auto.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/qar.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/rng-state.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/utils-io.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/utils-vec.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/version.cpp +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/load_prop.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lru_cache.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/mat.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/mat.pyx +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/q_hlt_reconstruction.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/qar.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/qar.pyx +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/qplot.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/rng_state.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/crc32.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/lat_io_diff.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/lat_io_glimpse.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/pickle_glimpse.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/qar.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/qar_glimpse.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/tempita.py +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/timer.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/types.pxd +0 -0
- {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/types.pyx +0 -0
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
project('qlat-utils', 'cpp', 'cython',
|
|
2
|
-
version: '0.
|
|
2
|
+
version: '0.78',
|
|
3
3
|
license: 'GPL-3.0-or-later',
|
|
4
4
|
default_options: [
|
|
5
5
|
'warning_level=3',
|
|
@@ -52,5 +52,6 @@ endif
|
|
|
52
52
|
|
|
53
53
|
deps = [ py3.dependency().as_system(), numpy, eigen, omp, zlib, math, quadmath, ]
|
|
54
54
|
|
|
55
|
+
subdir('qlat_utils_config')
|
|
55
56
|
subdir('qlat_utils')
|
|
56
57
|
subdir('bin')
|
|
@@ -23,14 +23,14 @@ from .qplot import *
|
|
|
23
23
|
|
|
24
24
|
from .parallel import *
|
|
25
25
|
|
|
26
|
-
from .get_include_dir import *
|
|
27
|
-
|
|
28
26
|
from .json import *
|
|
29
27
|
|
|
30
28
|
from .lru_cache import *
|
|
31
29
|
|
|
32
30
|
from . import q_fit_corr
|
|
33
31
|
|
|
32
|
+
from . import q_fit_corr_2
|
|
33
|
+
|
|
34
34
|
set_verbose_level()
|
|
35
35
|
|
|
36
36
|
set_display_method_obj = SetDisplayMethod()
|
|
@@ -2,13 +2,13 @@ import sys
|
|
|
2
2
|
|
|
3
3
|
usage_message = """
|
|
4
4
|
Usage:
|
|
5
|
+
python3 -m qlat_utils qlat-utils-config ...
|
|
5
6
|
python3 -m qlat_utils crc32 ...
|
|
6
7
|
python3 -m qlat_utils lat-io-glimpse ...
|
|
7
8
|
python3 -m qlat_utils lat-io-diff ...
|
|
8
9
|
python3 -m qlat_utils pickle-glimpse ...
|
|
9
10
|
python3 -m qlat_utils qar-glimpse ...
|
|
10
11
|
python3 -m qlat_utils qar ...
|
|
11
|
-
python3 -m qlat_utils qlat-utils-config ...
|
|
12
12
|
""".strip()
|
|
13
13
|
|
|
14
14
|
if len(sys.argv) < 2:
|
|
@@ -19,7 +19,7 @@ action = sys.argv[1]
|
|
|
19
19
|
sys.argv = sys.argv[1:]
|
|
20
20
|
|
|
21
21
|
if action == "qlat-utils-config":
|
|
22
|
-
|
|
22
|
+
import qlat_utils_config.__main__
|
|
23
23
|
elif action == "crc32":
|
|
24
24
|
from .scripts import crc32
|
|
25
25
|
elif action == "lat-io-glimpse":
|
|
@@ -3,6 +3,10 @@ from . import c
|
|
|
3
3
|
|
|
4
4
|
class Cache(dict):
|
|
5
5
|
|
|
6
|
+
"""
|
|
7
|
+
self.cache_keys
|
|
8
|
+
"""
|
|
9
|
+
|
|
6
10
|
def __init__(self, *keys):
|
|
7
11
|
super().__init__()
|
|
8
12
|
self.cache_keys = keys
|
|
@@ -17,8 +21,6 @@ def list_cache(ca=cache):
|
|
|
17
21
|
for key, val in ca.items():
|
|
18
22
|
if isinstance(val, Cache):
|
|
19
23
|
l[key] = list_cache(val)
|
|
20
|
-
else:
|
|
21
|
-
l[key] = None
|
|
22
24
|
return l
|
|
23
25
|
|
|
24
26
|
def show_cache_keys(keys):
|
|
@@ -79,4 +81,5 @@ def clear_all_caches():
|
|
|
79
81
|
clean python level cache and then C++ level cache
|
|
80
82
|
"""
|
|
81
83
|
clean_cache()
|
|
84
|
+
cache.clear()
|
|
82
85
|
c.clear_all_caches()
|
|
@@ -686,6 +686,9 @@ def jk_blocking_func_default(
|
|
|
686
686
|
):
|
|
687
687
|
"""
|
|
688
688
|
block_size_for_this_job_tag = block_size_dict.get(job_tag, block_size)
|
|
689
|
+
#
|
|
690
|
+
use default_g_jk_kwargs for
|
|
691
|
+
block_size, block_size_dict, all_jk_idx_set
|
|
689
692
|
"""
|
|
690
693
|
block_size = default_g_jk_kwargs["block_size"]
|
|
691
694
|
block_size_dict = default_g_jk_kwargs["block_size_dict"]
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
#if defined QLAT_NO_ALIGNED_ALLOC
|
|
16
16
|
#define QLAT_ALIGNED_BYTES 1
|
|
17
|
-
constexpr int qlat_aligned_bytes(int size) { return 1; }
|
|
17
|
+
constexpr int qlat_aligned_bytes(int size) { (void)size; return 1; }
|
|
18
18
|
#define QLAT_ALIGN(SIZE) __attribute__((aligned(1)))
|
|
19
19
|
// #define QLAT_ALIGN(SIZE) alignas(1)
|
|
20
20
|
#else
|
|
@@ -319,7 +319,7 @@ bool is_matching(const LatDataT<T>& ld1, const LatDataT<T>& ld2)
|
|
|
319
319
|
}
|
|
320
320
|
|
|
321
321
|
template <class T, class VecS>
|
|
322
|
-
Vector<
|
|
322
|
+
Vector<T> lat_data_get(LatDataT<T>& ld, const VecS& idx)
|
|
323
323
|
{
|
|
324
324
|
const Long offset = lat_data_offset(ld, idx);
|
|
325
325
|
const Long size = lat_data_size(ld, idx.size());
|
|
@@ -329,7 +329,7 @@ Vector<RealD> lat_data_get(LatDataT<T>& ld, const VecS& idx)
|
|
|
329
329
|
}
|
|
330
330
|
|
|
331
331
|
template <class T, class VecS>
|
|
332
|
-
Vector<
|
|
332
|
+
Vector<T> lat_data_get_const(const LatDataT<T>& ld, const VecS& idx)
|
|
333
333
|
// Be cautious about the const property
|
|
334
334
|
// 改不改靠自觉
|
|
335
335
|
{
|
|
@@ -18,15 +18,15 @@ API inline int& qacc_num_threads()
|
|
|
18
18
|
|
|
19
19
|
#define qfor(iter1, num, ...) \
|
|
20
20
|
{ \
|
|
21
|
-
for (Long iter1 = 0; iter1 < num; ++iter1) { \
|
|
21
|
+
for (qlat::Long iter1 = 0; iter1 < num; ++iter1) { \
|
|
22
22
|
{__VA_ARGS__}; \
|
|
23
23
|
} \
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
#define qfor2d(iter1, num1, iter2, num2, ...) \
|
|
27
27
|
{ \
|
|
28
|
-
for (Long iter1 = 0; iter1 < num1; ++iter1) { \
|
|
29
|
-
for (Long iter2 = 0; iter2 < num2; ++iter2) { \
|
|
28
|
+
for (qlat::Long iter1 = 0; iter1 < num1; ++iter1) { \
|
|
29
|
+
for (qlat::Long iter2 = 0; iter2 < num2; ++iter2) { \
|
|
30
30
|
{__VA_ARGS__}; \
|
|
31
31
|
} \
|
|
32
32
|
} \
|
|
@@ -37,7 +37,7 @@ API inline int& qacc_num_threads()
|
|
|
37
37
|
#define qthread_for(iter1, num, ...) \
|
|
38
38
|
{ \
|
|
39
39
|
q_do_pragma(omp parallel for schedule(static)) \
|
|
40
|
-
for (Long iter1 = 0; iter1 < num; ++iter1) \
|
|
40
|
+
for (qlat::Long iter1 = 0; iter1 < num; ++iter1) \
|
|
41
41
|
{ \
|
|
42
42
|
{__VA_ARGS__}; \
|
|
43
43
|
} \
|
|
@@ -46,9 +46,9 @@ API inline int& qacc_num_threads()
|
|
|
46
46
|
#define qthread_for2d(iter1, num1, iter2, num2, ...) \
|
|
47
47
|
{ \
|
|
48
48
|
q_do_pragma(omp parallel for collapse(2)) \
|
|
49
|
-
for (Long iter1 = 0; iter1 < num1; ++iter1) \
|
|
49
|
+
for (qlat::Long iter1 = 0; iter1 < num1; ++iter1) \
|
|
50
50
|
{ \
|
|
51
|
-
for (Long iter2 = 0; iter2 < num2; ++iter2) { \
|
|
51
|
+
for (qlat::Long iter2 = 0; iter2 < num2; ++iter2) { \
|
|
52
52
|
{__VA_ARGS__}; \
|
|
53
53
|
} \
|
|
54
54
|
} \
|
|
@@ -65,7 +65,7 @@ API inline int& qacc_num_threads()
|
|
|
65
65
|
#define qacc_for2dNB(iter1, num1, iter2, num2, ...) \
|
|
66
66
|
{ \
|
|
67
67
|
if ((num1 != 0) and (num2 != 0)) { \
|
|
68
|
-
typedef Long QACC_FOR_LOOP_ITERATOR; \
|
|
68
|
+
typedef qlat::Long QACC_FOR_LOOP_ITERATOR; \
|
|
69
69
|
auto QACC_FOR_LOOP_LAMBDA = [=] __host__ __device__( \
|
|
70
70
|
QACC_FOR_LOOP_ITERATOR iter1, \
|
|
71
71
|
QACC_FOR_LOOP_ITERATOR iter2) mutable { \
|
|
@@ -459,6 +459,34 @@ inline std::string info_get_prop(const std::vector<std::string>& lines,
|
|
|
459
459
|
}
|
|
460
460
|
}
|
|
461
461
|
|
|
462
|
+
inline bool starts_with(const std::string& str, const std::string& prefix) {
|
|
463
|
+
return str.size() >= prefix.size() &&
|
|
464
|
+
str.compare(0, prefix.size(), prefix) == 0;
|
|
465
|
+
}
|
|
466
|
+
|
|
467
|
+
inline bool ends_with(const std::string& str, const std::string& suffix) {
|
|
468
|
+
if (str.size() < suffix.size()) {
|
|
469
|
+
return false;
|
|
470
|
+
}
|
|
471
|
+
return (str.substr(str.size() - suffix.size()) == suffix);
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
inline std::string remove_prefix(const std::string& str, const std::string& prefix) {
|
|
475
|
+
if (str.size() >= prefix.size() &&
|
|
476
|
+
str.compare(0, prefix.size(), prefix) == 0) {
|
|
477
|
+
return str.substr(prefix.size());
|
|
478
|
+
}
|
|
479
|
+
return str;
|
|
480
|
+
}
|
|
481
|
+
|
|
482
|
+
inline std::string remove_suffix(const std::string& str, const std::string& suffix) {
|
|
483
|
+
if (str.size() >= suffix.size() &&
|
|
484
|
+
str.compare(str.size() - suffix.size(), suffix.size(), suffix) == 0) {
|
|
485
|
+
return str.substr(0, str.size() - suffix.size());
|
|
486
|
+
}
|
|
487
|
+
return str;
|
|
488
|
+
}
|
|
489
|
+
|
|
462
490
|
inline void display_c_stdout(const std::string& str)
|
|
463
491
|
{
|
|
464
492
|
fwrite(str.c_str(), 1, str.size(), stdout);
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import json
|
|
2
|
-
|
|
3
|
-
# Mathspp Blog
|
|
4
|
-
# https://mathspp.com/blog/custom-json-encoder-and-decoder
|
|
5
|
-
|
|
6
|
-
# With modifications to add np.ndarray support
|
|
7
|
-
|
|
8
2
|
import numpy as np
|
|
9
3
|
|
|
4
|
+
"""
|
|
5
|
+
Mathspp Blog
|
|
6
|
+
https://mathspp.com/blog/custom-json-encoder-and-decoder
|
|
7
|
+
#
|
|
8
|
+
With modifications to add np.ndarray support
|
|
9
|
+
"""
|
|
10
|
+
|
|
10
11
|
class ExtendedEncoder(json.JSONEncoder):
|
|
11
12
|
def default(self, obj):
|
|
12
13
|
name = type(obj).__name__
|
|
13
14
|
try:
|
|
14
15
|
encoder = getattr(self, f"encode_{name}")
|
|
15
16
|
except AttributeError:
|
|
16
|
-
super().default(obj)
|
|
17
|
+
return super().default(obj)
|
|
17
18
|
else:
|
|
18
19
|
encoded = encoder(obj)
|
|
19
20
|
encoded["__extended_json_type__"] = name
|
|
@@ -71,6 +72,8 @@ class QlatDecoder(ExtendedDecoder):
|
|
|
71
72
|
def json_dumps(obj, *, indent=None):
|
|
72
73
|
"""
|
|
73
74
|
return str dumped from `obj`
|
|
75
|
+
#
|
|
76
|
+
indent (int | str | None)
|
|
74
77
|
"""
|
|
75
78
|
return json.dumps(obj, indent=indent, cls=QlatEncoder)
|
|
76
79
|
|
|
@@ -19,10 +19,10 @@ std::string get_env_default(const std::string& var_name, const std::string& x0)
|
|
|
19
19
|
const std::string val = get_env(var_name);
|
|
20
20
|
if (val == "") {
|
|
21
21
|
displayln_info(0,
|
|
22
|
-
ssprintf("%s='%s' (default)", var_name.c_str(), x0.c_str()));
|
|
22
|
+
ssprintf("QLAT: get_env_default: %s='%s' (default)", var_name.c_str(), x0.c_str()));
|
|
23
23
|
return x0;
|
|
24
24
|
} else {
|
|
25
|
-
displayln_info(0, ssprintf("%s='%s'", var_name.c_str(), val.c_str()));
|
|
25
|
+
displayln_info(0, ssprintf("QLAT: get_env_default: %s='%s'", var_name.c_str(), val.c_str()));
|
|
26
26
|
return val;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
@@ -33,10 +33,10 @@ double get_env_double_default(const std::string& var_name, const double x0)
|
|
|
33
33
|
double x;
|
|
34
34
|
if (val == "") {
|
|
35
35
|
x = x0;
|
|
36
|
-
displayln_info(0, ssprintf("%s=%lG (default)", var_name.c_str(), x));
|
|
36
|
+
displayln_info(0, ssprintf("QLAT: get_env_double_default: %s=%lG (default)", var_name.c_str(), x));
|
|
37
37
|
} else {
|
|
38
38
|
x = read_double(val);
|
|
39
|
-
displayln_info(0, ssprintf("%s=%lG", var_name.c_str(), x));
|
|
39
|
+
displayln_info(0, ssprintf("QLAT: get_env_double_default: %s=%lG", var_name.c_str(), x));
|
|
40
40
|
}
|
|
41
41
|
return x;
|
|
42
42
|
}
|
|
@@ -47,10 +47,10 @@ Long get_env_long_default(const std::string& var_name, const Long x0)
|
|
|
47
47
|
Long x;
|
|
48
48
|
if (val == "") {
|
|
49
49
|
x = x0;
|
|
50
|
-
displayln_info(0, ssprintf("%s=%ld (default)", var_name.c_str(), x));
|
|
50
|
+
displayln_info(0, ssprintf("QLAT: get_env_long_default: %s=%ld (default)", var_name.c_str(), x));
|
|
51
51
|
} else {
|
|
52
52
|
x = read_long(val);
|
|
53
|
-
displayln_info(0, ssprintf("%s=%ld", var_name.c_str(), x));
|
|
53
|
+
displayln_info(0, ssprintf("QLAT: get_env_long_default: %s=%ld", var_name.c_str(), x));
|
|
54
54
|
}
|
|
55
55
|
return x;
|
|
56
56
|
}
|
|
@@ -23,11 +23,18 @@ void TimerInfo::merge(const TimerInfo& x)
|
|
|
23
23
|
call_times += x.call_times;
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
+
static std::string get_fname_cut(const std::string& fname, const int fname_len)
|
|
27
|
+
{
|
|
28
|
+
if (fname_len >= fname.length()) {
|
|
29
|
+
return fname;
|
|
30
|
+
}
|
|
31
|
+
return fname.substr(fname.length() - fname_len);
|
|
32
|
+
}
|
|
33
|
+
|
|
26
34
|
void TimerInfo::show_start(const int fname_len) const
|
|
27
35
|
{
|
|
28
36
|
double total_time = get_total_time();
|
|
29
|
-
std::string fnameCut;
|
|
30
|
-
fnameCut.assign(fname, 0, fname_len);
|
|
37
|
+
const std::string fnameCut = get_fname_cut(fname, fname_len);
|
|
31
38
|
displayln_info(ssprintf(
|
|
32
39
|
"Timer::start %s :%5.1f%% %8d calls %.3E,%.3E sec %8.3f Gflops (%.3E "
|
|
33
40
|
"flops)",
|
|
@@ -40,8 +47,7 @@ void TimerInfo::show_start(const int fname_len) const
|
|
|
40
47
|
void TimerInfo::show_stop(const int fname_len) const
|
|
41
48
|
{
|
|
42
49
|
double total_time = get_total_time();
|
|
43
|
-
std::string fnameCut;
|
|
44
|
-
fnameCut.assign(fname, 0, fname_len);
|
|
50
|
+
const std::string fnameCut = get_fname_cut(fname, fname_len);
|
|
45
51
|
displayln_info(ssprintf(
|
|
46
52
|
"Timer::stop %s :%5.1f%% %8d calls %.3E,%.3E sec %8.3f Gflops (%.3E "
|
|
47
53
|
"flops)",
|
|
@@ -54,8 +60,7 @@ void TimerInfo::show_avg_always(const std::string& info,
|
|
|
54
60
|
const int fname_len) const
|
|
55
61
|
{
|
|
56
62
|
double total_time = get_total_time();
|
|
57
|
-
std::string fnameCut;
|
|
58
|
-
fnameCut.assign(fname, 0, fname_len);
|
|
63
|
+
const std::string fnameCut = get_fname_cut(fname, fname_len);
|
|
59
64
|
displayln_c_stdout(ssprintf(
|
|
60
65
|
"Timer::%s %s :%7.3f%% %8d calls; %.2E,%.2E sec; %.2E,%.2E flops; "
|
|
61
66
|
"%5.2f Gflops",
|
|
@@ -71,8 +76,7 @@ void TimerInfo::show_avg(const std::string& info, const int fname_len) const
|
|
|
71
76
|
{
|
|
72
77
|
if (0 == get_id_node() && 0 == get_id_thread()) {
|
|
73
78
|
double total_time = get_total_time();
|
|
74
|
-
std::string fnameCut;
|
|
75
|
-
fnameCut.assign(fname, 0, fname_len);
|
|
79
|
+
const std::string fnameCut = get_fname_cut(fname, fname_len);
|
|
76
80
|
displayln_info(ssprintf(
|
|
77
81
|
"Timer::%s %s :%7.3f%% %8d calls; %.2E,%.2E sec; %.2E,%.2E flops; "
|
|
78
82
|
"%5.2f Gflops",
|
|
@@ -6,14 +6,13 @@ tempita = files('tempita.py')
|
|
|
6
6
|
|
|
7
7
|
init_files = files(
|
|
8
8
|
'__init__.py',
|
|
9
|
-
)
|
|
9
|
+
)
|
|
10
10
|
|
|
11
11
|
py_files = files(
|
|
12
12
|
'ama.py',
|
|
13
13
|
'cache.py',
|
|
14
14
|
'c.py',
|
|
15
15
|
'data.py',
|
|
16
|
-
'get_include_dir.py',
|
|
17
16
|
'load_prop.py',
|
|
18
17
|
'lru_cache.py',
|
|
19
18
|
'__main__.py',
|
|
@@ -23,6 +22,7 @@ py_files = files(
|
|
|
23
22
|
'utils.py',
|
|
24
23
|
'json.py',
|
|
25
24
|
'q_fit_corr.py',
|
|
25
|
+
'q_fit_corr_2.py',
|
|
26
26
|
'q_hlt_reconstruction.py',
|
|
27
27
|
)
|
|
28
28
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from
|
|
2
|
-
from
|
|
3
|
-
from
|
|
1
|
+
from .cache import *
|
|
2
|
+
from .rng_state import *
|
|
3
|
+
from .utils import *
|
|
4
4
|
|
|
5
5
|
import sys
|
|
6
6
|
import os
|
|
@@ -34,27 +34,35 @@ def process_initialization():
|
|
|
34
34
|
# gc_freeze()
|
|
35
35
|
# clear_all_caches()
|
|
36
36
|
|
|
37
|
+
q_num_mp_processes = None
|
|
38
|
+
|
|
37
39
|
def get_q_num_mp_processes():
|
|
38
|
-
global
|
|
40
|
+
global q_num_mp_processes
|
|
41
|
+
if q_num_mp_processes is not None:
|
|
42
|
+
return q_num_mp_processes
|
|
39
43
|
s = getenv("q_num_mp_processes", "q_num_threads", "OMP_NUM_THREADS", default="2")
|
|
40
44
|
v = int(s)
|
|
41
|
-
|
|
45
|
+
q_num_mp_processes = v
|
|
42
46
|
return v
|
|
43
47
|
|
|
44
48
|
def set_q_num_mp_processes(v):
|
|
45
|
-
global
|
|
46
|
-
|
|
49
|
+
global q_num_mp_processes
|
|
50
|
+
q_num_mp_processes = v
|
|
51
|
+
|
|
52
|
+
q_verbose_parallel_map = None
|
|
47
53
|
|
|
48
54
|
def get_q_verbose_parallel_map():
|
|
49
|
-
global
|
|
55
|
+
global q_verbose_parallel_map
|
|
56
|
+
if q_verbose_parallel_map is not None:
|
|
57
|
+
return q_verbose_parallel_map
|
|
50
58
|
s = getenv("q_verbose_parallel_map", default="2")
|
|
51
59
|
v = int(s)
|
|
52
|
-
|
|
60
|
+
q_verbose_parallel_map = v
|
|
53
61
|
return v
|
|
54
62
|
|
|
55
63
|
def set_q_verbose_parallel_map(v):
|
|
56
|
-
global
|
|
57
|
-
|
|
64
|
+
global q_verbose_parallel_map
|
|
65
|
+
q_verbose_parallel_map = v
|
|
58
66
|
|
|
59
67
|
@timer
|
|
60
68
|
def parallel_map(func, iterable,
|
|
@@ -24,12 +24,12 @@ def mk_data_set(*, n_jk=10, n_ops=4, n_energies=4, t_size=4, sigma=0.1, rng=None
|
|
|
24
24
|
corr_data = (coefs[:, :, None, None] * coefs[:, None, :, None]
|
|
25
25
|
* np.exp(-energies[:, None, None, None] * t_arr)
|
|
26
26
|
).sum(0)
|
|
27
|
-
corr_data_sigma = np.zeros((n_ops, n_ops, t_size,), dtype=
|
|
27
|
+
corr_data_sigma = np.zeros((n_ops, n_ops, t_size,), dtype=np.float64) + sigma
|
|
28
28
|
#
|
|
29
|
-
jk_corr_data = np.empty((n_jk, n_ops, n_ops, t_size,), dtype=
|
|
29
|
+
jk_corr_data = np.empty((n_jk, n_ops, n_ops, t_size,), dtype=np.float64)
|
|
30
30
|
jk_corr_data = corr_data + rng.g_rand_arr((n_jk, n_ops, n_ops, t_size,)) * corr_data_sigma
|
|
31
31
|
#
|
|
32
|
-
param_arr = np.concatenate([ energies, coefs.ravel(), ], dtype=
|
|
32
|
+
param_arr = np.concatenate([ energies, coefs.ravel(), ], dtype=np.float64)
|
|
33
33
|
return param_arr, jk_corr_data, corr_data_sigma
|
|
34
34
|
|
|
35
35
|
@timer
|
|
@@ -130,7 +130,7 @@ def mk_fcn(
|
|
|
130
130
|
corr_data_sigma.shape == (n_ops, n_ops, t_size,)
|
|
131
131
|
t_start_arr is the start tslice of the corr_data (energy dependent array, t_start_arr for negative_energy ~ -t_size)
|
|
132
132
|
atw_t_start_arr is the start tslice of the ATW (around the world effects) corr_data (be default atw_t_start_arr = t_start_arr)
|
|
133
|
-
atw_factor_arr is the additional factor needs to be multiplied to the ATW term (
|
|
133
|
+
atw_factor_arr is the additional factor needs to be multiplied to the ATW term (by default `atw_factor_arr = jnp.ones(n_ops, dtype=jnp.float64)`)
|
|
134
134
|
return fcn
|
|
135
135
|
fcn(param_arr) => chisq, param_grad_arr
|
|
136
136
|
e.g.
|