MDescriptor 0.3.2__tar.gz → 0.3.3__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 (505) hide show
  1. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/CMakeLists.txt +0 -4
  2. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/PKG-INFO +3 -8
  3. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/README.md +2 -4
  4. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/batch.hpp +0 -3
  5. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/dpa4.hpp +0 -1
  6. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/dpa4c.hpp +5 -9
  7. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/neighbor_graph.hpp +26 -14
  8. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/nep.hpp +18 -24
  9. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/backend.cu +26 -88
  10. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/batch.cu +29 -114
  11. mdescriptor-0.3.3/cpp/cuda/src/device_memory.cuh +131 -0
  12. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/dpa4.cu +80 -221
  13. mdescriptor-0.3.3/cpp/cuda/src/dpa4_common.cuh +100 -0
  14. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/dpa4c.cu +23 -69
  15. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_ace.cu +4 -11
  16. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_acsf.cu +2 -7
  17. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_basic.cu +3 -11
  18. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_c00ps.cu +2 -7
  19. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_common.cuh +95 -235
  20. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_dispatch.cu +1 -1
  21. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_ead_lode.cu +33 -111
  22. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_generic.cu +2 -8
  23. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_matrix.cu +0 -4
  24. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_mbtr.cu +18 -51
  25. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_mtp.cu +7 -19
  26. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_rotational.cu +2 -7
  27. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_rotational_cache.cu +0 -3
  28. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_soap.cu +0 -6
  29. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_descriptors_soap_turbo.cu +3 -10
  30. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/extended_dispatch.hpp +12 -13
  31. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/neighbor_graph.cu +71 -201
  32. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/nep.cu +120 -218
  33. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/ace.hpp +1 -7
  34. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/descriptor.hpp +5 -28
  35. mdescriptor-0.3.3/cpp/include/mdescriptor/detail/calculator_base.hpp +30 -0
  36. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/math3.hpp +3 -0
  37. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/mbtr.hpp +2 -21
  38. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/rotational_bispectrum.hpp +2 -2
  39. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/species.hpp +1 -13
  40. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/dpa4.hpp +1 -8
  41. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/dpa4_wigner.hpp +0 -63
  42. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/dpa4c.hpp +1 -7
  43. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/extra.hpp +1 -7
  44. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/local_descriptors.hpp +0 -1
  45. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/neighbor.hpp +1 -4
  46. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/nep.hpp +1 -7
  47. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/bindings/module.cpp +65 -161
  48. mdescriptor-0.3.3/cpp/src/common/descriptor_common.hpp +99 -0
  49. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/extra_common.hpp +19 -3
  50. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/local_spherical_common.hpp +12 -229
  51. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/neighbor.cpp +63 -96
  52. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/nep.cpp +16 -54
  53. mdescriptor-0.3.3/cpp/src/common/rotational_math.hpp +110 -0
  54. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/model_backed/dpa4.cpp +7 -494
  55. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/model_backed/dpa4_wigner.cpp +0 -174
  56. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/model_backed/dpa4c.cpp +5 -87
  57. mdescriptor-0.3.3/cpp/src/model_backed/dpa_common.hpp +69 -0
  58. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/ace.cpp +2 -7
  59. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/acsf.cpp +13 -83
  60. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/atomic_composition.cpp +2 -1
  61. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/c00ps_mlff.cpp +4 -34
  62. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/coulomb_matrix.cpp +2 -1
  63. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/ead.cpp +1 -1
  64. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/matrix_dispatch.cpp +1 -41
  65. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/mbtr.cpp +10 -45
  66. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/mtp.cpp +31 -47
  67. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/mtp4.cpp +1 -1
  68. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/rotational_descriptors.cpp +4 -96
  69. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/sine_matrix.cpp +2 -1
  70. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/soap.cpp +10 -25
  71. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/soap_turbo.cpp +20 -77
  72. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/sorted_distances.cpp +2 -1
  73. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/spherical_expansion.cpp +1 -1
  74. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/docs/descriptor-inventory.md +30 -30
  75. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/pyproject.toml +9 -3
  76. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/run_descriptor_benchmark.py +9 -41
  77. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/check_descriptor_inventory.py +3 -4
  78. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/check_numerical_baselines.py +3 -17
  79. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/descriptor_reference.py +2 -86
  80. mdescriptor-0.3.3/scripts/external_reference.py +415 -0
  81. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/generate_descriptor_goldens.py +13 -37
  82. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/generate_external_static_goldens.py +75 -247
  83. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/numerical_baselines.py +0 -12
  84. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/verify_wheel.py +22 -68
  85. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/_runtime.py +10 -44
  86. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/_version.py +3 -3
  87. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/__init__.py +1 -4
  88. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/adapter.py +96 -263
  89. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/backends.py +36 -54
  90. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/errors.py +36 -4
  91. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/input.py +101 -94
  92. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/result.py +34 -99
  93. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/species.py +0 -12
  94. mdescriptor-0.3.3/src/mdescriptor/descriptors/_kernels/_base.py +123 -0
  95. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/ace.py +3 -9
  96. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/c00ps_mlff.py +28 -56
  97. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/core.py +39 -74
  98. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/dpa4.py +1 -15
  99. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/dpa4c.py +1 -7
  100. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/dpa_common.py +16 -19
  101. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/extra.py +4 -47
  102. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/local.py +8 -35
  103. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/matrix.py +12 -5
  104. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/mtp.py +24 -67
  105. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/nep.py +19 -60
  106. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/rotational.py +55 -91
  107. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/soap_turbo.py +22 -64
  108. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/dpa.py +4 -53
  109. mdescriptor-0.3.3/src/mdescriptor/descriptors/model_backed/dpa4.py +14 -0
  110. mdescriptor-0.3.3/src/mdescriptor/descriptors/model_backed/dpa4c.py +14 -0
  111. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/graph.py +22 -0
  112. mdescriptor-0.3.3/src/mdescriptor/descriptors/model_backed/nep.py +14 -0
  113. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/__init__.py +4 -5
  114. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/resolver.py +1 -16
  115. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/session.py +18 -45
  116. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/registry/__init__.py +1 -2
  117. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/registry/builtins.py +24 -54
  118. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/registry/info.py +35 -6
  119. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/registry/registry.py +0 -6
  120. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/registry/spec.py +0 -3
  121. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/_golden.py +7 -55
  122. mdescriptor-0.3.3/tests/_public.py +43 -0
  123. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/contracts/test_capabilities.py +1 -14
  124. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/contracts/test_descriptor_info.py +0 -1
  125. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/contracts/test_public_api.py +0 -1
  126. mdescriptor-0.3.3/tests/external_reference/test_featomic.py +217 -0
  127. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/acsf/external_manifest.json +1 -1
  128. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/acsf/manifest.json +1 -1
  129. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/atomiccomposition/external_manifest.json +1 -1
  130. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/atomiccomposition/manifest.json +1 -1
  131. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/c00psmlff/manifest.json +1 -1
  132. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/coulombmatrix/external_manifest.json +1 -1
  133. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/coulombmatrix/manifest.json +1 -1
  134. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ead/external_manifest.json +1 -1
  135. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ead/manifest.json +1 -1
  136. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ewaldsummatrix/external_manifest.json +1 -1
  137. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ewaldsummatrix/manifest.json +1 -1
  138. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lmbtr/external_manifest.json +1 -1
  139. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lmbtr/manifest.json +1 -1
  140. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lodesphericalexpansion/external_manifest.json +1 -1
  141. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lodesphericalexpansion/manifest.json +1 -1
  142. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mbtr/external_manifest.json +1 -1
  143. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mbtr/manifest.json +1 -1
  144. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/neighborlist/external_manifest.json +1 -1
  145. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/neighborlist/manifest.json +1 -1
  146. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/nep/external_manifest.json +1 -1
  147. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/nep/manifest.json +1 -1
  148. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sinematrix/external_manifest.json +1 -1
  149. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sinematrix/manifest.json +1 -1
  150. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/snap/external_manifest.json +1 -1
  151. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/snap/manifest.json +1 -1
  152. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so3/external_manifest.json +1 -1
  153. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so3/manifest.json +1 -1
  154. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so4/external_manifest.json +1 -1
  155. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so4/manifest.json +1 -1
  156. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soap/external_manifest.json +1 -1
  157. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soap/manifest.json +1 -1
  158. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soappowerspectrum/external_manifest.json +1 -1
  159. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soappowerspectrum/manifest.json +1 -1
  160. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapradialspectrum/external_manifest.json +1 -1
  161. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapradialspectrum/manifest.json +1 -1
  162. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sorteddistances/external_manifest.json +1 -1
  163. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sorteddistances/manifest.json +1 -1
  164. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansion/external_manifest.json +1 -1
  165. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansion/manifest.json +1 -1
  166. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansionbypair/external_manifest.json +1 -1
  167. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansionbypair/manifest.json +1 -1
  168. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/valleoganov/external_manifest.json +1 -1
  169. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/valleoganov/manifest.json +1 -1
  170. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_dpa4c.py +22 -1
  171. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_import_threading.py +20 -37
  172. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_lmbtr_openmp.py +4 -63
  173. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_neighbor_graph.py +33 -1
  174. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_valleoganov_openmp.py +2 -54
  175. mdescriptor-0.3.2/cpp/src/common/descriptor_common.hpp +0 -53
  176. mdescriptor-0.3.2/scripts/benchmarking/benchmark_dpa_cpu_gpu.py +0 -260
  177. mdescriptor-0.3.2/scripts/benchmarking/benchmark_dpa_deepmd_project_gpu.py +0 -370
  178. mdescriptor-0.3.2/scripts/benchmarking/benchmark_dpa_large_dataset_gpu.py +0 -214
  179. mdescriptor-0.3.2/scripts/external_reference.py +0 -111
  180. mdescriptor-0.3.2/scripts/run_benchmark.py +0 -6
  181. mdescriptor-0.3.2/src/mdescriptor/descriptors/_kernels/structure.py +0 -10
  182. mdescriptor-0.3.2/src/mdescriptor/descriptors/model_backed/dpa4/__init__.py +0 -3
  183. mdescriptor-0.3.2/src/mdescriptor/descriptors/model_backed/dpa4/descriptor.py +0 -14
  184. mdescriptor-0.3.2/src/mdescriptor/descriptors/model_backed/dpa4c/__init__.py +0 -3
  185. mdescriptor-0.3.2/src/mdescriptor/descriptors/model_backed/dpa4c/descriptor.py +0 -14
  186. mdescriptor-0.3.2/src/mdescriptor/descriptors/model_backed/nep/__init__.py +0 -3
  187. mdescriptor-0.3.2/src/mdescriptor/descriptors/model_backed/nep/descriptor.py +0 -14
  188. mdescriptor-0.3.2/tests/_public.py +0 -81
  189. mdescriptor-0.3.2/tests/external_reference/test_featomic.py +0 -370
  190. mdescriptor-0.3.2/tests/test_coulombmatrix_openmp.py +0 -84
  191. mdescriptor-0.3.2/tests/test_ewaldsummatrix_openmp.py +0 -93
  192. mdescriptor-0.3.2/tests/test_sinematrix_openmp.py +0 -62
  193. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/LICENSE +0 -0
  194. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/backend.hpp +0 -0
  195. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/context.hpp +0 -0
  196. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/descriptor_dispatch.hpp +0 -0
  197. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/error.hpp +0 -0
  198. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/extended_descriptors.hpp +0 -0
  199. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/include/mdescriptor/cuda/local_descriptors.hpp +0 -0
  200. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/bindings.cu +0 -0
  201. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/context.cu +0 -0
  202. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/cuda/src/local_descriptors.cu +0 -0
  203. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/batch.hpp +0 -0
  204. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/blas.hpp +0 -0
  205. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/control.hpp +0 -0
  206. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/detail/neighbor_filter.hpp +0 -0
  207. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/matrix.hpp +0 -0
  208. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/mtp4.hpp +0 -0
  209. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/include/mdescriptor/mtp_cinf_coeffs.hpp +0 -0
  210. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/control.cpp +0 -0
  211. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/local_common.hpp +0 -0
  212. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/local_layout.hpp +0 -0
  213. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/matrix_output.cpp +0 -0
  214. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/matrix_output.hpp +0 -0
  215. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/common/matrix_values.hpp +0 -0
  216. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/ewald_sum_matrix.cpp +0 -0
  217. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/neighbor_list.cpp +0 -0
  218. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/src/standalone/spherical_expansion_by_pair.cpp +0 -0
  219. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/tests/CMakeLists.txt +0 -0
  220. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/cpp/tests/test_public_api.cpp +0 -0
  221. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/docs/dpa4-strided-projections.md +0 -0
  222. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/docs/gpu-backend-design.md +0 -0
  223. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/docs/gui-adaptation-baseline.md +0 -0
  224. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/docs/numerical-baselines.md +0 -0
  225. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/ace1_reference.jl +0 -0
  226. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmark_dpa_native.py +0 -0
  227. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/__init__.py +0 -0
  228. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_cuda_graph_migration.py +0 -0
  229. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_cuda_nep.py +0 -0
  230. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_cuda_nep_datasets.py +0 -0
  231. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_dpa4_launch_fix.py +0 -0
  232. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_dpa4_strides.py +0 -0
  233. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_nep_implementations.py +0 -0
  234. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/benchmarking/benchmark_openmp_small.py +0 -0
  235. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/build_reference_wheel.py +0 -0
  236. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/deepmd_reference.py +0 -0
  237. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/generate_ace1_reference.py +0 -0
  238. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/generate_external_c00ps_reference.py +0 -0
  239. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/scripts/promote_descriptor_golden.py +0 -0
  240. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/__init__.py +0 -0
  241. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/_cuda_loader.py +0 -0
  242. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/_native.py +0 -0
  243. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/_native.pyi +0 -0
  244. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/control.py +0 -0
  245. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/descriptor.py +0 -0
  246. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/json_value.py +0 -0
  247. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/model_adapter.py +0 -0
  248. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/core/options.py +0 -0
  249. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/__init__.py +0 -0
  250. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/__init__.py +0 -0
  251. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_kernels/mbtr_config.py +0 -0
  252. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/_namespace.py +0 -0
  253. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/__init__.py +0 -0
  254. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/LICENSE-LGPL-3.0-or-later.txt +0 -0
  255. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/NOTICE.md +0 -0
  256. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/__init__.py +0 -0
  257. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/__init__.py +0 -0
  258. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/api.py +0 -0
  259. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/common.py +0 -0
  260. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/__init__.py +0 -0
  261. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/array_api.py +0 -0
  262. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/common.py +0 -0
  263. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/__init__.py +0 -0
  264. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/base_descriptor.py +0 -0
  265. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4.py +0 -0
  266. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/__init__.py +0 -0
  267. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/activation.py +0 -0
  268. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/attention.py +0 -0
  269. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/attn_res.py +0 -0
  270. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/block.py +0 -0
  271. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/cartesian.py +0 -0
  272. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/edge_cache.py +0 -0
  273. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/embedding.py +0 -0
  274. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/ffn.py +0 -0
  275. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/grid_net.py +0 -0
  276. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/indexing.py +0 -0
  277. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/mlp.py +0 -0
  278. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/norm.py +0 -0
  279. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/projection.py +0 -0
  280. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/radial.py +0 -0
  281. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/so2.py +0 -0
  282. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/so3.py +0 -0
  283. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/utils.py +0 -0
  284. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4_nn/wignerd.py +0 -0
  285. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c.py +0 -0
  286. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/__init__.py +0 -0
  287. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/bispectrum.py +0 -0
  288. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/charge_state.py +0 -0
  289. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/geometry.py +0 -0
  290. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/pair_film.py +0 -0
  291. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/readout.py +0 -0
  292. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/dpa4c_nn/spin.py +0 -0
  293. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/descriptor/make_base_descriptor.py +0 -0
  294. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/__init__.py +0 -0
  295. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/env_mat.py +0 -0
  296. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/exclude_mask.py +0 -0
  297. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/lebedev.py +0 -0
  298. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/lebedev_rules.npz +0 -0
  299. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/__init__.py +0 -0
  300. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/builder.py +0 -0
  301. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/csr.py +0 -0
  302. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/from_ijs.py +0 -0
  303. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/graph.py +0 -0
  304. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/pairs.py +0 -0
  305. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/neighbor_graph/segment.py +0 -0
  306. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/network.py +0 -0
  307. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/nlist.py +0 -0
  308. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/region.py +0 -0
  309. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/safe_gradient.py +0 -0
  310. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/seed.py +0 -0
  311. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/spherical_harmonics.py +0 -0
  312. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/dpmodel/utils/type_embed.py +0 -0
  313. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/env.py +0 -0
  314. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/__init__.py +0 -0
  315. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/charge_state.py +0 -0
  316. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/plugin.py +0 -0
  317. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/utils/version.py +0 -0
  318. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/model_backed/_vendor/dpa4desc/weights.py +0 -0
  319. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/__init__.py +0 -0
  320. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/ace.py +0 -0
  321. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/acsf.py +0 -0
  322. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/c00ps_mlff.py +0 -0
  323. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/local/__init__.py +0 -0
  324. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/many_body/__init__.py +0 -0
  325. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/matrices/__init__.py +0 -0
  326. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/mtp.py +0 -0
  327. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/rotational/__init__.py +0 -0
  328. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/soap.py +0 -0
  329. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/descriptors/standalone/soap_turbo.py +0 -0
  330. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/assets/DPA4-Air-OMat24-v20260704.pt +0 -0
  331. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/assets/DPA4C-Air-OMat24-v20260819.pt +0 -0
  332. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/assets/nep89_20250409.txt +0 -0
  333. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/models/resource.py +0 -0
  334. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/src/mdescriptor/registry/model_defaults.py +0 -0
  335. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/__init__.py +0 -0
  336. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/_cuda.py +0 -0
  337. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/contracts/test_input_schema.py +0 -0
  338. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/contracts/test_model_resources.py +0 -0
  339. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/contracts/test_result_schema.py +0 -0
  340. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/data/mlip2_test.mtp +0 -0
  341. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/data/mlip4_mtp6_carbon.json +0 -0
  342. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/data/mlip4_test_mtp.json +0 -0
  343. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/external_reference/__init__.py +0 -0
  344. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/external_reference/test_deepmd.py +0 -0
  345. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/external_reference/test_dscribe.py +0 -0
  346. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/external_reference/test_nep_adapters.py +0 -0
  347. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/external_reference/test_pyxtalff.py +0 -0
  348. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ace/expected_output.npz +0 -0
  349. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ace/input.npz +0 -0
  350. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ace/manifest.json +0 -0
  351. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/acsf/expected_output.npz +0 -0
  352. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/acsf/external_expected_output.npz +0 -0
  353. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/acsf/external_input.npz +0 -0
  354. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/acsf/input.npz +0 -0
  355. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/atomiccomposition/expected_output.npz +0 -0
  356. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/atomiccomposition/external_expected_output.npz +0 -0
  357. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/atomiccomposition/external_input.npz +0 -0
  358. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/atomiccomposition/input.npz +0 -0
  359. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/c00psmlff/expected_output.npz +0 -0
  360. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/c00psmlff/input.npz +0 -0
  361. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/coulombmatrix/expected_output.npz +0 -0
  362. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/coulombmatrix/external_expected_output.npz +0 -0
  363. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/coulombmatrix/external_input.npz +0 -0
  364. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/coulombmatrix/input.npz +0 -0
  365. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/dpa4/expected_output.npz +0 -0
  366. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/dpa4/input.npz +0 -0
  367. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/dpa4/manifest.json +0 -0
  368. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/dpa4c/expected_output.npz +0 -0
  369. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/dpa4c/input.npz +0 -0
  370. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/dpa4c/manifest.json +0 -0
  371. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ead/expected_output.npz +0 -0
  372. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ead/external_expected_output.npz +0 -0
  373. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ead/external_input.npz +0 -0
  374. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ead/input.npz +0 -0
  375. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ewaldsummatrix/expected_output.npz +0 -0
  376. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ewaldsummatrix/external_expected_output.npz +0 -0
  377. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ewaldsummatrix/external_input.npz +0 -0
  378. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/ewaldsummatrix/input.npz +0 -0
  379. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lbispectrum/expected_output.npz +0 -0
  380. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lbispectrum/input.npz +0 -0
  381. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lbispectrum/manifest.json +0 -0
  382. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lmbtr/expected_output.npz +0 -0
  383. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lmbtr/external_expected_output.npz +0 -0
  384. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lmbtr/external_input.npz +0 -0
  385. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lmbtr/input.npz +0 -0
  386. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lodesphericalexpansion/expected_output.npz +0 -0
  387. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lodesphericalexpansion/external_expected_output.npz +0 -0
  388. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lodesphericalexpansion/external_input.npz +0 -0
  389. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/lodesphericalexpansion/input.npz +0 -0
  390. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mbtr/expected_output.npz +0 -0
  391. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mbtr/external_expected_output.npz +0 -0
  392. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mbtr/external_input.npz +0 -0
  393. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mbtr/input.npz +0 -0
  394. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mtp/expected_output.npz +0 -0
  395. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mtp/input.npz +0 -0
  396. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/mtp/manifest.json +0 -0
  397. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/neighborlist/expected_output.npz +0 -0
  398. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/neighborlist/external_expected_output.npz +0 -0
  399. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/neighborlist/external_input.npz +0 -0
  400. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/neighborlist/input.npz +0 -0
  401. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/nep/expected_output.npz +0 -0
  402. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/nep/external_expected_output.npz +0 -0
  403. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/nep/external_input.npz +0 -0
  404. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/nep/input.npz +0 -0
  405. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sinematrix/expected_output.npz +0 -0
  406. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sinematrix/external_expected_output.npz +0 -0
  407. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sinematrix/external_input.npz +0 -0
  408. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sinematrix/input.npz +0 -0
  409. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/snap/expected_output.npz +0 -0
  410. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/snap/external_expected_output.npz +0 -0
  411. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/snap/external_input.npz +0 -0
  412. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/snap/input.npz +0 -0
  413. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so3/expected_output.npz +0 -0
  414. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so3/external_expected_output.npz +0 -0
  415. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so3/external_input.npz +0 -0
  416. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so3/input.npz +0 -0
  417. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so4/expected_output.npz +0 -0
  418. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so4/external_expected_output.npz +0 -0
  419. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so4/external_input.npz +0 -0
  420. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/so4/input.npz +0 -0
  421. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soap/expected_output.npz +0 -0
  422. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soap/external_expected_output.npz +0 -0
  423. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soap/external_input.npz +0 -0
  424. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soap/input.npz +0 -0
  425. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soappowerspectrum/expected_output.npz +0 -0
  426. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soappowerspectrum/external_expected_output.npz +0 -0
  427. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soappowerspectrum/external_input.npz +0 -0
  428. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soappowerspectrum/input.npz +0 -0
  429. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapradialspectrum/expected_output.npz +0 -0
  430. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapradialspectrum/external_expected_output.npz +0 -0
  431. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapradialspectrum/external_input.npz +0 -0
  432. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapradialspectrum/input.npz +0 -0
  433. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapturbo/expected_output.npz +0 -0
  434. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapturbo/input.npz +0 -0
  435. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/soapturbo/manifest.json +0 -0
  436. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sorteddistances/expected_output.npz +0 -0
  437. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sorteddistances/external_expected_output.npz +0 -0
  438. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sorteddistances/external_input.npz +0 -0
  439. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sorteddistances/input.npz +0 -0
  440. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansion/expected_output.npz +0 -0
  441. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansion/external_expected_output.npz +0 -0
  442. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansion/external_input.npz +0 -0
  443. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansion/input.npz +0 -0
  444. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansionbypair/expected_output.npz +0 -0
  445. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansionbypair/external_expected_output.npz +0 -0
  446. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansionbypair/external_input.npz +0 -0
  447. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/sphericalexpansionbypair/input.npz +0 -0
  448. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/valleoganov/expected_output.npz +0 -0
  449. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/valleoganov/external_expected_output.npz +0 -0
  450. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/valleoganov/external_input.npz +0 -0
  451. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/golden/valleoganov/input.npz +0 -0
  452. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/gpu/dpa4_gemm_launch.cu +0 -0
  453. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/gpu/test_cuda_dpa.py +0 -0
  454. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/gpu/test_cuda_graph_migration.py +0 -0
  455. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/gpu/test_cuda_matrix.py +0 -0
  456. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/gpu/test_cuda_nep.py +0 -0
  457. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/gpu/test_cuda_nep_symmetry.py +0 -0
  458. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_ace.py +0 -0
  459. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_ace_golden.py +0 -0
  460. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_acsf_golden.py +0 -0
  461. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_all_descriptors.py +0 -0
  462. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_atomiccomposition_golden.py +0 -0
  463. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_c00ps_mlff.py +0 -0
  464. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_c00psmlff_golden.py +0 -0
  465. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_coulombmatrix_golden.py +0 -0
  466. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_cuda_backend.py +0 -0
  467. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_cuda_dpa4_dependencies.py +0 -0
  468. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_cuda_multispecies.py +0 -0
  469. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_descriptor_regressions.py +0 -0
  470. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_descriptor_symmetry.py +0 -0
  471. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_dpa4.py +0 -0
  472. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_dpa4_golden.py +0 -0
  473. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_dpa4c_golden.py +0 -0
  474. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_dpa_control.py +0 -0
  475. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_ead_golden.py +0 -0
  476. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_ewaldsummatrix_golden.py +0 -0
  477. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_external_static_goldens.py +0 -0
  478. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_golden_independence.py +0 -0
  479. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_lbispectrum_golden.py +0 -0
  480. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_lmbtr_golden.py +0 -0
  481. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_lodesphericalexpansion_golden.py +0 -0
  482. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_matrix_contract.py +0 -0
  483. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_mbtr_golden.py +0 -0
  484. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_mbtr_refactor.py +0 -0
  485. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_mtp.py +0 -0
  486. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_mtp_golden.py +0 -0
  487. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_neighborlist_golden.py +0 -0
  488. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_nep.py +0 -0
  489. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_nep_golden.py +0 -0
  490. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_nonperiodic.py +0 -0
  491. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_openmp_support.py +0 -0
  492. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_reference.py +0 -0
  493. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_sinematrix_golden.py +0 -0
  494. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_snap_golden.py +0 -0
  495. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_so3_golden.py +0 -0
  496. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_so4_golden.py +0 -0
  497. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_soap_acsf_advanced.py +0 -0
  498. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_soap_golden.py +0 -0
  499. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_soappowerspectrum_golden.py +0 -0
  500. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_soapradialspectrum_golden.py +0 -0
  501. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_soapturbo_golden.py +0 -0
  502. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_sorteddistances_golden.py +0 -0
  503. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_sphericalexpansion_golden.py +0 -0
  504. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_sphericalexpansionbypair_golden.py +0 -0
  505. {mdescriptor-0.3.2 → mdescriptor-0.3.3}/tests/test_valleoganov_golden.py +0 -0
