Skip to content

Add thirdparty tests of numba extensions#348

Merged
gmarkall merged 8 commits intoNVIDIA:mainfrom
brandon-b-miller:cudf-ci-tests
Jul 29, 2025
Merged

Add thirdparty tests of numba extensions#348
gmarkall merged 8 commits intoNVIDIA:mainfrom
brandon-b-miller:cudf-ci-tests

Conversation

@brandon-b-miller
Copy link
Contributor

This PR introduces an extra job that is intended to test thirdparty libraries whom depend on the numba extension api in a complex way.

@copy-pr-bot
Copy link

copy-pr-bot bot commented Jul 23, 2025

Auto-sync is disabled for ready for review pull requests in this repository. Workflows must be run manually.

Contributors can view more details about this message here.

@gmarkall
Copy link
Contributor

/ok to test

@gmarkall
Copy link
Contributor

I'm not sure I've understood the idea behind this PR - wouldn't it be simpler and more comprehensive to have a CI job that installs cuDF with the numba-cuda wheel we built, and runs its UDF tests, rather than adding our own new tests that depend on cuDF?

@brandon-b-miller
Copy link
Contributor Author

cuDF doesn't ship it's tests - we could probably vendor them wholesale but it seems a bit over kill. These felt like a small enough group of smoke tests to touch all it's usage of numba's extension API

@gmarkall gmarkall added the 2 - In Progress Currently a work in progress label Jul 24, 2025
@gmarkall
Copy link
Contributor

cuDF doesn't ship it's tests - we could probably vendor them wholesale but it seems a bit over kill. These felt like a small enough group of smoke tests to touch all it's usage of numba's extension API

Can we do a shallow clone of the cuDF repo instead?

@brandon-b-miller
Copy link
Contributor Author

cuDF doesn't ship it's tests - we could probably vendor them wholesale but it seems a bit over kill. These felt like a small enough group of smoke tests to touch all it's usage of numba's extension API

Can we do a shallow clone of the cuDF repo instead?

It's an option, but I believe there are some tradeoffs here. If we always clone main, there's a good chance our CI is broken whenever cuDF's CI is broken. We could avoid this by checking out a static commit or release, but I think that might be something we'd need to keep up to date manually.

The other thing is that a lot of cuDF's UDF tests are more about checking the results compatibility with pandas rather than flexing additional parts of numba's extension API, some of them are just a bit redundant in this context. For instance I don't think it string.upper and string.lower test different parts of numba as much as they test different parts of cuDF.

@gmarkall
Copy link
Contributor

It's an option, but I believe there are some tradeoffs here. If we always clone main, there's a good chance our CI is broken whenever cuDF's CI is broken. We could avoid this by checking out a static commit or release, but I think that might be something we'd need to keep up to date manually.

I think keeping track with the latest release sounds good. I would be happy with us manually updating it since there's a release every two months, and it needn't be time critical to update it. Trying to use cuDF main does seem likely to introduce noise and churn for us. I envisage for now we could pip install cuDF 25.06 and check out the v25.06 tag to run the corresponding tests.

The other thing is that a lot of cuDF's UDF tests are more about checking the results compatibility with pandas rather than flexing additional parts of numba's extension API, some of them are just a bit redundant in this context. For instance I don't think it string.upper and string.lower test different parts of numba as much as they test different parts of cuDF.

I think they do compile a lot of functions to run a larger number of tests with different types though. I expect that to be more likely to catch edge cases and intermittent errors in the presence of using the extension APIs, so although it wouldn't be widening the surface area of API usage necessarily, I think it would be stressing the Numba-CUDA infrastructure more than just a small number of tests in our own test suite does - I think this is exactly what I want to get out of having the cuDF UDF tests run.

@brandon-b-miller
Copy link
Contributor Author

/ok to test

@brandon-b-miller
Copy link
Contributor Author

/ok to test

@brandon-b-miller
Copy link
Contributor Author

/ok to test

@brandon-b-miller
Copy link
Contributor Author

/ok to test

