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.
Files changed (120) hide show
  1. {qlat_utils-0.76 → qlat_utils-0.78}/PKG-INFO +1 -1
  2. qlat_utils-0.78/bin/qlat-utils-config +3 -0
  3. {qlat_utils-0.76 → qlat_utils-0.78}/meson.build +2 -1
  4. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/__init__.py +2 -2
  5. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/__main__.py +2 -2
  6. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/cache.py +5 -2
  7. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/data.py +3 -0
  8. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/complex.h +1 -1
  9. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/lat-io.h +2 -2
  10. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qacc-func.h +7 -7
  11. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/show.h +28 -0
  12. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/timer.h +1 -1
  13. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/json.py +10 -7
  14. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/env.cpp +6 -6
  15. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/timer.cpp +12 -8
  16. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/version_gen.sh +1 -1
  17. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/meson.build +2 -2
  18. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/parallel.py +19 -11
  19. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/q_fit_corr.py +4 -4
  20. qlat_utils-0.78/qlat_utils/q_fit_corr_2.py +849 -0
  21. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/rng_state.pyx +1 -1
  22. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/meson.build +0 -1
  23. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/timer.pyx +107 -47
  24. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/utils.py +43 -4
  25. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/utils_io.py +35 -0
  26. qlat_utils-0.78/qlat_utils_config/__init__.py +1 -0
  27. qlat_utils-0.76/qlat_utils/scripts/qlat_utils_config.py → qlat_utils-0.78/qlat_utils_config/__main__.py +2 -3
  28. qlat_utils-0.76/qlat_utils/get_include_dir.py → qlat_utils-0.78/qlat_utils_config/get_info.py +26 -3
  29. qlat_utils-0.78/qlat_utils_config/meson.build +18 -0
  30. qlat_utils-0.76/bin/qlat-utils-config +0 -3
  31. {qlat_utils-0.76 → qlat_utils-0.78}/LICENSE +0 -0
  32. {qlat_utils-0.76 → qlat_utils-0.78}/README.md +0 -0
  33. {qlat_utils-0.76 → qlat_utils-0.78}/bin/crc32 +0 -0
  34. {qlat_utils-0.76 → qlat_utils-0.78}/bin/lat-io-diff +0 -0
  35. {qlat_utils-0.76 → qlat_utils-0.78}/bin/lat-io-glimpse +0 -0
  36. {qlat_utils-0.76 → qlat_utils-0.78}/bin/meson.build +0 -0
  37. {qlat_utils-0.76 → qlat_utils-0.78}/bin/pickle-glimpse +0 -0
  38. {qlat_utils-0.76 → qlat_utils-0.78}/bin/qar +0 -0
  39. {qlat_utils-0.76 → qlat_utils-0.78}/bin/qar-glimpse +0 -0
  40. {qlat_utils-0.76 → qlat_utils-0.78}/bin/qunar.py +0 -0
  41. {qlat_utils-0.76 → qlat_utils-0.78}/pyproject.toml +0 -0
  42. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/__init__.pxd +0 -0
  43. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/all.pxd +0 -0
  44. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/ama.py +0 -0
  45. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/c.py +0 -0
  46. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/coordinate.pxd +0 -0
  47. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/coordinate.pyx +0 -0
  48. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/cutils.pyx +0 -0
  49. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/everything.pxd +0 -0
  50. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/meson.build +0 -0
  51. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/array.h +0 -0
  52. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/assert.h +0 -0
  53. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/cache.h +0 -0
  54. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/compatible-endian.h +0 -0
  55. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/compatible-omp.h +0 -0
  56. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/config.h +0 -0
  57. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/coordinate-d.h +0 -0
  58. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/coordinate.h +0 -0
  59. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/core.h +0 -0
  60. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/crc32.h +0 -0
  61. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/eigen-sys.h +0 -0
  62. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/eigen.h +0 -0
  63. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/endian.h +0 -0
  64. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/env.h +0 -0
  65. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/handle.h +0 -0
  66. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mat-vec.h +0 -0
  67. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mat.h +0 -0
  68. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/matrix-hmc.h +0 -0
  69. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/matrix.h +0 -0
  70. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/meson.build +0 -0
  71. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mpi-auto.h +0 -0
  72. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/mvector.h +0 -0
  73. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/py_convert.h +0 -0
  74. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qacc-translator.h +0 -0
  75. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qacc.h +0 -0
  76. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qar.h +0 -0
  77. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/qcd-setting.h +0 -0
  78. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/rng-state.h +0 -0
  79. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/sha256.h +0 -0
  80. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/sprng-sha256.h +0 -0
  81. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/types.h +0 -0
  82. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-extra.h +0 -0
  83. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-io.h +0 -0
  84. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-ldouble.h +0 -0
  85. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils-vec.h +0 -0
  86. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/utils.h +0 -0
  87. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/vector.h +0 -0
  88. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/version.h +0 -0
  89. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/include/qlat-utils/warning.h +0 -0
  90. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lat_data.pxd.in +0 -0
  91. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lat_data.pyx.in +0 -0
  92. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/cache.cpp +0 -0
  93. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/lat-io.cpp +0 -0
  94. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/mat.cpp +0 -0
  95. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/meson.build +0 -0
  96. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/mpi-auto.cpp +0 -0
  97. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/qar.cpp +0 -0
  98. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/rng-state.cpp +0 -0
  99. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/utils-io.cpp +0 -0
  100. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/utils-vec.cpp +0 -0
  101. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lib/version.cpp +0 -0
  102. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/load_prop.py +0 -0
  103. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/lru_cache.py +0 -0
  104. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/mat.pxd +0 -0
  105. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/mat.pyx +0 -0
  106. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/q_hlt_reconstruction.py +0 -0
  107. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/qar.pxd +0 -0
  108. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/qar.pyx +0 -0
  109. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/qplot.py +0 -0
  110. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/rng_state.pxd +0 -0
  111. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/crc32.py +0 -0
  112. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/lat_io_diff.py +0 -0
  113. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/lat_io_glimpse.py +0 -0
  114. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/pickle_glimpse.py +0 -0
  115. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/qar.py +0 -0
  116. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/scripts/qar_glimpse.py +0 -0
  117. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/tempita.py +0 -0
  118. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/timer.pxd +0 -0
  119. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/types.pxd +0 -0
  120. {qlat_utils-0.76 → qlat_utils-0.78}/qlat_utils/types.pyx +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: qlat-utils
