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

Package request: cuSolverMp (add Conda packages) #28294

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
38 changes: 38 additions & 0 deletions recipes/cusolvermp/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{% set version = "0.5.1" %}

package:
name: cusolvermp
version: {{ version }}

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

build:
number: 0
noarch: generic

requirements:
run:
- libcal-dev 0.4.4.50
- libcusolvermp-dev 0.5.1.690

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 cuSOLVERMp packages, not intended for use in a conda-build context.
description: |
NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
cuSOLVERMp is compatible with 2D block-cyclic data layout and provides ScaLAPACK-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
118 changes: 118 additions & 0 deletions recipes/libcusolvermp/meta.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
{% set version = "0.5.1.690" %}
{% set libcal_version = "0.4.4.50" %}
{% 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" %}

{% set cuda_major = environ.get("cuda_compiler_version", "12.6").split(".")[0] %}

package:
name: libcusolvermp
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
name: libcusolvermp
name: libcusolvermp-split

Use a non-output toplevel name and then add the feedstock-name extra at the bottom.

version: {{ version }}

source:
url: https://developer.download.nvidia.com/compute/cusolvermp/redist/libcusolvermp/{{ platform }}/libcusolvermp-{{ platform }}-{{ version }}_cuda{{ cuda_major }}-archive.{{ extension }}
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 conda-forge.yml with the following contents to the libcusolvermp directory:

os_version:
  linux_64: cos7
  linux_aarch64: cos7
  linux_ppc64le: cos7

Because this is a redist we want the os version of the container to have the oldest supported glibc version. In this case glibc 2.17 (unless that's not the case?)

sha256: ea12f900a6a01e5ed6d4907d15e01ed017c903d9fae4c0da5798a7e71c90db66 # [linux64 and (cuda_compiler_version or "").startswith("12")]
sha256: 16799e30ff56e1eac31e35a4e94bc0971ef98b6352c9f278fd28954e384c7181 # [aarch64 and (cuda_compiler_version or "").startswith("12")]

build:
number: 0
skip: true # [not (linux64 or aarch64)]
skip: true # [cuda_compiler_version in (None, "None") or (cuda_compiler_version or "").startswith("11")]
script:
- cp -rv include $PREFIX
- cp -rv lib $PREFIX

test:
commands:
- test -L $PREFIX/lib/libcusolverMp.so.0
- test -f $PREFIX/lib/libcusolverMp.so.{{ lib_version }}
Comment on lines +27 to +30
Copy link
Member

Choose a reason for hiding this comment

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

Move this to the appropriate outputs section once the top-level name does not duplicate one of the outputs.


outputs:
- name: libcusolvermp
build:
run_exports:
- {{ pin_subpackage("libcusolvermp", max_pin="x") }}
files:
- lib/libcusolverMp.so.*
requirements:
build:
- {{ compiler('c') }}
- {{ compiler('cxx') }}
- {{ compiler('cuda') }}
- arm-variant * {{ arm_variant_type }} # [aarch64]
- {{ stdlib("c") }}
host:
- cuda-version {{ cuda_compiler_version }}
- libcusolver # [(cuda_compiler_version or "").startswith("12")]
- cuda-cudart # [(cuda_compiler_version or "").startswith("12")]
- libcublas # [(cuda_compiler_version or "").startswith("12")]
Comment on lines +48 to +50
Copy link
Member

Choose a reason for hiding this comment

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

Why aren't we using the "-dev" packages? Because CUDA enhanced compatibility and we pin cuda-version in the run deps?

- libcal {{ libcal_version }}
run:
- libcusolver # [(cuda_compiler_version or "").startswith("12")]
- cuda-cudart # [(cuda_compiler_version or "").startswith("12")]
- libcublas # [(cuda_compiler_version or "").startswith("12")]
Comment on lines +48 to +55
Copy link
Contributor

Choose a reason for hiding this comment

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

Since we only support CUDA12 does it make sense to clean this up?

Suggested change
- libcusolver # [(cuda_compiler_version or "").startswith("12")]
- cuda-cudart # [(cuda_compiler_version or "").startswith("12")]
- libcublas # [(cuda_compiler_version or "").startswith("12")]
- libcal {{ libcal_version }}
run:
- libcusolver # [(cuda_compiler_version or "").startswith("12")]
- cuda-cudart # [(cuda_compiler_version or "").startswith("12")]
- libcublas # [(cuda_compiler_version or "").startswith("12")]
- libcusolver
- cuda-cudart
- libcublas
- libcal {{ libcal_version }}
run:
- libcusolver
- cuda-cudart
- libcublas

- {{ pin_compatible("cuda-version", max_pin="x") }}
- {{ pin_compatible("libcal", exact=True) }}
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/cusolvermp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cusolvermp/license/index.html
summary: NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
description: |
NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
cuSOLVERMp is compatible with 2D block-cyclic data layout and provides ScaLAPACK-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/cusolvermp/
Comment on lines +61 to +71
Copy link
Member

Choose a reason for hiding this comment

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

Once the top level is renamed to not collide with one of the outputs, these identical about sections are redundant because they will inherit the top-level descriptions.


- name: libcusolvermp-dev
build:
run_exports:
- {{ pin_subpackage("libcusolvermp", max_pin="x") }}
files:
- lib/libcusolverMp.so
- include/cusolverMp.h
requirements:
host:
- cuda-version {{ cuda_compiler_version }}
run:
- {{ pin_compatible("cuda-version", max_pin="x") }}
- {{ pin_subpackage("libcusolvermp", exact=True) }}
run_constrained:
- arm-variant * {{ arm_variant_type }} # [aarch64]
test:
commands:
- test -f $PREFIX/include/cusolverMp.h
- test -L $PREFIX/lib/libcusolverMp.so
about:
home: https://docs.nvidia.com/cuda/cusolvermp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cusolvermp/license/index.html
summary: NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
description: |
NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
cuSOLVERMp is compatible with 2D block-cyclic data layout and provides ScaLAPACK-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/cusolvermp/

about:
home: https://docs.nvidia.com/cuda/cusolvermp/
license: LicenseRef-NVIDIA-End-User-License-Agreement
license_file: LICENSE
license_url: https://docs.nvidia.com/cuda/cusolvermp/license/index.html
summary: NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
description: |
NVIDIA cuSOLVERMp is a high-performance, distributed-memory, GPU-accelerated library that provides tools for the solution of dense linear systems and eigenvalue problems.
cuSOLVERMp is compatible with 2D block-cyclic data layout and provides ScaLAPACK-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/cusolvermp/

extra:
recipe-maintainers:
- conda-forge/cuda
Comment on lines +116 to +118
Copy link
Member

Choose a reason for hiding this comment

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

Suggested change
extra:
recipe-maintainers:
- conda-forge/cuda
extra:
feedstock-name: libcusolvermp
recipe-maintainers:
- conda-forge/cuda

https://conda-forge.org/docs/maintainer/adding_pkgs/#feedstock-name

Loading