@@ -5,9 +5,6 @@ set(PYBIND11_FINDPYTHON ON)
5
5
  find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
6
6
  find_package(pybind11 CONFIG REQUIRED)
7
7
 
8
- option(MDESCRIPTOR_BUILD_NATIVE "Build the CPU native extension" ON)
9
-
10
- if(MDESCRIPTOR_BUILD_NATIVE)
11
8
  # OpenBLAS is a build-time dependency and is vendored into the resulting
12
9
  # wheel. scipy-openblas32 deliberately exports a prefixed CBLAS ABI so that
13
10
  # this extension cannot accidentally bind to NumPy/SciPy's copy of OpenBLAS.
@@ -198,7 +195,6 @@ install(
198
195
  LIBRARY DESTINATION mdescriptor
199
196
  RUNTIME DESTINATION mdescriptor
200
197
  )
201
- endif()
202
198
 
203
199
  # The CPU and CUDA backends ship inside the same wheel; CUDA availability is
204
200
  # a runtime choice (execution.device), never a separate distribution.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: MDescriptor
3
- Version: 0.3.2
3
+ Version: 0.3.3
4
4
  Summary: Batch-oriented periodic atomic descriptors with C++17 kernels
5
5
  License: GNU GENERAL PUBLIC LICENSE
6
6
  Version 3, 29 June 2007
