mplang-nightly 0.1.dev274__tar.gz → 0.1.dev275__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 (212) hide show
  1. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/PKG-INFO +1 -1
  2. mplang_nightly-0.1.dev275/tutorials/04_ir_dump_and_analysis.py +168 -0
  3. mplang_nightly-0.1.dev274/tutorials/04_ir_dump_and_analysis.py +0 -115
  4. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/.gitignore +0 -0
  5. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/LICENSE +0 -0
  6. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/README.md +0 -0
  7. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/examples/.gitkeep +0 -0
  8. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/hatch_build.py +0 -0
  9. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/__init__.py +0 -0
  10. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/__init__.py +0 -0
  11. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/bfv_impl.py +0 -0
  12. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/channel.py +0 -0
  13. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/crypto_impl.py +0 -0
  14. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/field_impl.py +0 -0
  15. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/func_impl.py +0 -0
  16. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/phe_impl.py +0 -0
  17. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_design.md +0 -0
  18. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_driver/__init__.py +0 -0
  19. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_driver/http.py +0 -0
  20. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_driver/mem.py +0 -0
  21. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_driver/ops.py +0 -0
  22. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_driver/state.py +0 -0
  23. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_driver/values.py +0 -0
  24. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_worker/__init__.py +0 -0
  25. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_worker/http.py +0 -0
  26. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_worker/mem.py +0 -0
  27. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_worker/ops.py +0 -0
  28. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/simp_worker/state.py +0 -0
  29. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/spu_impl.py +0 -0
  30. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/spu_state.py +0 -0
  31. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/store_impl.py +0 -0
  32. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/table_impl.py +0 -0
  33. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/tee_impl.py +0 -0
  34. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/backends/tensor_impl.py +0 -0
  35. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/cli.py +0 -0
  36. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/cli_guide.md +0 -0
  37. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/__init__.py +0 -0
  38. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/bfv.py +0 -0
  39. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/crypto.py +0 -0
  40. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/dtypes.py +0 -0
  41. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/field.py +0 -0
  42. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/func.py +0 -0
  43. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/phe.py +0 -0
  44. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/simp.py +0 -0
  45. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/spu.py +0 -0
  46. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/store.py +0 -0
  47. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/table.py +0 -0
  48. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/tee.py +0 -0
  49. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/dialects/tensor.py +0 -0
  50. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/README.md +0 -0
  51. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/__init__.py +0 -0
  52. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/context.py +0 -0
  53. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/graph.py +0 -0
  54. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/jit.py +0 -0
  55. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/object.py +0 -0
  56. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/primitive.py +0 -0
  57. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/printer.py +0 -0
  58. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/registry.py +0 -0
  59. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/serde.py +0 -0
  60. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/tracer.py +0 -0
  61. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/edsl/typing.py +0 -0
  62. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/Makefile +0 -0
  63. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/__init__.py +0 -0
  64. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/gf128.cpp +0 -0
  65. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/ldpc.cpp +0 -0
  66. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/okvs.cpp +0 -0
  67. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/okvs_opt.cpp +0 -0
  68. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/kernels/py_kernels.py +0 -0
  69. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/collective.py +0 -0
  70. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/device/__init__.py +0 -0
  71. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/device/api.py +0 -0
  72. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/device/cluster.py +0 -0
  73. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/ml/__init__.py +0 -0
  74. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/ml/sgb.py +0 -0
  75. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/__init__.py +0 -0
  76. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/_utils.py +0 -0
  77. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/analytics/__init__.py +0 -0
  78. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/analytics/aggregation.py +0 -0
  79. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/analytics/groupby.md +0 -0
  80. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/analytics/groupby.py +0 -0
  81. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/analytics/permutation.py +0 -0
  82. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/common/constants.py +0 -0
  83. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/ot/__init__.py +0 -0
  84. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/ot/base.py +0 -0
  85. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/ot/extension.py +0 -0
  86. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/ot/silent.py +0 -0
  87. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/__init__.py +0 -0
  88. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/cuckoo.py +0 -0
  89. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/okvs.py +0 -0
  90. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/okvs_gct.py +0 -0
  91. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/oprf.py +0 -0
  92. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/rr22.py +0 -0
  93. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/psi/unbalanced.py +0 -0
  94. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/vole/__init__.py +0 -0
  95. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/vole/gilboa.py +0 -0
  96. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/vole/ldpc.py +0 -0
  97. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/libs/mpc/vole/silver.py +0 -0
  98. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/logging_config.py +0 -0
  99. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/py.typed +0 -0
  100. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/runtime/__init__.py +0 -0
  101. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/runtime/dialect_state.py +0 -0
  102. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/runtime/interpreter.py +0 -0
  103. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/runtime/object_store.py +0 -0
  104. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/runtime/value.py +0 -0
  105. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/utils/__init__.py +0 -0
  106. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/mplang/utils/func_utils.py +0 -0
  107. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/pyproject.toml +0 -0
  108. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/__init__.py +0 -0
  109. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/__init__.py +0 -0
  110. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/simp_driver/__init__.py +0 -0
  111. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/simp_driver/test_http.py +0 -0
  112. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/simp_worker/__init__.py +0 -0
  113. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/simp_worker/test_http.py +0 -0
  114. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/simp_worker/test_mem.py +0 -0
  115. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_bfv_impl.py +0 -0
  116. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_channel.py +0 -0
  117. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_crypto_impl.py +0 -0
  118. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_okvs_binding.py +0 -0
  119. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_simp_integration.py +0 -0
  120. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_simp_object_store.py +0 -0
  121. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_spu_impl.py +0 -0
  122. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_table_impl.py +0 -0
  123. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_tee_impl.py +0 -0
  124. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_tensor_impl.py +0 -0
  125. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/backends/test_verify_clean.py +0 -0
  126. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/conftest.py +0 -0
  127. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/__init__.py +0 -0
  128. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_bfv.py +0 -0
  129. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_crypto.py +0 -0
  130. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_dtypes.py +0 -0
  131. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_field.py +0 -0
  132. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_func.py +0 -0
  133. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_okvs.py +0 -0
  134. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_okvs_bench.py +0 -0
  135. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_phe.py +0 -0
  136. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_simp.py +0 -0
  137. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_simp_comm.py +0 -0
  138. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_spu.py +0 -0
  139. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_store.py +0 -0
  140. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_table.py +0 -0
  141. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_tee.py +0 -0
  142. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/dialects/test_tensor.py +0 -0
  143. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/__init__.py +0 -0
  144. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_context.py +0 -0
  145. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_graph.py +0 -0
  146. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_primitive.py +0 -0
  147. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_primitive_multi_output.py +0 -0
  148. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_printer.py +0 -0
  149. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_serde.py +0 -0
  150. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_tracer.py +0 -0
  151. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_typing.py +0 -0
  152. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/edsl/test_typing_graph_serde.py +0 -0
  153. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/device/__init__.py +0 -0
  154. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/device/conftest.py +0 -0
  155. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/device/test_device_api_errors.py +0 -0
  156. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/device/test_device_dialects.py +0 -0
  157. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/device/test_device_layouts.py +0 -0
  158. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/device/test_device_tee.py +0 -0
  159. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/ml/__init__.py +0 -0
  160. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/ml/test_sgb.py +0 -0
  161. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/ml/test_sgb_bench.py +0 -0
  162. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/__init__.py +0 -0
  163. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/analytics/__init__.py +0 -0
  164. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/analytics/test_aggregation.py +0 -0
  165. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/analytics/test_groupby.py +0 -0
  166. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/analytics/test_permutation.py +0 -0
  167. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/ot/__init__.py +0 -0
  168. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/ot/test_ot.py +0 -0
  169. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/ot/test_ot_extension.py +0 -0
  170. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/ot/test_silent_ot.py +0 -0
  171. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/__init__.py +0 -0
  172. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/test_okvs_gct.py +0 -0
  173. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/test_oprf.py +0 -0
  174. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/test_psi.py +0 -0
  175. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/test_psi_bench.py +0 -0
  176. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/test_rr22.py +0 -0
  177. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/psi/verify_psi_okvs_logic.py +0 -0
  178. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/test_field_gf128.py +0 -0
  179. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/test_utils.py +0 -0
  180. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/__init__.py +0 -0
  181. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/test_gilboa_manual.py +0 -0
  182. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/test_ldpc.py +0 -0
  183. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/test_silver_vole.py +0 -0
  184. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/test_vole.py +0 -0
  185. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/test_vole_bench.py +0 -0
  186. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/mpc/vole/verify_vole_logic.py +0 -0
  187. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/test_collective.py +0 -0
  188. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/libs/test_simple_guide.py +0 -0
  189. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/runtime/test_interpreter_async.py +0 -0
  190. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/runtime/test_object_store.py +0 -0
  191. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/runtime/test_object_store_fs.py +0 -0
  192. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/test_fetch_semantics.py +0 -0
  193. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/test_logging.py +0 -0
  194. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/test_pytree_io.py +0 -0
  195. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/utils/__init__.py +0 -0
  196. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/utils/tensor_patch.py +0 -0
  197. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tests/utils/test_func_utils.py +0 -0
  198. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/00_device_basics.py +0 -0
  199. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/01_function_decorator.py +0 -0
  200. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/02_simulation_and_driver.py +0 -0
  201. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/03_run_jax.py +0 -0
  202. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/05_run_sql.py +0 -0
  203. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/06_pipeline.py +0 -0
  204. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/07_stax_nn.py +0 -0
  205. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/08_logging.py +0 -0
  206. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/MIGRATION.md +0 -0
  207. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/README.md +0 -0
  208. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/__init__.py +0 -0
  209. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/data/alice.csv +0 -0
  210. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/data/bob.csv +0 -0
  211. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/data/prepare_vertical_iris.py +0 -0
  212. {mplang_nightly-0.1.dev274 → mplang_nightly-0.1.dev275}/tutorials/run.sh +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mplang-nightly
