Add GPU support#108
Open
hakkelt wants to merge 1 commit into
Open
Conversation
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## master #108 +/- ##
==========================================
+ Coverage 95.27% 96.64% +1.37%
==========================================
Files 8 12 +4
Lines 1459 2055 +596
==========================================
+ Hits 1390 1986 +596
Misses 69 69 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
d470b88 to
11d373b
Compare
11d373b to
054142c
Compare
Author
|
CPU benchmarks are posted here: https://github.com/JuliaDSP/Wavelets.jl/actions/runs/24744254291?pr=108 It is a bit noisy, as expected on CI servers, but otherwise no significant regression is detected. I run the GPU benchmarks locally, with the following results: |
Author
|
Hi @gummif, |
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
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.
This PR introduces GPU acceleration to the library. The implementation is designed to be a drop-in solution, with no breaking changes to the existing API. Thanks to KernelAbstractions (https://juliagpu.github.io/KernelAbstractions.jl/stable/), the implementation is fully backend-agnostic.
Besides, the PR brings two additional changes:
benchmark/benchmark.jl), and another that compares the speed of CPU and GPU (benchmark/gpu_benchmark.jl).github/workflows/benchmark.yml).Project.tomlfile in thetestfolder using theworkspacefeature introduced in Julia 1.12, as this is now recommended by approach (https://pkgdocs.julialang.org/v1/creating-packages/#Recommended-approach:-Using-workspaces-with-test/Project.toml)The testing included verification (the GPU implementation's output matches the CPU functions' output) and benchmarking (the CPU implementation didn't get slower, and the GPU implementation provides significant speedup for large arrays).
Disclaimer: The code is mostly generated by GitHub Copilot.