@@ -716,9 +716,6 @@ Requires-Dist: pytest>=8; extra == "reference-nepadapters"
716
716
  Requires-Dist: ase==3.26.0; extra == "reference-nepadapters"
717
717
  Requires-Dist: scipy>=1.11; extra == "reference-nepadapters"
718
718
  Requires-Dist: nep-adapters==1.0.2; extra == "reference-nepadapters"
719
- Provides-Extra: all
720
- Requires-Dist: ase>=3.22; extra == "all"
721
- Requires-Dist: scipy>=1.11; extra == "all"
722
719
  Provides-Extra: dev
723
720
  Requires-Dist: pytest>=8; extra == "dev"
724
721
  Requires-Dist: pytest-cov>=7; extra == "dev"
@@ -1062,10 +1059,8 @@ vendor adapters. The default inference graphs are lowered into the private
1062
1059
  ```
1063
1060
 
1064
1061
  Coverage excludes the isolated vendored DPA implementation and enforces 75%
1065
- branch coverage for project-owned Python code. Tests marked `timing` record
1066
- repeatable timing samples but intentionally do not impose a runner-dependent
1067
- speedup threshold; controlled performance reports are produced by
1068
- `scripts/run_benchmark.py`.
1062
+ branch coverage for project-owned Python code. Controlled performance
1063
+ reports are produced by `scripts/benchmarking/run_descriptor_benchmark.py`.
1069
1064
 
1070
1065
  The extension is private (`mdescriptor._native`). C++ shared math and batch
1071
1066
  helpers live in named headers under `cpp/include/mdescriptor/detail/`.
@@ -332,10 +332,8 @@ vendor adapters. The default inference graphs are lowered into the private
332
332
  ```