3
- Version: 0.1.dev274
3
+ Version: 0.1.dev275
4
4
  Summary: Multi-Party Programming Language
5
5
  Author-email: SecretFlow Team <secretflow-contact@service.alipay.com>
6
6
  License: Apache License
@@ -0,0 +1,168 @@
1
+ # Copyright 2025 Ant Group Co., Ltd.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ """Device: IR Dump and Graph Inspection
16
+
17
+ Learning objectives:
18
+ 1. Compile functions to Graph IR for inspection
19
+ 2. Understand the traced IR representation
20
+ 3. Debug and understand multi-party program structure
21
+
22
+ Key tools:
23
+ - mp.compile: generate Graph IR representation without executing
24
+ - traced.compiler_ir(): get human-readable IR text
25
+ - mp.format_graph: format graph for debugging
26
+
27
+ Migrated from mplang v1 to mplang.
28
+ """
29
+
30
+ import mplang as mp
31
+
32
+ cluster_spec = mp.ClusterSpec.from_dict({
33
+ "nodes": [
34
+ {"name": "node_0", "endpoint": "127.0.0.1:61930"},
35
+ {"name": "node_1", "endpoint": "127.0.0.1:61931"},
36
+ ],
37
+ "devices": {
38
+ "SP0": {
39
+ "kind": "SPU",
40
+ "members": ["node_0", "node_1"],
41
+ "config": {"protocol": "SEMI2K", "field": "FM128"},
42
+ },
43
+ "P0": {"kind": "PPU", "members": ["node_0"], "config": {}},
44
+ "P1": {"kind": "PPU", "members": ["node_1"], "config": {}},
45
+ },
46
+ })
47
+
48
+
49
+ def millionaire():
50
+ """Simple millionaire problem for IR inspection."""
51
+ x = mp.put("P0", 100)
52
+ y = mp.put("P1", 200)
53
+ z = mp.device("SP0")(lambda a, b: a < b)(x, y)
54
+ r = mp.put("P0", z)
55
+ return x, y, z, r
56
+
57
+
58
+ @mp.function
59
+ def jitted_millionaire():
60
+ """@mp.function-wrapped version for comparison.
61
+
62
+ Note: @mp.function is a multi-party wrapper (pcall_static over all parties),
63
+ not a traditional single-process JIT compiler. It changes the IR structure
64
+ by introducing a pcall region.
65
+ """
66
+ x = mp.put("P0", 100)
67
+ y = mp.put("P1", 200)
68
+ z = mp.device("SP0")(lambda a, b: a < b)(x, y)
69
+ r = mp.put("P0", z)
70
+ return x, y, z, r
71
+
72
+
73
+ def main():
74
+ print("=" * 70)
75
+ print("Device: IR Dump and Graph Inspection")
76
+ print("=" * 70)
77
+
78
+ sim = mp.make_simulator(2, cluster_spec=cluster_spec)
79
+ mp.set_root_context(sim)
80
+
81
+ # Pattern 1: Compile without executing (backend) to get IR
82
+ print("\n--- Pattern 1: Compile to IR (plain function) ---")
83
+ traced_plain = mp.compile(millionaire)
84
+ print("Traced function name:", traced_plain.name)
85
+ print("Number of graph inputs:", len(traced_plain.graph.inputs))
86
+ print("Number of graph outputs:", len(traced_plain.graph.outputs))
87
+ print("Number of operations:", len(traced_plain.graph.operations))
88
+
89
+ # Pattern 1b: Compare with @mp.function wrapper
90
+ print("\n--- Pattern 1b: Compile to IR (@mp.function wrapper) ---")
91
+ traced_pcall = mp.compile(jitted_millionaire)
92
+ print("Traced function name:", traced_pcall.name)
93
+ print("Number of graph inputs:", len(traced_pcall.graph.inputs))
94
+ print("Number of graph outputs:", len(traced_pcall.graph.outputs))
95
+ print("Number of operations:", len(traced_pcall.graph.operations))
96
+
97
+ # Pattern 2: Human-readable IR (compact)
98
+ print("\n--- Pattern 2: Human-readable IR (compact) ---")
99
+ print("[plain]")
100
+ print(traced_plain.compiler_ir())
101
+ print("\n[@mp.function]")
102
+ print(traced_pcall.compiler_ir())
103
+
104
+ # Pattern 3: Human-readable IR (verbose types)
105
+ print("\n--- Pattern 3: Human-readable IR (verbose types) ---")
106
+ print("[plain]")
107
+ ir_verbose_plain = traced_plain.compiler_ir(verbose=True)
108
+ all_lines = ir_verbose_plain.split("\n")
109
+ lines = all_lines[:20]
110
+ for line in lines:
111
+ print(line)
112
+ if len(all_lines) > 20:
113
+ print(" ...")
114
+
115
+ print("\n[@mp.function]")
116
+ ir_verbose_pcall = traced_pcall.compiler_ir(verbose=True)
117
+ lines = ir_verbose_pcall.split("\n")[:20]
118
+ for line in lines:
119
+ print(line)
120
+ if len(ir_verbose_pcall.split("\n")) > 20:
121
+ print(" ...")
122
+
123
+ # Pattern 3b: Graph pretty-print (compact vs verbose, with attrs)
124
+ print("\n--- Pattern 3b: mp.format_graph (compact vs verbose, attrs) ---")
125
+ print("[plain / compact]")
126
+ print(mp.format_graph(traced_plain.graph, show_types=False, show_attrs=False))
127
+ print("\n[plain / verbose]")
128
+ print(mp.format_graph(traced_plain.graph, show_types=True, show_attrs=True))
129
+ print("\n[@mp.function / compact]")
130
+ print(mp.format_graph(traced_pcall.graph, show_types=False, show_attrs=False))
131
+ print("\n[@mp.function / verbose]")
132
+ print(mp.format_graph(traced_pcall.graph, show_types=True, show_attrs=True))
133
+
134
+ # Pattern 4: Execute and verify
135
+ print("\n--- Pattern 4: Execute and verify ---")
136
+ x, y, z, r = mp.evaluate(millionaire)
137
+ print(
138
+ f"[direct] x={mp.fetch(x)}, y={mp.fetch(y)}, z={mp.fetch(z)}, r={mp.fetch(r)}"
139
+ )
140
+
141
+ # Pattern 4b: Execute compiled (traced) graphs
142
+ print("\n--- Pattern 4b: Execute traced graphs (compare with direct) ---")
143
+ x2, y2, z2, r2 = mp.evaluate(traced_plain)
144
+ print(
145
+ f"[traced/plain] x={mp.fetch(x2)}, y={mp.fetch(y2)}, z={mp.fetch(z2)}, r={mp.fetch(r2)}"
146
+ )
147
+
148
+ x3, y3, z3, r3 = mp.evaluate(traced_pcall)
149
+ print(
150
+ f"[traced/@mp.function] x={mp.fetch(x3)}, y={mp.fetch(y3)}, z={mp.fetch(z3)}, r={mp.fetch(r3)}"
151
+ )
152
+
153
+ print("\n" + "=" * 70)
154
+ print("Key takeaways:")
155
+ print("1. mp.compile: trace function to IR without executing backend")
156
+ print(
157
+ "2. @mp.function: wraps your function into simp.pcall_static(ALL, fn, ...) and adds a region"
158
+ )
159
+ print(
160
+ "3. compiler_ir()/format_graph: inspect operations, inputs/outputs, regions, attrs"
161
+ )
162
+ print("4. mp.evaluate can execute TracedFunction graphs directly")
163
+ print("5. IR helps debug data flow and device placement")
164
+ print("=" * 70)
165
+
166
+
167
+ if __name__ == "__main__":
168
+ main()
@@ -1,115 +0,0 @@
1
- # Copyright 2025 Ant Group Co., Ltd.
2
- #
3
- # Licensed under the Apache License, Version 2.0 (the "License");
4
- # you may not use this file except in compliance with the License.
5
- # You may obtain a copy of the License at
6
- #
7
- # http://www.apache.org/licenses/LICENSE-2.0
8
- #
9
- # Unless required by applicable law or agreed to in writing, software
10
- # distributed under the License is distributed on an "AS IS" BASIS,
11
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- # See the License for the specific language governing permissions and
13
- # limitations under the License.
14
-
15
- """Device: IR Dump and Graph Inspection
16
-
17
- Learning objectives:
18
- 1. Compile functions to Graph IR for inspection
19
- 2. Understand the traced IR representation
20
- 3. Debug and understand multi-party program structure
21
-
22
- Key tools:
23
- - mp.compile: generate Graph IR representation without executing
24
- - traced.compiler_ir(): get human-readable IR text
25
- - mp.format_graph: format graph for debugging
26
-
27
- Migrated from mplang v1 to mplang.
28
- """
29
-
30
- import mplang as mp
31
-
32
- cluster_spec = mp.ClusterSpec.from_dict({
33
- "nodes": [
34
- {"name": "node_0", "endpoint": "127.0.0.1:61930"},
35
- {"name": "node_1", "endpoint": "127.0.0.1:61931"},
36
- ],
37
- "devices": {
38
- "SP0": {
39
- "kind": "SPU",
40
- "members": ["node_0", "node_1"],
41
- "config": {"protocol": "SEMI2K", "field": "FM128"},
42
- },
43
- "P0": {"kind": "PPU", "members": ["node_0"], "config": {}},
44
- "P1": {"kind": "PPU", "members": ["node_1"], "config": {}},
45
- },
46
- })
47
-
48
-
49
- def millionaire():
50
- """Simple millionaire problem for IR inspection."""
51
- x = mp.put("P0", 100)
52
- y = mp.put("P1", 200)
53
- z = mp.device("SP0")(lambda a, b: a < b)(x, y)
54
- r = mp.put("P0", z)
55
- return x, y, z, r
56
-
57
-
58
- @mp.function
59
- def jitted_millionaire():
60
- """JIT version of millionaire for comparison."""
61
- x = mp.put("P0", 100)
62
- y = mp.put("P1", 200)
63
- z = mp.device("SP0")(lambda a, b: a < b)(x, y)
64
- r = mp.put("P0", z)
65
- return x, y, z, r
66
-
67
-
68
- def main():
69
- print("=" * 70)
70
- print("Device: IR Dump and Graph Inspection")
71
- print("=" * 70)
72
-
73
- sim = mp.make_simulator(2, cluster_spec=cluster_spec)
74
- mp.set_root_context(sim)
75
-
76
- # Pattern 1: Compile without executing to get IR
77
- print("\n--- Pattern 1: Compile to IR ---")
78
- traced = mp.compile(millionaire)
79
- print("Traced function name:", traced.name)
80
- print("Number of graph inputs:", len(traced.graph.inputs))
81
- print("Number of graph outputs:", len(traced.graph.outputs))
82
- print("Number of operations:", len(traced.graph.operations))
83
-
84
- # Pattern 2: Print human-readable IR
85
- print("\n--- Pattern 2: Human-readable IR ---")
86
- ir_text = traced.compiler_ir()
87
- print(ir_text)
88
-
89
- # Pattern 3: Verbose IR with type annotations
90
- print("\n--- Pattern 3: Verbose IR with types ---")
91
- ir_verbose = traced.compiler_ir(verbose=True)
92
- # Just print first 20 lines to keep output manageable
93
- lines = ir_verbose.split("\n")[:20]
94
- for line in lines:
95
- print(line)
96
- if len(ir_verbose.split("\n")) > 20:
97
- print(" ...")
98
-
99
- # Pattern 4: Execute and compare
100
- print("\n--- Pattern 4: Execute and verify ---")
101
- x, y, z, r = mp.evaluate(millionaire)
102
- print(
103
- f"Results: x={mp.fetch(x)}, y={mp.fetch(y)}, z={mp.fetch(z)}, r={mp.fetch(r)}"
104
- )
105
-
106
- print("\n" + "=" * 70)
107
- print("Key takeaways:")
108
- print("1. mp.compile: trace function to IR without executing")
109
- print("2. compiler_ir(): inspect operations, inputs, outputs")
110
- print("3. IR helps debug data flow and device placement")
111
- print("=" * 70)
112
-
113
-
114
- if __name__ == "__main__":
115
- main()