From f1e92fe2a39c10e48cb6862159cb7f5e85c17f53 Mon Sep 17 00:00:00 2001 From: Boris Fomitchev Date: Fri, 18 Dec 2015 13:35:22 -0800 Subject: [PATCH 1/2] Added Debian packaging files --- debian/changelog | 11 +++++++++++ debian/compat | 1 + debian/control | 26 ++++++++++++++++++++++++++ debian/copyright | 26 ++++++++++++++++++++++++++ debian/gbp.conf | 15 +++++++++++++++ debian/nccl-dev.install | 4 ++++ debian/nccl.install | 2 ++ debian/nccl.lintian-overrides | 1 + debian/nccl.postinst | 5 +++++ debian/rules | 14 ++++++++++++++ debian/shlibs.local | 1 + debian/source/format | 1 + 12 files changed, 107 insertions(+) create mode 100644 debian/changelog create mode 100644 debian/compat create mode 100644 debian/control create mode 100644 debian/copyright create mode 100644 debian/gbp.conf create mode 100644 debian/nccl-dev.install create mode 100644 debian/nccl.install create mode 100644 debian/nccl.lintian-overrides create mode 100644 debian/nccl.postinst create mode 100755 debian/rules create mode 100644 debian/shlibs.local create mode 100644 debian/source/format diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000000..87ac77ac02 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,11 @@ +nccl (1.0.2) trusty; urgency=medium + + * Merged latest upstream changes. + + -- Boris Fomitchev Tue, 15 Dec 2015 14:52:01 -0800 + +nccl (1.0.1) trusty; urgency=medium + + * Initial release. + + -- Boris Fomitchev Mon, 14 Dec 2015 09:52:01 -0800 diff --git a/debian/compat b/debian/compat new file mode 100644 index 0000000000..ec635144f6 --- /dev/null +++ b/debian/compat @@ -0,0 +1 @@ +9 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000000..9740bb0232 --- /dev/null +++ b/debian/control @@ -0,0 +1,26 @@ +Source: nccl +Section: universe/science +Maintainer: Boris Fomitchev +Priority: optional +Build-depends: debhelper(>=9), nvidia-352-dev, cuda-toolkit-7-0, + cuda-curand-dev-7-0, cuda-cublas-dev-7-0, cuda-cudart-dev-7-0, cuda-ld-conf-7-0 +Standards-Version: 3.9.5 + +Package: nccl +Section: universe/tools +Architecture: amd64 +Depends: ${misc:Depends}, ${shlibs:Depends}, nvidia-352, + cuda-curand-7-0, cuda-cublas-7-0, cuda-cudart-7-0, cuda-ld-conf-7-0 +Description: Optimized primitives for collective multi-GPU communication + NCCL (pronounced "Nickel") is a stand-alone library of standard collective communication routines, + such as all-gather, reduce, broadcast, etc., that have been optimized to achieve high bandwidth over PCIe. + NCCL supports up to eight GPUs and can be used in either single- or multi-process (e.g., MPI) applications. + +Package: nccl-dev +Section: universe/tools +Architecture: amd64 +Depends: ${misc:Depends}, ${shlibs:Depends}, nccl (= ${binary:Version}) +Description: Dev package for NCCL library + NCCL (pronounced "Nickel") is a stand-alone library of standard collective communication routines, + such as all-gather, reduce, broadcast, etc., that have been optimized to achieve high bandwidth over PCIe. + NCCL supports up to eight GPUs and can be used in either single- or multi-process (e.g., MPI) applications. diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000000..d89c8391d6 --- /dev/null +++ b/debian/copyright @@ -0,0 +1,26 @@ + + Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of NVIDIA CORPORATION nor the names of its + contributors may be used to endorse or promote products derived + from this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY + EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY + OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/debian/gbp.conf b/debian/gbp.conf new file mode 100644 index 0000000000..e78ed160f1 --- /dev/null +++ b/debian/gbp.conf @@ -0,0 +1,15 @@ +[DEFAULT] +debian-branch = master +upstream-branch = master +verbose = True + +ignore-new = True + +[git-buildpackage] +verbose = True +no-purge = True + +[git-import-orig] +upstream-tag = v%(version)s +upstream-tree = BRANCH +dch = False diff --git a/debian/nccl-dev.install b/debian/nccl-dev.install new file mode 100644 index 0000000000..aa614f50c5 --- /dev/null +++ b/debian/nccl-dev.install @@ -0,0 +1,4 @@ +usr/lib +usr/lib/libnccl.so +usr/include +usr/include/nccl.h diff --git a/debian/nccl.install b/debian/nccl.install new file mode 100644 index 0000000000..2513610a01 --- /dev/null +++ b/debian/nccl.install @@ -0,0 +1,2 @@ +usr/lib +usr/lib/libnccl.so.1 diff --git a/debian/nccl.lintian-overrides b/debian/nccl.lintian-overrides new file mode 100644 index 0000000000..b6e73d9569 --- /dev/null +++ b/debian/nccl.lintian-overrides @@ -0,0 +1 @@ +file-in-usr-local diff --git a/debian/nccl.postinst b/debian/nccl.postinst new file mode 100644 index 0000000000..74f2532531 --- /dev/null +++ b/debian/nccl.postinst @@ -0,0 +1,5 @@ +#!/bin/sh + +set -e + +ldconfig diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000000..dfa5f39061 --- /dev/null +++ b/debian/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f + + + + +# Enabling a single GPU for tests only +# test.sh fails for non-idential multi-GPU +# fix pending : https://github.com/torch/cutorch/issues/239 +export CUDA_VISIBLE_DEVICES=0 +%: + PREFIX="$(CURDIR)/usr" dh $@ --build-system=make --parallel + +override_dh_auto_test: + echo "Skipping test: fix me later ..." diff --git a/debian/shlibs.local b/debian/shlibs.local new file mode 100644 index 0000000000..e418d1b1e9 --- /dev/null +++ b/debian/shlibs.local @@ -0,0 +1 @@ +libcudart 7.0 cuda-cudart-7-0 diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000000..89ae9db8f8 --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) From c9da89254b841ebf48abab2270d9fba243debde2 Mon Sep 17 00:00:00 2001 From: Luke Yeager Date: Fri, 18 Dec 2015 14:05:37 -0800 Subject: [PATCH 2/2] Update deb packaging scripts --- Makefile | 2 +- debian/.gitignore | 7 +++++++ debian/changelog | 6 ++++++ debian/control | 37 ++++++++++++++++++++--------------- debian/copyright | 27 +------------------------ debian/gbp.conf | 15 -------------- debian/libnccl-dev.install | 2 ++ debian/libnccl1.install | 2 ++ debian/nccl-dev.install | 4 ---- debian/nccl.install | 2 -- debian/nccl.lintian-overrides | 1 - debian/nccl.postinst | 5 ----- debian/rules | 14 ++++--------- 13 files changed, 44 insertions(+), 80 deletions(-) create mode 100644 debian/.gitignore mode change 100644 => 120000 debian/copyright delete mode 100644 debian/gbp.conf create mode 100644 debian/libnccl-dev.install create mode 100644 debian/libnccl1.install delete mode 100644 debian/nccl-dev.install delete mode 100644 debian/nccl.install delete mode 100644 debian/nccl.lintian-overrides delete mode 100644 debian/nccl.postinst diff --git a/Makefile b/Makefile index a7719773fd..f4ffdb5849 100644 --- a/Makefile +++ b/Makefile @@ -58,7 +58,7 @@ LIBSRCFILES := libwrap.cu core.cu all_gather.cu all_reduce.cu broadcast.cu reduc LIBNAME := libnccl.so VER_MAJOR := 1 VER_MINOR := 0 -VER_PATCH := 0 +VER_PATCH := 2 TESTS := all_gather_test all_reduce_test broadcast_test reduce_test reduce_scatter_test MPITESTS := mpi_test diff --git a/debian/.gitignore b/debian/.gitignore new file mode 100644 index 0000000000..1e97a9fea8 --- /dev/null +++ b/debian/.gitignore @@ -0,0 +1,7 @@ +/*.debhelper.log +/*.debhelper +/*.substvars +/tmp/ +/files +/libnccl1/ +/libnccl-dev/ diff --git a/debian/changelog b/debian/changelog index 87ac77ac02..50dcaa44bf 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,9 @@ +nccl (1.0.2-2) trusty; urgency=medium + + * Packages are now libnccl1 and libnccl-dev + + -- Luke Yeager Fri, 18 Dec 2015 13:45:16 -0800 + nccl (1.0.2) trusty; urgency=medium * Merged latest upstream changes. diff --git a/debian/control b/debian/control index 9740bb0232..340c2133cf 100644 --- a/debian/control +++ b/debian/control @@ -1,26 +1,31 @@ Source: nccl -Section: universe/science +Section: universe/libs Maintainer: Boris Fomitchev Priority: optional -Build-depends: debhelper(>=9), nvidia-352-dev, cuda-toolkit-7-0, +Build-depends: debhelper(>=9), cuda-toolkit-7-0, cuda-curand-dev-7-0, cuda-cublas-dev-7-0, cuda-cudart-dev-7-0, cuda-ld-conf-7-0 Standards-Version: 3.9.5 -Package: nccl -Section: universe/tools +Package: libnccl1 +Section: universe/libs Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, nvidia-352, +Depends: ${misc:Depends}, ${shlibs:Depends}, cuda-curand-7-0, cuda-cublas-7-0, cuda-cudart-7-0, cuda-ld-conf-7-0 -Description: Optimized primitives for collective multi-GPU communication - NCCL (pronounced "Nickel") is a stand-alone library of standard collective communication routines, - such as all-gather, reduce, broadcast, etc., that have been optimized to achieve high bandwidth over PCIe. - NCCL supports up to eight GPUs and can be used in either single- or multi-process (e.g., MPI) applications. +Description: NVIDIA Communication Collectives Library (NCCL) Runtime + NCCL (pronounced "Nickel") is a stand-alone library of standard collective + communication routines,such as all-gather, reduce, broadcast, etc., that have + been optimized to achieve high bandwidth over PCIe. NCCL supports up to eight + GPUs and can be used in either single- or multi-process (e.g., MPI) + applications. -Package: nccl-dev -Section: universe/tools +Package: libnccl-dev +Section: universe/libdevel Architecture: amd64 -Depends: ${misc:Depends}, ${shlibs:Depends}, nccl (= ${binary:Version}) -Description: Dev package for NCCL library - NCCL (pronounced "Nickel") is a stand-alone library of standard collective communication routines, - such as all-gather, reduce, broadcast, etc., that have been optimized to achieve high bandwidth over PCIe. - NCCL supports up to eight GPUs and can be used in either single- or multi-process (e.g., MPI) applications. +Depends: ${misc:Depends}, ${shlibs:Depends}, libnccl1 (= ${binary:Version}) +Description: NVIDIA Communication Collectives Library (NCCL) Development Files + NCCL (pronounced "Nickel") is a stand-alone library of standard collective + communication routines,such as all-gather, reduce, broadcast, etc., that have + been optimized to achieve high bandwidth over PCIe. NCCL supports up to eight + GPUs and can be used in either single- or multi-process (e.g., MPI) + applications. + diff --git a/debian/copyright b/debian/copyright deleted file mode 100644 index d89c8391d6..0000000000 --- a/debian/copyright +++ /dev/null @@ -1,26 +0,0 @@ - - Copyright (c) 2015, NVIDIA CORPORATION. All rights reserved. - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - * Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - * Neither the name of NVIDIA CORPORATION nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY - EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, - EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, - PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR - PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY - OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT - (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/debian/copyright b/debian/copyright new file mode 120000 index 0000000000..4ab43736a8 --- /dev/null +++ b/debian/copyright @@ -0,0 +1 @@ +../LICENSE.txt \ No newline at end of file diff --git a/debian/gbp.conf b/debian/gbp.conf deleted file mode 100644 index e78ed160f1..0000000000 --- a/debian/gbp.conf +++ /dev/null @@ -1,15 +0,0 @@ -[DEFAULT] -debian-branch = master -upstream-branch = master -verbose = True - -ignore-new = True - -[git-buildpackage] -verbose = True -no-purge = True - -[git-import-orig] -upstream-tag = v%(version)s -upstream-tree = BRANCH -dch = False diff --git a/debian/libnccl-dev.install b/debian/libnccl-dev.install new file mode 100644 index 0000000000..3c6f253a22 --- /dev/null +++ b/debian/libnccl-dev.install @@ -0,0 +1,2 @@ +include/nccl.h usr/include +lib/libnccl.so usr/lib diff --git a/debian/libnccl1.install b/debian/libnccl1.install new file mode 100644 index 0000000000..be7243e7df --- /dev/null +++ b/debian/libnccl1.install @@ -0,0 +1,2 @@ +lib/libnccl.so.1 usr/lib +lib/libnccl.so.1.0.2 usr/lib diff --git a/debian/nccl-dev.install b/debian/nccl-dev.install deleted file mode 100644 index aa614f50c5..0000000000 --- a/debian/nccl-dev.install +++ /dev/null @@ -1,4 +0,0 @@ -usr/lib -usr/lib/libnccl.so -usr/include -usr/include/nccl.h diff --git a/debian/nccl.install b/debian/nccl.install deleted file mode 100644 index 2513610a01..0000000000 --- a/debian/nccl.install +++ /dev/null @@ -1,2 +0,0 @@ -usr/lib -usr/lib/libnccl.so.1 diff --git a/debian/nccl.lintian-overrides b/debian/nccl.lintian-overrides deleted file mode 100644 index b6e73d9569..0000000000 --- a/debian/nccl.lintian-overrides +++ /dev/null @@ -1 +0,0 @@ -file-in-usr-local diff --git a/debian/nccl.postinst b/debian/nccl.postinst deleted file mode 100644 index 74f2532531..0000000000 --- a/debian/nccl.postinst +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -set -e - -ldconfig diff --git a/debian/rules b/debian/rules index dfa5f39061..6467459621 100755 --- a/debian/rules +++ b/debian/rules @@ -1,14 +1,8 @@ #!/usr/bin/make -f - - - -# Enabling a single GPU for tests only -# test.sh fails for non-idential multi-GPU -# fix pending : https://github.com/torch/cutorch/issues/239 -export CUDA_VISIBLE_DEVICES=0 %: - PREFIX="$(CURDIR)/usr" dh $@ --build-system=make --parallel + dh $@ --parallel + +override_dh_auto_install: + PREFIX=debian/tmp dh_auto_install -override_dh_auto_test: - echo "Skipping test: fix me later ..."