-
-
Notifications
You must be signed in to change notification settings - Fork 72
Improve LinearSolveAutotune UI/UX #686
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
ChrisRackauckas
merged 10 commits into
SciML:main
from
ChrisRackauckas-Claude:improve-autotune-ui-ux
Aug 8, 2025
Merged
Improve LinearSolveAutotune UI/UX #686
ChrisRackauckas
merged 10 commits into
SciML:main
from
ChrisRackauckas-Claude:improve-autotune-ui-ux
Aug 8, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Remove all token authentication code from main autotune flow - Split autotuning and result sharing into separate functions - Add flexible size categories (small/medium/large/big) replacing binary large_matrices flag - Add clear gh CLI setup instructions in README - Make telemetry opt-in via explicit share_results() call 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
write(f, markdown_content) | ||
end | ||
@info "📁 Results saved locally to $fallback_file" | ||
@info " You can manually share this file on the issue tracker." |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Suggested change
@info " You can manually share this file on the issue tracker." | |
@info " You can manually share this file on the issue tracker:" | |
@info " https://github.com/SciML/LinearSolve.jl/issues/669" |
- Add progress bar showing algorithm being benchmarked with percentage - Adjust size ranges: medium now goes to 300, large is 300-1000 - Create AutotuneResults struct with nice display output - Add plot() method for AutotuneResults to create composite plots - Update default to include large matrices (small, medium, large) - Add clear call-to-action in results display for sharing - Add ProgressMeter dependency 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Fix ProgressMeter.update\! to use 'desc' parameter instead of 'description' - Remove make_plot parameter from autotune_setup - Move plot generation from autotune_setup to plot(results) method - Remove plot uploading from GitHub sharing (plots not shared anymore) - Simplify AutotuneResults struct to only contain results_df and sysinfo - Update documentation to reflect on-demand plot generation 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Add 'tiny' category (5-20), reorganize ranges: small (20-100), medium (100-300), large (300-1000) - Change default to benchmark tiny/small/medium/large (no big) with Float64 only - Implement intelligent type fallback for preferences: - Float32 uses Float64 if not benchmarked - ComplexF32 uses Float64 if not benchmarked - ComplexF64 uses ComplexF32 then Float64 if not benchmarked - Handle RFLU special case for complex numbers (avoids if alternative within 20% performance) - Update preference keys to use eltype_sizecategory format (e.g., Float64_tiny) - Set preferences for all 4 types across all 5 size categories 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Fix AutotuneResults to properly handle sysinfo as Dict (convert from DataFrame) - Add suggestion in display output for running comprehensive benchmarks - Show script for testing all sizes and element types in results display 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Update tests to use new size categories (tiny, small, medium, large) - Update tests for AutotuneResults type instead of tuple return - Update preference management tests for new key format - Remove deprecated large_matrices parameter from tests - Add tests for AutotuneResults display method 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Added CPUSummary.jl dependency for better system info - Exported plot function for AutotuneResults - Reordered display output: comprehensive first, community second, share last - Updated system info gathering to use CPUSummary functions - Enhanced OS and thread information display
- Fixed CPUSummary.num_cores() instead of num_physical_cores() - Use Sys.CPU_THREADS for logical cores - Use Threads.nthreads() for Julia threads - Fixed BLAS thread count with LinearAlgebra.BLAS.get_num_threads() - Use standard Julia functions where CPUSummary doesn't provide equivalents
- Convert Static.StaticInt to regular Int for compatibility - Ensures tests pass with CPUSummary.num_cores() output
- Use get() with fallbacks for all system info fields - Handle both get_system_info() and get_detailed_system_info() key names - Support both old and new key formats for compatibility
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
This PR significantly improves the UI/UX of LinearSolveAutotune by:
large_matrices
flag with flexible size categoriesKey Changes
1. Progress Bar and Status Updates
2. AutotuneResults Object
AutotuneResults
struct that wraps results, system info, and plotsplot(results)
creates composite plots of all benchmarksshare_results(results)
for easy community contribution3. Independent Autotune and Sharing
autotune_setup()
now runs benchmarks without any authenticationshare_results()
function handles authentication and telemetry separately4. Flexible Matrix Size Categories
Replaced
large_matrices::Bool
withsizes::Vector{Symbol}
::small
- 5×5 to 20×20 matrices:medium
- 20×20 to 300×300 matrices (expanded range):large
- 300×300 to 1000×1000 matrices:big
- 10000×10000 to 100000×100000 matricesDefault now includes
:large
for better coverage.5. Simplified Authentication
gh
CLI6. Improved Documentation
Example Usage
Breaking Changes
large_matrices
parameter replaced withsizes
telemetry
parameter removed fromautotune_setup()
AutotuneResults
object instead of tupleshare_results()
callMigration Guide
Old:
New:
Testing
🤖 Generated with Claude Code