@gmarkall gmarkall added 3 - Ready for Review Ready for review by team and removed 2 - In Progress Currently a work in progress labels Jul 29, 2025
@gmarkall gmarkall merged commit 56d1097 into NVIDIA:main Jul 29, 2025
41 checks passed
@gmarkall gmarkall added 5 - Ready to merge Testing and reviews complete, ready to merge and removed 3 - Ready for Review Ready for review by team labels Jul 29, 2025
gmarkall added a commit to gmarkall/numba-cuda that referenced this pull request Jul 31, 2025
- [NFC] FileCheck tests check all overloads (NVIDIA#354)
- [REVIEW][NFC] Vendor in serialize to allow for future CUDA-specific refactoring and changes (NVIDIA#349)
- Vendor in usecases used in testing (NVIDIA#359)
- Add thirdparty tests of numba extensions (NVIDIA#348)
- Support running tests in parallel (NVIDIA#350)
- Add more debuginfo tests (NVIDIA#358)
- [REVIEW][NFC] Vendor in the Cache, CacheImpl used by CUDACache and CUDACacheImpl to allow for future CUDA-specific refactoring and changes (NVIDIA#334)
- [NFC] Vendor in Dispatcher as CUDADispatcher to allow for future CUDA-specific customization (NVIDIA#338)
- Vendor in BaseNativeLowering and BaseLower for CUDA-specific customizations (NVIDIA#329)
- [REVIEW] Vendor in the CompilerBase used by CUDACompiler to allow for future CUDA-specific refactoring and changes (NVIDIA#322)
- Vendor in Codegen and CodeLibrary for CUDA-specific customization (NVIDIA#327)
- Disable tests that deadlock due to NVIDIA#317 (NVIDIA#356)
- FIX: Add type check for shape elements in DeviceNDArrayBase constructor (NVIDIA#352)
- Merge pull request NVIDIA#265 from lakshayg/fp16-support
- Add performance warning
- Fix tests
- Create and register low++ bindings for float16
- Create typing/target registries for float16
- Replace Numbast generated lower_casts
- Replace Numbast generated operators
- Alias __half to numba.core.types.float16
- Generate fp16 bindings using numbast
- Remove existing fp16 logic
- [REVIEW][NFC] Vendor in the utils and cgutils to allow for future CUDA-specific refactoring and changes (NVIDIA#340)
- [RFC,TESTING] Add filecheck test infrastructure (NVIDIA#342)
- Migrate test infra to pytest (NVIDIA#347)
- Add .vscode to gitignore (NVIDIA#344)
- [NFC] Add dev dependencies to project config (NVIDIA#341)
- Allow Inspection of Link-Time Optimized PTX (NVIDIA#326)
- [NFC] Vendor in DIBuilder used by CUDADIBuilder (NVIDIA#332)
- Add guidance on setting up pre-commit (NVIDIA#339)
- [Refactor][NFC] Vendor in MinimalCallConv (NVIDIA#333)
- [Refactor][NFC] Vendor in BaseCallConv (NVIDIA#324)
- [REVIEW] Vendor in CompileResult as CUDACompileResult to allow for future CUDA-specific customizations (NVIDIA#325)
@gmarkall gmarkall mentioned this pull request Jul 31, 2025
gmarkall added a commit that referenced this pull request Jul 31, 2025
- [NFC] FileCheck tests check all overloads (#354)
- [REVIEW][NFC] Vendor in serialize to allow for future CUDA-specific
refactoring and changes (#349)
- Vendor in usecases used in testing (#359)
- Add thirdparty tests of numba extensions (#348)
- Support running tests in parallel (#350)
- Add more debuginfo tests (#358)
- [REVIEW][NFC] Vendor in the Cache, CacheImpl used by CUDACache and
CUDACacheImpl to allow for future CUDA-specific refactoring and changes
(#334)
- [NFC] Vendor in Dispatcher as CUDADispatcher to allow for future
CUDA-specific customization (#338)
- Vendor in BaseNativeLowering and BaseLower for CUDA-specific
customizations (#329)
- [REVIEW] Vendor in the CompilerBase used by CUDACompiler to allow for
future CUDA-specific refactoring and changes (#322)
- Vendor in Codegen and CodeLibrary for CUDA-specific customization
(#327)
- Disable tests that deadlock due to #317 (#356)
- FIX: Add type check for shape elements in DeviceNDArrayBase
constructor (#352)
- Merge pull request #265 from lakshayg/fp16-support
- Add performance warning
- Fix tests
- Create and register low++ bindings for float16
- Create typing/target registries for float16
- Replace Numbast generated lower_casts
- Replace Numbast generated operators
- Alias __half to numba.core.types.float16
- Generate fp16 bindings using numbast
- Remove existing fp16 logic
- [REVIEW][NFC] Vendor in the utils and cgutils to allow for future
CUDA-specific refactoring and changes (#340)
- [RFC,TESTING] Add filecheck test infrastructure (#342)
- Migrate test infra to pytest (#347)
- Add .vscode to gitignore (#344)
- [NFC] Add dev dependencies to project config (#341)
- Allow Inspection of Link-Time Optimized PTX (#326)
- [NFC] Vendor in DIBuilder used by CUDADIBuilder (#332)
- Add guidance on setting up pre-commit (#339)
- [Refactor][NFC] Vendor in MinimalCallConv (#333)
- [Refactor][NFC] Vendor in BaseCallConv (#324)
- [REVIEW] Vendor in CompileResult as CUDACompileResult to allow for
future CUDA-specific customizations (#325)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

5 - Ready to merge Testing and reviews complete, ready to merge

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants