mplang-nightly 0.1.dev253__py3-none-any.whl → 0.1.dev255__py3-none-any.whl
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.
- mplang/v2/backends/simp_driver/mem.py +4 -0
- mplang/v2/backends/spu_impl.py +10 -79
- mplang/v2/backends/spu_state.py +124 -0
- mplang/v2/cli.py +1 -1
- mplang/v2/edsl/context.py +4 -4
- mplang/v2/libs/ml/__init__.py +23 -0
- mplang/v2/libs/ml/sgb.py +1873 -0
- mplang/v2/libs/mpc/vole/ldpc.py +3 -2
- mplang/v2/runtime/interpreter.py +26 -0
- {mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/METADATA +1 -1
- {mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/RECORD +14 -11
- {mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/WHEEL +0 -0
- {mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/entry_points.txt +0 -0
- {mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/licenses/LICENSE +0 -0
mplang/v2/libs/mpc/vole/ldpc.py
CHANGED
|
@@ -300,12 +300,13 @@ def generate_sparse_noise(n: int, weight: int) -> el.Object:
|
|
|
300
300
|
|
|
301
301
|
# Generate unique indices using rejection-free Fisher-Yates-like approach
|
|
302
302
|
# Map random u64 to positions while ensuring uniqueness
|
|
303
|
-
|
|
303
|
+
# Use int64 to avoid dtype mismatch warning in scatter operations
|
|
304
|
+
positions = jnp.zeros(weight, dtype=jnp.int64)
|
|
304
305
|
|
|
305
306
|
# Build positions array (unrolled for JAX compatibility)
|
|
306
307
|
for i in range(weight):
|
|
307
308
|
# Map random value to remaining range [0, n-i)
|
|
308
|
-
pos = jnp.
|
|
309
|
+
pos = jnp.int64(idx_entropy[i] % (n - i))
|
|
309
310
|
|
|
310
311
|
# Shift position to avoid already-used indices
|
|
311
312
|
# Count how many existing positions are <= current pos
|
mplang/v2/runtime/interpreter.py
CHANGED
|
@@ -360,6 +360,32 @@ class Interpreter(AbstractInterpreter):
|
|
|
360
360
|
self.trace_pid = trace_pid
|
|
361
361
|
self.store: ObjectStore | None = store
|
|
362
362
|
|
|
363
|
+
def shutdown(self) -> None:
|
|
364
|
+
"""Shutdown the interpreter and release resources.
|
|
365
|
+
|
|
366
|
+
This method is idempotent and safe to call multiple times.
|
|
367
|
+
It performs the following cleanup:
|
|
368
|
+
1. Shuts down the internal executor (if any).
|
|
369
|
+
2. Stops the execution tracer (if any).
|
|
370
|
+
3. Shuts down any attached dialect states (e.g., stopping drivers).
|
|
371
|
+
"""
|
|
372
|
+
# 1. Shutdown Executor
|
|
373
|
+
if self.executor:
|
|
374
|
+
self.executor.shutdown(wait=True)
|
|
375
|
+
self.executor = None
|
|
376
|
+
|
|
377
|
+
# 2. Stop Tracer
|
|
378
|
+
if self.tracer:
|
|
379
|
+
self.tracer.stop()
|
|
380
|
+
# Don't clear self.tracer, as we might want to read stats later
|
|
381
|
+
|
|
382
|
+
# 3. Shutdown Dialect States
|
|
383
|
+
# Iterate over all attached states (e.g., drivers, cluster managers)
|
|
384
|
+
# and shut them down if they support it.
|
|
385
|
+
for state in self._states.values():
|
|
386
|
+
if hasattr(state, "shutdown") and callable(state.shutdown):
|
|
387
|
+
state.shutdown()
|
|
388
|
+
|
|
363
389
|
# =========================================================================
|
|
364
390
|
# Dialect State Management
|
|
365
391
|
# =========================================================================
|
|
@@ -78,7 +78,7 @@ mplang/v1/utils/func_utils.py,sha256=vCJcZmu0bEbqhOQKdpttV2_MBllIcPSN0b8U4WjNGGo
|
|
|
78
78
|
mplang/v1/utils/spu_utils.py,sha256=S3L9RBkBe2AvSuMSQQ12cBY5Y1NPthubvErSX_7nj1A,4158
|
|
79
79
|
mplang/v1/utils/table_utils.py,sha256=1fDgZLrRf2bvKvA45egT6RtMPgwE1cI2BokMHUU_xv4,5945
|
|
80
80
|
mplang/v2/__init__.py,sha256=SqVxDiRvA9W49NaXaT70spf6-xSbat1ZfIdI4j8KgFk,13816
|
|
81
|
-
mplang/v2/cli.py,sha256=
|
|
81
|
+
mplang/v2/cli.py,sha256=QtiTFG418k26opRy4GhVV8fwFqRS11xTLH3xRCIIm6M,19665
|
|
82
82
|
mplang/v2/cli_guide.md,sha256=kyoCaqkvIJJ1vsvCyBu3qgOuRSb0txu9BDZoy9GU5S0,3617
|
|
83
83
|
mplang/v2/backends/__init__.py,sha256=H-4-jBEPWBZl6XT7AxBShRINnruF_f_2lB4iaiQoXME,1988
|
|
84
84
|
mplang/v2/backends/bfv_impl.py,sha256=cQPinze3c2xN4CmIIoXxZoIEhu9ynoGaXbdF95z_aTE,25709
|
|
@@ -87,14 +87,15 @@ mplang/v2/backends/field_impl.py,sha256=50sKGOlkUiaTj_IAola86uQeoi-fxV0o7G91BdTC
|
|
|
87
87
|
mplang/v2/backends/func_impl.py,sha256=R0662cC0gSSfkjuLyevJ_g4bJDJirY76LTFYqEimCkE,3585
|
|
88
88
|
mplang/v2/backends/phe_impl.py,sha256=r836e_qBHGrHhfnFail5IaUDzvS7bABjdEQmJmAtBVI,4127
|
|
89
89
|
mplang/v2/backends/simp_design.md,sha256=CXvfxrvV1TmKlFm8IbKTbcHHwLl6AhwlY_cNqMdff_Y,5250
|
|
90
|
-
mplang/v2/backends/spu_impl.py,sha256=
|
|
90
|
+
mplang/v2/backends/spu_impl.py,sha256=gKyueQZQXRQhJ_7q3EQ74ItJntzeFdgTnPtU2mJRqF8,9466
|
|
91
|
+
mplang/v2/backends/spu_state.py,sha256=wj876IvNPhKyWISN6WwKBYoaDQFFJ8jemdJUVeH5IfA,4144
|
|
91
92
|
mplang/v2/backends/store_impl.py,sha256=RyhADTNsnnNnwsatAMr7eeewXkVXtfNWA1oFiLXg8H0,2222
|
|
92
93
|
mplang/v2/backends/table_impl.py,sha256=c36gyBCWLQbV3g0hkJeTnMXUqT0nxgu74k2sLondTio,8784
|
|
93
94
|
mplang/v2/backends/tee_impl.py,sha256=5PzzQ6mibd6-Wyvvt_8DD6G-CzA4VAmqGk6H1Z9risI,6986
|
|
94
95
|
mplang/v2/backends/tensor_impl.py,sha256=8f9f4-_e-m4JWGZSbXLmSSHcgPykRBc1sAYrA3OIxEg,18906
|
|
95
96
|
mplang/v2/backends/simp_driver/__init__.py,sha256=ahOPYYvtFVwqxiFxkpSNP8BCTao_MfCXmtt5zsMaJxg,1258
|
|
96
97
|
mplang/v2/backends/simp_driver/http.py,sha256=nl7ny7f8bzhy1ubNIDXhMgA5P_WA8dhhgFNHvcmfSKk,5548
|
|
97
|
-
mplang/v2/backends/simp_driver/mem.py,sha256=
|
|
98
|
+
mplang/v2/backends/simp_driver/mem.py,sha256=nFA-KkYx5fDh6NseI8QOd5FkNErPDq4h_QjrWD7nMrE,9126
|
|
98
99
|
mplang/v2/backends/simp_driver/ops.py,sha256=UeVC3eaCUwxrkN6OsJyMYj8qMDufMFQI0YogeSbhkjM,4515
|
|
99
100
|
mplang/v2/backends/simp_driver/state.py,sha256=6tQyQg_PNzHOJkjCoNm51Wvknl3XiJZzpQXuRB4qRtM,1719
|
|
100
101
|
mplang/v2/backends/simp_driver/values.py,sha256=OQ_7Kt6l7Pcfx5eB6GVbpunS6CG60Lj0AS6H9Wx9sKQ,1515
|
|
@@ -118,7 +119,7 @@ mplang/v2/dialects/tee.py,sha256=R_XySt-JNhZJNdjRiUw-nU4BjwBNMtV4sYFMOtvJZzc,115
|
|
|
118
119
|
mplang/v2/dialects/tensor.py,sha256=FxPKsiNi2vFb-R2hqRgR7zYYO5LdRu_rdDHfjE3_2Lw,40003
|
|
119
120
|
mplang/v2/edsl/README.md,sha256=viflvdRojOa6Xk_UMRPqpuPGXcPGmdlv2-XR6LO7B58,7592
|
|
120
121
|
mplang/v2/edsl/__init__.py,sha256=YqmtrJXD1NLKS-_Ofnxtiv77muokTZnrAiV7dXUZVyo,2607
|
|
121
|
-
mplang/v2/edsl/context.py,sha256=
|
|
122
|
+
mplang/v2/edsl/context.py,sha256=0RgQAt7cbPudt9kyBb7wjZ31HzGMnq81Ah5sgs_qU2U,10093
|
|
122
123
|
mplang/v2/edsl/graph.py,sha256=VXeE_9Oc9E0qfnwFDYBvFyDL79qvABLs1aFC-lheJ8M,14983
|
|
123
124
|
mplang/v2/edsl/jit.py,sha256=tofGAqNSUPuEmqy0flaZpNaR1Y425Pk2FdmCKxRPCM8,2069
|
|
124
125
|
mplang/v2/edsl/object.py,sha256=rijDu4yuG_Sitgfz5gk8-mJ1-3Bgor0QrQU04q9mkgo,1909
|
|
@@ -139,6 +140,8 @@ mplang/v2/libs/collective.py,sha256=pfXq9tmFUNKjeHhWMTjtzOi-m2Fn1lLru1G6txZVyic,
|
|
|
139
140
|
mplang/v2/libs/device/__init__.py,sha256=mXsSvXrWmlHu6Ch87Vcd85m4L_qdDkbSvJyHyuai2fc,1251
|
|
140
141
|
mplang/v2/libs/device/api.py,sha256=8i0KP3q_XbOfPYB9fzs7pA6vVY4Ib6lxdoiwAi_RlmU,27838
|
|
141
142
|
mplang/v2/libs/device/cluster.py,sha256=YUqYZ_IBS6rpV5ejUFP3kTxcTQHSyeDeuaJcsiFY_Js,12508
|
|
143
|
+
mplang/v2/libs/ml/__init__.py,sha256=xTxhC_YwHP32muUEFCEwOjc-3Ml-vmO48NNECU90zm4,787
|
|
144
|
+
mplang/v2/libs/ml/sgb.py,sha256=qoJww01EEbWo9nvwB5w-JZqx9BchcmhSrToypxV7fPg,60297
|
|
142
145
|
mplang/v2/libs/mpc/__init__.py,sha256=znADXBv0cATTvNN9pVOH8V47O5vmYZnR1Y7tfh1QVjw,1405
|
|
143
146
|
mplang/v2/libs/mpc/_utils.py,sha256=Xzt5jIQSm2e8_xFC6zrdKL93IqbTDb40apk2JBbEgBI,3215
|
|
144
147
|
mplang/v2/libs/mpc/analytics/__init__.py,sha256=8_1Sm05nrO2ISat1hNZT6UXHpKQ-SDBby1eeS-wm_fE,1204
|
|
@@ -160,15 +163,15 @@ mplang/v2/libs/mpc/psi/rr22.py,sha256=2mN1zbjrBUgaWCsF3Lj8ohtK6gcG95PtBb3EseS-Ns
|
|
|
160
163
|
mplang/v2/libs/mpc/psi/unbalanced.py,sha256=hC84TVsgnlJDg6hpUrx8kbUbmFb27T9wrHG0zv3FXLc,7433
|
|
161
164
|
mplang/v2/libs/mpc/vole/__init__.py,sha256=2dU4X6n73HoK-YCiCl4b36SkLRKR6rofe2xxLxBz6Rc,968
|
|
162
165
|
mplang/v2/libs/mpc/vole/gilboa.py,sha256=apnKOYR4_dJ2wkzGq7PBlwauA-W5i5MPESdetCWTegU,9951
|
|
163
|
-
mplang/v2/libs/mpc/vole/ldpc.py,sha256=
|
|
166
|
+
mplang/v2/libs/mpc/vole/ldpc.py,sha256=1H_Dz1xdZTN2f3V6lz9NKBaY-How9Qu1GgwN0IJZero,12786
|
|
164
167
|
mplang/v2/libs/mpc/vole/silver.py,sha256=Qnk3EiA18i6RJl-iDCMHOwNdf0Zvkmxq_57O3Y0HPFw,12236
|
|
165
168
|
mplang/v2/runtime/__init__.py,sha256=VdUwJ3kDaI46FvGw7iMGwcsjt0HTGmmRmaBwj99xKIw,620
|
|
166
169
|
mplang/v2/runtime/dialect_state.py,sha256=HxO1i4kSOujS2tQzAF9-WmI3nChSaGgupf2_07dHetY,1277
|
|
167
|
-
mplang/v2/runtime/interpreter.py,sha256=
|
|
170
|
+
mplang/v2/runtime/interpreter.py,sha256=UzrM5oepka6H0YKRZncNXhsuwKVm4pliG5J92fFRZMI,32300
|
|
168
171
|
mplang/v2/runtime/object_store.py,sha256=yT6jtKG2GUEJVmpq3gnQ8mCMvUFYzgBciC5A-J5KRdk,5998
|
|
169
172
|
mplang/v2/runtime/value.py,sha256=CMOxElJP78v7pjasPhEpbxWbSgB2KsLbpPmzz0mQX0E,4317
|
|
170
|
-
mplang_nightly-0.1.
|
|
171
|
-
mplang_nightly-0.1.
|
|
172
|
-
mplang_nightly-0.1.
|
|
173
|
-
mplang_nightly-0.1.
|
|
174
|
-
mplang_nightly-0.1.
|
|
173
|
+
mplang_nightly-0.1.dev255.dist-info/METADATA,sha256=k-_Pe_IksZD0UsPf-oPxMv_FlGNEKKfWwz4BjCVqC00,16768
|
|
174
|
+
mplang_nightly-0.1.dev255.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
175
|
+
mplang_nightly-0.1.dev255.dist-info/entry_points.txt,sha256=mG1oJT-GAjQR834a62_QIWb7litzWPPyVnwFqm-rWuY,55
|
|
176
|
+
mplang_nightly-0.1.dev255.dist-info/licenses/LICENSE,sha256=xx0jnfkXJvxRnG63LTGOxlggYnIysveWIZ6H3PNdCrQ,11357
|
|
177
|
+
mplang_nightly-0.1.dev255.dist-info/RECORD,,
|
|
File without changes
|
{mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{mplang_nightly-0.1.dev253.dist-info → mplang_nightly-0.1.dev255.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|