Skip to content

Commit c71139b

Browse files
committed
nvshmem 3.1.7
1 parent fbc9518 commit c71139b

File tree

4 files changed

+254
-0
lines changed

4 files changed

+254
-0
lines changed
+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
#!/bin/bash
2+
3+
set -e
4+
5+
mkdir -p $PREFIX/lib/cmake/nvshmem/
6+
7+
cp -rv bin $PREFIX/
8+
cp -rv include/ $PREFIX/
9+
cp -rv lib/cmake/ $PREFIX/lib/
10+
cp -rv lib/libnvshmem_host.so $PREFIX/lib
11+
cp -rv lib/nvshmem_bootstrap*.so $PREFIX/lib
12+
cp -rv lib/nvshmem_transport*.so $PREFIX/lib
13+
cp -rv share/ $PREFIX/
14+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
# https://docs.nvidia.com/deeplearning/cudnn/v9.3.0/reference/support-matrix.html#cpu-architecture-and-os-requirements
2+
c_stdlib_version: # [linux]
3+
- 2.28 # [linux]

recipes/libnvshmem/meta.yaml

+198
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,198 @@
1+
{% set version = "3.1.7" %}
2+
{% set platform = "linux-x86_64" %} # [linux64]
3+
{% set platform = "linux-sbsa" %} # [aarch64]
4+
{% set extension = "tar.xz" %}
5+
6+
{% set soname = version.split(".")[0] %}
7+
{% set cuda_major = environ.get("cuda_compiler_version", "12.6").split(".")[0] %}
8+
9+
package:
10+
name: libnvshmem-split
11+
version: {{ version }}
12+
13+
source:
14+
url: https://developer.download.nvidia.com/compute/nvshmem/redist/libnvshmem/{{ platform }}/libnvshmem-{{ platform }}-{{ version }}_cuda{{ cuda_major }}-archive.{{ extension }}
15+
sha256: 4e03e40d16770a5bdbcefeb7f18579bdfc07aaa7b09a4825a7ab9b5122f69567 # [linux64 and (cuda_compiler_version or "").startswith("11")]
16+
sha256: 128c62dd19926f58d1ff69290917dd50f3fb1690567f52d3965cd8fbfb9b2412 # [linux64 and (cuda_compiler_version or "").startswith("12")]
17+
sha256: 03e4404e888609bc98f496453896acc34c9ca7bbc39cc32b41d677bcaab71c49 # [aarch64 and (cuda_compiler_version or "").startswith("12")]
18+
19+
build:
20+
number: 0
21+
skip: true # [not (linux64 or aarch64)]
22+
skip: true # [cuda_compiler_version in (None, "None") or (aarch64 and (cuda_compiler_version or "").startswith("11"))]
23+
error_overlinking: false
24+
25+
outputs:
26+
- name: libnvshmem{{ soname }}
27+
build:
28+
missing_dso_whitelist:
29+
- "*libcuda.so*" # driver
30+
run_exports:
31+
- {{ pin_subpackage("libnvshmem" ~ soname, max_pin="x") }}
32+
script: |
33+
cp -rv lib $PREFIX/
34+
files:
35+
- lib/libnvshmem_host.so.*
36+
- lib/nvshmem_bootstrap*.so.*
37+
- lib/nvshmem_transport*.so.*
38+
requirements:
39+
build:
40+
- {{ compiler('c') }}
41+
- {{ compiler('cxx') }}
42+
- {{ compiler('cuda') }}
43+
- arm-variant * {{ arm_variant_type }} # [aarch64]
44+
- {{ stdlib("c") }}
45+
host:
46+
- cuda-version {{ cuda_compiler_version }}
47+
- cuda-cudart-dev # [(cuda_compiler_version or "").startswith("12")]
48+
- cudatoolkit # [(cuda_compiler_version or "").startswith("11")]
49+
- openmpi 5.0.6
50+
run:
51+
- {{ pin_compatible("cuda-version", min_pin="x", max_pin="x") }}
52+
- libfabric
53+
- libpciaccess
54+
- openmpi 5.0.6
55+
- rdma-core
56+
- ucx
57+
run_constrained:
58+
- arm-variant * {{ arm_variant_type }} # [aarch64]
59+
test:
60+
commands:
61+
- test -L $PREFIX/lib/libnvshmem_host.so.{{ soname }}
62+
- test -f $PREFIX/lib/libnvshmem_host.so.{{ version }}
63+
- test -L $PREFIX/lib/nvshmem_bootstrap_mpi.so.{{ soname }}
64+
- test -f $PREFIX/lib/nvshmem_bootstrap_mpi.so.{{ soname }}.0.0
65+
- test -L $PREFIX/lib/nvshmem_bootstrap_pmi.so.{{ soname }}
66+
- test -f $PREFIX/lib/nvshmem_bootstrap_pmi.so.{{ soname }}.0.0
67+
- test -L $PREFIX/lib/nvshmem_bootstrap_pmi2.so.{{ soname }}
68+
- test -f $PREFIX/lib/nvshmem_bootstrap_pmi2.so.{{ soname }}.0.0
69+
- test -L $PREFIX/lib/nvshmem_bootstrap_pmix.so.{{ soname }}
70+
- test -f $PREFIX/lib/nvshmem_bootstrap_pmix.so.{{ soname }}.0.0
71+
- test -L $PREFIX/lib/nvshmem_bootstrap_shmem.so.{{ soname }}
72+
- test -f $PREFIX/lib/nvshmem_bootstrap_shmem.so.{{ soname }}.0.0
73+
- test -L $PREFIX/lib/nvshmem_bootstrap_uid.so.{{ soname }}
74+
- test -f $PREFIX/lib/nvshmem_bootstrap_uid.so.{{ soname }}.0.0
75+
- test -L $PREFIX/lib/nvshmem_transport_ibdevx.so.{{ soname }}
76+
- test -f $PREFIX/lib/nvshmem_transport_ibdevx.so.{{ soname }}.0.0
77+
- test -L $PREFIX/lib/nvshmem_transport_ibgda.so.{{ soname }}
78+
- test -f $PREFIX/lib/nvshmem_transport_ibgda.so.{{ soname }}.0.0
79+
- test -L $PREFIX/lib/nvshmem_transport_ibrc.so.{{ soname }}
80+
- test -f $PREFIX/lib/nvshmem_transport_ibrc.so.{{ soname }}.0.0
81+
- test -L $PREFIX/lib/nvshmem_transport_libfabric.so.{{ soname }}
82+
- test -f $PREFIX/lib/nvshmem_transport_libfabric.so.{{ soname }}.0.0
83+
- test -L $PREFIX/lib/nvshmem_transport_ucx.so.{{ soname }}
84+
- test -f $PREFIX/lib/nvshmem_transport_ucx.so.{{ soname }}.0.0
85+
86+
- name: libnvshmem-dev
87+
build:
88+
missing_dso_whitelist:
89+
- "*libcuda.so*" # driver
90+
- "*libnvshmem_host.so.{{ soname }}" # avoids: ERROR (libnvshmem-dev,bin/perftest/device/pt-to-pt/shmem_put_bw): lib/libnvshmem_host.so.3 not found in any packages. We DO test for its existence though.
91+
run_exports:
92+
- {{ pin_subpackage("libnvshmem" ~ soname, max_pin="x") }}
93+
script: build-libnvshmem.sh
94+
script_interpreter: /bin/bash
95+
requirements:
96+
build:
97+
- {{ compiler("c") }}
98+
- {{ compiler("cxx") }}
99+
- arm-variant * {{ arm_variant_type }} # [aarch64]
100+
- {{ stdlib("c") }}
101+
host:
102+
- cuda-version {{ cuda_compiler_version }}
103+
- cuda-cudart-dev # [(cuda_compiler_version or "").startswith("12")]
104+
- cudatoolkit # [(cuda_compiler_version or "").startswith("11")]
105+
- libpciaccess
106+
- openmpi 5.0.6
107+
run:
108+
- {{ pin_compatible("cuda-version", min_pin="x", max_pin="x") }}
109+
- {{ pin_subpackage("libnvshmem" ~ soname, exact=True) }}
110+
- cudatoolkit # [(cuda_compiler_version or "").startswith("11")]
111+
- openmpi 5.0.6
112+
run_constrained:
113+
- arm-variant * {{ arm_variant_type }} # [aarch64]
114+
test:
115+
commands:
116+
- test -f $PREFIX/bin/hydra_pmi_proxy
117+
- test -f $PREFIX/bin/nvshmem-info
118+
- test -f $PREFIX/bin/nvshmrun.hydra
119+
- test -f $PREFIX/bin/hydra_nameserver
120+
- test -f $PREFIX/bin/nvshmrun
121+
- test -f $PREFIX/bin/hydra_persist
122+
- test -f $PREFIX/bin/examples/collective-launch
123+
- test -f $PREFIX/bin/examples/on-stream
124+
- test -f $PREFIX/bin/perftest/device/pt-to-pt/shmem_p_latency
125+
- test -f $PREFIX/bin/perftest/device/coll/reduction_latency
126+
- test -f $PREFIX/bin/perftest/host/init/malloc
127+
- test -f $PREFIX/bin/perftest/host/pt-to-pt/bw
128+
- test -f $PREFIX/bin/perftest/host/coll/broadcast_on_stream
129+
- test -f $PREFIX/include/bootstrap_device_host/nvshmem_uniqueid.h
130+
- test -f $PREFIX/include/device/nvshmem_defines.h
131+
- test -f $PREFIX/include/device_host/nvshmem_types.h
132+
- test -f $PREFIX/include/host/nvshmem_api.h
133+
- test -f $PREFIX/include/non_abi/device/coll/defines.cuh
134+
- test -f $PREFIX/include/device_host_transport/nvshmem_constants.h
135+
- test -f $PREFIX/include/nvshmem.h
136+
- test -f $PREFIX/include/nvshmemx.h
137+
- test -f $PREFIX/lib/cmake/nvshmem/NVSHMEMConfig.cmake
138+
- test -f $PREFIX/lib/cmake/nvshmem/NVSHMEMDeviceTargets-release.cmake
139+
- test -f $PREFIX/lib/cmake/nvshmem/NVSHMEMDeviceTargets.cmake
140+
- test -f $PREFIX/lib/cmake/nvshmem/NVSHMEMTargets-release.cmake
141+
- test -f $PREFIX/lib/cmake/nvshmem/NVSHMEMTargets.cmake
142+
- test -f $PREFIX/lib/cmake/nvshmem/NVSHMEMVersion.cmake
143+
- test -L $PREFIX/lib/libnvshmem_host.so
144+
- test -L $PREFIX/lib/nvshmem_bootstrap_mpi.so
145+
- test -L $PREFIX/lib/nvshmem_bootstrap_pmi.so
146+
- test -L $PREFIX/lib/nvshmem_bootstrap_pmi2.so
147+
- test -L $PREFIX/lib/nvshmem_bootstrap_pmix.so
148+
- test -L $PREFIX/lib/nvshmem_bootstrap_shmem.so
149+
- test -L $PREFIX/lib/nvshmem_bootstrap_uid.so
150+
- test -L $PREFIX/lib/nvshmem_transport_ibdevx.so
151+
- test -L $PREFIX/lib/nvshmem_transport_ibgda.so
152+
- test -L $PREFIX/lib/nvshmem_transport_ibrc.so
153+
- test -L $PREFIX/lib/nvshmem_transport_libfabric.so
154+
- test -L $PREFIX/lib/nvshmem_transport_ucx.so
155+
156+
- name: libnvshmem-static
157+
build:
158+
script: |
159+
cp -rv lib/*.a $PREFIX/lib/
160+
files:
161+
- lib/libnvshmem*.a
162+
requirements:
163+
build:
164+
- {{ compiler("c") }}
165+
- {{ compiler("cxx") }}
166+
- {{ stdlib("c") }}
167+
- arm-variant * {{ arm_variant_type }} # [aarch64]
168+
host:
169+
- cuda-version {{ cuda_compiler_version }}
170+
- openmpi 5.0.6
171+
- rdma-core
172+
- ucx
173+
run:
174+
- {{ pin_compatible("cuda-version", min_pin="x", max_pin="x") }}
175+
- openmpi 5.0.6
176+
- rdma-core
177+
- ucx
178+
run_constrained:
179+
- arm-variant * {{ arm_variant_type }} # [aarch64]
180+
test:
181+
commands:
182+
- test -f $PREFIX/lib/libnvshmem_device.a
183+
- test -f $PREFIX/lib/libnvshmem.a
184+
185+
about:
186+
home: https://docs.nvidia.com/nvshmem/index.html
187+
license_file: LICENSE
188+
license_url: https://docs.nvidia.com/nvshmem/api/sla.html
189+
summary: NVIDIA NVSHMEM is an NVIDIA based "shared memory" library that provides an easy-to-use CPU-side interface to allocate pinned memory that is symmetrically distributed across a cluster of NVIDIA GPUs.
190+
description: |
191+
NVIDIA NVSHMEM is an NVIDIA based "shared memory" library that provides an easy-to-use CPU-side interface to allocate pinned memory that is symmetrically distributed across a cluster of NVIDIA GPUs.
192+
NVSHMEM can significantly reduce communication and coordination overheads by allowing programmers to perform these operations from within CUDA kernels and on CUDA streams.
193+
doc_url: https://docs.nvidia.com/nvshmem/api/index.html
194+
195+
extra:
196+
feedstock-name: libnvshmem
197+
recipe-maintainers:
198+
- conda-forge/cuda

recipes/nvshmem/meta.yaml

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
{% set version = "3.1.7" %}
2+
{% set soname = version.split(".")[0] %}
3+
4+
package:
5+
name: nvshmem
6+
version: {{ version }}
7+
8+
source:
9+
url: https://developer.download.nvidia.com/compute/nvshmem/redist/libnvshmem/LICENSE.txt
10+
sha256: 43a87c0ff94ce3196011ff75e17fbee96933c9e1d511557659ece8a326f95e8f
11+
12+
build:
13+
number: 0
14+
noarch: generic
15+
16+
requirements:
17+
run:
18+
- libnvshmem{{ soname }} {{ version }}
19+
- libnvshmem-dev {{ version }}
20+
- libnvshmem-static {{ version }}
21+
22+
test:
23+
commands:
24+
- exit 0
25+
26+
about:
27+
home: https://developer.nvidia.com/cuda-toolkit
28+
license_file: LICENSE.txt
29+
license: LicenseRef-NVIDIA-End-User-License-Agreement
30+
license_url: https://docs.nvidia.com/cuda/eula/index.html
31+
summary: Meta-package containing all NVIDIA NVSHMEM packages, not intended for use in a conda-build context.
32+
description: |
33+
NVIDIA NVSHMEM is an NVIDIA based "shared memory" library that provides an easy-to-use CPU-side interface to allocate pinned memory that is symmetrically distributed across a cluster of NVIDIA GPUs.
34+
NVSHMEM can significantly reduce communication and coordination overheads by allowing programmers to perform these operations from within CUDA kernels and on CUDA streams.
35+
doc_url: https://docs.nvidia.com/nvshmem/api/index.html
36+
37+
extra:
38+
recipe-maintainers:
39+
- conda-forge/cuda

0 commit comments

Comments
 (0)