333
333
 
334
334
  Coverage excludes the isolated vendored DPA implementation and enforces 75%
335
- branch coverage for project-owned Python code. Tests marked `timing` record
336
- repeatable timing samples but intentionally do not impose a runner-dependent
337
- speedup threshold; controlled performance reports are produced by
338
- `scripts/run_benchmark.py`.
335
+ branch coverage for project-owned Python code. Controlled performance
336
+ reports are produced by `scripts/benchmarking/run_descriptor_benchmark.py`.
339
337
 
340
338
  The extension is private (`mdescriptor._native`). C++ shared math and batch
341
339
  helpers live in named headers under `cpp/include/mdescriptor/detail/`.
@@ -57,9 +57,6 @@ public:
57
57
  }
58
58
 
59
59
  private:
60
- template <typename Value>
61
- static void release(Value*& pointer) noexcept;
62
-
63
60
  std::int32_t* numbers_ = nullptr;
64
61
  double* positions_ = nullptr;
65
62
  double* positions_soa_ = nullptr;
@@ -26,7 +26,6 @@ public:
26
26
  DeviceDpa4Model& operator=(const DeviceDpa4Model&) = delete;
27
27
  ~DeviceDpa4Model() noexcept;
28
28
 
29
- std::int64_t feature_count() const noexcept;
30
29
  double cutoff() const noexcept;
