https://github.com/cool-japan/oxiblas
OxiBLAS is a production-grade, pure Rust implementation of BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra PACKage). Designed as the foundational linear algebra library for the SciRS2 scientific computing ecosystem.
https://github.com/cool-japan/oxiblas
blas lapack linalg linear-algebra rust rust-crate rust-lang
Last synced: 4 months ago
JSON representation
OxiBLAS is a production-grade, pure Rust implementation of BLAS (Basic Linear Algebra Subprograms) and LAPACK (Linear Algebra PACKage). Designed as the foundational linear algebra library for the SciRS2 scientific computing ecosystem.
- Host: GitHub
- URL: https://github.com/cool-japan/oxiblas
- Owner: cool-japan
- License: apache-2.0
- Created: 2025-12-18T03:39:14.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2025-12-29T21:02:13.000Z (6 months ago)
- Last Synced: 2025-12-31T18:42:35.494Z (6 months ago)
- Topics: blas, lapack, linalg, linear-algebra, rust, rust-crate, rust-lang
- Language: Rust
- Homepage: https://github.com/cool-japan/oxiblas
- Size: 1.22 MB
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: .github/README-internal.md
- Changelog: CHANGELOG.md
- License: LICENSE-APACHE
Awesome Lists containing this project
README
# OxiBLAS CI/CD Infrastructure
This directory contains GitHub Actions workflows for automated testing, benchmarking, and releasing.
## Workflows
### CI (`ci.yml`)
Runs on every push and pull request to `main` and `develop` branches.
**Jobs:**
- **test**: Runs test suite on Ubuntu, macOS, and Windows with stable and nightly Rust
- All features enabled
- No default features
- Doc tests
- **clippy**: Linting with `-D warnings` (zero-tolerance policy)
- **fmt**: Code formatting checks
- **docs**: Documentation build with broken link detection
- **coverage**: Code coverage via tarpaulin, uploaded to Codecov
- **security-audit**: Dependency vulnerability scanning via `cargo-audit`
### Benchmarks (`benchmarks.yml`)
Performance tracking and regression detection.
**Triggers:**
- Push to `main`
- Pull requests to `main`
- Weekly schedule (Sunday 00:00 UTC)
- Manual dispatch
**Jobs:**
- **benchmark**: Runs all benchmark suites on Ubuntu and macOS
- BLAS Level 1/2/3
- GEMM variants
- Sparse operations
- LAPACK operations
- Results stored as artifacts for 30 days
- **benchmark-compare**: PR comparison against base branch
- Runs baseline on base branch
- Compares PR performance
- Reports significant regressions
- **performance-tracking**: Long-term performance data (main branch only)
- Stores results for 90 days
- Tracks GEMM and BLAS3 performance over time
- **benchmark-matrix**: Comprehensive benchmarking (weekly/manual)
- Full benchmark suite
- All matrix sizes
- Results retained for 90 days
### Release (`release.yml`)
Automated release process triggered by version tags (`v*`).
**Jobs:**
- **create-release**: Creates GitHub release with changelog
- **publish-crates**: Sequential publication to crates.io
- Publishes in dependency order with 30s delays
- oxiblas-core → oxiblas-matrix → oxiblas-blas → oxiblas-lapack → oxiblas-sparse → oxiblas-ffi → oxiblas-ndarray → oxiblas
- **build-documentation**: Builds and deploys rustdoc to GitHub Pages
## Performance Tracking
### Artifacts Retention
- **Benchmark results**: 30 days (regular runs)
- **Performance data**: 90 days (tracking trends)
- **Comprehensive benchmarks**: 90 days (weekly/manual)
### Benchmark Comparison
Pull requests automatically compare performance against the base branch for critical operations (BLAS Level 3, GEMM). Significant regressions are flagged in the PR.
### Historical Data
Main branch benchmarks are stored with commit SHA for long-term performance analysis. Data includes:
- GEMM performance (f32/f64/c32/c64)
- BLAS Level 3 operations (SYRK, TRSM, etc.)
- Sparse operations
## Usage
### Running Benchmarks Manually
```bash
gh workflow run benchmarks.yml
```
### Triggering a Release
```bash
git tag v0.1.0
git push origin v0.1.0
```
### Viewing Benchmark Results
1. Navigate to Actions tab in GitHub
2. Select "Performance Benchmarks" workflow
3. Click on a run
4. Download artifacts under "Artifacts" section
5. Open `criterion/report/index.html` in browser
## Required Secrets
For full CI/CD functionality, configure these secrets in repository settings:
- `CARGO_REGISTRY_TOKEN`: crates.io API token for publishing
- GitHub token (automatic): Used for creating releases and deploying docs
## Local Testing
Test workflows locally using [act](https://github.com/nektos/act):
```bash
# Install act
brew install act # macOS
# or
sudo apt install act # Ubuntu
# Run CI workflow
act -j test
# Run benchmarks
act -j benchmark
```
## Performance Regression Detection
The benchmark-compare job automatically detects performance regressions in PRs by:
1. Checking out the base branch
2. Running baseline benchmarks
3. Checking out the PR branch
4. Comparing against baseline
5. Reporting significant changes (>5% regression)
## Optimization Guidelines
- **Caching**: All workflows cache cargo registry, index, and build artifacts
- **Matrix strategy**: Tests run in parallel across OS/Rust versions
- **Conditional execution**: Performance tracking only on main branch
- **Artifact cleanup**: Automatic cleanup via retention policies