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 cublasMp recipes #26580

Merged
merged 15 commits into from
Sep 10, 2024
38 changes: 38 additions & 0 deletions recipes/cublasmp/meta.yaml
Copy link
Member

Choose a reason for hiding this comment

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

Q: I wonder if it'd make things easier to make the cublasmp meta package an output of libcublasmp-feedstock? (No strong opinion, just curious if this has been considered.)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Keeping them separate helps with how we setup releases internally. The recipes would be updated with a similar process to CUDA, just on a smaller scale.

Copy link
Member

Choose a reason for hiding this comment

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

Do you not want run_exports for this package? Otherwise, what is the purpose of this package? No downstream packages should depend on this pacakge directly because they would get all of the devlopement files for libcal and libcublasmp but none of the run_exports.

Copy link
Member

Choose a reason for hiding this comment

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

Same question. What's the purpose of this package? Also, I don't see a compelling reason to keep this in a separate feedstock.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

This package is for convenient installation of all components, similar to the cuda metapackages.

Copy link
Member

Choose a reason for hiding this comment

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

Please add that this is not to be used in a conda-build context in the summary.
Also, please move this to libcublasmp recipe if there's not reason to keep this in a separate feedstock.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Added a note now.
Having separate feedstocks helps us with maintenance by keeping the design consistent across products.

Copy link
Member

Choose a reason for hiding this comment

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

That doesn't make sense to me at all.

Copy link
Member

Choose a reason for hiding this comment

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

Can you explain in more detail?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

All CUDA metapackages are in separate feedstocks, I'm not seeing a reason to change that for cublasmp. Versions of these packages are not technically coupled, they are given a release label as seen in https://developer.download.nvidia.com/compute/cublasmp/redist/redistrib_0.2.1.json

    "release_label": "0.2.1",
    "release_product": "cublasmp",

Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{% set version = "0.2.1" %}

package:
name: cublasmp
version: {{ version }}

source:
url: https://developer.download.nvidia.com/compute/cublasmp/redist/libcublasmp/LICENSE.txt
sha256: c2a95a3d181879325e56333d7a592bb6ba5ab3a44bfde9574513ccc2f87f9c68

build:
number: 0
noarch: generic
carterbox marked this conversation as resolved.
Show resolved Hide resolved

requirements:
run:
- libcal-dev 0.4.3.36
- libcublasmp-dev 0.2.1.427

test:
commands:
- exit 0

about:
home: https://developer.nvidia.com/cuda-toolkit
license_file: LICENSE.txt
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_url: https://docs.nvidia.com/cuda/eula/index.html
summary: Meta-package containing all NVIDIA cublasMp packages.
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/index.html

extra:
recipe-maintainers:
- conda-forge/cuda
3 changes: 3 additions & 0 deletions recipes/libcal/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
cuda_version:
- 11
- 12
adibbley marked this conversation as resolved.
Show resolved Hide resolved
114 changes: 114 additions & 0 deletions recipes/libcal/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
{% set version = "0.4.3.36" %}
{% set lib_version = version.split(".")[0]+"."+version.split(".")[1]+"."+version.split(".")[2]+".0" %}
{% set platform = "linux-x86_64" %} # [linux64]
{% set platform = "linux-sbsa" %} # [aarch64]
{% set extension = "tar.xz" %}

package:
name: libcal
version: {{ version }}

source:
url: https://developer.download.nvidia.com/compute/cublasmp/redist/libcal/{{ platform }}/libcal-{{ platform }}-{{ version }}_cuda{{ cuda_version }}-archive.{{ extension }}
sha256: 271d9951ee5b5e4e6e9fcb7079ce3c36f5dd581b3a0f7d1937f81e0c0e058fb8 # [linux64 and cuda_version == 11]
sha256: eac07cc1524b37c693944e3e91c4857ed66bc2bb2579407ce9795916c9a113a4 # [linux64 and cuda_version == 12]
sha256: d0016b62d42916e37cd065279eb8fa4947e3423220812c696c09ea417477c770 # [aarch64 and cuda_version == 11]
sha256: 3500c18236fc449cf0395ee422c5a1771ce6349dc547951eaa6562ffc4fc762c # [aarch64 and cuda_version == 12]

build:
number: 0
skip: true # [not (linux64 or aarch64)]
missing_dso_whitelist:
- "*/libcuda.so.*"
script:
- cp -rv include $PREFIX
- cp -rv lib $PREFIX
- cp -rv share $PREFIX
adibbley marked this conversation as resolved.
Show resolved Hide resolved
- cp -rv src $PREFIX
adibbley marked this conversation as resolved.
Show resolved Hide resolved

test:
commands:
- test -L $PREFIX/lib/libcal.so.0
- test -f $PREFIX/lib/libcal.so.{{ lib_version }}

outputs:
- name: libcal
files:
- lib/libcal.so.*
adibbley marked this conversation as resolved.
Show resolved Hide resolved
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- {{ stdlib("c") }}
host:
- cuda-version {{ cuda_version }}
- ucc
run:
- {{ pin_compatible("cuda-version", max_pin="x") }}
- ucc
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
# Tests are defined at the top level, due to package/output name conflicts.
about:
home: https://docs.nvidia.com/cuda/cublasmp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cublasmp/license/index.html
summary: NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/cublas/