31
30
 
32
31
  std::vector<double> compute(
@@ -24,16 +24,11 @@ public:
24
24
  DeviceDpa4cModel& operator=(const DeviceDpa4cModel&) = delete;
25
25
  ~DeviceDpa4cModel() noexcept;
26
26
 
27
- std::int64_t feature_count() const noexcept { return feature_count_; }
28
27
  double cutoff() const noexcept { return rcut_; }
29
28
 
30
- // Returns the checkpoint type index for an atomic number, or -1 when the
31
- // payload did not provide a type_numbers entry or the number is absent.
32
- int type_index_for_number(std::int32_t number) const noexcept;
33
-
34
29
  // type_indices is intentionally host-owned. The implementation uploads
35
30
  // it on the model's stream and returns host float64 values with shape
36
- // (batch.atoms, feature_count()).
31
+ // (batch.atoms, feature_count_).
37
32
  std::vector<double> compute(
38
33
  CudaExecutionContext& context,
39
34
  const DeviceBatch& batch,
@@ -64,11 +59,8 @@ private:
64
59
  std::vector<int> degree_channels_;
65
60
  std::vector<int> bispectrum_ranks_;
66
61
  std::vector<std::int64_t> degree_offsets_;
67
- std::vector<std::int64_t> gram_offsets_;
68
62
  std::vector<std::int32_t> gram_index_;
69
63
  std::vector<float> gram_scale_;
70
- std::vector<std::int32_t> type_numbers_;
71
- std::vector<std::int32_t> host_type_lookup_;
72
64
 
73
65
  // Every tensor is contiguous and device-resident. Keeping the ownership
74
66
  // in this object makes model construction exception safe and avoids a
@@ -95,6 +87,10 @@ private:
95
87
  std::unique_ptr<DeviceArray> probe_scale_;
96
88
  std::unique_ptr<DeviceArray> output_mean_;
97
89
  std::unique_ptr<DeviceArray> output_stddev_;
90
+ // The compact gram metadata is constant per model; it is uploaded once at
91
+ // construction instead of being copied into the workspace tail per call.
92
+ std::unique_ptr<DeviceArray> gram_index_device_;
93
+ std::unique_ptr<DeviceArray> gram_scale_device_;
98
94
  };
99
95
 
100
96
  } // namespace mdescriptor::cuda
@@ -4,6 +4,8 @@
4
4
  #include "mdescriptor/cuda/context.hpp"
5
5
  #include "mdescriptor/detail/batch.hpp"
6
6
 
7
+ #include <cuda_runtime.h>
8
+
7
9
  #include <cstddef>
8
10
  #include <cstdint>
9
11
  #include <vector>
