Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
6652060
Initial plan
Copilot Oct 9, 2025
f4173fb
Add sparse_bls_cpu implementation and basic test
Copilot Oct 9, 2025
5710bfd
Add eebls_transit wrapper with automatic sparse/GPU selection
Copilot Oct 9, 2025
4cd57ca
Add documentation for Sparse BLS implementation
Copilot Oct 9, 2025
9301360
Adjust test tolerance for sparse BLS frequency detection
Copilot Oct 9, 2025
0400670
Initial plan
Copilot Oct 9, 2025
c402172
Create initial subpackage structure with base and memory modules
Copilot Oct 9, 2025
a494080
Refactor to use new memory and base modules - maintain backward compa…
Copilot Oct 9, 2025
7eaa555
Add comprehensive documentation for new architecture
Copilot Oct 9, 2025
7d4fd26
Add restructuring summary document
Copilot Oct 9, 2025
2f80f49
Add visual before/after comparison documentation
Copilot Oct 9, 2025
81e0b90
Merge pull request #35 from johnh2o2/copilot/refactor-codebase-organi…
johnh2o2 Oct 9, 2025
e29010e
Merge branch 'v1.0' into copilot/implement-sparse-bls
Copilot Oct 9, 2025
a645119
Merge pull request #27 from johnh2o2/copilot/implement-sparse-bls
johnh2o2 Oct 9, 2025
7fea01d
Initial plan
Copilot Oct 9, 2025
f0b91cc
Add NUFFT LRT implementation for transit detection
Copilot Oct 9, 2025
db46b49
Add validation and documentation for NUFFT LRT
Copilot Oct 9, 2025
5661113
Add comprehensive implementation summary and final validation
Copilot Oct 9, 2025
c08d166
NUFFT corrections, epoch sweep, modificaitons to the readme and time …
hexajonal Oct 9, 2025
16a8000
Merge pull request #38 from xiaziyna/copilot/add-nufft-lrt-feature
johnh2o2 Oct 10, 2025
d0310dd
Initial plan
Copilot Oct 14, 2025
61bd6b9
Add comprehensive PyCUDA technology assessment and findings
Copilot Oct 14, 2025
a4024f7
Add getting started guide and visual summary for assessment
Copilot Oct 14, 2025
2d2a186
Add comprehensive index for all assessment documents
Copilot Oct 14, 2025
a16fb1b
Phase 1: Drop Python 2.7 support and modernize codebase
Copilot Oct 14, 2025
d0ceb04
Phase 2: Add CI/CD, documentation, and version bump to 0.4.0
Copilot Oct 14, 2025
ddbef17
Add comprehensive migration guide and documentation index
Copilot Oct 14, 2025
9105582
Make changes compatible with v1.0 base branch
Copilot Oct 14, 2025
a79bb78
Merge v1.0 into branch and resolve conflicts
Copilot Oct 17, 2025
2c0a8c1
Merge branch 'v1.0' into copilot/re-evaluate-core-implementation-tech
johnh2o2 Oct 17, 2025
8baf1de
Merge pull request #39 from johnh2o2/copilot/re-evaluate-core-impleme…
johnh2o2 Oct 17, 2025
f373309
Initial plan
Copilot Oct 17, 2025
91ab1ef
Add CONTRIBUTING.md and remove Python 2 legacy code
Copilot Oct 17, 2025
7f42469
Update Python version support and remove future dependency
Copilot Oct 17, 2025
9e351e7
Add code modernization summary documentation
Copilot Oct 17, 2025
ba86dce
Merge pull request #40 from johnh2o2/copilot/standardize-code-convent…
johnh2o2 Oct 17, 2025
d12d813
Initial plan
Copilot Oct 21, 2025
f5601e4
Move copilot-generated docs and create comprehensive README.md
Copilot Oct 21, 2025
a641824
Fix version reference in README.md to be branch-agnostic
Copilot Oct 21, 2025
38ea08b
Merge pull request #43 from johnh2o2/copilot/clean-up-markdown-files
johnh2o2 Oct 21, 2025
2b13597
Quick typo fix for readme
johnh2o2 Oct 21, 2025
d6abf66
Improve sparse BLS implementation and add RunPod development support
Oct 25, 2025
ae5246f
Add GPU-accelerated sparse BLS implementation
Oct 25, 2025
6c8d96d
Update scripts/sync-to-runpod.sh
johnh2o2 Oct 25, 2025
253747a
Update scripts/test-remote.sh
johnh2o2 Oct 25, 2025
228cf56
Update scripts/setup-remote.sh
johnh2o2 Oct 25, 2025
4b22075
Merge pull request #45 from johnh2o2/fix/sparse-bls-wrapped-transits
johnh2o2 Oct 25, 2025
48ff8f2
Merge branch 'v1.0' into feature/sparse-bls-gpu
Oct 25, 2025
84cfb36
Update minimum Python version from 3.7 to 3.8
Oct 25, 2025
d8f3f92
Update cuvarbase/kernels/sparse_bls_simple.cu
johnh2o2 Oct 25, 2025
8aea12e
Update cuvarbase/kernels/sparse_bls_simple.cu
johnh2o2 Oct 25, 2025
2a51c86
Update cuvarbase/kernels/sparse_bls.cu
johnh2o2 Oct 25, 2025
a8e4865
Update cuvarbase/kernels/sparse_bls.cu
johnh2o2 Oct 25, 2025
1b200f4
Update cuvarbase/bls.py
johnh2o2 Oct 25, 2025
096a226
Merge pull request #46 from johnh2o2/feature/sparse-bls-gpu
johnh2o2 Oct 25, 2025
99b4870
Add comprehensive algorithm benchmarking suite
Oct 25, 2025
d229c06
Add persistent benchmark runner and time estimator
Oct 25, 2025
8b64b98
Add example benchmark results showing 315x speedup
Oct 25, 2025
371c563
Add comprehensive TESS catalog BLS cost analysis
Oct 25, 2025
55d28a0
WIP: BLS kernel optimization - baseline and analysis
Oct 25, 2025
6926614
Add optimized BLS kernel with bank conflict fixes and warp shuffles
Oct 25, 2025
72ae029
Fix warp shuffle reduction bug in optimized BLS kernel
Oct 25, 2025
f2224ce
Complete BLS kernel optimization work with results documentation
Oct 25, 2025
9ea90cd
Add adaptive BLS with dynamic block sizing
Oct 25, 2025
699bf0f
Add realistic batch Keplerian BLS benchmark
Oct 25, 2025
4af090c
Complete adaptive BLS implementation with dramatic results
Oct 25, 2025
937518e
Add baseline verification script
Oct 25, 2025
4640de4
Add GPU utilization analysis and architecture comparison
Oct 25, 2025
60b4009
Add comprehensive PR summary
Oct 25, 2025
f7abf62
Fix adaptive benchmark to use Keplerian frequency grids
Oct 25, 2025
55b7461
Update PR summary to reflect Keplerian grids
Oct 25, 2025
77fa0a1
Add thread-safety and LRU eviction to kernel cache
Oct 25, 2025
eaf42aa
Update PR summary with code quality improvements
Oct 25, 2025
1145523
Add comprehensive documentation for code quality fixes
Oct 25, 2025
47e1e22
Remove PR_SUMMARY.md (moved to GitHub PR description)
Oct 25, 2025
5ba2ac6
Merge pull request #47 from johnh2o2/feature/benchmark-suite
johnh2o2 Oct 26, 2025
648b290
Merge pull request #49 from johnh2o2/feature/optimize-bls-kernel
johnh2o2 Oct 26, 2025
4757398
Improve README: highlight BLS optimization and credit Jamila Taaki
Oct 26, 2025
c57dc9a
Correct sparse BLS citation and remove cost implications
Oct 26, 2025
1a42a4f
Merge pull request #50 from johnh2o2/readme-improvements
johnh2o2 Oct 26, 2025
529e3f6
Enable GPU sparse BLS by default in eebls_transit
Oct 26, 2025
376378a
Update cuvarbase/bls.py
johnh2o2 Oct 26, 2025
71637b3
Update cuvarbase/bls.py
johnh2o2 Oct 26, 2025
3c77b78
Merge pull request #51 from johnh2o2/sparse-bls-gpu-default
johnh2o2 Oct 26, 2025
05fd7c9
Repository cleanup: consolidate docs and organize tests
Oct 27, 2025
ad60ca9
Move JSON files to analysis/ and remove cleanup history doc
Oct 27, 2025
03919a6
Merge pull request #52 from johnh2o2/repository-cleanup
johnh2o2 Oct 27, 2025
0fb4d93
Phase 1: TLS GPU implementation - Core infrastructure
Oct 27, 2025
1f3bc3e
Phase 2: TLS GPU optimization - Advanced features
Oct 27, 2025
007a1fe
Phase 3: TLS production features - Statistics & usability
Oct 27, 2025
cc5b44d
Fix TLS GPU kernel compilation and add GPU test script
Oct 27, 2025
8b43200
Document RunPod GPU testing issues and solutions
Oct 27, 2025
aa6431e
Fix period grid generation in tls_grids.py
Oct 27, 2025
d332662
Fix critical Ofir period grid generation bugs
Oct 27, 2025
8fec9ae
Fix critical TLS GPU bugs: Ofir grid, duration scaling, and Thrust so…
Oct 27, 2025
a5dcb0d
Consolidate TLS to single performant kernel
Oct 27, 2025
3a4a576
Add Keplerian-aware duration constraints for TLS
Oct 27, 2025
abc68d2
Wire up Keplerian TLS Python API
Oct 27, 2025
c6ed982
Add PR description markdown file for easy copying
Oct 27, 2025
3fa3aa9
Clean up TLS test files and update README
Oct 27, 2025
5501f6c
Reorganize TLS documentation and test files
Oct 27, 2025
1a86a31
Update cuvarbase/tls_models.py
johnh2o2 Oct 27, 2025
5fab5c4
Address PR review comments for TLS implementation
Oct 27, 2025
a0f6769
Replace insertion sort with bitonic sort for scalability
Oct 27, 2025
034d8ba
Fix TLS to use limb-darkened transit template instead of box model
Feb 7, 2026
cf284c7
Add automated RunPod pod lifecycle scripts
Feb 7, 2026
2e1d34b
Fix sparse BLS correctness: CPU j-loop, GPU kernels, shared memory
Feb 8, 2026
ff1ccae
Fix mod1_fast overflow and compile_bls function name filtering
Feb 8, 2026
edb9a74
Add bounds guard to max reductions and block_size validation
Feb 8, 2026
263aaa0
Fix stale docstring referencing __float2int_rd
Feb 8, 2026
5babe80
Replace circular sparse BLS tests with ground-truth correctness tests
Feb 8, 2026
7e7a9bf
Fix sparse BLS test compatibility and robustness
Feb 8, 2026
75e708a
Strengthen sparse BLS tests per code review
Feb 8, 2026
664d0dc
Merge fix/sparse-bls-tests: Fix sparse BLS correctness + ground-truth…
Feb 8, 2026
5f61aa4
Merge fix/bls-optimized-minor: Fix mod1_fast overflow + compile_bls f…
Feb 8, 2026
fc8c032
Fix documentation errors, citations, and remove fabricated benchmarks
Feb 8, 2026
1ed5639
Merge tls-gpu-implementation: Add GPU-accelerated Transit Least Squares
Feb 8, 2026
8f7591a
Rewrite benchmark framework: all algorithms, cost-per-lightcurve, GPU…
Feb 8, 2026
8c60d1d
Add multi-GPU benchmark results across 7 GPU architectures
Feb 8, 2026
74a2237
Add multi-lightcurve batch BLS kernel and Keplerian frequency grid
Feb 8, 2026
bb64cb8
Add cuFINUFFT backend for Lomb-Scargle periodogram
Feb 8, 2026
5aba5bd
Merge branch 'feature/bls-batch' into testing/runpod-benchmarks
Feb 8, 2026
bb5f330
Fix bugs found during GPU testing, add benchmark suite
Feb 8, 2026
97673e4
Add benchmark docs, fBLS spec, and fix survey-scale benchmarks
Feb 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
53 changes: 53 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# EditorConfig is awesome: https://EditorConfig.org

