How to handle which version install by default in CUDA-enabled recipe?
traversaro opened this issue · 1 comments
Your question:
Hello, I recently worked on CUDA-enabled recipes (mainly https://github.com/conda-forge/librealsense-feedstock and conda-forge/onnxruntime-feedstock#63) and I have two doubts that I was not able to find the answer to by looking at existing feedstocks and documentation.
The questions are:
-
Q1: If a feedstock produces both CPU and CUDA enabled builds, which one should be installed by default? I guess possible answers are:
- A: CPU build should be installed by default
- B: CUDA build should be installed by default
- C: Each feedstock should decide on its own, as the trade-off are different for each feedstock
-
Q2: Once it is decided which version is installed by default, how it should be marked which version is the one with the highest priority that should be installed by default?
- A: Increase the build number of the preferred version, as done by jaxlib (https://github.com/conda-forge/jaxlib-feedstock/blob/46a1829880e7012e9a05bf8904ddbbc9e5e51375/recipe/meta.yaml#L5)
- B: Use track_features, as done by libarrow (https://github.com/conda-forge/arrow-cpp-feedstock/blob/e5a31a003a2f11bdf72b3e9e2d90f95691aa5f6a/recipe/meta.yaml#L78) and tensorflow (https://github.com/conda-forge/tensorflow-feedstock/blob/2fdde9bd0977c9356ad192d684c8ca2751bf94ab/recipe/meta.yaml#L129)
- C: Use both an increase build number and track_features, as done by pytorch (https://github.com/conda-forge/pytorch-cpu-feedstock/blob/main/recipe/meta.yaml)
Thanks a lot in advance for any hint on this!
fyi @conda-forge/help-c-cpp @conda-forge/cuda-version @conda-forge/jaxlib @conda-forge/pytorch-cpu @conda-forge/arrow-cpp @conda-forge/tensorflow
A1: Option C, each feedstock should decide on their own because as mentioned each program is unique.
A2: Option C, conda environments which satisfy a set of package constraints are often nonunique. You will get more consistent results from the various conda package managers (conda, mamba, etc) if you use both the build number and track_features. Remember to use a randomly generated string in your feature, so that you don't accidentally share a feature with another feedstock.