@@ -15,6 +17,30 @@ enum class NeighborGraphOrdering {
15
17
  Canonical,
16
18
  };
17
19
 
20
+ // An edge is the exact self pair when it connects an atom to itself in the
21
+ // home image. Shifts may be enumerated locally (cell images) or read from a
22
+ // CSR shift array; the array form stays null-safe because graphs built without
23
+ // periodic images carry no shifts.
24
+ __device__ __forceinline__ bool exact_self_edge(
25
+ std::int64_t center,
26
+ std::int64_t atom,
27
+ std::int64_t shift_x,
28
+ std::int64_t shift_y,
29
+ std::int64_t shift_z) {
30
+ return atom == center && shift_x == 0 && shift_y == 0 && shift_z == 0;
31
+ }
32
+
33
+ __device__ __forceinline__ bool exact_self_edge(
34
+ std::int64_t center,
35
+ std::int64_t atom,
36
+ const std::int32_t* shifts,
37
+ std::int64_t edge) {
38
+ return shifts != nullptr
39
+ && exact_self_edge(
40
+ center, atom, shifts[edge * 3], shifts[edge * 3 + 1],
41
+ shifts[edge * 3 + 2]);
42
+ }
43
+
18
44
  // CSR + SoA representation shared by the CUDA descriptor family. The graph
19
45
  // can either be uploaded by an adapter that already owns a host graph or be
20
46
  // constructed from a device batch. DPA4/DPA4C use the latter path: only
@@ -28,13 +54,6 @@ public:
28
54
  DeviceNeighborGraph& operator=(const DeviceNeighborGraph&) = delete;
29
55
  ~DeviceNeighborGraph() noexcept;
30
56
 
31
- void upload(
32
- CudaExecutionContext& context,
33
- const std::vector<std::int64_t>& offsets,
34
- const std::vector<std::int32_t>& atoms,
35
- const std::vector<std::int32_t>& shifts,
36
- const std::vector<double>& displacements,
37
- const std::vector<double>& distance2);
38
57
  // Build the DPA graph from device-resident coordinates. The host batch
39
58
  // is metadata used to validate PBC and upload compact inverse cells/image
40
59
  // bounds; it is never used to enumerate or materialize pairs.
@@ -61,7 +80,6 @@ public:
61
80
  void clear() noexcept;
62
81
 
63
82
  std::size_t pairs() const noexcept { return pairs_; }
64
- std::int64_t max_neighbors() const noexcept { return max_neighbors_; }
65
83
  bool slot_major() const noexcept { return slot_major_; }
66
84
  std::int64_t neighbor_stride() const noexcept { return neighbor_stride_; }
67
85
  const std::int32_t* neighbor_counts() const noexcept { return neighbor_counts_; }
@@ -83,16 +101,12 @@ private:
83
101
  const std::vector<double>& grid_spacing,
84
102
  const std::vector<std::int32_t>& grid_dimensions);
85
103
 
86
- template <typename Value>
87
- void ensure_capacity(Value** pointer, std::size_t* capacity, std::size_t count);
88
-
89
104
  std::int64_t* offsets_ = nullptr;
90
105
  std::int32_t* atoms_ = nullptr;
91
106
  std::int32_t* shifts_ = nullptr;
92
107
  double* displacements_ = nullptr;
93
108
  double* distance2_ = nullptr;
94
109
  std::size_t pairs_ = 0;
95
- std::int64_t max_neighbors_ = 0;
96
110
  bool slot_major_ = false;
97
111
  std::int64_t neighbor_stride_ = 0;
98
112
  std::size_t offsets_capacity_ = 0;
@@ -124,7 +138,6 @@ private:
124
138
  std::int32_t* atom_to_structure_ = nullptr;
125
139
  std::int32_t* cell_counts_ = nullptr;
126
140
  std::int32_t* cell_offsets_ = nullptr;
127
- std::int32_t* cell_fill_ = nullptr;
128
141
  std::int32_t* cell_atoms_ = nullptr;
129
142
  std::int32_t* cell_sort_keys_ = nullptr;
130
143
  std::int32_t* atom_cells_ = nullptr;
@@ -146,7 +159,6 @@ private:
146
159
  std::size_t reference_cell_inverses_capacity_ = 0;
147
160
  std::size_t cell_counts_capacity_ = 0;
148
161
  std::size_t cell_offsets_capacity_ = 0;
149
- std::size_t cell_fill_capacity_ = 0;
150
162
  };
151
163
 
152
164
  } // namespace mdescriptor::cuda
@@ -7,10 +7,15 @@
7
7
 
8
8
  #include <cstddef>
9
9
  #include <cstdint>
10
+ #include <memory>
10
11
  #include <vector>
11
12
 
12
13
  namespace mdescriptor::cuda {
13
14
 
15
+ // Defined in device_memory.cuh; opaque here so the plugin-internal header
16
+ // stays free of CUDA headers.
17
+ struct DeviceArray;
18
+
14
19
  // Device-resident descriptor portion of one parsed NEP model. The host
15
20
  // parser remains the single source of truth for the model protocol; this
16
21
  // object only owns the arrays needed by the descriptor kernel.
@@ -23,14 +28,12 @@ public:
23
28
  DeviceNepModel& operator=(const DeviceNepModel&) = delete;
24
29
  ~DeviceNepModel() noexcept;
25
30
 
26
- int version() const noexcept { return version_; }
27
31
  int num_types() const noexcept { return num_types_; }
28
32
  int n_max_radial() const noexcept { return n_max_radial_; }
29
33
  int n_max_angular() const noexcept { return n_max_angular_; }
30
34
  int basis_size_radial() const noexcept { return basis_size_radial_; }
31
35
  int basis_size_angular() const noexcept { return basis_size_angular_; }
32
36
  int l_max() const noexcept { return l_max_; }
33
- int num_l() const noexcept { return num_l_; }
34
37
  int dimension() const noexcept { return dimension_; }
35
38
  double radial_cutoff_max() const noexcept { return radial_cutoff_max_; }
36
39
  double angular_cutoff_max() const noexcept { return angular_cutoff_max_; }
@@ -46,28 +49,20 @@ public:
46
49
  // semantics instead of silently writing an all-zero GPU row.
47
50
  bool supports_atomic_number(std::int32_t number) const noexcept;
48
51
 
49
- const std::int32_t* type_lookup() const noexcept { return type_lookup_; }
50
- const float* radial_cutoff_pair() const noexcept { return radial_cutoff_pair_; }
51
- const float* angular_cutoff_pair() const noexcept { return angular_cutoff_pair_; }
52
- const float* radial_pair_coefficients() const noexcept {
53
- return radial_pair_coefficients_;
54
- }
55
- const float* angular_pair_coefficients() const noexcept {
56
- return angular_pair_coefficients_;
57
- }
58
- const float* scalers() const noexcept { return scalers_; }
52
+ const std::int32_t* type_lookup() const noexcept;
53
+ const float* radial_cutoff_pair() const noexcept;
54
+ const float* angular_cutoff_pair() const noexcept;
55
+ const float* radial_pair_coefficients() const noexcept;
56
+ const float* angular_pair_coefficients() const noexcept;
57
+ const float* scalers() const noexcept;
59
58
 
60
59
  private:
61
- void release() noexcept;
62
-
63
- int version_ = 0;
64
60
  int num_types_ = 0;
65
61
  int n_max_radial_ = 0;
66
62
  int n_max_angular_ = 0;
67
63
  int basis_size_radial_ = 0;
68
64
  int basis_size_angular_ = 0;
69
65
  int l_max_ = 0;
70
- int num_l_ = 0;
71
66
  int dimension_ = 0;
72
67
  double radial_cutoff_max_ = 0.0;
73
68
  double angular_cutoff_max_ = 0.0;
@@ -79,19 +74,18 @@ private:
79
74
  bool has_q_134_ = false;
80
75
  std::vector<std::int32_t> host_type_lookup_;
81
76
 
82
- std::int32_t* type_lookup_ = nullptr;
83
- float* radial_cutoff_pair_ = nullptr;
84
- float* angular_cutoff_pair_ = nullptr;
85
- float* radial_pair_coefficients_ = nullptr;
86
- float* angular_pair_coefficients_ = nullptr;
87
- float* scalers_ = nullptr;
77
+ std::unique_ptr<DeviceArray> type_lookup_;
78
+ std::unique_ptr<DeviceArray> radial_cutoff_pair_;
79
+ std::unique_ptr<DeviceArray> angular_cutoff_pair_;
80
+ std::unique_ptr<DeviceArray> radial_pair_coefficients_;
81
+ std::unique_ptr<DeviceArray> angular_pair_coefficients_;
82
+ std::unique_ptr<DeviceArray> scalers_;
88
83
  };
89
84
 
90
85
  std::vector<double> compute_nep(
91
86
  CudaExecutionContext& context,
92
87
  const DeviceBatch& batch,
93
88
  const DeviceNeighborGraph& graph,
94
- const DeviceNepModel& model,
95
- bool reference_radial_accumulation = false);
89
+ const DeviceNepModel& model);
96
90
 
97
91
  } // namespace mdescriptor::cuda
@@ -31,7 +31,11 @@
31
31
 
32
32
  namespace py = pybind11;
33
33
 
34
- namespace mdescriptor::cuda {
34
+ // Shared extended-descriptor glue. This header leaves namespace
35
+ // mdescriptor::cuda open for its includers, so it must stay the last include:
36
+ // everything below is already inside that namespace and the file closes it.
37
+ #include "extended_descriptors_common.cuh"
38
+
35
39
  namespace {
36
40
 
37
41
  using I32Array = py::array_t<std::int32_t, py::array::c_style | py::array::forcecast>;
@@ -75,23 +79,6 @@ BatchArrays arrays_from_batch(const py::object& value) {
75
79
  std::move(pbc), std::move(offsets), view};
76
80
  }
77
81
 
78
- template <typename Value>
79
- Value option(const py::dict& options, const char* name, Value fallback) {
80
- const py::str key(name);
81
- if (!options.contains(key) || options[key].is_none()) {
82
- return fallback;
83
- }
84
- return py::cast<Value>(options[key]);
85
- }
86
-
87
- std::vector<std::int32_t> species_option(const py::dict& options) {
88
- const py::str key("species");
89
- if (!options.contains(key) || options[key].is_none()) {
90
- return {};
91
- }
92
- return py::cast<std::vector<std::int32_t>>(options[key]);
93
- }
94
-
95
82
  py::dict dpa_payload_option(const py::dict& options, const std::string& name) {
96
83
  const py::str key("_cuda_payload");
97
84
  if (!options.contains(key) || options[key].is_none()) {
@@ -148,13 +135,9 @@ std::int64_t feature_count_for(
148
135
  // that value private lets the CUDA plugin add a family without duplicating
149
136
  // every label/layout formula in this dispatch seam (matrix descriptors
150
137
  // may legitimately resolve their width only after seeing a batch).
151
- const py::str feature_key("_cuda_feature_count");
152
- if (options.contains(feature_key) && !options[feature_key].is_none()) {
153
- const auto value = py::cast<std::int64_t>(options[feature_key]);
154
- return value > 0 ? value : 0;
155
- }
156
- if (is_extended_descriptor(name)) {
157
- return 0;
138
+ const std::int64_t configured = feature_count_option(options, 0);
139
+ if (is_extended_descriptor(name) || configured > 0) {
140
+ return configured;
158
141
  }
159
142
  throw std::invalid_argument("CUDA backend does not support this descriptor");
160
143
  }
@@ -190,8 +173,6 @@ std::vector<std::int32_t> dpa_type_indices(
190
173
  return result;
191
174
  }
192
175
 
193
- py::list generic_labels(const std::string& name, std::int64_t features);
194
-
195
176
  py::list dpa_labels(const py::dict& options, const std::string& name, std::int64_t features) {
196
177
  const py::dict payload = dpa_payload_option(options, name);
197
178
  const py::str key("labels");
@@ -202,7 +183,7 @@ py::list dpa_labels(const py::dict& options, const std::string& name, std::int64
202
183
  throw std::invalid_argument(name + " CUDA model payload has invalid labels");
203
184
  }
204
185
  }
205
- return generic_labels(name, features);
186
+ return labels_option(options, name, features);
206
187
  }
207
188
 
208
189
  bool cancelled(const py::object& control) {
@@ -227,24 +208,6 @@ void check_cancelled(const py::object& control) {
227
208
  }
228
209
  }
229
210
 
230
- py::array double_array(const std::vector<double>& values, std::int64_t rows, std::int64_t columns) {
231
- py::array_t<double> result({
232
- static_cast<py::ssize_t>(rows), static_cast<py::ssize_t>(columns),
233
- });
234
- if (!values.empty()) {
235
- std::copy(values.begin(), values.end(), result.mutable_data());
236
- }
237
- return result;
238
- }
239
-
240
- py::list generic_labels(const std::string& name, std::int64_t features) {
241
- py::list labels;
242
- for (std::int64_t index = 0; index < features; ++index) {
243
- labels.append(name + ":" + std::to_string(index));
244
- }
245
- return labels;
246
- }
247
-
248
211
  py::list nep_labels(std::int64_t features) {
249
212
  py::list labels;
250
213
  for (std::int64_t index = 0; index < features; ++index) {
@@ -253,30 +216,6 @@ py::list nep_labels(std::int64_t features) {
253
216
  return labels;
254
217
  }
255
218
 
256
- py::array offsets_array(const std::vector<std::int64_t>& offsets) {
257
- py::array_t<std::int64_t> result(offsets.size());
258
- std::copy(offsets.begin(), offsets.end(), result.mutable_data());
259
- return result;
260
- }
261
-
262
- py::dict result_metadata(const std::string& name, const py::dict& options) {
263
- py::dict metadata;
264
- metadata["descriptor"] = name;
265
- metadata["backend"] = "mdescriptor-cuda";
266
- py::dict execution;
267
- execution["device"] = "cuda";
268
- const py::str execution_key("execution");
269
- if (options.contains(execution_key) && !options[execution_key].is_none()) {
270
- const py::dict options_execution = py::cast<py::dict>(options[execution_key]);
271
- execution["num_threads"] = options_execution.contains("num_threads")
272
- ? options_execution["num_threads"] : py::none();
273
- } else {
274
- execution["num_threads"] = py::none();
275
- }
276
- metadata["execution"] = execution;
277
- return metadata;
278
- }
279
-
280
219
  __global__ void write_neighbor_records(
281
220
  const std::int64_t* graph_offsets,
282
221
  const std::int32_t* graph_atoms,
@@ -300,7 +239,7 @@ __global__ void write_neighbor_records(
300
239
  const std::int32_t shift_x = graph_shifts[index * 3 + 0];
301
240
  const std::int32_t shift_y = graph_shifts[index * 3 + 1];
302
241
  const std::int32_t shift_z = graph_shifts[index * 3 + 2];
303
- if (!self_pairs && atom == center && shift_x == 0 && shift_y == 0 && shift_z == 0) {
242
+ if (!self_pairs && exact_self_edge(center, atom, shift_x, shift_y, shift_z)) {
304
243
  continue;
305
244
  }
306
245
  if (!full_neighbor_list && !detail::keep_half_neighbor(
@@ -340,8 +279,7 @@ __global__ void count_filtered_neighbor_records(
340
279
  for (std::int64_t index = begin; index < end; ++index) {
341
280
  const std::int32_t atom = graph_atoms[index];
342
281
  const std::int32_t* shift = graph_shifts + index * 3;
343
- if (!self_pairs && atom == center
344
- && shift[0] == 0 && shift[1] == 0 && shift[2] == 0) {
282
+ if (!self_pairs && exact_self_edge(center, atom, graph_shifts, index)) {
345
283
  continue;
346
284
  }
347
285
  if (!full_neighbor_list && !detail::keep_half_neighbor(
@@ -502,17 +440,17 @@ py::object Backend::compute(py::object batch_object, py::object control) {
502
440
  }
503
441
  }
504
442
  py::dict result;
505
- result["values"] = double_array(values, rows, 4);
443
+ result["values"] = values_array(values, rows, 4);
506
444
  result["level"] = "pair";
507
- result["row_offsets"] = offsets_array(row_offsets);
508
- result["pair_records"] = double_array(pair_records, rows, 5);
445
+ result["row_offsets"] = i64_array(row_offsets);
446
+ result["pair_records"] = values_array(pair_records, rows, 5);
509
447
  py::list labels;
510
448
  labels.append("dx");
511
449
  labels.append("dy");
512
450
  labels.append("dz");
513
451
  labels.append("distance");
514
452
  result["labels"] = labels;
515
- result["metadata"] = result_metadata(name_, options_);
453
+ result["metadata"] = mdescriptor::cuda::metadata(options_, name_);
516
454
  return std::move(result);
517
455
  }
518
456
 
@@ -522,11 +460,11 @@ py::object Backend::compute(py::object batch_object, py::object control) {
522
460
  mark_completed(control);
523
461
  }
524
462
  py::dict result;
525
- result["values"] = double_array({}, 0, feature_count_);
463
+ result["values"] = values_array({}, 0, feature_count_);
526
464
  result["level"] = "atom";
527
465
  result["row_offsets"] = arrays.offsets;
528
466
  result["labels"] = nep_labels(feature_count_);
529
- result["metadata"] = result_metadata(name_, options_);
467
+ result["metadata"] = mdescriptor::cuda::metadata(options_, name_);
530
468
  return std::move(result);
531
469
  }
532
470
  for (std::int64_t atom = 0; atom < arrays.view.atoms; ++atom) {
@@ -557,7 +495,7 @@ py::object Backend::compute(py::object batch_object, py::object control) {
557
495
  device_graph_.build_nep(
558
496
  *context_, *compute_batch, compute_view, cutoff);
559
497
  const auto computed = compute_nep(
560
- *context_, *compute_batch, device_graph_, *nep_model_, true);
498
+ *context_, *compute_batch, device_graph_, *nep_model_);
561
499
  values = computed;
562
500
  }
563
501
  check_cancelled(control);
@@ -565,11 +503,11 @@ py::object Backend::compute(py::object batch_object, py::object control) {
565
503
  mark_completed(control);
566
504
  }
567
505
  py::dict result;
568
- result["values"] = double_array(values, arrays.view.atoms, feature_count_);
506
+ result["values"] = values_array(values, arrays.view.atoms, feature_count_);
569
507
  result["level"] = "atom";
570
508
  result["row_offsets"] = arrays.offsets;
571
509
  result["labels"] = nep_labels(feature_count_);
572
- result["metadata"] = result_metadata(name_, options_);
510
+ result["metadata"] = mdescriptor::cuda::metadata(options_, name_);
573
511
  return std::move(result);
574
512
  }
575
513
 
@@ -592,11 +530,11 @@ py::object Backend::compute(py::object batch_object, py::object control) {
592
530
  mark_completed(control);
593
531
  }
594
532
  py::dict result;
595
- result["values"] = double_array(values, arrays.view.atoms, feature_count_);
533
+ result["values"] = values_array(values, arrays.view.atoms, feature_count_);
596
534
  result["level"] = "atom";
597
535
  result["row_offsets"] = arrays.offsets;
598
536
  result["labels"] = dpa_labels(options_, name_, feature_count_);
599
- result["metadata"] = result_metadata(name_, options_);
537
+ result["metadata"] = mdescriptor::cuda::metadata(options_, name_);
600
538
  return std::move(result);
601
539
  }
602
540
 
@@ -649,16 +587,16 @@ py::object Backend::compute(py::object batch_object, py::object control) {
649
587
  mark_completed(control);
650
588
  }
651
589
  py::dict result;
652
- result["values"] = double_array(values, arrays.view.atoms, features);
590
+ result["values"] = values_array(values, arrays.view.atoms, features);
653
591
  result["level"] = "atom";
654
592
  result["row_offsets"] = arrays.offsets;
655
- result["labels"] = generic_labels(name_, features);
656
- result["metadata"] = result_metadata(name_, options_);
593
+ result["labels"] = labels_option(options_, name_, features);
594
+ result["metadata"] = mdescriptor::cuda::metadata(options_, name_);
657
595
  return std::move(result);
658
596
  }
659
597
 
660
598
  py::dict Backend::metadata() const {
661
- return result_metadata(name_, options_);
599
+ return mdescriptor::cuda::metadata(options_, name_);
662
600
  }
663
601
 
664
602
  void Backend::close() noexcept {