Releases: plasma-umass/scalene
Releases · plasma-umass/scalene
Maintenance release: fixes virtualized GPU issue, Windows loading, output issue
What's Changed
- Adds exception handling to workaround a virtualized GPU issue (#323).
- Added average memory consumption calculation to function summaries.
- Fixes a missing argument issue in output (#344)
- Fixes an issue with Jupyter notebooks when they don't have access to a web browser.
Full Changelog: v1.5.2...v1.5.3
Jupyter support for new GUI; auto-exit of server
What's Changed
- Scalene's web-based GUI is now integrated into Jupyter notebooks
- When using
--cpu-only
or profiling in Jupyter, columns for memory profiling (which would all be empty) are now hidden - The local webserver now exits after 5 seconds.
Full Changelog: v1.5.1...v1.5.2
Local web-based GUI
What's Changed
- Scalene now launches its web-based GUI locally by default. After profiling, It opens a browser tab to a local webserver and automatically brings up the most recent profile. (The old behavior is still available by using
--cli
on the command line.)
Full Changelog: v1.5.0...v1.5.1
Web-based GUI
What's Changed
- Scalene now supports a new web-based GUI. Invoke using
--web
; this opens a browser tab (http://plasma-umass.org/scalene-gui/) and prompts to upload the generatedprofile.json
file in the current working directory.
Full Changelog: v1.4.2...v1.5.0
Bug fix to prevent hangs in Scalene
What's Changed
Full Changelog: v1.4.1...v1.4.2
Maintenance release: fixes small memory accounting issue, re-enables running in Jupyter notebooks, adds `--allocation-sampling-window`
What's Changed
- Update README.md by @barseghyanartur in #324
- Fixed double-counting newlines by @sternj in #328
- Added
--allocation-sampling-window
; fixed reporting of peak function summary by @emeryberger in #329 - Added in shim for get_context by @sternj in #320
Full Changelog: v1.4.0...v1.4.1
More Profiling Control, Leak Detector, Enhancements and Bug Fixes
New features:
- adds
--profile-exclude
flag to exclude from profiles any filenames containing the given strings (comma-separated) - adds experimental memory leak detection (
--memory-leak-detector
)
Enhancements:
- provides more accurate memory accounting for small objects
- higher resolution tracking of system vs. user time, per line, on Linux and Mac
- new sampling approach, using “intervals” and per-line triggers, to ensure consistent accounting of per-line peak and average memory consumption
Bug fixes:
- fixes build on Windows
- adds
-arm64e
target to enable building on Apple Silicon (M1) - fixed exit signal propagation for failed scripts
- ensures correct build on old Xcode + Mac OS combinations
- distribution includes wheels for Windows
Python 3.10, bug fixes and cleanups
- Added wheels for Python 3.10;
- Improved granularity of memory recording;
- Fixed "unable to find Python allocator functions" issue (#278);
- Performed various cleanups;
Improved memory profiling, new features, bugfixes
Overhauled memory attribution logic:
- uses Python's custom memory management APIs to efficiently disambiguate native vs. Python memory allocations, supplanting the prior approach that employed periodic call stack sampling.
- performs immediate lookup of the location in source code responsible for allocation/deallocation, reducing the "smearing" effect in attributions previously caused by delayed attribution.
- computes average memory consumption (rather than total) for each line of code (using the novel technique of "one-shot" tracing); lines executed many times no longer appear to have consumed large amounts of memory.
- no longer reports negative memory growth from output, caused by lines freeing more than allocating, which has been a source of confusion for some users.
- this release also resolves a memory leak.
Overhauled internal signal handling:
- uses signal actors, an approach based on actors that decouples signal handling logic from the main thread, avoiding the risk of races and deadlocks and simplifying logic
Bug fixes:
- fixed missing handling of
pynvml.NVMLError_NotSupported
exception (issue #262); - fixed issue cleaning up after profiling multiprocessor and multithreaded programs;
- fixed issue not accounting for elapsed time when zero frames were recorded (issue #269).
New features:
- added JSON output option (
--json
); - added programmatic profile control (
scalene_profiler.start()
andscalene_profiler.stop()
).
Miscellaneous:
- improved documentation.
Note: this release is for MacOS and Linux only.
Windows bugfix release
Fixes Windows-specific bug introduced in 1.3.11 leading to empty outputs.
With this release, scalene on Windows now requires python 3.8 or newer.