Comments (4)
Hey Matt, a cuda-version metapackage for pip is definitely something we'd like to implement, it just hasn't really risen that high on the priority list so far.
Your proposal with extras is interesting. There is some benefit to using extras to specify the version via a cucim metapackage as opposed to using separate packages the way we currently have (assuming the cuda-version metapackage were introduced), but not a big one The way I see it, there are three problems we want to solve.
Ensure consistent package installation
Consider the following two packages:
[project]
name = "cucim-cu11"
dependencies = [
"cuda-version~=11",
]
[project]
name = "cucim-cu12"
dependencies = [
"cuda-version~=12",
]
If we wanted to install cucim along with another RAPIDS package that was also CUDA-dependent and structured the same way, say cuml, the cuda-version
metapackage would prevent us from doing something like pip install cucim-cu11 cuml-cu12
because those CUDA versions would be mismatched. That works just as well using two separate packages as via a package with extras.
Avoid dependent packages from needing to update the dependency name
If you have a package depending on cucim, then the cucim[cudefault]
approach is a nice way to save you from needing to periodically bump your dependency list from cucim-cuX
to cucim-cu{X+1}
.
Allow version selection solely via cuda-version
With our conda packages, you can do something quite nice with cuda-version:
conda install cucim cuml cuda-version=12.0
Rather than specifying a version for every package, you can just specify the cuda-version
package version and the conda solver will correctly figure out the versions of cuda-cudart and cuda-cccl to include. Ideally we'd like to replicate something like that for pip, but that will require a bit more thought. I also don't think that would benefit much from the extras approach.
Does this summary seem right to you? Basically the second item is the main one where extras give you a benefit AFAICT.
from cucim.
Related discussion in issue: rapidsai/build-planning#28
from cucim.
Hi Vyas,
@vyasr Yes, you a right, the second point is the main benefit which could be solved with the current extras support in the ecosystem and the proposed extras usage:
Avoid dependent packages from needing to update the dependency name
but not a big one The way I see it,
It is a big one, and this importance comes from taking the perspective of someone who is developing a package that would like to depend on a RAPIDS package. Or, from someone who just wants to use that package and needing to know the details of the CUDA version or encountering conflicts is a major pain point.
from cucim.
It seems it could be this extras approach or this proposed selector package feature?
CC @msarahan
from cucim.
Related Issues (20)
- Enable `libcufile` on `linux_aarch64` (w/CUDA 12.2+) HOT 1
- [BUG] `click` is listed only in test requirements but is a required in order to use `cucim.clara` HOT 2
- Is `cucim.code-workspace` still used? HOT 2
- Add `devcontainer`s HOT 1
- Order of axes for `CuImage.origin`? HOT 4
- [FEA] CUDA accelerated foolfill algorithm with distance return HOT 2
- [BUG] No module named 'cucim.clara._cucim' HOT 5
- investigate switching KDTree usage from SciPy to CuPy HOT 2
- Explore NumPy 2 compatibility HOT 23
- [FEA] Add `python/skimage` to a `conda` channel (or `pypi`) HOT 1
- [QST] skimage draw module HOT 1
- Replace or drop `pytest-lazy-fixture` HOT 4
- [FEA] PyPI package (wheel) release for the cucim.skimage module on non-Linux platforms (Windows, etc.)
- investigate E721 (pycodestyle) ruff error about == comparisons of types
- Upgrading to scikit-image 0.24.0
- [BUG] test failures in shared memory variant of 2D filtering kernels on Windows HOT 1
- [BUG] test_read_region_cuda_memleak failing (GPUtil does not support Python 3.12) HOT 1
- [FEA] DeepZoomGenerator HOT 1
- Pip install failure on Linux HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cucim.