Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding cuda-cudart #21723

Merged
merged 45 commits into from
Apr 12, 2023
Merged
Show file tree
Hide file tree
Changes from 42 commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
5e7ab63
Adding cuda-cudart
adibbley Jan 13, 2023
54e9ad1
Update license
adibbley Jan 13, 2023
77d5387
Set targets directory linux only
adibbley Jan 13, 2023
cb4ddf1
Fixup windows libs
adibbley Jan 13, 2023
aeabc3a
Test block expected above outputs
adibbley Jan 13, 2023
753fdda
Fixing copy paste in test
adibbley Jan 13, 2023
2a95315
Update recipes/cuda-cudart/meta.yaml
adibbley Jan 14, 2023
cb06971
Update recipes/cuda-cudart/meta.yaml
adibbley Jan 14, 2023
e47fc74
Update recipes/cuda-cudart/meta.yaml
adibbley Jan 14, 2023
47c0e12
Add targets include directory
adibbley Jan 16, 2023
1a3b333
Pick up a few more missing headers
adibbley Jan 16, 2023
f8e274b
Update Windows install paths
adibbley Jan 17, 2023
c0cd174
Adding pkgconfigs
adibbley Jan 18, 2023
3ab1ad9
Moving post-link.sh into build.sh
adibbley Jan 19, 2023
dc4a28d
Fixing run/dev split on windows and adding output tests
adibbley Jan 20, 2023
dada5b9
Add cuda-cudart-static and cuda-driver-dev tests
adibbley Jan 20, 2023
ec2a827
Add run_exports for cuda-cudart-dev
adibbley Jan 23, 2023
3d09008
Flip dev to require static package
adibbley Jan 23, 2023
7fdd23e
Update recipes/cuda-cudart/meta.yaml
adibbley Jan 24, 2023
d966b9a
Add cross package proposal
adibbley Feb 2, 2023
855014c
Fix dependencies and set cross packages to noarch
adibbley Feb 2, 2023
c098e5d
Flip build/requirements in outputs
adibbley Feb 2, 2023
039461a
Enable target package for windows
adibbley Feb 6, 2023
a3c7bae
Adding run_exports to dev packages
adibbley Feb 6, 2023
fae8026
More specific wildcards for runtime package
adibbley Feb 7, 2023
7fd615f
Adding cuda-cccl dependency
adibbley Feb 14, 2023
cbce911
Update recipes/cuda-cudart/meta.yaml
adibbley Mar 15, 2023
d0847bb
Apply suggestions from code review
adibbley Mar 17, 2023
9278294
Apply suggestions from code review
adibbley Mar 22, 2023
a974fbb
Merge branch 'main' into cuda-cudart
jakirkham Mar 27, 2023
f4c6f2d
Update recipe.
bdice Mar 31, 2023
7b0d9a7
Depend on cuda-cccl_{{ target_platform }} in cuda-cudart-dev_{{ targe…
bdice Apr 4, 2023
5eb9324
Merge pull request #2 from bdice/cuda-cudart
adibbley Apr 4, 2023
f239ddc
Fix stubs/libcuda.so link
adibbley Apr 5, 2023
5106c80
Add about sections to all outputs
adibbley Apr 5, 2023
26d7a52
Update recipes/cuda-cudart/meta.yaml
adibbley Apr 5, 2023
97d62e3
Move cuda-cccl to run requirement
adibbley Apr 5, 2023
097daa9
Apply suggestions from code review
adibbley Apr 5, 2023
e48d9b1
Merge branch 'main' into cuda-cudart
jakirkham Apr 7, 2023
01063be
Merge branch 'main' into cuda-cudart
jakirkham Apr 7, 2023
52bd85d
Skip files section for Windows metapackages
adibbley Apr 11, 2023
20212b9
Update recipes/cuda-cudart/meta.yaml
adibbley Apr 11, 2023
622cf4d
Fix cuda-cudart tests.
bdice Apr 11, 2023
251fa03
Merge pull request #4 from bdice/fix-cudart-tests
adibbley Apr 11, 2023
2af2140
Normalize the whitespace to match the other lines like this.
adibbley Apr 11, 2023
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
6 changes: 6 additions & 0 deletions recipes/cuda-cudart/bld.bat
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
if not exist %PREFIX% mkdir %PREFIX%

move lib\x64\* %LIBRARY_LIB%
move bin\* %LIBRARY_BIN%
move include\cooperative_groups %LIBRARY_INC%
move include\* %LIBRARY_INC%
33 changes: 33 additions & 0 deletions recipes/cuda-cudart/build.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#!/bin/bash

# Install to conda style directories
[[ -d lib64 ]] && mv lib64 lib
mkdir -p ${PREFIX}/lib/stubs
[[ -d pkg-config ]] && mv pkg-config ${PREFIX}/lib/pkgconfig
[[ -d "$PREFIX/lib/pkgconfig" ]] && sed -E -i "s|cudaroot=.+|cudaroot=$PREFIX|g" $PREFIX/lib/pkgconfig/cuda*.pc

[[ ${target_platform} == "linux-64" ]] && targetsDir="targets/x86_64-linux"
[[ ${target_platform} == "linux-ppc64le" ]] && targetsDir="targets/ppc64le-linux"
[[ ${target_platform} == "linux-aarch64" ]] && targetsDir="targets/sbsa-linux"

for i in `ls`; do
[[ $i == "build_env_setup.sh" ]] && continue
[[ $i == "conda_build.sh" ]] && continue
[[ $i == "metadata_conda_debug.yaml" ]] && continue
if [[ $i == "lib" ]] || [[ $i == "include" ]]; then
# Headers and libraries are installed to targetsDir
mkdir -p ${PREFIX}/${targetsDir}
mkdir -p ${PREFIX}/$i
cp -rv $i ${PREFIX}/${targetsDir}
if [[ $i == "lib" ]]; then
for j in "$i"/{*.a,*.so,stubs/*.so}*; do
# Shared and static libraries are symlinked in $PREFIX/lib
ln -sv ${PREFIX}/${targetsDir}/$j ${PREFIX}/$j
done
fi
else
# Put all other files in targetsDir
mkdir -p ${PREFIX}/${targetsDir}/${PKG_NAME}
cp -rv $i ${PREFIX}/${targetsDir}/${PKG_NAME}/$i
fi
done
2 changes: 2 additions & 0 deletions recipes/cuda-cudart/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
arm_variant_type: # [aarch64]
- sbsa # [aarch64]
290 changes: 290 additions & 0 deletions recipes/cuda-cudart/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,290 @@
{% set name = "cuda-cudart" %}
{% set version = "12.0.107" %}
adibbley marked this conversation as resolved.
Show resolved Hide resolved
{% set cuda_version = "12.0" %}
{% set platform = "linux-x86_64" %} # [linux64]
{% set platform = "linux-ppc64le" %} # [ppc64le]
{% set platform = "linux-sbsa" %} # [aarch64]
{% set platform = "windows-x86_64" %} # [win]
{% set target_name = "x86_64-linux" %} # [linux64]
{% set target_name = "ppc64le-linux" %} # [ppc64le]
{% set target_name = "sbsa-linux" %} # [aarch64]
{% set target_name = "x64" %} # [win]
{% set extension = "tar.xz" %} # [not win]
{% set extension = "zip" %} # [win]

package:
name: {{ name|lower }}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently the top-level package and one of the outputs have the same name. We should change these to different names to avoid issues. We could rename the top-level name to something like (cuda-cudart-split) or we could rename the library to cuda-cudart-shared (or similar)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cuda-cudart-split is better

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ping

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can I get some context on the issue here please? Ideally we would have consistent naming for all component feedstocks without needing to know if that component has multiple outputs.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the issue is that the top level package and the output defined on line 40 have the same name which makes things ambiguous at best and likely breaks things.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sounds right. It use to be the case different names were required just to get through staged-recipes or run conda-build.

Though it is possible this is less of an issue than has been in the past. For example libnuma was added in PR ( #21176 ) and use the same top-level package name and output name. The feedstock still follows this pattern. AFAICT it is working ok.

So maybe this isn't actually an issue anymore

version: {{ version }}

source:
url: https://developer.download.nvidia.com/compute/cuda/redist/cuda_cudart/{{ platform }}/cuda_cudart-{{ platform }}-{{ version }}-archive.{{ extension }}
sha256: c0e16e9593a69afe4997ae96a8b024e751ebce0254523fd969b08bb028582d23 # [linux64]
sha256: d785fd613e35e3761fdb0016a31a56417f570605cbfb9a93ca9dc68be6789188 # [ppc64le]
sha256: 5de248c6c203f6c91ce34256bbfc028bc87c1b0c552f9f51edb65e60ad665f63 # [aarch64]
sha256: 1cd8516feee068c6d718453e76b0dfcbee27844a35d4f3aa608a3d316190309c # [win]

build:
number: 0
skip: true # [osx or win]

outputs:
- name: cuda-cudart
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
files:
- lib/libcu*.so.* # [linux]
- targets/{{ target_name }}/lib/libcu*.so.* # [linux]
- Library\bin\cudart*.dll # [win]
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -L $PREFIX/lib/libcudart.so.{{ version }} # [linux]
- test -L $PREFIX/lib/libcudart.so.{{ version.split(".")[0] }} # [linux]
- test -L $PREFIX/targets/{{ target_name }}/lib/libcudart.so.{{ version }} # [linux]
adibbley marked this conversation as resolved.
Show resolved Hide resolved
- test -f $PREFIX/targets/{{ target_name }}/lib/libcudart.so.{{ version.split(".")[0] }} # [linux]
- if not exist %LIBRARY_BIN%\cudart64_{{ version.split(".")[0] }}.dll exit 1 # [win]
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

- name: cuda-cudart-dev
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
build:
run_exports:
- {{ pin_subpackage("cuda-cudart", max_pin="x") }}
files: # [linux]
- lib/libcu*.so # [linux]
- lib/pkgconfig # [linux]
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
- {{ pin_subpackage("cuda-cudart", exact=True) }}
- {{ pin_subpackage("cuda-cudart-dev_" + target_platform, exact=True) }}
- {{ pin_subpackage("cuda-cudart-static", exact=True) }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
adibbley marked this conversation as resolved.
Show resolved Hide resolved
test:
commands:
- test -L $PREFIX/lib/libcudart.so # [linux]
- test -f $PREFIX/lib/pkgconfig/cuda-*.pc # [linux]
- test -f $PREFIX/lib/pkgconfig/cudart-*.pc # [linux]
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

- name: cuda-cudart-dev_{{ target_platform }}
build:
noarch: generic
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
run_exports:
- {{ pin_subpackage("cuda-cudart", max_pin="x") }}
files:
- targets/{{ target_name }}/include/* # [linux]
- targets/{{ target_name }}/include/cooperative_groups/* # [linux]
- targets/{{ target_name }}/lib/*.so # [linux]
- Library\include # [win]
- Library\lib\cuda.lib # [win]
- Library\lib\cudadevrt.lib # [win]
- Library\lib\cudart.lib # [win]
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
- cuda-cudart-static_{{ target_platform }}
kkraus14 marked this conversation as resolved.
Show resolved Hide resolved
- cuda-cccl_{{ target_platform }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -f $PREFIX/targets/{{ target_name }}/include/cuda.h # [linux]
- test -f $PREFIX/targets/{{ target_name }}/include/cuda_runtime.h # [linux]
- test -f $PREFIX/targets/{{ target_name }}/include/cuda_runtime_api.h # [linux]
- test -L $PREFIX/targets/{{ target_name }}/lib/libcudart.so # [linux]
- if not exist %LIBRARY_INC%\cuda.h exit 1 # [win]
- if not exist %LIBRARY_INC%\cuda_runtime.h exit 1 # [win]
- if not exist %LIBRARY_INC%\cuda_runtime_api.h exit 1 # [win]
- if not exist %LIBRARY_LIB%\cuda.lib exit 1 # [win]
- if not exist %LIBRARY_LIB%\cudadevrt.lib exit 1 # [win]
- if not exist %LIBRARY_LIB%\cudart.lib exit 1 # [win]
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

- name: cuda-cudart-static
adibbley marked this conversation as resolved.
Show resolved Hide resolved
files: # [linux]
- lib/*.a # [linux]
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
- {{ pin_subpackage("cuda-cudart-static_" + target_platform, exact=True) }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -L $PREFIX/lib/libcudart_static.a # [linux]
- test -L $PREFIX/lib/libcudadevrt.a # [linux]
- test -L $PREFIX/lib/libculibos.a # [linux]
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

- name: cuda-cudart-static_{{ target_platform }}
adibbley marked this conversation as resolved.
Show resolved Hide resolved
build:
noarch: generic
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
files:
- targets/{{ target_name }}/lib/*.a # [linux]
- Library\lib\cudart_static.lib # [win]
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -f $PREFIX/targets/{{ target_name }}/lib/libcudart_static.a # [linux]
- test -f $PREFIX/targets/{{ target_name }}/lib/libcudadevrt.a # [linux]
- test -f $PREFIX/targets/{{ target_name }}/lib/libculibos.a # [linux]
- if not exist %LIBRARY_LIB%\cudart_static.lib exit 1 # [win]
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

- name: cuda-driver-dev
kkraus14 marked this conversation as resolved.
Show resolved Hide resolved
isuruf marked this conversation as resolved.
Show resolved Hide resolved
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
build:
skip: True # [not linux]
files:
- lib/stubs/libcuda.so
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
- cuda-driver-dev_{{ target_platform }}
kkraus14 marked this conversation as resolved.
Show resolved Hide resolved
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -L $PREFIX/lib/stubs/libcuda.so
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

- name: cuda-driver-dev_{{ target_platform }}
adibbley marked this conversation as resolved.
Show resolved Hide resolved
build:
skip: True # [not linux]
noarch: generic
jakirkham marked this conversation as resolved.
Show resolved Hide resolved
files:
- targets/{{ target_name }}/lib/stubs/libcuda.so
requirements:
build:
- {{ compiler("c") }}
- {{ compiler("cxx") }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- sysroot_{{ target_platform }} 2.17 # [linux]
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x.x") }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -f $PREFIX/targets/{{ target_name }}/lib/stubs/libcuda.so
about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: CUDA Runtime native Libraries
description: |
CUDA Runtime native Libraries
doc_url: https://docs.nvidia.com/cuda/index.html

extra:
recipe-maintainers:
- adibbley