# top-most EditorConfig file
root = true

# Unix-style newlines with a newline ending every file
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true

# Python files
[*.py]
indent_style = space
indent_size = 4
max_line_length = 88

# CUDA files
[*.cu]
indent_style = space
indent_size = 4
max_line_length = 100

# Markdown files
[*.md]
trim_trailing_whitespace = false
max_line_length = off

# YAML files
[*.{yml,yaml}]
indent_style = space
indent_size = 2

# Configuration files
[*.{json,toml,cfg}]
indent_style = space
indent_size = 2

# Shell scripts
[*.sh]
indent_style = space
indent_size = 2

# Makefiles require tabs
[Makefile]
indent_style = tab

# reStructuredText
[*.rst]
indent_style = space
indent_size = 3
max_line_length = off
72 changes: 72 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
name: Tests

on:
push:
branches: [ master, main ]
pull_request:
branches: [ master, main ]

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]

steps:
- uses: actions/checkout@v3

- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}

- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential

- name: Install Python dependencies
run: |
python -m pip install --upgrade pip
pip install numpy>=1.17 scipy>=1.3
pip install pytest pytest-cov

- name: Install package
run: |
pip install -e .
continue-on-error: true # PyCUDA may not install without CUDA

- name: Run basic import test
run: |
python -c "import numpy; import scipy; print('Dependencies OK')"