3
- Version: 0.76
3
+ Version: 0.78
4
4
  Summary: Qlattice utilities
5
5
  Author-Email: Luchang Jin <ljin.luchang@gmail.com>
6
6
  License: GPL-3.0-or-later
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env python3
2
+
3
+ import qlat_utils_config.__main__
@@ -1,5 +1,5 @@
1
1
  project('qlat-utils', 'cpp', 'cython',
2
- version: '0.76',
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
- from .scripts import qlat_utils_config
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<RealD> lat_data_get(LatDataT<T>& ld, const VecS& idx)
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<RealD> lat_data_get_const(const LatDataT<T>& ld, const VecS& idx)
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);
@@ -368,7 +368,7 @@ struct API Timer {
368
368
  // qlat parameter
369
369
  {
370
370
  static Long max_call_times =
371
- get_env_long_default("q_timer_max_always_show", 10);
371
+ get_env_long_default("q_timer_max_always_show", 2);
372
372
  return max_call_times;
373
373
  }
374
374
  //
@@ -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",
@@ -12,7 +12,7 @@ cd "$src_dir"
12
12
  if git describe --tags ; then
13
13
  version="$(git describe --tags)"
14
14
  else
15
- version="v0.76-current" # default version
15
+ version="v0.78-current" # default version
16
16
  fi
17
17
 
18
18
  cd "$wd"
@@ -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 qlat_utils.cache import *
2
- from qlat_utils.rng_state import *
3
- from qlat_utils.utils import *
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 get_q_num_mp_processes
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
- get_q_num_mp_processes = lambda : v
45
+ q_num_mp_processes = v
42
46
  return v
43
47
 
44
48
  def set_q_num_mp_processes(v):
45
- global get_q_num_mp_processes
46
- get_q_num_mp_processes = lambda : v
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 get_q_verbose_parallel_map
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
- get_q_verbose_parallel_map = lambda : v
60
+ q_verbose_parallel_map = v
53
61
  return v
54
62
 
55
63
  def set_q_verbose_parallel_map(v):
56
- global get_q_verbose_parallel_map
57
- get_q_verbose_parallel_map = lambda : v
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=float) + sigma
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=float)
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=float)
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 (be default `atw_factor_arr = jnp.ones(n_ops, dtype=jnp.float64)`)
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.