- name: libcal-dev
build:
run_exports:
- {{ pin_subpackage("libcal", max_pin="x") }}
files:
- lib/libcal.so
- include/cal.h
- share/ucc.conf
adibbley marked this conversation as resolved.
Show resolved Hide resolved
- src/libcal
requirements:
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x") }}
- {{ pin_subpackage("libcal", exact=True) }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -f $PREFIX/include/cal.h
- test -L $PREFIX/lib/libcal.so
- test -f $PREFIX/share/ucc.conf
adibbley marked this conversation as resolved.
Show resolved Hide resolved
- test -d $PREFIX/src/libcal
about:
home: https://docs.nvidia.com/cuda/cublasmp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cublasmp/license/index.html
summary: NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/cublas/

about:
home: https://docs.nvidia.com/cuda/cublasmp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cublasmp/license/index.html
summary: NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/cublas/

extra:
recipe-maintainers:
- conda-forge/cuda
3 changes: 3 additions & 0 deletions recipes/libcublasmp/conda_build_config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
cuda_version:
- 11
- 12
adibbley marked this conversation as resolved.
Show resolved Hide resolved
110 changes: 110 additions & 0 deletions recipes/libcublasmp/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
{% set version = "0.2.1.427" %}
{% set lib_version = version.split(".")[0]+"."+version.split(".")[1]+"."+version.split(".")[2] %}
{% set platform = "linux-x86_64" %} # [linux64]
{% set platform = "linux-sbsa" %} # [aarch64]
{% set extension = "tar.xz" %}

package:
name: libcublasmp
version: {{ version }}

source:
url: https://developer.download.nvidia.com/compute/cublasmp/redist/libcublasmp/{{ platform }}/libcublasmp-{{ platform }}-{{ version }}_cuda{{ cuda_version }}-archive.{{ extension }}
sha256: 891e86a28cfe08772f2485e4db7ec8d28292e6a1b0e78967d08404c8371925b5 # [linux64 and cuda_version == 11]
sha256: d86648a6e1f1d35eb25af258e1828e483aa07c568b95941f349fc68316f56290 # [linux64 and cuda_version == 12]
sha256: 5f5813814343e83eeb743ddb4b1df0b346cdbf2b2026b32a0bc4a349361ec8e4 # [aarch64 and cuda_version == 11]
sha256: d6cacf073bf87987b0f20a7a5a168ec503264d295e3aebf9df177326e8fcb286 # [aarch64 and cuda_version == 12]

build:
number: 0
skip: true # [not (linux64 or aarch64)]
script:
- cp -rv include $PREFIX
- cp -rv lib $PREFIX

test:
commands:
- test -L $PREFIX/lib/libcublasmp.so.0
- test -f $PREFIX/lib/libcublasmp.so.{{ lib_version }}

outputs:
- name: libcublasmp
files:
- lib/libcublasmp.so.*
adibbley marked this conversation as resolved.
Show resolved Hide resolved
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- {{ stdlib("c") }}
host:
- cuda-version {{ cuda_version }}
- libcublas # [cuda_version == 12]
adibbley marked this conversation as resolved.
Show resolved Hide resolved
- cudatoolkit # [cuda_version == 11]
- libcal
adibbley marked this conversation as resolved.
Show resolved Hide resolved
run:
- {{ pin_compatible("cuda-version", max_pin="x") }}
- libcublas # [cuda_version == 12]
- cudatoolkit # [cuda_version == 11]
- libcal
adibbley marked this conversation as resolved.
Show resolved Hide resolved
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
# Tests are defined at the top level, due to package/output name conflicts.
about:
home: https://docs.nvidia.com/cuda/cublasmp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cublasmp/license/index.html
summary: NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/cublas/

- name: libcublasmp-dev
build:
run_exports:
- {{ pin_subpackage("libcublasmp", max_pin="x") }}
files:
- lib/libcublasmp.so
- include/cublasmp.h
requirements:
host:
- cuda-version {{ cuda_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x") }}
- {{ pin_subpackage("libcublasmp", exact=True) }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -f $PREFIX/include/cublasmp.h
- test -L $PREFIX/lib/libcublasmp.so
about:
home: https://docs.nvidia.com/cuda/cublasmp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cublasmp/license/index.html
summary: NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/cublas/

about:
home: https://docs.nvidia.com/cuda/cublasmp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cublasmp/license/index.html
summary: NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
description: |
NVIDIA cublasMp is a high performance, multi-process, GPU accelerated library for distributed basic dense linear algebra.
adibbley marked this conversation as resolved.
Show resolved Hide resolved
cuBLASMp is compatible with 2D block-cyclic data layout and provides PBLAS-like C APIs.
A companion library, CAL, contains utilities to manage communicators and to synchronize processes in a safe way.
doc_url: https://docs.nvidia.com/cuda/cublas/

extra:
recipe-maintainers:
- conda-forge/cuda
Loading