%global commit0 01a0c815d1a98eb9b38341cf63546f234fbcc43b %global shortcommit0 %(c=%{commit0}; echo ${c:0:7}) %global date0 20230824 Summary: Communications library for AI/ML Name: gloo License: BSD-3-Clause Version: 0.5.0^git%{date0}.%{shortcommit0} Release: 1%{?dist} URL: https://github.com/facebookincubator/%{name} Source0: %{url}/archive/%{commit0}/%{name}-%{shortcommit0}.tar.gz Patch0: 0001-gloo-fedora-cmake-changes.patch # See CMakeLists, gloo only builds on 64 bit systems ExcludeArch: i686 BuildRequires: cmake BuildRequires: gcc-c++ BuildRequires: hiredis-devel BuildRequires: libibverbs #BuildRequires: libuv-devel #BuildRequires: libuv-static BuildRequires: openmpi-devel BuildRequires: rdma-core-devel BuildRequires: redis-devel # Needed for tests BuildRequires: gmock-devel BuildRequires: gtest-devel BuildRequires: openssl1.1-devel %description Gloo is a collective communications library. It comes with a number of collective algorithms useful for machine learning applications. These include a barrier, broadcast, and allreduce. Transport of data between participating machines is abstracted so that IP can be used at all times, or InifiniBand (or RoCE) when available. In the latter case, if the InfiniBand transport is used, GPUDirect can be used to accelerate cross machine GPU-to-GPU memory transfers. Where applicable, algorithms have an implementation that works with system memory buffers, and one that works with NVIDIA GPU memory buffers. In the latter case, it is not necessary to copy memory between host and device; this is taken care of by the algorithm implementations. %package devel Summary: Headers and libraries for %{name} Requires: %{name}%{?_isa} = %{version}-%{release} %description devel %{summary} %prep %autosetup -p1 -n %{name}-%{commit0} %build module load mpi/openmpi-%{_arch} %cmake -DCMAKE_CXX_STANDARD=14 \ -DBUILD_TEST=ON \ -DUSE_IBVERBS=ON \ -DUSE_LIBUV=OFF \ -DUSE_TCP_OPENSSL_LINK=ON \ -DUSE_REDIS=ON \ -DUSE_MPI=ON \ -DBUILD_EXAMPLES=ON %cmake_build module purge %install module load mpi/openmpi-%{_arch} %cmake_install mkdir -p %{buildroot}%{_datadir}/Gloo/docs cp -p -r docs/* %{buildroot}%{_datadir}/Gloo/docs module purge %check # Test needs to generate an SSL certificate, which fails # /%{__cmake_builddir}/gloo/test/gloo_test # Smoke test, need to figure out how to get looks_like_mpi to run module load mpi/openmpi-%{_arch} PREFIX=test1 SIZE=1 RANK=0 ./%{__cmake_builddir}/gloo/examples/example1 module purge %files %dir %{_datadir}/Gloo %license LICENSE %doc README.md %{_libdir}/lib%{name}.so.23.* %files devel %doc %{_datadir}/Gloo/docs/ %dir %{_includedir}/%{name} %{_includedir}/%{name}/*.h %dir %{_includedir}/%{name}/common %{_includedir}/%{name}/common/*.h %dir %{_includedir}/%{name}/rendezvous %{_includedir}/%{name}/rendezvous/*.h %dir %{_includedir}/%{name}/transport %{_includedir}/%{name}/transport/*.h %dir %_includedir/%{name}/transport/tcp %{_includedir}/%{name}/transport/tcp/*.h %dir %{_includedir}/%{name}/transport/tcp/tls %{_includedir}/%{name}/transport/tcp/tls/*.h %dir %{_includedir}/%{name}/transport/ibverbs %{_includedir}/%{name}/transport/ibverbs/*.h %dir %{_includedir}/%{name}/mpi %{_includedir}/%{name}/mpi/*.h %dir %{_libdir}/cmake/Gloo %_libdir/cmake/Gloo/*.cmake %_libdir/lib%{name}.so %changelog * Fri Sep 22 2023 Tom Rix - 0.5.0^git20230824.01a0c81-1 - Initial package