Repository navigation
Perf(test): reuse random data across container types in quantile test - #8985
Conversation
test_many_elements_quantile regenerated random data for every container type; generate it once per element count and reuse across types. Test-only speedup, identical coverage. Signed-off-by: Soumya Snigdha Kundu <soumya_snigdha.kundu@kcl.ac.uk>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: Project-MONAI/MONAI/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (1)
Included review availability: This review used your included allowance. Your plan provides up to 8 included reviews per hour; 6 remain after this review. 📝 WalkthroughWalkthroughThe quantile test now generates one random NumPy array for each element count. It converts that array to each supported array type before checking percentile results. Priority: ⬇️ Low Estimated code review effort: 1 (Trivial) | ~3 minutes Merge Risk: ⚪ Minimal · up to This test-only change reuses inputs across array types without an identified loss of test coverage; no actionable mergeability risk remains. 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Description
test_many_elements_quantileallocated a freshnp.random.randn(elements)array — up to 17M elements (~130 MB) — inside the innermost loop, so the same large array was regenerated once for every(container type, element count, quantile-arg type)combination. The random values are irrelevant to the test (assertions only check the return type and that CPU/GPU results agree), so the repeated allocation and RNG fill added runtime without adding coverage.This makes for the data generation to once per element count and reuses it across the container and argument types.
@skip_if_quick def test_many_elements_quantile(self): # pytorch#64947 - for p in TEST_NDARRAYS: - for elements in (1000, 17_000_000): + for elements in (1000, 17_000_000): + data = np.random.randn(elements) + for p in TEST_NDARRAYS: + x = p(data) for t in [*TEST_NDARRAYS, list]: - x = p(np.random.randn(elements)) q = percentile(x, t([10, 50]))Performance
Wall-clock of
pytest tests/transforms/test_utils_pytorch_numpy_unification.py, median of 3 runs on the same machine:Machine: 12th Gen Intel Core i7-12800H (20 threads), Ubuntu 22.04.5 (kernel 6.8.0-124), Python 3.10.12, torch 2.10.0+cu128, CUDA available (NVIDIA RTX A1000 Laptop GPU).
Types of changes
pytest tests/transforms/test_utils_pytorch_numpy_unification.py)