Integrate Rust ENM kernels and qualify native delivery
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 8/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Attiva
- Ambito
- build-system, performance
Direzione di ricerca
Start with the assessment at devguide/pending_proposals/rust_enm_kernels.md (commit 439d476), which records the 1TCD baseline and the staged sequence. The first step is a reproducible fresh-process, warm and memory baseline over sizes and contact densities, not a Rust port. This issue is design and qualification work under active maintainer review, so a newcomer should coordinate with the maintainers before editing code.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
The maintainer requested comparison with ../molsysmt's Rust-only CPU implementation. That provider uses a private PyO3/NumPy extension built with setuptools-rust, Rayon for bounded threading and faer for dense PCA; its own measurements distinguish cold-start benefits, warm throughput and eigensolver tradeoffs.
ElastNetMT already delegates contact calculation to MolSysMT. Its local candidates are Kirchhoff/Hessian construction, currently NumPy/Numba, while NumPy eigh already executes compiled numerical code. Measure contact preparation, first/repeated construction and diagonalization separately; compare memory use and scientific invariants before choosing a Rust implementation.
Plan a bounded owner-local prototype with explicit array, threading, null-mode and eigenvector-subspace contracts. Qualify it against current physical tests and independent properties. Benchmark faer against the actual NumPy BLAS backend before choosing a spectral backend. Retain provider-owned contacts/interpolation; missing shared operations go to their providers. A bundled native extension changes the current noarch delivery plan (#18/#19), so classify platform-specific native artifacts and coordinate existing suite release controls before production migration.
Acceptance for this study: measured workload decomposition, supported implementation/package design, scientific validation criteria and an explicit staged decision. This issue does not authorize public support claims or establish a speedup from an unmeasured Rust port. Documentation work remains tracked in #8/#13 and the linked documentation repair issue.
Review checkpoint — 2026-10-10
The staged assessment is committed at 439d476: https://github.com/uibcdf/elastnetmt/blob/439d476/devguide/pending_proposals/rust_enm_kernels.md . The sibling checkout was inspected without modification. No Rust ENM engine is implemented.
On the bundled 1TCD structure (497 CA nodes), Python 3.14.7 / NumPy 2.4.6 / MKL 2025.3, a corrected run verifies MKL/OpenMP at one thread and Numba at two. Warm ANM Numba solves take 0.646–0.650 s, of which about 99% is native eigh. The first solve takes 1.721 s. The report preserves individual samples, provider binary digest, initial uncontrolled-MKL samples and their correction; preparation and non-eigh differences are not isolated kernel timings. Peak memory and independent-process confidence intervals remain unmeasured.
Recommended sequence: (1) reproducible fresh-process/warm/memory baseline over sizes and contact densities; (2) private owned Rust Kirchhoff/Hessian prototype retaining Python unit/error/state contracts and public provider contacts; (3) independent physical/eigenspace qualification; (4) separate faer-versus-actual-NumPy comparison; (5) platform-native artifact qualification coordinated with #18/#19; (6) production backend/Numba retirement decision after measured benefit. This issue stays active for that implementation and qualification work; the assessment does not establish a Rust speedup.
- Lingua principale
- Jupyter Notebook
- Stelle
- 4
- Fork
- 3
- Merge medio
- 18h 50m
- PR unite (30g)
- 1
Preparare l'ambiente
- Nessun Dockerfile né file Docker Compose
- Ha un modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di uibcdf/elastnetmt
-
documentation
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
uibcdf/elastnetmt#13 · 1 commento ·
-
component:molsysmt
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
uibcdf/elastnetmt#28 · 1 commento ·
-
proposal
Difficoltà 4/5 3-5 giorni Idoneità per principianti 12/100
uibcdf/elastnetmt#24 ·
-
component:ackredit
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
uibcdf/elastnetmt#20 · 10 commenti ·
-
component:lindelint component:molsysmt component:molsysviewer enhancement partial
Difficoltà 5/5 Più di una settimana Idoneità per principianti 30/100
uibcdf/elastnetmt#19 · 4 commenti ·
Tutte le issue di uibcdf/elastnetmt
Issue simili
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
apache/arrow-swift#209 ·
I maintainer di solito rispondono entro 1 giorno
-
[BUG] spotify-launcherApertabug
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
libretiny-eu/libretiny#435 ·
I maintainer di solito rispondono entro 4 giorni
-
Difficoltà 1/5 1-3 ore Idoneità per principianti 65/100
influxdata/telegraf#20031 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
docling-project/docling-serve#751 ·
I maintainer di solito rispondono entro 2 giorni