- name: Check code syntax
run: |
python -m py_compile cuvarbase/__init__.py
python -m py_compile cuvarbase/core.py
python -m py_compile cuvarbase/utils.py

lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"

- name: Install linting tools
run: |
python -m pip install --upgrade pip
pip install flake8

- name: Lint with flake8
run: |
# Stop the build if there are Python syntax errors or undefined names
flake8 cuvarbase --count --select=E9,F63,F7,F82 --show-source --statistics
# Exit-zero treats all errors as warnings
flake8 cuvarbase --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
continue-on-error: true
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,3 +82,6 @@ work/
*HAT*txt
testing/*
custom_test_ce.py

# RunPod configuration (contains credentials)
.runpod.env
22 changes: 22 additions & 0 deletions .runpod.env.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# RunPod Configuration
# Copy this file to .runpod.env and fill in your details
# .runpod.env is gitignored for security

# RunPod SSH Connection Details
# Get these from your RunPod pod's "Connect" button
RUNPOD_SSH_HOST=ssh.runpod.io
RUNPOD_SSH_PORT=12345
RUNPOD_SSH_USER=root

# Optional: Path to SSH key (if using key-based auth)
# RUNPOD_SSH_KEY=~/.ssh/runpod_rsa

# Remote paths
RUNPOD_REMOTE_DIR=/workspace/cuvarbase

# RunPod API Key (required for scripts/runpod-create.sh and scripts/gpu-test.sh)
# Get from https://www.runpod.io/console/user/settings
RUNPOD_API_KEY=

# Pod ID (auto-populated by runpod-create.sh)
# RUNPOD_POD_ID=
19 changes: 19 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
What's new in cuvarbase
***********************
* **0.4.0**
* **BREAKING CHANGE:** Dropped Python 2.7 support - now requires Python 3.7+
* Removed ``future`` package dependency and all Python 2 compatibility code
* Modernized codebase: removed ``__future__`` imports and ``builtins`` compatibility layer
* Updated minimum dependency versions: numpy>=1.17, scipy>=1.3
* Added modern Python packaging with ``pyproject.toml``
* Added Docker support for easier installation with CUDA 11.8
* Added GitHub Actions CI/CD for automated testing across Python 3.7-3.11
* Updated classifiers to reflect Python 3.7-3.11 support
* Cleaner, more maintainable codebase (89 lines of compatibility code removed)
* Includes all features from 0.2.6:
* Added Sparse BLS implementation for efficient transit detection with small datasets
* New ``sparse_bls_cpu`` function that avoids binning and grid searching
* New ``eebls_transit`` wrapper that automatically selects between sparse (CPU) and standard (GPU) BLS
* Based on algorithm from Panahi & Zucker 2021 (https://arxiv.org/abs/2103.06193)
* More efficient for datasets with < 500 observations
* NUFFT LRT implementation for transit detection
* Refactored codebase organization with base/, memory/, and periodograms/ modules

* **0.2.5**
* swap out pycuda.autoinit for pycuda.autoprimaryctx to handle "cuFuncSetBlockShape" error

Expand Down
Loading