-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathucx.spec
442 lines (367 loc) · 12.2 KB
/
ucx.spec
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
%{!?configure_options: %global configure_options %{nil}}
%bcond_without cma
%bcond_with cuda
%bcond_with gdrcopy
%bcond_without ib
%if "%{_vendor}" == "suse" || 0%{?fedora} >= 30 || 0%{?rhel} >= 7
%bcond_with ib_cm
%else
%bcond_without ib_cm
%endif
%bcond_with knem
%if 0%{?rhel} > 0 && 0%{?rhel} < 8
%bcond_with rdmacm
%else
%bcond_without rdmacm
%endif
%bcond_with rocm
%bcond_with ugni
%bcond_with xpmem
%bcond_with vfs
%global major 1
%global minor 17
%global bugrelease 0
#%%global prerelease
%global dl_version %{major}.%{minor}.%{bugrelease}
Name: ucx
Version: %{major}.%{minor}.%{bugrelease}%{?prerelease:~%{prerelease}}
Release: 1%{?dist}
Summary: UCX is a communication library implementing high-performance messaging
License: BSD-3-Clause AND MIT AND CC-PDDC AND (BSD-3-Clause OR Apache-2.0)
# CC-PDDC
# src/ucm/ptmalloc286/malloc-2.8.6.h
# src/ucm/ptmalloc286/malloc.c
# MIT
# src/ucs/datastruct/khash.h
# BSD-3-Clause or Apache-2.0
# src/ucs/arch/aarch64/memcpy_thunderx2.S
# BSD-3-Clause
# All other files
URL: http://www.openucx.org
Source: https://github.com/openucx/%{name}/releases/download/v%{dl_version}%{?prerelease:-%{prerelease}}/ucx-%{dl_version}.tar.gz
# BUILD/CONFIG: Keep CFLAGS and CXXFLAGS separate
# Fixes build for https://fedoraproject.org/wiki/Changes/PortingToModernC
Patch0: https://github.com/openucx/%{name}/pull/9558.patch
Patch10: undo-upstream.patch
BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
Prefix: %{_prefix}
# UCX currently supports only the following architectures
ExclusiveArch: aarch64 ppc64le x86_64
%if %{defined extra_deps}
Requires: %{?extra_deps}
%endif
BuildRequires: automake autoconf libtool gcc-c++
%if "%{_vendor}" == "suse"
BuildRequires: libnuma-devel
%else
BuildRequires: numactl-devel
%endif
%if %{with cma}
BuildRequires: glibc-devel >= 2.15
%endif
%if %{with gdrcopy}
BuildRequires: gdrcopy
%endif
%if %{with ib}
BuildRequires: libibverbs-devel
%endif
%if %{with ib_cm}
BuildRequires: libibcm-devel
%endif
%if %{with knem}
BuildRequires: knem
%endif
%if %{with rdmacm}
BuildRequires: librdmacm-devel
%endif
%if %{with rocm}
BuildRequires: hsa-rocr-dev
%endif
%if %{with xpmem}
BuildRequires: xpmem-devel
%endif
%if %{with vfs}
BuildRequires: fuse3-devel
%endif
%description
UCX is an optimized communication framework for high-performance distributed
applications. UCX utilizes high-speed networks, such as RDMA (InfiniBand, RoCE,
etc), Cray Gemini or Aries, for inter-node communication. If no such network is
available, TCP is used instead. UCX supports efficient transfer of data in
either main memory (RAM) or GPU memory (through CUDA and ROCm libraries). In
addition, UCX provides efficient intra-node communication, by leveraging the
following shared memory mechanisms: posix, sysv, cma, knem, and xpmem.
The acronym UCX stands for "Unified Communication X".
%if "%{_vendor}" == "suse"
%debug_package
%endif
%package devel
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: Header files required for developing with UCX
%if (0%{?suse_version} > 0)
Provides: libucs-devel = %{version}-%{release}
Provides: libuct-devel = %{version}-%{release}
Provides: libucp-devel = %{version}-%{release}
%endif
%description devel
Provides header files and examples for developing with UCX.
%prep
%autosetup -p1 -n ucx-%{major}.%{minor}.%{bugrelease}
autoreconf -fiv
# https://github.com/openucx/ucx/commit/b0a275a5492125a13020cd095fe9934e0b5e7c6a
# can be removed on release after 1.17.0
sed -i '/#include <limits.h>/a #include <math.h>' src/ucs/time/time.h
%build
%define _with_arg() %{expand:%%{?with_%{1}:--with-%{2}}%%{!?with_%{1}:--without-%{2}}}
%define _enable_arg() %{expand:%%{?with_%{1}:--enable-%{2}}%%{!?with_%{1}:--disable-%{2}}}
%configure --disable-optimizations \
--disable-logging \
--disable-debug \
--disable-assertions \
--disable-params-check \
--without-java \
--without-go \
%_enable_arg cma cma \
%_with_arg cuda cuda \
%_with_arg gdrcopy gdrcopy \
%_with_arg ib verbs \
%_with_arg ib_cm cm \
%_with_arg knem knem \
%_with_arg rdmacm rdmacm \
%_with_arg rocm rocm \
%_with_arg xpmem xpmem \
%_with_arg vfs fuse3 \
%_with_arg ugni ugni \
%{?configure_options}
make %{?_smp_mflags} V=1
%install
make DESTDIR=%{buildroot} install
rm -f %{buildroot}%{_libdir}/*.la
rm -f %{buildroot}%{_libdir}/*.a
rm -f %{buildroot}%{_libdir}/ucx/*.la
rm -f %{buildroot}%{_libdir}/ucx/lib*.so
rm -f %{buildroot}%{_libdir}/ucx/lib*.a
%files
%{_libdir}/lib*.so.*
%{_bindir}/ucx_info
%{_bindir}/ucx_perftest
%{_bindir}/ucx_perftest_daemon
%{_bindir}/ucx_read_profile
%{_bindir}/io_demo
%{_datadir}/ucx
%dir %{_sysconfdir}/ucx
%{_sysconfdir}/ucx/ucx.conf
%exclude %{_datadir}/ucx/examples
%doc README AUTHORS NEWS
%{!?_licensedir:%global license %%doc}
%license LICENSE
%files devel
%{_includedir}/uc*
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/ucx*.pc
%dir %{_libdir}/cmake/ucx
%{_libdir}/cmake/ucx/*.cmake
%{_datadir}/ucx/examples
%post -p /sbin/ldconfig
%postun -p /sbin/ldconfig
%if %{with cma}
%package cma
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX CMA support
%description cma
Provides CMA (Linux cross-memory-attach) transport for UCX. It utilizes the
system calls process_vm_readv/writev() for one-shot memory copy from another
process.
%files cma
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_cma.so.*
%endif
%if %{with cuda}
%package cuda
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX CUDA support
%description cuda
Provide CUDA (NVIDIA GPU) support for UCX. Enables passing GPU memory pointers
to UCX communication routines, and transports taking advantage of GPU-Direct
technology for direct data transfer between GPU and RDMA devices.
%files cuda
%dir %{_libdir}/ucx
%{_libdir}/ucx/libucx_perftest_cuda.so.*
%{_libdir}/ucx/libucm_cuda.so.*
%{_libdir}/ucx/libuct_cuda.so.*
%endif
%if %{with gdrcopy}
%package gdrcopy
Requires: %{name}-cuda%{?_isa} = %{version}-%{release}
Summary: UCX GDRCopy support
%description gdrcopy
Provide GDRCopy support for UCX. GDRCopy is a low-latency GPU memory copy
library, built on top of the NVIDIA GPUDirect RDMA technology.
%files gdrcopy
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_cuda_gdrcopy.so.*
%endif
%if %{with ib}
%package ib
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX RDMA support
%description ib
Provides support for IBTA-compliant transports for UCX. This includes RoCE,
InfiniBand, OmniPath, and any other transport supported by IB Verbs API.
Typically these transports provide RDMA support, which enables a fast and
hardware-offloaded data transfer.
%files ib
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_ib.so.*
%endif
%if %{with ib_cm}
%package ib-cm
Requires: %{name}-ib%{?_isa} = %{version}-%{release}
Summary: UCX InfiniBand connection-manager support
%description ib-cm
Provides Infiniband Connection Manager (also known as ibcm) support for UCX.
%files ib-cm
%{_libdir}/ucx/libuct_ib_cm.so.*
%endif
%if %{with knem}
%package knem
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX KNEM transport support
%description knem
Provides KNEM (fast inter-process copy) transport for UCX. KNEM is a Linux
kernel module that enables high-performance intra-node MPI communication
for large messages.
%files knem
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_knem.so.*
%endif
%if %{with rdmacm}
%package rdmacm
Requires: %{name}-ib%{?_isa} = %{version}-%{release}
Requires: ucx-ib = %{version}-%{release}
Summary: UCX RDMA connection manager support
%description rdmacm
Provides RDMA connection-manager support to UCX, which enables client/server
based connection establishment for RDMA-capable transports.
%files rdmacm
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_rdmacm.so.*
%endif
%if %{with rocm}
%package rocm
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX ROCm GPU support
%description rocm
Provides Radeon Open Compute (ROCm) Runtime support for UCX.
%files rocm
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_rocm.so.*
%{_libdir}/ucx/libucm_rocm.so.*
%if %{with gdrcopy}
%package rocmgdr
Requires: %{name}-rocm%{?_isa} = %{version}-%{release}
Summary: UCX GDRCopy support for ROCM
%description rocmgdr
Provide GDRCopy support for UCX ROCM. GDRCopy is a low-latency GPU
memory copy library, built on top of the NVIDIA GPUDirect RDMA
technology.
%files rocmgdr
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_rocm_gdr.so.*
%endif
%endif
%if %{with ugni}
%package ugni
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX Gemini/Aries transport support.
%description ugni
Provides Gemini/Aries transport for UCX.
%files ugni
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_ugni.so.*
%endif
%if %{with xpmem}
%package xpmem
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX XPMEM transport support.
%description xpmem
Provides XPMEM transport for UCX. XPMEM is a Linux kernel module that enables a
process to map the memory of another process into its virtual address space.
%files xpmem
%dir %{_libdir}/ucx
%{_libdir}/ucx/libuct_xpmem.so.*
%endif
%if %{with vfs}
%package vfs
Requires: %{name}%{?_isa} = %{version}-%{release}
Summary: UCX Virtual Filesystem support.
%description vfs
Provides a virtual filesystem over FUSE which allows real-time
monitoring of UCX library internals, protocol objects, transports
status, and more.
%files vfs
%dir %{_libdir}/ucx
%{_libdir}/ucx/libucs_fuse.so.*
%{_bindir}/ucx_vfs
%endif
%changelog
* Tue Aug 20 2024 Brian J. Murrell <[email protected]> - 1.17.0-1
- Update to 1.17
- Sync with Fedora specfile
* Tue Sep 06 2022 Joseph Moore <[email protected]> - 1.13.1-1
- Update to 1.13
* Fri Jun 03 2022 Brian J. Murrell <[email protected]> - 1.12.1-3
- Move debian undo-upstream.patch into specfile
* Wed Jun 01 2022 Jeff Olivier <[email protected]> - 1.12.1-2
- Moved source to make file
* Fri May 20 2022 Kris Jacque <[email protected]> - 1.12.1-1
- Bump version to 1.12.1
* Thu Nov 18 2021 Honggang Li <[email protected]> - 1.11.2-2
- TOOLS/INFO: Update help message for context features
- Resolves: rhbz#1973959
* Tue Nov 09 2021 Honggang Li <[email protected]> - 1.11.2-1
- Bump version to 1.11.2
- Resolves: rhbz#1982204
* Thu May 27 2021 Yurii Shestakov <[email protected]> 1.10.1-2
- Bump version to 1.10.1
* Mon Apr 26 2021 Yurii Shestakov <[email protected]> 1.10.1-rc1
- Bump version to 1.10.1-rc1
* Wed Jan 27 2021 Fedora Release Engineering <[email protected]> - 1.9.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Nov 11 2020 Yossi Itigin <[email protected]> 1.10.0-1
- Make the RPM relocatable
* Mon Nov 2 2020 Orion Poplawski <[email protected]> - 1.9.0-1
- Update to 1.9.0
* Fri Oct 30 2020 Jeff Law <[email protected]> 1.8.1-5
- Adjust workaround for gcc-11 diagnostic to narrow its scope
* Thu Oct 29 2020 Jeff Law <[email protected]> 1.8.1-4
- Disable -Warray-bounds diagnostics for gcc-11
* Wed Jul 29 2020 Fedora Release Engineering <[email protected]> - 1.8.1-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Mon Jul 20 2020 Jeff Law <[email protected]> 1.8.1-2
- Fix broken configure files compromised by LTO
* Wed Jul 1 2020 Yossi Itigin <[email protected]> 1.8.1-1
- Bump version to 1.8.1
* Sun Sep 22 2019 Yossi Itigin <[email protected]> 1.8.0-1
- Bump version to 1.8.0
* Sun Mar 24 2019 Yossi Itigin <[email protected]> 1.7.0-1
- Bump version to 1.7.0
* Thu Jan 24 2019 Yossi Itigin <[email protected]> 1.6.0-1
- Add cma, knem, and xpmem sub-packages
* Tue Nov 20 2018 Yossi Itigin <[email protected]> 1.6.0-1
- Bump version to 1.6.0
* Tue Nov 6 2018 Andrey Maslennikov <[email protected]> 1.5.0-1
- Bump version to 1.5.0
- See NEWS for details
* Tue Oct 30 2018 Andrey Maslennikov <[email protected]> 1.4.0-1
- See NEWS for details
* Mon Aug 20 2018 Andrey Maslennikov <[email protected]> 1.3.1-1
- See NEWS for details
* Thu Aug 16 2018 Andrey Maslennikov <[email protected]> 1.3.0-1
- Explicitly set gcc-c++ as requirements
* Wed Mar 7 2018 Andrey Maslennikov <[email protected]> 1.3.0-1
- See NEWS for details
* Mon Aug 21 2017 Andrey Maslennikov <[email protected]> 1.2.1-1
- Spec file now complies with Fedora guidelines
* Mon Jul 3 2017 Andrey Maslennikov <[email protected]> 1.2.0-1
- Fedora package created